@wavemaker/app-ng-runtime 11.6.0-next.26302 → 11.6.0-next.26304
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.
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +6 -0
- app-ng-runtime/components/input/calendar/esm2020/calendar.component.mjs +7 -1
- app-ng-runtime/components/input/calendar/fesm2015/index.mjs +6 -0
- app-ng-runtime/components/input/calendar/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/fesm2020/index.mjs +6 -0
- app-ng-runtime/components/input/calendar/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +2 -2
- app-ng-runtime/components/navigation/popover/esm2020/popover.component.mjs +3 -3
- app-ng-runtime/components/navigation/popover/fesm2015/index.mjs +2 -2
- app-ng-runtime/components/navigation/popover/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/fesm2020/index.mjs +2 -2
- app-ng-runtime/components/navigation/popover/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
|
@@ -451,6 +451,12 @@
|
|
|
451
451
|
};
|
|
452
452
|
eventSource.forEach((obj) => {
|
|
453
453
|
obj._eventMetadata = _.clone(obj);
|
|
454
|
+
if (_.isEmpty(obj._eventMetadata.url)) {
|
|
455
|
+
delete obj._eventMetadata.url;
|
|
456
|
+
}
|
|
457
|
+
if (_.isEmpty(obj.url)) {
|
|
458
|
+
delete obj.url;
|
|
459
|
+
}
|
|
454
460
|
_.mapKeys(properties, (value, key) => {
|
|
455
461
|
let objVal;
|
|
456
462
|
if (key === 'title') {
|
|
@@ -425,6 +425,12 @@ export class CalendarComponent extends StylableComponent {
|
|
|
425
425
|
};
|
|
426
426
|
eventSource.forEach((obj) => {
|
|
427
427
|
obj._eventMetadata = _.clone(obj);
|
|
428
|
+
if (_.isEmpty(obj._eventMetadata.url)) {
|
|
429
|
+
delete obj._eventMetadata.url;
|
|
430
|
+
}
|
|
431
|
+
if (_.isEmpty(obj.url)) {
|
|
432
|
+
delete obj.url;
|
|
433
|
+
}
|
|
428
434
|
_.mapKeys(properties, (value, key) => {
|
|
429
435
|
let objVal;
|
|
430
436
|
if (key === 'title') {
|
|
@@ -617,4 +623,4 @@ CalendarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CalendarC
|
|
|
617
623
|
type: ViewChild,
|
|
618
624
|
args: ['datepicker']
|
|
619
625
|
}] }); })();
|
|
620
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEMsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3SixPQUFPLEVBQUMsZUFBZSxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFlLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUU1RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUF1QyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvSyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQUlqRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFDbkMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9NLE1BQU0sb0JBQW9CLEdBQUc7SUFDekIsS0FBSyxFQUFFLGlCQUFpQjtJQUN4QixNQUFNLEVBQUUsT0FBTztJQUNmLEdBQUcsRUFBRSxxQ0FBcUM7Q0FDN0MsQ0FBQztBQUNGLE1BQU0sVUFBVSxHQUFHO0lBQ2YsS0FBSyxFQUFFLE9BQU87SUFDZCxNQUFNLEVBQUUsUUFBUTtJQUNoQixJQUFJLEVBQUUsTUFBTTtDQUNmLENBQUM7QUFDRixNQUFNLFdBQVcsR0FBRztJQUNoQixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLEtBQUssRUFBRSxPQUFPO0NBQ2pCLENBQUM7QUFDRixNQUFNLGVBQWUsR0FBRztJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFFBQVEsRUFBRSxVQUFVO0NBQ3ZCLENBQUM7QUFDRixNQUFNLGtCQUFrQixHQUFHO0lBQ3ZCLEtBQUssRUFBRSxPQUFPO0lBQ2QsR0FBRyxFQUFFLE9BQU87Q0FDZixDQUFDO0FBQ0YsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtJQUN2QyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFbkIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQzNCLG9DQUFvQztRQUNwQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JELE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsOEhBQThIO0lBQzlILElBQUksTUFBTSxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUU7UUFDekIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUMvQixPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQy9CLHFGQUFxRjtJQUNyRixLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQ2hDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUMxQixLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFDNUIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQzlCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUM7QUFDRixNQUFNLGFBQWEsR0FBRyxFQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDO0FBQzFFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztBQVdoQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsaUJBQWlCO0lBa0VwRCxnRUFBZ0U7SUFDaEUsVUFBVTtRQUNOLElBQUksS0FBSyxFQUFFLEdBQUcsQ0FBQztRQUNmLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDekQsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLEdBQUcsR0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QzthQUFNO1lBQ0gsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0IsR0FBRyxHQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywyQ0FBMkM7UUFFM0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCx3RUFBd0U7SUFDakUsUUFBUTtRQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDREQUE0RDtJQUNyRCxZQUFZO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsNkRBQTZEO0lBQ3RELFlBQVk7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsUUFBUTtRQUNyQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksZUFBZSxHQUFHLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxlQUFlLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUY7YUFBTTtZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUUsZUFBZSxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNwRztJQUNMLENBQUM7SUFFRCw2REFBNkQ7SUFDdEQsYUFBYTtRQUNoQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELDhEQUE4RDtJQUN2RCxhQUFhO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBR0QsZ0VBQWdFO0lBQ3pELGNBQWM7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHO1FBQzlCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU87U0FDVjtRQUVELE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUMzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFL0UsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN2QixPQUFPO2FBQ1Y7WUFDRCxNQUFNLGNBQWMsR0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckYsTUFBTSxZQUFZLEdBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6RyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEgsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVPLFNBQVMsQ0FBQyxhQUFhO1FBQzNCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0UsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzNOLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsY0FBYztRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU07UUFDRixPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRU8sTUFBTSxDQUFDLGNBQWM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7UUFDNUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBQyxDQUFDLENBQUM7SUFDM0ssQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssZUFBZSxDQUFDLFFBQVE7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFO1lBQ3hDLE9BQU8sUUFBUSxDQUFDO1NBQ25CO1FBQ0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7UUFDN0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEQsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssK0JBQStCLENBQUMsUUFBUTtRQUM1QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxXQUFXLENBQUMsZUFBZTtRQUMvQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdFLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxFQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNyTyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBSztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sVUFBVSxDQUFDLGNBQWM7UUFDN0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxFQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzFILENBQUM7SUFFTyxhQUFhLENBQUMsS0FBSztRQUN2QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRTtZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMxRDtRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQUs7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFFBQVEsQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFLO1FBQ25CLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCwrREFBK0Q7SUFDdkQsMkJBQTJCO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQ3JELEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxLQUFLLElBQUksUUFBUSxFQUFFO1lBQ25CLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQ2pDLElBQUksSUFBSSxZQUFZLENBQUM7YUFDeEI7WUFFRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixJQUFJLElBQUksUUFBUSxDQUFDO2FBQ3BCO1lBRUQsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDM0IsS0FBSyxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDN0Q7WUFFRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixLQUFLLElBQUksQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQzthQUM1RTtZQUVELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQzNCLEtBQUssSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQzthQUMvSDtZQUVELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbkIsS0FBSyxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO2FBQzVIO1lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtnQkFDeEIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUI7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO2dCQUN6QixLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5QjtZQUNELENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztTQUN4RjtJQUNMLENBQUM7SUFFRCxZQUFZLEdBQWEsRUFBRSxXQUFnQztRQUN2RCxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBblN2QixhQUFRLEdBQUcsMkNBQTJDLENBQUM7UUFRdEQsaUJBQVksR0FBZSxFQUFFLENBQUM7UUFFOUIsa0JBQWEsR0FBRztZQUNwQixNQUFNLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFRTSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUUxQixrQ0FBa0M7UUFDMUIsb0JBQWUsR0FBUTtZQUMzQixRQUFRLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxNQUFNLEVBQUUscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJO2dCQUN2RCxVQUFVLEVBQUUsS0FBSztnQkFDakIsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ3JDLGFBQWEsRUFBRSxvQkFBb0I7Z0JBQ25DLGdCQUFnQixFQUFFLGtCQUFrQjtnQkFDcEMsS0FBSyxFQUFFO29CQUNILEtBQUssRUFBRTt3QkFDSCxlQUFlLEVBQUUsSUFBSTtxQkFDeEI7aUJBQ0o7Z0JBQ0QsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ2xELFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3hDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQzVDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQzFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ2xDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDdkM7U0FDSixDQUFDO1FBRU0sYUFBUSxHQUFlLEVBQUUsQ0FBQztRQWlQOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFO1lBQ3ZDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2pDLFlBQVksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7U0FDL0M7UUFFRCxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2xHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRztRQUN0QixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hGO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRztRQUN6QixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwQyxRQUFRLEdBQUcsRUFBRTtZQUNULEtBQUssZUFBZTtnQkFDaEIsSUFBSSxFQUFFLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtvQkFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDaEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3pELElBQUksRUFBRSxLQUFLLGVBQWUsQ0FBQyxNQUFNLEVBQUU7d0JBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFHOzRCQUM3QyxTQUFTLEVBQUUsT0FBTzs0QkFDbEIsT0FBTyxFQUFFLE9BQU87eUJBQ25CLENBQUM7d0JBQ0YsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUM1Rzt5QkFBTTt3QkFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO3FCQUNoRTtpQkFDSjtxQkFBTTtvQkFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO29CQUNqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDN0Q7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssTUFBTTtnQkFDUCxJQUFJLEVBQUUsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxVQUFVLENBQUMsSUFBSSxFQUFFO29CQUN6RCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwRjtxQkFBTTtvQkFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2lCQUNsRDtnQkFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwRixNQUFNO1lBQ1YsS0FBSyxjQUFjO2dCQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxJQUFJLFNBQVMsQ0FBQztZQUN4QyxLQUFLLFVBQVU7Z0JBQ1gsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7Z0JBQ25DLE1BQU07WUFDVixLQUFLLFNBQVM7Z0JBQ1YsSUFBSSxPQUFPLENBQUM7Z0JBQ1osTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDL0MsT0FBTyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNqRCxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQztvQkFDdkMsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO3dCQUNiLE9BQU8sSUFBSSxDQUFDO3FCQUNmO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixNQUFNO1lBQ1YsS0FBSyxNQUFNO2dCQUNQLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztTQUNoRztJQUNMLENBQUM7SUFFRCxpR0FBaUc7SUFDekYsZUFBZSxDQUFDLE1BQU07UUFDMUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFDMUMsUUFBUSxHQUFHLE1BQU0sSUFBSSxPQUFPLENBQUM7UUFFakMsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFDcEMsY0FBc0IsQ0FBQztRQUUzQixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQy9CLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDbkM7WUFDRCxjQUFjLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQzdGO2FBQU07WUFDSCxjQUFjLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsY0FBYyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkcsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsYUFBYSxHQUFJLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLEVBQUMsUUFBUSxFQUFHLEVBQUUsRUFBQyxDQUFDLENBQUM7UUFDMUQsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWxCLDJGQUEyRjtRQUMzRixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZHLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsK0VBQStFO1FBQy9FLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDNUYsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELHdGQUF3RjtJQUNoRix3QkFBd0IsQ0FBQyxXQUFXO1FBQ3hDLE1BQU0sVUFBVSxHQUFHO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTztZQUNqQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxRQUFRO1lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU87WUFDakMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSztZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxXQUFXO1NBQzVDLENBQUM7UUFFRixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEIsR0FBRyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLE1BQU0sQ0FBQztnQkFDWCxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7b0JBQ2pCLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN4RTtxQkFBTSxJQUFJLEdBQUcsS0FBSyxRQUFRLEVBQUU7b0JBQ3pCLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ2hDO3FCQUFNO29CQUNILE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDOUI7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDVCxPQUFPO2lCQUNWO2dCQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxTQUFTO1FBQ2IsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHFCQUFxQixDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQztRQUM5RSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ2pGLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDOUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQztRQUMzRSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLO1lBQ3pFLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFNBQVMsRUFBRSxHQUFHO1NBQ2pCLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsT0FBTztRQUNwQixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RjtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUIsQ0FBQyxhQUFxQixFQUFFLFdBQWlCLEVBQUUsYUFBbUI7UUFDL0UsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixXQUFXLEVBQUUsV0FBVztnQkFDeEIsYUFBYSxFQUFFLGFBQWE7YUFDL0IsQ0FBQyxDQUFDO1lBQ0gsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxtR0FBbUc7SUFDM0YsYUFBYSxDQUFDLEtBQVc7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsTUFBTSxZQUFZLEdBQVUsSUFBSSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQ3BHLGlCQUFpQixHQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQ2xELEtBQUssR0FBaUIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDN0MsR0FBRyxHQUFtQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLGlCQUFpQixDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDdkMsS0FBSyxFQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFO1NBQ3ZELENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDbEcsSUFBSSxpQkFBaUIsRUFBRTtZQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pFO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxXQUFXO1FBQzdCLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLDBEQUEwRCxDQUFDLENBQUM7WUFDekUsT0FBTztTQUNWO1FBQ0QsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFHO2dCQUNyRSxPQUFPLENBQUMsSUFBSSxDQUFDLDhIQUE4SCxDQUFDLENBQUM7Z0JBQzdJLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO2dCQUM5QixnQkFBZ0IsRUFBRSxXQUFXLENBQUMsZ0JBQWdCO2FBQ2pELENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxPQUFPO1FBQ2YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksTUFBTSxDQUFDO1FBRVgsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQ2xCLE1BQU0sR0FBRyxDQUFDLFlBQVksS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1NBQzlFO2FBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ3hCLE1BQU0sR0FBRyxDQUFDLFlBQVksS0FBSyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztTQUNwSTthQUFNLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtZQUN2QixNQUFNLEdBQUcsQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7U0FDakk7YUFBTSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsTUFBTSxHQUFHLENBQUMsWUFBWSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDakU7YUFBTTtZQUNILE1BQU0sR0FBRyxPQUFPLENBQUM7U0FDcEI7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxvQkFBb0IsQ0FBQyxhQUFxQixFQUFFLFdBQWlCLEVBQUUsYUFBbUI7UUFDOUUsUUFBUSxhQUFhLEVBQUU7WUFDbkIsS0FBSyxRQUFRO2dCQUNULElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVCLE1BQU07WUFDVixLQUFLLFFBQVE7Z0JBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNO1lBQ1YsS0FBSyxZQUFZO2dCQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxNQUFNO1NBQ2I7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFFLE1BQU0sRUFBRSxVQUFVLEtBQUs7Z0JBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUQsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUs7Z0JBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFO1lBQ3BDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1NBQ3pDO0lBQ0wsQ0FBQzs7QUFsbUJNLGlDQUFlLEdBQUcsYUFBYSxFQUFFLENBQUM7a0ZBRGhDLGlCQUFpQjtvRUFBakIsaUJBQWlCOzs7Ozs7OzBDQUxmO1lBQ1Asa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7U0FDeEM7UUM1RUwsK0JBQXlEOztRQUExQyxpREFBbUM7O3VGRCtFckMsaUJBQWlCO2NBVDdCLFNBQVM7MkJBQ0ksY0FBYyxhQUdiO29CQUNQLGtCQUFrQixtQkFBbUI7aUJBQ3hDLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7NkZBS2QsU0FBUztrQkFBL0IsU0FBUzttQkFBQyxVQUFVO1lBQ0ksV0FBVztrQkFBbkMsU0FBUzttQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0cmlidXRlLCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge2dldENsb25lZE9iamVjdCwgZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtLCBBYnN0cmFjdEkxOG5TZXJ2aWNlLCBpc01vYmlsZUFwcCwgaXNNb2JpbGV9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgQVBQTFlfU1RZTEVTX1RZUEUsIGNyZWF0ZUFycmF5RnJvbSwgZ2V0RXZhbHVhdGVkRGF0YSwgSVdpZGdldENvbmZpZywgSVJlZHJhd2FibGVDb21wb25lbnQsIHByb3ZpZGVBc1dpZGdldFJlZiwgU3R5bGFibGVDb21wb25lbnQsIHN0eWxlciB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9jYWxlbmRhci5wcm9wcyc7XG5cbmRlY2xhcmUgY29uc3QgXywgJCwgbW9tZW50O1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtY2FsZW5kYXInO1xuY29uc3QgZGF0ZUZvcm1hdHMgPSBbJ3l5eXktTU0tZGQnLCAneXl5eS1NLWRkJywgJ00tZGQteXl5eScsICdNTS1kZC15eScsICd5eXl5LCBkZCBNTU1NJywgJ3l5eXksIE1NTSBkZCcsICdNTS9kZC95eXl5JywgJ00vZC95eXl5JywgJ0VFRSwgZGQgTU1NIHl5eXknLCAnRUVFIE1NTSBkZCB5eXl5JywgJ0VFRUUsIE1NTU0gZGQsIHl5eXknLCAndGltZXN0YW1wJ107XG5jb25zdCBkZWZhdWx0SGVhZGVyT3B0aW9ucyA9IHtcbiAgICBzdGFydDogJ3ByZXYgbmV4dCB0b2RheScsXG4gICAgY2VudGVyOiAndGl0bGUnLFxuICAgIGVuZDogJ2RheUdyaWRNb250aCBkYXlHcmlkV2VlayBkYXlHcmlkRGF5J1xufTtcbmNvbnN0IFZJRVdfVFlQRVMgPSB7XG4gICAgQkFTSUM6ICdiYXNpYycsXG4gICAgQUdFTkRBOiAnYWdlbmRhJyxcbiAgICBMSVNUOiAnbGlzdCdcbn07XG5jb25zdCBCVVRUT05fVEVYVCA9IHtcbiAgICBZRUFSOiAnWWVhcicsXG4gICAgTU9OVEg6ICdNb250aCcsXG4gICAgV0VFSzogJ1dlZWsnLFxuICAgIERBWTogJ0RheScsXG4gICAgVE9EQVk6ICdUb2RheSdcbn07XG5jb25zdCBTRUxFQ1RJT05fTU9ERVMgPSB7XG4gICAgTk9ORTogJ25vbmUnLFxuICAgIFNJTkdMRTogJ3NpbmdsZScsXG4gICAgTVVMVElQTEU6ICdtdWx0aXBsZSdcbn07XG5jb25zdCBORVhUX0RBWV9USFJFU0hPTEQgPSB7XG4gICAgU1RBUlQ6ICcwMDowMCcsXG4gICAgRU5EOiAnMjQ6MDAnXG59O1xuY29uc3QgZ2V0RXZlbnRNb21lbnRWYWx1ZSA9ICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgbGV0IGlzRGF0ZSA9IGZhbHNlO1xuXG4gICAgZGF0ZUZvcm1hdHMuZm9yRWFjaCgoZm9ybWF0KSA9PiB7XG4gICAgICAgIC8vIG1vbWVudCBzdXBwb3J0cyB1cHBlcmNhc2UgZm9ybWF0c1xuICAgICAgICBpZiAobW9tZW50KHZhbHVlLCBmb3JtYXQudG9VcHBlckNhc2UoKSwgdHJ1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICBpc0RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBpZiB0aGUgdmFsdWUgaXMgZGF0ZSB0aGVuIGZvciBlbmQgZGF0ZSB0aGUgdmFsdWUgc2hvdWxkIGJlIGVuZCBvZiB0aGUgZGF5IGFzIHRoZSBjYWxlbmRhciBpcyBhcHByb3hpbWF0aW5nIGl0IHRvIHRoZSBzdGFydC5cbiAgICBpZiAoaXNEYXRlICYmIGtleSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudCh2YWx1ZSkuZW5kT2YoJ2RheScpO1xuICAgIH1cblxuICAgIHJldHVybiBtb21lbnQodmFsdWUpO1xufTtcbmNvbnN0IGdldFVUQ0RhdGVUaW1lID0gKGRhdGVPYmopID0+IHtcbiAgICBkYXRlT2JqID0gbW9tZW50KGRhdGVPYmopO1xuICAgIGNvbnN0IHllYXIgPSBkYXRlT2JqLmZvcm1hdCgnWVlZWScpLFxuICAgICAgICAvLyBqYXZhc2NyaXB0IHN0YXJ0cyB0aGUgbW9udGggY291bnQgZnJvbSAnMCcgd2hlcmUgYXMgbW9tZW50IHJldHVybnMgdGhlIGh1bWFuIGNvdW50XG4gICAgICAgIG1vbnRoID0gZGF0ZU9iai5mb3JtYXQoJ01NJykgLSAxLFxuICAgICAgICBkYXkgPSBkYXRlT2JqLmZvcm1hdCgnREQnKSxcbiAgICAgICAgaG91cnMgPSBkYXRlT2JqLmZvcm1hdCgnSEgnKSxcbiAgICAgICAgbWludXRlcyA9IGRhdGVPYmouZm9ybWF0KCdtbScpLFxuICAgICAgICBzZWNvbmRzID0gZGF0ZU9iai5mb3JtYXQoJ3NzJyk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTtcbn07XG5jb25zdCBXSURHRVRfQ09ORklHID0ge3dpZGdldFR5cGU6ICd3bS1jYWxlbmRhcicsIGhvc3RDbGFzczogREVGQVVMVF9DTFN9O1xuY29uc3QgZGF0ZUZvcm1hdCA9ICdZWVlZL01NL0REJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbd21DYWxlbmRhcl0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9mdWxsY2FsZW5kYXIvbWFpbi5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKENhbGVuZGFyQ29tcG9uZW50KVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3ksIElSZWRyYXdhYmxlQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuICAgIC8vIFRoZSBjYWxlbmRhciBlbGVtZW50IHJlZmVyZW5jZVxuICAgIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJykgX2NhbGVuZGFyOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXInKSBfZGF0ZXBpY2tlcjogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBzZWxlY3RlZGRhdGVzOiBhbnk7XG4gICAgcHVibGljIHNlbGVjdGVkZGF0YTogYW55O1xuICAgIHB1YmxpYyBjdXJyZW50dmlldzogb2JqZWN0O1xuICAgIHB1YmxpYyBkYXRhc2V0OiBhbnk7XG4gICAgcHVibGljIGNhbGVuZGFydHlwZTtcbiAgICBwdWJsaWMgY29udHJvbHMgPSAnbmF2aWdhdGlvbiwgdG9kYXksIHllYXIsIG1vbnRoLCB3ZWVrLCBkYXknO1xuICAgIHB1YmxpYyBkYXRhdmFsdWU7XG4gICAgcHVibGljIGV2ZW50dGl0bGU7XG4gICAgcHVibGljIGV2ZW50c3RhcnQ7XG4gICAgcHVibGljIGV2ZW50ZW5kO1xuICAgIHB1YmxpYyBldmVudGFsbGRheTtcbiAgICBwdWJsaWMgZXZlbnRjbGFzcztcblxuICAgIHByaXZhdGUgZXZlbnRTb3VyY2VzOiBBcnJheTxhbnk+ID0gW107XG5cbiAgICBwcml2YXRlIGRhdGFTZXRFdmVudHMgPSB7XG4gICAgICAgIGV2ZW50czogW11cbiAgICB9O1xuICAgIHByaXZhdGUgb2xkRGF0YTtcbiAgICAvLyBtYXAgdGhlIGZ1bGxjYWxlbmRhciBFbGVtZW50IHJlbmRlcmVkXG4gICAgcHJpdmF0ZSAkZnVsbENhbGVuZGFyO1xuICAgIC8vIG1vZGVsIHRvIHRoZSBtb2JpbGUgY2FsZW5kYXJcbiAgICBwcml2YXRlIHByb3h5TW9kZWw7XG4gICAgcHJpdmF0ZSBldmVudERhdGE7XG4gICAgcHJpdmF0ZSBldmVudHM7XG4gICAgcHJpdmF0ZSBjaGFuZ2VzU3RhY2sgPSBbXTtcblxuICAgIC8vIGNhbGVuZGFyT3B0aW9ucyB0byB0aGUgY2FsZW5kYXJcbiAgICBwcml2YXRlIGNhbGVuZGFyT3B0aW9uczogYW55ID0ge1xuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgaGVpZ2h0OiA2MDAsXG4gICAgICAgICAgICBldmVudFNvdXJjZXM6IHRoaXMuZXZlbnRTb3VyY2VzLFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBsb2NhbGU6IGdldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnKSB8fCAnZW4nLFxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBsb25nUHJlc3NEZWxheTogaXNNb2JpbGUoKSA/IDEgOiAxMDAwLFxuICAgICAgICAgICAgaGVhZGVyVG9vbGJhcjogZGVmYXVsdEhlYWRlck9wdGlvbnMsXG4gICAgICAgICAgICBuZXh0RGF5VGhyZXNob2xkOiBORVhUX0RBWV9USFJFU0hPTEQsXG4gICAgICAgICAgICB2aWV3czoge1xuICAgICAgICAgICAgICAgIG1vbnRoOiB7XG4gICAgICAgICAgICAgICAgICAgIGRheU1heEV2ZW50c1JvdzogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1bnNlbGVjdEF1dG86IGZhbHNlLFxuICAgICAgICAgICAgZXZlbnREcm9wOiB0aGlzLmV2ZW50RHJvcC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZXZlbnRSZXNpemVTdGFydDogdGhpcy5vbkV2ZW50Q2hhbmdlU3RhcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGV2ZW50RHJhZ1N0YXJ0OiB0aGlzLm9uRXZlbnRDaGFuZ2VTdGFydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZXZlbnRSZXNpemU6IHRoaXMuZXZlbnRSZXNpemUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGV2ZW50Q2xpY2s6IHRoaXMuZXZlbnRDbGljay5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZXZlbnREaWRNb3VudDogdGhpcy5ldmVudERpZE1vdW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICB2aWV3RGlkTW91bnQ6IHRoaXMudmlld0RpZE1vdW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICBkYXRlc1NldDogdGhpcy5kYXRlc1NldC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZGF0ZUNsaWNrOiB0aGlzLmRhdGVDbGljay5iaW5kKHRoaXMpXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHB1YmxpYyB2aWV3OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYXlDbGFzczogQXJyYXk8YW55PiA9IFtdO1xuICAgIHByaXZhdGUgY2FuY2VsTG9jYWxlQ2hhbmdlU3Vic2NyaXB0aW9uO1xuXG4gICAgLy8gdGhpcyBmdW5jdGlvbiBzZWxlY3RzIHRoZSBkZWZhdWx0IGRhdGUgZ2l2ZW4gZm9yIHRoZSBjYWxlbmRhclxuICAgIHNlbGVjdERhdGUoKSB7XG4gICAgICAgIGxldCBzdGFydCwgZW5kO1xuICAgICAgICAvLyBjaGVja3MgaWYgZGF0YXZhbHVlIGlzIGFuIG9iamVjdCBhbmQgbm90IGEgRGF0ZSBvYmplY3RcbiAgICAgICAgaWYgKF8uaXNPYmplY3QodGhpcy5kYXRhdmFsdWUpICYmICFfLmlzRGF0ZSh0aGlzLmRhdGF2YWx1ZSkpIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gbW9tZW50KHRoaXMuZGF0YXZhbHVlLnN0YXJ0KTtcbiAgICAgICAgICAgIGVuZCAgID0gbW9tZW50KHRoaXMuZGF0YXZhbHVlLmVuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydCA9IG1vbWVudCh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICAgICBlbmQgICA9IG1vbWVudCh0aGlzLmRhdGF2YWx1ZSkuYWRkKDEsICdkYXknKS5zdGFydE9mKCdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZSggbW9tZW50KHN0YXJ0KS5fZCk7IC8vIGFmdGVyIHNlbGVjdGluZyB0aGUgZGF0ZSBnbyB0byB0aGUgZGF0ZS5cblxuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuc2VsZWN0KHN0YXJ0LnZhbHVlT2YoKSwgZW5kLnZhbHVlT2YoKSk7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlcyB0aGUgY2FsZW5kYXIgdmlldyB0byB0aGUgZGVmYXVsdCBkYXRlIGdpdmVuIGZvciB0aGUgY2FsZW5kYXIuXG4gICAgcHVibGljIGdvdG9EYXRlKCkge1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuZ290b0RhdGUoIG1vbWVudCh0aGlzLmRhdGF2YWx1ZSkuX2QpO1xuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgeWVhciBhaGVhZFxuICAgIHB1YmxpYyBnb3RvTmV4dFllYXIoKSB7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5uZXh0WWVhcigpO1xuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgeWVhciBiZWZvcmVcbiAgICBwdWJsaWMgZ290b1ByZXZZZWFyKCkge1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIucHJldlllYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBjYWxlbmRhciB2aWV3IHRvIHRoZSBzcGVjaWZpZWQgbW9udGhcbiAgICAgKiBAcGFyYW0gbW9udGhWYWwsIDEtMTIgdmFsdWUgb2YgbW9udGhcbiAgICAgKi9cbiAgICBwdWJsaWMgZ290b01vbnRoKG1vbnRoVmFsKSB7XG4gICAgICAgIGxldCBwcmVzZW50RGF5ID0gdGhpcy4kZnVsbENhbGVuZGFyLmdldERhdGUoKTtcbiAgICAgICAgY29uc3QgcHJlc2VudE1vbnRoVmFsID0gcHJlc2VudERheS5nZXRNb250aCgpO1xuICAgICAgICBwcmVzZW50RGF5ID0gbW9tZW50KHByZXNlbnREYXkpO1xuICAgICAgICBpZiAocHJlc2VudE1vbnRoVmFsIDwgbW9udGhWYWwpIHtcbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZShwcmVzZW50RGF5LmFkZChtb250aFZhbCAtIHByZXNlbnRNb250aFZhbCAtIDEsICdNJykudmFsdWVPZigpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZShwcmVzZW50RGF5LnN1YnRyYWN0KCBwcmVzZW50TW9udGhWYWwgLSBtb250aFZhbCArIDEsICdNJykudmFsdWVPZigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgbW9udGggYWhlYWRcbiAgICBwdWJsaWMgZ290b05leHRNb250aCgpIHtcbiAgICAgICAgY29uc3QgcHJlc2VudERheSA9IG1vbWVudCh0aGlzLiRmdWxsQ2FsZW5kYXIuZ2V0RGF0ZSgpKTtcbiAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmdvdG9EYXRlKHByZXNlbnREYXkuYWRkKDEsICdNJykudmFsdWVPZigpKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBjYWxlbmRhciB2aWV3IHRvIHRoZSBhIG1vbnRoIGJlZm9yZVxuICAgIHB1YmxpYyBnb3RvUHJldk1vbnRoKCkge1xuICAgICAgICBjb25zdCBwcmVzZW50RGF5ID0gbW9tZW50KHRoaXMuJGZ1bGxDYWxlbmRhci5nZXREYXRlKCkpO1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuZ290b0RhdGUocHJlc2VudERheS5zdWJ0cmFjdCgxLCAnTScpLnZhbHVlT2YoKSk7XG4gICAgfVxuXG5cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHJlLXJlbmRlcnMgdGhlIGV2ZW50cyBhc3NpZ25lZCB0byB0aGUgY2FsZW5kYXIuXG4gICAgcHVibGljIHJlcmVuZGVyRXZlbnRzKCkge1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIucmVuZGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZWxlY3RlZERhdGEoc3RhcnQsIGVuZCkge1xuICAgICAgICBsZXQgZGF0YXNldCA9IHRoaXMuZGF0YXNldDtcbiAgICAgICAgaWYgKCFkYXRhc2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZERhdGVzID0gW107XG4gICAgICAgIGNvbnN0IGV2ZW50U3RhcnRLZXkgPSB0aGlzLmV2ZW50c3RhcnQgfHwgJ3N0YXJ0JztcbiAgICAgICAgY29uc3QgZXZlbnRFbmRLZXkgPSB0aGlzLmV2ZW50ZW5kIHx8ICdlbmQnO1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBtb21lbnQobmV3IERhdGUoc3RhcnQpKS5mb3JtYXQoJ01NL0REL1lZWVknKTtcbiAgICAgICAgY29uc3QgZW5kRGF0ZSA9IG1vbWVudChuZXcgRGF0ZShlbmQpKS5zdWJ0cmFjdCgxLCAnZGF5cycpLmZvcm1hdCgnTU0vREQvWVlZWScpO1xuXG4gICAgICAgIGRhdGFzZXQgPSBkYXRhc2V0LmRhdGEgfHwgZGF0YXNldDtcbiAgICAgICAgZGF0YXNldC5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZVtldmVudFN0YXJ0S2V5XSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50U3RhcnREYXRlICAgPSBtb21lbnQobmV3IERhdGUodmFsdWVbZXZlbnRTdGFydEtleV0pKS5mb3JtYXQoJ01NL0REL1lZWVknKTtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50RW5kRGF0ZSAgID0gbW9tZW50KG5ldyBEYXRlKHZhbHVlW2V2ZW50RW5kS2V5XSB8fCB2YWx1ZVtldmVudFN0YXJ0S2V5XSkpLmZvcm1hdCgnTU0vREQvWVlZWScpO1xuICAgICAgICAgICAgY29uc3QgZXZlbnRFeGlzdHMgPSBtb21lbnQoZXZlbnRTdGFydERhdGUpLmlzU2FtZU9yQWZ0ZXIoc3RhcnREYXRlKSAmJiBtb21lbnQoZXZlbnRFbmREYXRlKS5pc1NhbWVPckJlZm9yZShlbmREYXRlKTtcbiAgICAgICAgICAgIGlmIChldmVudEV4aXN0cykge1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkRGF0ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmlsdGVyZWREYXRlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50RHJvcChldmVudERyb3BJbmZvKSB7XG4gICAgICAgIGxldCBuZXdEYXRhT2JqID0gdGhpcy5jb252ZXJ0RXZlbnRPYmpGb3JPbGRBbmROZXdEYXRhKGV2ZW50RHJvcEluZm8uZXZlbnQpO1xuICAgICAgICBsZXQgb2xkRGF0YU9iaiA9IHRoaXMuY29udmVydEV2ZW50T2JqRm9yT2xkQW5kTmV3RGF0YShldmVudERyb3BJbmZvLm9sZEV2ZW50KTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdldmVudGRyb3AnLCB7JGV2ZW50OiBldmVudERyb3BJbmZvLmpzRXZlbnQsICRuZXdEYXRhOiBuZXdEYXRhT2JqLCAkb2xkRGF0YTogb2xkRGF0YU9iaiwgJGRlbHRhOiBldmVudERyb3BJbmZvLmRlbHRhLCAkcmV2ZXJ0RnVuYzogZXZlbnREcm9wSW5mby5yZXZlcnQsICR1aToge30sICR2aWV3OiBldmVudERyb3BJbmZvLnZpZXd9KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHRoZSBkZWZhdWx0IGRhdGUgd2hlbiB0aGUgZGF0YXZhbHVlIGlzIHByb3ZpZGVkXG4gICAgZ2V0RGVmYXVsdERhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldERlZmF1bHRPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxlbmRhck9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0TGliKCkge1xuICAgICAgICByZXR1cm4gJ2Z1bGxjYWxlbmRhcic7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3QoJHNlbGVjdGlvbkluZm8pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGVzID0ge3N0YXJ0OiBnZXRVVENEYXRlVGltZSgkc2VsZWN0aW9uSW5mby5zdGFydCksIGVuZDogZ2V0VVRDRGF0ZVRpbWUoJHNlbGVjdGlvbkluZm8uZW5kKX07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRkYXRhID0gdGhpcy5zZXRTZWxlY3RlZERhdGEoJHNlbGVjdGlvbkluZm8uc3RhcnQsICRzZWxlY3Rpb25JbmZvLmVuZCk7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0JywgeyRzdGFydDogJHNlbGVjdGlvbkluZm8uc3RhcnQudmFsdWVPZigpLCAkZW5kOiAkc2VsZWN0aW9uSW5mby5lbmQudmFsdWVPZigpLCAkdmlldzogJHNlbGVjdGlvbkluZm8udmlldywgJGRhdGE6IHRoaXMuc2VsZWN0ZWRkYXRhfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIHRoaXMgZnVuY3Rpb25zIHVuc2VsZWN0cyBhbGwgdGhlIHNlbGVjdGlvbnMgaW4gY2FsZW5kYXJcbiAgICAgKi9cbiAgICBwdWJsaWMgdW5zZWxlY3QoKSB7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci51bnNlbGVjdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoaXMgZnVuY3Rpb24gaXMgdG8gYWRkIGV4dGVuZGVkUHJvcHMgZGF0YSB0byB0aGUgZGF0YSBvYmplY3QuXG4gICAgICogdGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICogQHBhcmFtIGV2ZW50T2JqIGV2ZW50IG9iamVjdCBhcyBwZXIgbmV3IHZlcnNpb24gKHY1KVxuICAgICAqIEByZXR1cm5zIF9ldmVudE1ldGFkYXRhIGV2ZW50IG9iamVjdCBhcyBwZXIgdGhlIG9sZCB2ZXJzaW9uICh2MylcbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbnZlcnRFdmVudE9iaihldmVudE9iaikge1xuICAgICAgICBpZiAoIWV2ZW50T2JqLmV4dGVuZGVkUHJvcHMuX2V2ZW50TWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBldmVudE9iajtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBfZXZlbnRNZXRhZGF0YSA9IGV2ZW50T2JqLmV4dGVuZGVkUHJvcHMuX2V2ZW50TWV0YWRhdGE7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfZXZlbnRNZXRhZGF0YSwgZXZlbnRPYmopO1xuICAgICAgICByZXR1cm4gX2V2ZW50TWV0YWRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIHRoaXMgZnVuY3Rpb24gaXMgdG8gYWRkIGV4dGVuZGVkUHJvcHMgZGF0YSB0byB0aGUgZGF0YSBvYmplY3QgZXhsdWRpbmcgc3RhcnQgZW5kIHRpdGxlIGFsbERheSBvYmplY3RzIGlmIHRoZSBrZXkgbmFtZSBtYXRjaGVzLlxuICAgICAqICogdGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICogQHBhcmFtIGV2ZW50T2JqIGV2ZW50IG9iamVjdCBhcyBwZXIgbmV3IHZlcnNpb24gKHY1KVxuICAgICAqIEByZXR1cm5zIGRhdGEgZXZlbnQgb2JqZWN0IGFzIHBlciB0aGUgb2xkIHZlcnNpb24gKHYzKVxuICAgICAqL1xuICAgIHByaXZhdGUgY29udmVydEV2ZW50T2JqRm9yT2xkQW5kTmV3RGF0YShldmVudE9iaikge1xuICAgICAgICBjb25zdCBfZXZlbnRNZXRhZGF0YSA9IGV2ZW50T2JqLmV4dGVuZGVkUHJvcHM7XG4gICAgICAgIF8uZXh0ZW5kKGV2ZW50T2JqLCBfZXZlbnRNZXRhZGF0YSk7XG4gICAgICAgIHJldHVybiBldmVudE9iajtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50UmVzaXplKGV2ZW50UmVzaXplSW5mbykge1xuICAgICAgICBsZXQgbmV3RGF0YU9iaiA9IHRoaXMuY29udmVydEV2ZW50T2JqRm9yT2xkQW5kTmV3RGF0YShldmVudFJlc2l6ZUluZm8uZXZlbnQpO1xuICAgICAgICBsZXQgb2xkRGF0YU9iaiA9IHRoaXMuY29udmVydEV2ZW50T2JqRm9yT2xkQW5kTmV3RGF0YShldmVudFJlc2l6ZUluZm8ub2xkRXZlbnQpO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2V2ZW50cmVzaXplJywgeyRldmVudDogZXZlbnRSZXNpemVJbmZvLmpzRXZlbnQsICRuZXdEYXRhOiBuZXdEYXRhT2JqLCAkb2xkRGF0YTogb2xkRGF0YU9iaiwgJGRlbHRhOiBldmVudFJlc2l6ZUluZm8uZGVsdGEsICRyZXZlcnRGdW5jOiBldmVudFJlc2l6ZUluZm8ucmV2ZXJ0LCAkdWk6IHt9LCAkdmlldzogZXZlbnRSZXNpemVJbmZvLnZpZXd9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRXZlbnRDaGFuZ2VTdGFydChldmVudCkge1xuICAgICAgICB0aGlzLm9sZERhdGEgPSBnZXRDbG9uZWRPYmplY3QoZXZlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXZlbnRDbGljayhldmVudENsaWNrSW5mbykge1xuICAgICAgICBsZXQgZXZlbnRPYmogPSB0aGlzLmNvbnZlcnRFdmVudE9iaihldmVudENsaWNrSW5mby5ldmVudCk7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZXZlbnRjbGljaycsIHskZXZlbnQ6IGV2ZW50Q2xpY2tJbmZvLmpzRXZlbnQsICRkYXRhOiBldmVudE9iaiwgJHZpZXc6IGV2ZW50Q2xpY2tJbmZvLnZpZXd9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50RGlkTW91bnQoZXZlbnQpIHtcbiAgICAgICAgbGV0IGV2ZW50T2JqID0gdGhpcy5jb252ZXJ0RXZlbnRPYmooZXZlbnQuZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5jYWxlbmRhcnR5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkge1xuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKCcuZmMtbGlzdC10YWJsZScpLmFkZENsYXNzKCd0YWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZXZlbnRyZW5kZXInLCB7JGV2ZW50OiBldmVudC5lbCwgJGRhdGE6IGV2ZW50T2JqLCAkdmlldzogZXZlbnQudmlld30pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmlld0RpZE1vdW50KCR2aWV3KSB7XG4gICAgICAgIGlmICh0aGlzLmNhbGVuZGFydHlwZSA9PT0gVklFV19UWVBFUy5MSVNUKSB7XG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJy5mYy1saXN0LXRhYmxlJykuYWRkQ2xhc3MoJ3RhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCd2aWV3cmVuZGVyJywgeyR2aWV3OiAkdmlld30pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2hlbiB0aGUgdmlldyBvZiB0aGUgY2FsZW5kYXIgY2hhbmdlcy5cbiAgICAgKiBAcGFyYW0gZGF0YSBjb250YWlucyB0aGUgc3RhcnQgZW5kIGRhdGEgb2YgdGhlIGNhbGVuZGFyIHZpZXcuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkYXRlc1NldChkYXRhKSB7XG4gICAgICAgIHRoaXMuY3VycmVudHZpZXcgPSB7c3RhcnQ6IG1vbWVudChkYXRhLnN0YXJ0KS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpLCBlbmQ6IG1vbWVudChkYXRhLmVuZCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKX07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkYXRlQ2xpY2soJGluZm8pIHtcbiAgICAgICAgY29uc3QgZGF0ZUluZm8gPSBnZXRVVENEYXRlVGltZSgkaW5mby5kYXRlKS52YWx1ZU9mKCk7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZGF0ZWNsaWNrJywgeyRkYXRlSW5mbzogZGF0ZUluZm99KTtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgdGhlIGNhbGVuZGFyIGhlYWRlciBvcHRpb25zIG9uY2UgdGhlIGNvbnRyb2xzIGNoYW5nZXNcbiAgICBwcml2YXRlIHVwZGF0ZUNhbGVuZGFySGVhZGVyT3B0aW9ucygpIHtcbiAgICAgICAgY29uc3QgY3RybHMgPSB0aGlzLmNvbnRyb2xzLCB2aWV3VHlwZSA9IHRoaXMuY2FsZW5kYXJ0eXBlLFxuICAgICAgICAgICAgcmVnRXggPSBuZXcgUmVnRXhwKCdcXFxcYmRheVxcXFxiJywgJ2cnKTtcbiAgICAgICAgbGV0IGxlZnQgPSAnJywgcmlnaHQgPSAnJztcbiAgICAgICAgaWYgKGN0cmxzICYmIHZpZXdUeXBlKSB7XG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhjdHJscywgJ25hdmlnYXRpb24nKSkge1xuICAgICAgICAgICAgICAgIGxlZnQgKz0gJyBwcmV2IG5leHQnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhjdHJscywgJ3RvZGF5JykpIHtcbiAgICAgICAgICAgICAgICBsZWZ0ICs9ICcgdG9kYXknO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhjdHJscywgJ3llYXInKSkge1xuICAgICAgICAgICAgICAgIHJpZ2h0ICs9ICh2aWV3VHlwZSA9PT0gVklFV19UWVBFUy5MSVNUKSA/ICdsaXN0WWVhcicgOiAnJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8uaW5jbHVkZXMoY3RybHMsICdtb250aCcpKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQgKz0gKHZpZXdUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJyBsaXN0TW9udGgnIDogJyBkYXlHcmlkTW9udGgnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhjdHJscywgJ3dlZWsnKSkge1xuICAgICAgICAgICAgICAgIHJpZ2h0ICs9ICh2aWV3VHlwZSA9PT0gVklFV19UWVBFUy5CQVNJQykgPyAgJyBkYXlHcmlkV2VlaycgOiAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnIGxpc3RXZWVrJyA6ICcgdGltZUdyaWRXZWVrJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlZ0V4LnRlc3QoY3RybHMpKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQgKz0gKHZpZXdUeXBlID09PSBWSUVXX1RZUEVTLkJBU0lDKSA/ICAnIGRheUdyaWREYXknIDogKHZpZXdUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJyBsaXN0RGF5JyA6ICcgdGltZUdyaWREYXknO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlZnQuY2hhckF0KDApID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdC5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmlnaHQuY2hhckF0KDApID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICByaWdodCA9IHJpZ2h0LnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF8uZXh0ZW5kKHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmhlYWRlclRvb2xiYXIsIHsnc3RhcnQnOiBsZWZ0LCAnZW5kJzogcmlnaHR9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRyk7XG5cbiAgICAgICAgdGhpcy5ldmVudFNvdXJjZXMucHVzaCh0aGlzLmRhdGFTZXRFdmVudHMpO1xuICAgICAgICBjb25zdCBGdWxsQ2FsZW5kYXIgPSB3aW5kb3dbJ0Z1bGxDYWxlbmRhciddO1xuICAgICAgICBpZiAoIUZ1bGxDYWxlbmRhci5fX3dtX2xvY2FsZV9pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgaTE4blNlcnZpY2UuaW5pdENhbGVuZGFyTG9jYWxlKCk7XG4gICAgICAgICAgICBGdWxsQ2FsZW5kYXIuX193bV9sb2NhbGVfaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYW5jZWxMb2NhbGVDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLmdldEFwcEluc3RhbmNlKCkuc3Vic2NyaWJlKFwibG9jYWxlLWNoYW5nZWRcIiwgKGxpYkxvY2FsZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRMb2NhbGUoKTtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlDYWxlbmRhck9wdGlvbnMoJ29wdGlvbicsICdsb2NhbGUnLCBsaWJMb2NhbGUuZnVsbENhbGVuZGFyIHx8ICdlbicpO1xuICAgICAgICAgICAgdGhpcy5yZWRyYXcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLkNPTlRBSU5FUiwgWydoZWlnaHQnXSk7XG4gICAgICAgIHRoaXMuc2V0TG9jYWxlKCk7XG4gICAgfVxuXG4gICAgb25TdHlsZUNoYW5nZShrZXksIG52LCBvdj8pIHtcbiAgICAgICAgc3VwZXIub25TdHlsZUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIGlmIChrZXkgPT09ICdoZWlnaHQnKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5oZWlnaHQgPSB0aGlzLmNhbGN1bGF0ZUhlaWdodChudik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyT3B0aW9ucygnb3B0aW9uJywgJ2hlaWdodCcsIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmhlaWdodCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92Pykge1xuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdGlvbm1vZGUnOlxuICAgICAgICAgICAgICAgIGlmIChudiAhPT0gU0VMRUNUSU9OX01PREVTLk5PTkUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuc2VsZWN0YWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdvcHRpb24nLCAnc2VsZWN0YWJsZScsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobnYgPT09IFNFTEVDVElPTl9NT0RFUy5TSU5HTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLnNlbGVjdENvbnN0cmFpbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiAnMDA6MDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWU6ICcyNDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyT3B0aW9ucygnb3B0aW9uJywgJ3NlbGVjdENvbnN0cmFpbnQnLCB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5zZWxlY3RDb25zdHJhaW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdvcHRpb24nLCAnc2VsZWN0Q29uc3RyYWludCcsIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLnNlbGVjdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhck9wdGlvbnMoJ29wdGlvbicsICdzZWxlY3RhYmxlJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ZpZXcnOlxuICAgICAgICAgICAgICAgIGlmIChudiAhPT0gJ21vbnRoJyB8fCB0aGlzLmNhbGVuZGFydHlwZSA9PT0gVklFV19UWVBFUy5MSVNUKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmRlZmF1bHRWaWV3ID0gdGhpcy5jYWxlbmRhcnR5cGUgKyBfLmNhcGl0YWxpemUobnYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmRlZmF1bHRWaWV3ID0gbnY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdjaGFuZ2VWaWV3JywgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuZGVmYXVsdFZpZXcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2FsZW5kYXJ0eXBlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFydHlwZSA9IG52IHx8ICdkYXlHcmlkJztcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRyb2xzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFySGVhZGVyT3B0aW9ucygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNldCc6XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFTZXQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhc2V0ID0gbnY7XG4gICAgICAgICAgICAgICAgZGF0YVNldCA9IGNyZWF0ZUFycmF5RnJvbShnZXRDbG9uZWRPYmplY3QobnYpKTtcbiAgICAgICAgICAgICAgICBkYXRhU2V0ID0gdGhpcy5jb25zdHJ1Y3RDYWxlbmRhckRhdGFzZXQoZGF0YVNldCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU2V0RXZlbnRzLmV2ZW50cyA9IGRhdGFTZXQuZmlsdGVyKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdGFydCA9IGV2ZW50LnN0YXJ0IHx8IGV2ZW50LmVuZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJFdmVudERhdGFTZXQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhcj8uY2hhbmdlVmlldyh0aGlzLmdldFZpZXdUeXBlKHRoaXMudmlldyA/IHRoaXMudmlldyA6ICdkYXlHcmlkTW9udGgnKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0byBjYWxjdWxhdGUgdGhlIGhlaWdodCBmb3IgdGhlIGV2ZW50IGxpbWl0IGFuZCBwYXJzaW5nIHRoZSB2YWx1ZSB3aGVuIGl0IGlzIHBlcmNlbnRhZ2UgYmFzZWQuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVIZWlnaHQoaGVpZ2h0KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgJHBhcmVudCA9ICQodGhpcy5uYXRpdmVFbGVtZW50KS5wYXJlbnQoKSxcbiAgICAgICAgICAgIGVsSGVpZ2h0ID0gaGVpZ2h0IHx8ICc2NTBweCc7XG5cbiAgICAgICAgbGV0IHBhcmVudEhlaWdodCA9ICRwYXJlbnQuY3NzKCdoZWlnaHQnKSxcbiAgICAgICAgICAgIGNvbXB1dGVkSGVpZ2h0OiBudW1iZXI7XG5cbiAgICAgICAgaWYgKF8uaW5jbHVkZXMoZWxIZWlnaHQsICclJykpIHtcbiAgICAgICAgICAgIGlmIChfLmluY2x1ZGVzKHBhcmVudEhlaWdodCwgJyUnKSkge1xuICAgICAgICAgICAgICAgIHBhcmVudEhlaWdodCA9ICRwYXJlbnQuaGVpZ2h0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wdXRlZEhlaWdodCA9IChwYXJzZUludChwYXJlbnRIZWlnaHQsIDEwKSAqIE51bWJlcihlbEhlaWdodC5yZXBsYWNlKC9cXCUvZywgJycpKSkgLyAxMDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wdXRlZEhlaWdodCA9IHBhcnNlSW50KGVsSGVpZ2h0LCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIudmlld3MubW9udGguZXZlbnRMaW1pdCA9IHBhcnNlSW50KCcnICsgY29tcHV0ZWRIZWlnaHQgLyAyMDAsIDEwKSArIDE7XG4gICAgICAgIHJldHVybiBjb21wdXRlZEhlaWdodDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBjb25zdCBjYWxlbmRhckVsID0gdGhpcy5fY2FsZW5kYXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgRnVsbENhbGVuZGFyID0gd2luZG93WydGdWxsQ2FsZW5kYXInXTtcbiAgICAgICAgY29uc3QgY2FsZW5kYXIgPSBuZXcgRnVsbENhbGVuZGFyLkNhbGVuZGFyKGNhbGVuZGFyRWwsIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyKTtcbiAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyID0gIGNhbGVuZGFyO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXJlbmRlcicsIHsnJGV2ZW50JyA6IHt9fSk7XG4gICAgICAgIGNhbGVuZGFyLnJlbmRlcigpO1xuXG4gICAgICAgIC8vIGlmIHRoZSBjaGFuZ2VzIGFyZSBhbHJlYWR5IHN0YWNrZWQgYmVmb3JlIGNhbGVuZGFyIHJlbmRlcnMgdGhlbiBleGVjdXRlIHRoZW0gd2hlbiBuZWVkZWRcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlc1N0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VzU3RhY2suZm9yRWFjaCgoY2hhbmdlT2JqKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseUNhbGVuZGFyT3B0aW9ucyhjaGFuZ2VPYmoub3BlcmF0aW9uVHlwZSwgY2hhbmdlT2JqLmFyZ3VtZW50S2V5LCBjaGFuZ2VPYmouYXJndW1lbnRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlc1N0YWNrLmxlbmd0aCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICAvL1dNUy0yMjQxMiA6IGNoYW5nZSBjYWxlbmRlcidzIHZpZXcgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gc2V0IGZyb20gc3R1ZGlvXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmNoYW5nZVZpZXcodGhpcy5nZXRWaWV3VHlwZSh0aGlzLnZpZXcgPyB0aGlzLnZpZXcgOiAnZGF5R3JpZE1vbnRoJykpO1xuICAgICAgICB9LDUwKTtcbiAgICB9XG5cbiAgICAvLyBjb25zdHJ1Y3RzIHRoZSBjYWxlbmRhciBkYXRhc2V0IGJ5IG1hcHBpbmcgdGhlIGV2ZW50c3RhcnQsIGV2ZW50ZW5kLCBldmVudHRpdGxlIGV0Yy4sXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RDYWxlbmRhckRhdGFzZXQoZXZlbnRTb3VyY2UpIHtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmV2ZW50dGl0bGUgfHwgJ3RpdGxlJyxcbiAgICAgICAgICAgIGFsbERheTogdGhpcy5ldmVudGFsbGRheSB8fCAnYWxsZGF5JyxcbiAgICAgICAgICAgIHN0YXJ0OiB0aGlzLmV2ZW50c3RhcnQgfHwgJ3N0YXJ0JyxcbiAgICAgICAgICAgIGVuZDogdGhpcy5ldmVudGVuZCB8fCAnZW5kJyxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy5ldmVudGNsYXNzIHx8ICdjbGFzc05hbWUnXG4gICAgICAgIH07XG5cbiAgICAgICAgZXZlbnRTb3VyY2UuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICAgICAgICBvYmouX2V2ZW50TWV0YWRhdGEgPSBfLmNsb25lKG9iaik7XG4gICAgICAgICAgICBfLm1hcEtleXMocHJvcGVydGllcywgICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG9ialZhbDtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAndGl0bGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ialZhbCA9IGdldEV2YWx1YXRlZERhdGEob2JqLCB7ZXhwcmVzc2lvbjogdmFsdWV9LCB0aGlzLnZpZXdQYXJlbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYWxsRGF5Jykge1xuICAgICAgICAgICAgICAgICAgICBvYmpWYWwgPSAhIV8uZ2V0KG9iaiwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9ialZhbCA9IF8uZ2V0KG9iaiwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIW9ialZhbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9ialtrZXldID0gb2JqVmFsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZXZlbnRTb3VyY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMb2NhbGUoKSB7XG4gICAgICAgIGNvbnN0IHllYXIgPSBfLmdldCh0aGlzLmFwcExvY2FsZSwgJ0xBQkVMX0NBTEVOREFSX1lFQVInKSB8fCBCVVRUT05fVEVYVC5ZRUFSO1xuICAgICAgICBjb25zdCBtb250aCA9IF8uZ2V0KHRoaXMuYXBwTG9jYWxlLCAnTEFCRUxfQ0FMRU5EQVJfTU9OVEgnKSB8fCBCVVRUT05fVEVYVC5NT05USDtcbiAgICAgICAgY29uc3Qgd2VlayA9IF8uZ2V0KHRoaXMuYXBwTG9jYWxlLCAnTEFCRUxfQ0FMRU5EQVJfV0VFSycpIHx8IEJVVFRPTl9URVhULldFRUs7XG4gICAgICAgIGNvbnN0IGRheSA9IF8uZ2V0KHRoaXMuYXBwTG9jYWxlLCAnTEFCRUxfQ0FMRU5EQVJfREFZJykgfHwgQlVUVE9OX1RFWFQuREFZO1xuICAgICAgICBjb25zdCB0b2RheSA9IF8uZ2V0KHRoaXMuYXBwTG9jYWxlLCAnTEFCRUxfQ0FMRU5EQVJfVE9EQVknKSB8fCBCVVRUT05fVEVYVC5UT0RBWTtcbiAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuYnV0dG9uVGV4dCAgICA9IHsgeWVhciwgbW9udGgsIHdlZWssIGRheSwgdG9kYXksXG4gICAgICAgICAgICAnbGlzdFllYXInOiB5ZWFyLFxuICAgICAgICAgICAgJ2xpc3RNb250aCc6IG1vbnRoLFxuICAgICAgICAgICAgJ2xpc3RXZWVrJzogd2VlayxcbiAgICAgICAgICAgICdsaXN0RGF5JzogZGF5XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY2FsZW5kYXIgb3B0aW9ucyB3aXRoIHRoZSBuZXdTZXQgb2Ygb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zXG4gICAgICovXG4gICAgb3ZlcnJpZGVEZWZhdWx0cyhvcHRpb25zKSB7XG4gICAgICAgIGlmIChfLmlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhvcHRpb25zKS5tYXAob3B0aW9uID0+IHRoaXMuJGZ1bGxDYWxlbmRhci5zZXRPcHRpb24ob3B0aW9uWzBdLCBvcHRpb25bMV0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGlmIHRoZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgYmVmb3JlIHRoZSBjYWxlbmRhciByZW5kZXJzLCB0aGUgY2hhbmdlcyBhcmUgcHVzaGVkIGludG8gY2hhbmdlc1N0YWNrIGFuZCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBjYWxlbmRhciBnZXRzIHJlbmRlcmVkXG4gICAgICogaWYgdGhlIGNhbGVuZGFyIGlzIGFscmVhZHkgcmVuZGVyZWQsIHRoZW4gdGhlIHNwZWNpZmljIG9wZXJhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZCBhY2NvcmRpbmcgdG8gdGhlIG9wZXJhdGlvbiB0eXBlXG4gICAgICogQHBhcmFtIG9wZXJhdGlvblR5cGVcbiAgICAgKiBAcGFyYW0gYXJndW1lbnRLZXlcbiAgICAgKiBAcGFyYW0gYXJndW1lbnRWYWx1ZVxuICAgICAqL1xuICAgIHVwZGF0ZUNhbGVuZGFyT3B0aW9ucyhvcGVyYXRpb25UeXBlOiBzdHJpbmcsIGFyZ3VtZW50S2V5PzogYW55LCBhcmd1bWVudFZhbHVlPzogYW55KTogdm9pZCB7Ly9cbiAgICAgICAgaWYgKCF0aGlzLiRmdWxsQ2FsZW5kYXIpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlc1N0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IG9wZXJhdGlvblR5cGUsXG4gICAgICAgICAgICAgICAgYXJndW1lbnRLZXk6IGFyZ3VtZW50S2V5LFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50VmFsdWU6IGFyZ3VtZW50VmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwbHlDYWxlbmRhck9wdGlvbnMob3BlcmF0aW9uVHlwZSwgYXJndW1lbnRLZXksIGFyZ3VtZW50VmFsdWUpO1xuICAgIH1cblxuICAgIHJlZHJhdygpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhck9wdGlvbnMoJ3JlbmRlcicpO1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXI/LmNoYW5nZVZpZXcodGhpcy5nZXRWaWV3VHlwZSh0aGlzLnZpZXcgPyB0aGlzLnZpZXcgOiAnZGF5R3JpZE1vbnRoJykpO1xuICAgIH1cblxuICAgIC8vIG9uIGRhdGUgY2hhbmdlIGludm9rZSB0aGUgc2VsZWN0IGV2ZW50LCBhbmQgaWYgZGF0ZSBoYXMgZXZlbnQgb24gaXQgdGhlbiBpbnZva2UgdGhlIGV2ZW50IGNsaWNrLlxuICAgIHByaXZhdGUgb25WYWx1ZUNoYW5nZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3h5TW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlICAgICAgICA9IHRoaXMucHJveHlNb2RlbCAmJiBtb21lbnQodGhpcy5wcm94eU1vZGVsKS5zdGFydE9mKCdkYXknKS5mb3JtYXQoZGF0ZUZvcm1hdCksXG4gICAgICAgICAgICBzZWxlY3RlZEV2ZW50RGF0YSAgID0gdGhpcy5ldmVudERhdGFbc2VsZWN0ZWREYXRlXSxcbiAgICAgICAgICAgIHN0YXJ0ICAgICAgICAgICAgICAgPSBtb21lbnQodGhpcy5wcm94eU1vZGVsKSxcbiAgICAgICAgICAgIGVuZCAgICAgICAgICAgICAgICAgPSBtb21lbnQodGhpcy5wcm94eU1vZGVsKS5lbmRPZignZGF5Jyk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRkYXRhID0gc2VsZWN0ZWRFdmVudERhdGE7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRkYXRlcyA9IHtcbiAgICAgICAgICAgICdzdGFydCc6IG1vbWVudChzZWxlY3RlZERhdGUpLnZhbHVlT2YoKSxcbiAgICAgICAgICAgICdlbmQnICA6IG1vbWVudChzZWxlY3RlZERhdGUpLmVuZE9mKCdkYXknKS52YWx1ZU9mKClcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuc2VsZWN0KHN0YXJ0LnZhbHVlT2YoKSwgZW5kLnZhbHVlT2YoKSwge30sIHRoaXMsIHNlbGVjdGVkRXZlbnREYXRhKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRXZlbnREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5ldmVudENsaWNrKHNlbGVjdGVkRXZlbnREYXRhLCB7fSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSBhbiBvYmplY3QgY29udGFpbmluZyBzb3VyY2Ugb2YgY2FsZW5kYXIsIGFwaWtleSBhbmQgY2FsZW5kYXJJZCBhbmQgd2lsbCBpbnRlZ3JhdGUgdGhlIHJlc3BlY3RpdmUgY2FsZW5kYXIgd2l0aCBmdWxsY2FsZW5kYXIuXG4gICAgICogQHBhcmFtIGV2ZW50T2JqZWN0XG4gICAgICovXG4gICAgcHVibGljIGFkZEV2ZW50U291cmNlKGV2ZW50T2JqZWN0KSB7XG4gICAgICAgIGlmIChfLmlzRW1wdHkoZXZlbnRPYmplY3QpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2FkZEV2ZW50U291cmNlIG1ldGhvZCByZXF1aXJlcyBhbiBvYmplY3QgYXMgYSBwYXJhbWV0ZXIuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50T2JqZWN0LnNvdXJjZSA9PT0gJ2dvb2dsZScpIHtcbiAgICAgICAgICAgIGlmICghZXZlbnRPYmplY3QuZ29vZ2xlQ2FsZW5kYXJBcGlLZXkgfHwgIWV2ZW50T2JqZWN0Lmdvb2dsZUNhbGVuZGFySWQgKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdGb3IgZ29vZ2xlIGNhbGVuZGFyIGludGVncmF0aW9uLCBcXCdnb29nbGVDYWxlbmRhckFwaUtleVxcJyBhbmQgXFwnZ29vZ2xlQ2FsZW5kYXJJZFxcJyBzaG91bGQgYmUgcGFzc2VkIGluIHRoZSBwYXJhbWV0ZXIgb2JqZWN0LicpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5zZXRPcHRpb24oJ2dvb2dsZUNhbGVuZGFyQXBpS2V5JywgZXZlbnRPYmplY3QuZ29vZ2xlQ2FsZW5kYXJBcGlLZXkpO1xuICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmFkZEV2ZW50U291cmNlKHtcbiAgICAgICAgICAgICAgICBnb29nbGVDYWxlbmRhcklkOiBldmVudE9iamVjdC5nb29nbGVDYWxlbmRhcklkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCB0aGUgdmlld1R5cGVLZXkgYWNjb3JkaW5nIHRvIHRoZSBjYWxlbmRhclR5cGUgYW5kIHZpZXdUeXBlIHNlbGVjdGVkXG4gICAgICogQHBhcmFtIHZpZXdLZXlcbiAgICAgKi9cbiAgICBnZXRWaWV3VHlwZSh2aWV3S2V5KSB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyVHlwZSA9IHRoaXMuY2FsZW5kYXJ0eXBlO1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3O1xuICAgICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICAgIGlmICh2aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3RNb250aCcgOiAnZGF5R3JpZE1vbnRoJztcbiAgICAgICAgfSBlbHNlIGlmICh2aWV3ID09PSAnd2VlaycpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuQkFTSUMpID8gICdkYXlHcmlkV2VlaycgOiAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3RXZWVrJyA6ICd0aW1lR3JpZFdlZWsnO1xuICAgICAgICB9IGVsc2UgaWYgKHZpZXcgPT09ICdkYXknKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkJBU0lDKSA/ICAnZGF5R3JpZERheScgOiAoY2FsZW5kYXJUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3REYXknIDogJ3RpbWVHcmlkRGF5JztcbiAgICAgICAgfSBlbHNlIGlmICh2aWV3ID09PSAneWVhcicpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnbGlzdFllYXInIDogJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSB2aWV3S2V5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9wZXJhdGlvblR5cGVcbiAgICAgKiBAcGFyYW0gYXJndW1lbnRLZXlcbiAgICAgKiBAcGFyYW0gYXJndW1lbnRWYWx1ZVxuICAgICAqIEhhbmRsZSB2YXJpb3VzIG9wZXJhdGlvbnMgbGlrZSBSZW5kZXJpbmcgQ2FsZW5kYXIsIGNoYW5naW5nIHRoZSBjYWxlbmRhciB2aWV3VHlwZSwgc2V0dGluZyB0aGUgY2FsZW5kYXJPcHRpb25zIGFjY29yZGluZyB0byB0aGUgb3BlcmF0aW9uVHlwZS5cbiAgICAgKi9cbiAgICBhcHBseUNhbGVuZGFyT3B0aW9ucyhvcGVyYXRpb25UeXBlOiBzdHJpbmcsIGFyZ3VtZW50S2V5PzogYW55LCBhcmd1bWVudFZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAob3BlcmF0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAncmVuZGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIucmVuZGVyKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcHRpb24nOlxuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5zZXRPcHRpb24oYXJndW1lbnRLZXksIGFyZ3VtZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2hhbmdlVmlldyc6XG4gICAgICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuZ2V0Vmlld1R5cGUoYXJndW1lbnRLZXkpO1xuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5jaGFuZ2VWaWV3KHZpZXcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgbmV3IGV2ZW50c0RhdGFTZXQgdG8gdGhlIGNhbGVuZGFyIG9iamVjdCB3aXRoIGFkZEV2ZW50IE1ldGhvZCBhbmQgcmUtcmVuZGVycyB0aGUgY2FsZW5kYXJcbiAgICAgKi9cbiAgICByZW5kZXJFdmVudERhdGFTZXQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuYmF0Y2hSZW5kZXJpbmcoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSBzZWxmLiRmdWxsQ2FsZW5kYXIuZ2V0RXZlbnRzKCk7XG4gICAgICAgICAgICBfLmVhY2goIGV2ZW50cywgZnVuY3Rpb24oIGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnREYXRhID0gc2VsZi4kZnVsbENhbGVuZGFyLmdldEV2ZW50QnlJZChldmVudC5pZCk7XG4gICAgICAgICAgICAgICAgZXZlbnREYXRhLnJlbW92ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBfLmVhY2goIHNlbGYuZGF0YVNldEV2ZW50cy5ldmVudHMsIGZ1bmN0aW9uKCBldmVudCkge1xuICAgICAgICAgICAgICAgIHNlbGYuJGZ1bGxDYWxlbmRhci5hZGRFdmVudChldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmKHRoaXMuY2FuY2VsTG9jYWxlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiAjY2FsZW5kYXIgW2F0dHIuYXJpYS1sYWJlbF09XCJ2aWV3IHx8ICdtb250aCdcIj48L2Rpdj5cbiJdfQ==
|
|
626
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEMsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3SixPQUFPLEVBQUMsZUFBZSxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFlLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUU1RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUF1QyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvSyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQUlqRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFDbkMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9NLE1BQU0sb0JBQW9CLEdBQUc7SUFDekIsS0FBSyxFQUFFLGlCQUFpQjtJQUN4QixNQUFNLEVBQUUsT0FBTztJQUNmLEdBQUcsRUFBRSxxQ0FBcUM7Q0FDN0MsQ0FBQztBQUNGLE1BQU0sVUFBVSxHQUFHO0lBQ2YsS0FBSyxFQUFF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QkFBaUI7Ozs7Ozs7MENBTGY7WUFDUCxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQztTQUN4QztRQzVFTCwrQkFBeUQ7O1FBQTFDLGlEQUFtQzs7dUZEK0VyQyxpQkFBaUI7Y0FUN0IsU0FBUzsyQkFDSSxjQUFjLGFBR2I7b0JBQ1Asa0JBQWtCLG1CQUFtQjtpQkFDeEMsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSTs2RkFLZCxTQUFTO2tCQUEvQixTQUFTO21CQUFDLFVBQVU7WUFDSSxXQUFXO2tCQUFuQyxTQUFTO21CQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Z2V0Q2xvbmVkT2JqZWN0LCBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sIEFic3RyYWN0STE4blNlcnZpY2UsIGlzTW9iaWxlQXBwLCBpc01vYmlsZX0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBBUFBMWV9TVFlMRVNfVFlQRSwgY3JlYXRlQXJyYXlGcm9tLCBnZXRFdmFsdWF0ZWREYXRhLCBJV2lkZ2V0Q29uZmlnLCBJUmVkcmF3YWJsZUNvbXBvbmVudCwgcHJvdmlkZUFzV2lkZ2V0UmVmLCBTdHlsYWJsZUNvbXBvbmVudCwgc3R5bGVyIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2NhbGVuZGFyLnByb3BzJztcblxuZGVjbGFyZSBjb25zdCBfLCAkLCBtb21lbnQ7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1jYWxlbmRhcic7XG5jb25zdCBkYXRlRm9ybWF0cyA9IFsneXl5eS1NTS1kZCcsICd5eXl5LU0tZGQnLCAnTS1kZC15eXl5JywgJ01NLWRkLXl5JywgJ3l5eXksIGRkIE1NTU0nLCAneXl5eSwgTU1NIGRkJywgJ01NL2RkL3l5eXknLCAnTS9kL3l5eXknLCAnRUVFLCBkZCBNTU0geXl5eScsICdFRUUgTU1NIGRkIHl5eXknLCAnRUVFRSwgTU1NTSBkZCwgeXl5eScsICd0aW1lc3RhbXAnXTtcbmNvbnN0IGRlZmF1bHRIZWFkZXJPcHRpb25zID0ge1xuICAgIHN0YXJ0OiAncHJldiBuZXh0IHRvZGF5JyxcbiAgICBjZW50ZXI6ICd0aXRsZScsXG4gICAgZW5kOiAnZGF5R3JpZE1vbnRoIGRheUdyaWRXZWVrIGRheUdyaWREYXknXG59O1xuY29uc3QgVklFV19UWVBFUyA9IHtcbiAgICBCQVNJQzogJ2Jhc2ljJyxcbiAgICBBR0VOREE6ICdhZ2VuZGEnLFxuICAgIExJU1Q6ICdsaXN0J1xufTtcbmNvbnN0IEJVVFRPTl9URVhUID0ge1xuICAgIFlFQVI6ICdZZWFyJyxcbiAgICBNT05USDogJ01vbnRoJyxcbiAgICBXRUVLOiAnV2VlaycsXG4gICAgREFZOiAnRGF5JyxcbiAgICBUT0RBWTogJ1RvZGF5J1xufTtcbmNvbnN0IFNFTEVDVElPTl9NT0RFUyA9IHtcbiAgICBOT05FOiAnbm9uZScsXG4gICAgU0lOR0xFOiAnc2luZ2xlJyxcbiAgICBNVUxUSVBMRTogJ211bHRpcGxlJ1xufTtcbmNvbnN0IE5FWFRfREFZX1RIUkVTSE9MRCA9IHtcbiAgICBTVEFSVDogJzAwOjAwJyxcbiAgICBFTkQ6ICcyNDowMCdcbn07XG5jb25zdCBnZXRFdmVudE1vbWVudFZhbHVlID0gKHZhbHVlLCBrZXkpID0+IHtcbiAgICBsZXQgaXNEYXRlID0gZmFsc2U7XG5cbiAgICBkYXRlRm9ybWF0cy5mb3JFYWNoKChmb3JtYXQpID0+IHtcbiAgICAgICAgLy8gbW9tZW50IHN1cHBvcnRzIHVwcGVyY2FzZSBmb3JtYXRzXG4gICAgICAgIGlmIChtb21lbnQodmFsdWUsIGZvcm1hdC50b1VwcGVyQ2FzZSgpLCB0cnVlKS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIGlzRGF0ZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBkYXRlIHRoZW4gZm9yIGVuZCBkYXRlIHRoZSB2YWx1ZSBzaG91bGQgYmUgZW5kIG9mIHRoZSBkYXkgYXMgdGhlIGNhbGVuZGFyIGlzIGFwcHJveGltYXRpbmcgaXQgdG8gdGhlIHN0YXJ0LlxuICAgIGlmIChpc0RhdGUgJiYga2V5ID09PSAnZW5kJykge1xuICAgICAgICByZXR1cm4gbW9tZW50KHZhbHVlKS5lbmRPZignZGF5Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vbWVudCh2YWx1ZSk7XG59O1xuY29uc3QgZ2V0VVRDRGF0ZVRpbWUgPSAoZGF0ZU9iaikgPT4ge1xuICAgIGRhdGVPYmogPSBtb21lbnQoZGF0ZU9iaik7XG4gICAgY29uc3QgeWVhciA9IGRhdGVPYmouZm9ybWF0KCdZWVlZJyksXG4gICAgICAgIC8vIGphdmFzY3JpcHQgc3RhcnRzIHRoZSBtb250aCBjb3VudCBmcm9tICcwJyB3aGVyZSBhcyBtb21lbnQgcmV0dXJucyB0aGUgaHVtYW4gY291bnRcbiAgICAgICAgbW9udGggPSBkYXRlT2JqLmZvcm1hdCgnTU0nKSAtIDEsXG4gICAgICAgIGRheSA9IGRhdGVPYmouZm9ybWF0KCdERCcpLFxuICAgICAgICBob3VycyA9IGRhdGVPYmouZm9ybWF0KCdISCcpLFxuICAgICAgICBtaW51dGVzID0gZGF0ZU9iai5mb3JtYXQoJ21tJyksXG4gICAgICAgIHNlY29uZHMgPSBkYXRlT2JqLmZvcm1hdCgnc3MnKTtcbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpO1xufTtcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLWNhbGVuZGFyJywgaG9zdENsYXNzOiBERUZBVUxUX0NMU307XG5jb25zdCBkYXRlRm9ybWF0ID0gJ1lZWVkvTU0vREQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1t3bUNhbGVuZGFyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Z1bGxjYWxlbmRhci9tYWluLmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoQ2FsZW5kYXJDb21wb25lbnQpXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgSVJlZHJhd2FibGVDb21wb25lbnQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG4gICAgLy8gVGhlIGNhbGVuZGFyIGVsZW1lbnQgcmVmZXJlbmNlXG4gICAgQFZpZXdDaGlsZCgnY2FsZW5kYXInKSBfY2FsZW5kYXI6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlcicpIF9kYXRlcGlja2VyOiBFbGVtZW50UmVmO1xuXG4gICAgcHVibGljIHNlbGVjdGVkZGF0ZXM6IGFueTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRkYXRhOiBhbnk7XG4gICAgcHVibGljIGN1cnJlbnR2aWV3OiBvYmplY3Q7XG4gICAgcHVibGljIGRhdGFzZXQ6IGFueTtcbiAgICBwdWJsaWMgY2FsZW5kYXJ0eXBlO1xuICAgIHB1YmxpYyBjb250cm9scyA9ICduYXZpZ2F0aW9uLCB0b2RheSwgeWVhciwgbW9udGgsIHdlZWssIGRheSc7XG4gICAgcHVibGljIGRhdGF2YWx1ZTtcbiAgICBwdWJsaWMgZXZlbnR0aXRsZTtcbiAgICBwdWJsaWMgZXZlbnRzdGFydDtcbiAgICBwdWJsaWMgZXZlbnRlbmQ7XG4gICAgcHVibGljIGV2ZW50YWxsZGF5O1xuICAgIHB1YmxpYyBldmVudGNsYXNzO1xuXG4gICAgcHJpdmF0ZSBldmVudFNvdXJjZXM6IEFycmF5PGFueT4gPSBbXTtcblxuICAgIHByaXZhdGUgZGF0YVNldEV2ZW50cyA9IHtcbiAgICAgICAgZXZlbnRzOiBbXVxuICAgIH07XG4gICAgcHJpdmF0ZSBvbGREYXRhO1xuICAgIC8vIG1hcCB0aGUgZnVsbGNhbGVuZGFyIEVsZW1lbnQgcmVuZGVyZWRcbiAgICBwcml2YXRlICRmdWxsQ2FsZW5kYXI7XG4gICAgLy8gbW9kZWwgdG8gdGhlIG1vYmlsZSBjYWxlbmRhclxuICAgIHByaXZhdGUgcHJveHlNb2RlbDtcbiAgICBwcml2YXRlIGV2ZW50RGF0YTtcbiAgICBwcml2YXRlIGV2ZW50cztcbiAgICBwcml2YXRlIGNoYW5nZXNTdGFjayA9IFtdO1xuXG4gICAgLy8gY2FsZW5kYXJPcHRpb25zIHRvIHRoZSBjYWxlbmRhclxuICAgIHByaXZhdGUgY2FsZW5kYXJPcHRpb25zOiBhbnkgPSB7XG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBoZWlnaHQ6IDYwMCxcbiAgICAgICAgICAgIGV2ZW50U291cmNlczogdGhpcy5ldmVudFNvdXJjZXMsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGxvY2FsZTogZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtKCdzZWxlY3RlZExvY2FsZScpIHx8ICdlbicsXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGxvbmdQcmVzc0RlbGF5OiBpc01vYmlsZSgpID8gMSA6IDEwMDAsXG4gICAgICAgICAgICBoZWFkZXJUb29sYmFyOiBkZWZhdWx0SGVhZGVyT3B0aW9ucyxcbiAgICAgICAgICAgIG5leHREYXlUaHJlc2hvbGQ6IE5FWFRfREFZX1RIUkVTSE9MRCxcbiAgICAgICAgICAgIHZpZXdzOiB7XG4gICAgICAgICAgICAgICAgbW9udGg6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF5TWF4RXZlbnRzUm93OiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVuc2VsZWN0QXV0bzogZmFsc2UsXG4gICAgICAgICAgICBldmVudERyb3A6IHRoaXMuZXZlbnREcm9wLmJpbmQodGhpcyksXG4gICAgICAgICAgICBldmVudFJlc2l6ZVN0YXJ0OiB0aGlzLm9uRXZlbnRDaGFuZ2VTdGFydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZXZlbnREcmFnU3RhcnQ6IHRoaXMub25FdmVudENoYW5nZVN0YXJ0LmJpbmQodGhpcyksXG4gICAgICAgICAgICBldmVudFJlc2l6ZTogdGhpcy5ldmVudFJlc2l6ZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZXZlbnRDbGljazogdGhpcy5ldmVudENsaWNrLmJpbmQodGhpcyksXG4gICAgICAgICAgICBzZWxlY3Q6IHRoaXMuc2VsZWN0LmJpbmQodGhpcyksXG4gICAgICAgICAgICBldmVudERpZE1vdW50OiB0aGlzLmV2ZW50RGlkTW91bnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZpZXdEaWRNb3VudDogdGhpcy52aWV3RGlkTW91bnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGRhdGVzU2V0OiB0aGlzLmRhdGVzU2V0LmJpbmQodGhpcyksXG4gICAgICAgICAgICBkYXRlQ2xpY2s6IHRoaXMuZGF0ZUNsaWNrLmJpbmQodGhpcylcbiAgICAgICAgfVxuICAgIH07XG4gICAgcHVibGljIHZpZXc6IHN0cmluZztcbiAgICBwcml2YXRlIGRheUNsYXNzOiBBcnJheTxhbnk+ID0gW107XG4gICAgcHJpdmF0ZSBjYW5jZWxMb2NhbGVDaGFuZ2VTdWJzY3JpcHRpb247XG5cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHNlbGVjdHMgdGhlIGRlZmF1bHQgZGF0ZSBnaXZlbiBmb3IgdGhlIGNhbGVuZGFyXG4gICAgc2VsZWN0RGF0ZSgpIHtcbiAgICAgICAgbGV0IHN0YXJ0LCBlbmQ7XG4gICAgICAgIC8vIGNoZWNrcyBpZiBkYXRhdmFsdWUgaXMgYW4gb2JqZWN0IGFuZCBub3QgYSBEYXRlIG9iamVjdFxuICAgICAgICBpZiAoXy5pc09iamVjdCh0aGlzLmRhdGF2YWx1ZSkgJiYgIV8uaXNEYXRlKHRoaXMuZGF0YXZhbHVlKSkge1xuICAgICAgICAgICAgc3RhcnQgPSBtb21lbnQodGhpcy5kYXRhdmFsdWUuc3RhcnQpO1xuICAgICAgICAgICAgZW5kICAgPSBtb21lbnQodGhpcy5kYXRhdmFsdWUuZW5kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gbW9tZW50KHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgICAgIGVuZCAgID0gbW9tZW50KHRoaXMuZGF0YXZhbHVlKS5hZGQoMSwgJ2RheScpLnN0YXJ0T2YoJ2RheScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmdvdG9EYXRlKCBtb21lbnQoc3RhcnQpLl9kKTsgLy8gYWZ0ZXIgc2VsZWN0aW5nIHRoZSBkYXRlIGdvIHRvIHRoZSBkYXRlLlxuXG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5zZWxlY3Qoc3RhcnQudmFsdWVPZigpLCBlbmQudmFsdWVPZigpKTtcbiAgICB9XG5cbiAgICAvLyBjaGFuZ2VzIHRoZSBjYWxlbmRhciB2aWV3IHRvIHRoZSBkZWZhdWx0IGRhdGUgZ2l2ZW4gZm9yIHRoZSBjYWxlbmRhci5cbiAgICBwdWJsaWMgZ290b0RhdGUoKSB7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZSggbW9tZW50KHRoaXMuZGF0YXZhbHVlKS5fZCk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgY2FsZW5kYXIgdmlldyB0byB0aGUgYSB5ZWFyIGFoZWFkXG4gICAgcHVibGljIGdvdG9OZXh0WWVhcigpIHtcbiAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLm5leHRZZWFyKCk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgY2FsZW5kYXIgdmlldyB0byB0aGUgYSB5ZWFyIGJlZm9yZVxuICAgIHB1YmxpYyBnb3RvUHJldlllYXIoKSB7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5wcmV2WWVhcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIHNwZWNpZmllZCBtb250aFxuICAgICAqIEBwYXJhbSBtb250aFZhbCwgMS0xMiB2YWx1ZSBvZiBtb250aFxuICAgICAqL1xuICAgIHB1YmxpYyBnb3RvTW9udGgobW9udGhWYWwpIHtcbiAgICAgICAgbGV0IHByZXNlbnREYXkgPSB0aGlzLiRmdWxsQ2FsZW5kYXIuZ2V0RGF0ZSgpO1xuICAgICAgICBjb25zdCBwcmVzZW50TW9udGhWYWwgPSBwcmVzZW50RGF5LmdldE1vbnRoKCk7XG4gICAgICAgIHByZXNlbnREYXkgPSBtb21lbnQocHJlc2VudERheSk7XG4gICAgICAgIGlmIChwcmVzZW50TW9udGhWYWwgPCBtb250aFZhbCkge1xuICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmdvdG9EYXRlKHByZXNlbnREYXkuYWRkKG1vbnRoVmFsIC0gcHJlc2VudE1vbnRoVmFsIC0gMSwgJ00nKS52YWx1ZU9mKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmdvdG9EYXRlKHByZXNlbnREYXkuc3VidHJhY3QoIHByZXNlbnRNb250aFZhbCAtIG1vbnRoVmFsICsgMSwgJ00nKS52YWx1ZU9mKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgY2FsZW5kYXIgdmlldyB0byB0aGUgYSBtb250aCBhaGVhZFxuICAgIHB1YmxpYyBnb3RvTmV4dE1vbnRoKCkge1xuICAgICAgICBjb25zdCBwcmVzZW50RGF5ID0gbW9tZW50KHRoaXMuJGZ1bGxDYWxlbmRhci5nZXREYXRlKCkpO1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuZ290b0RhdGUocHJlc2VudERheS5hZGQoMSwgJ00nKS52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGNhbGVuZGFyIHZpZXcgdG8gdGhlIGEgbW9udGggYmVmb3JlXG4gICAgcHVibGljIGdvdG9QcmV2TW9udGgoKSB7XG4gICAgICAgIGNvbnN0IHByZXNlbnREYXkgPSBtb21lbnQodGhpcy4kZnVsbENhbGVuZGFyLmdldERhdGUoKSk7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5nb3RvRGF0ZShwcmVzZW50RGF5LnN1YnRyYWN0KDEsICdNJykudmFsdWVPZigpKTtcbiAgICB9XG5cblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gcmUtcmVuZGVycyB0aGUgZXZlbnRzIGFzc2lnbmVkIHRvIHRoZSBjYWxlbmRhci5cbiAgICBwdWJsaWMgcmVyZW5kZXJFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5yZW5kZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNlbGVjdGVkRGF0YShzdGFydCwgZW5kKSB7XG4gICAgICAgIGxldCBkYXRhc2V0ID0gdGhpcy5kYXRhc2V0O1xuICAgICAgICBpZiAoIWRhdGFzZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkRGF0ZXMgPSBbXTtcbiAgICAgICAgY29uc3QgZXZlbnRTdGFydEtleSA9IHRoaXMuZXZlbnRzdGFydCB8fCAnc3RhcnQnO1xuICAgICAgICBjb25zdCBldmVudEVuZEtleSA9IHRoaXMuZXZlbnRlbmQgfHwgJ2VuZCc7XG4gICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChuZXcgRGF0ZShzdGFydCkpLmZvcm1hdCgnTU0vREQvWVlZWScpO1xuICAgICAgICBjb25zdCBlbmREYXRlID0gbW9tZW50KG5ldyBEYXRlKGVuZCkpLnN1YnRyYWN0KDEsICdkYXlzJykuZm9ybWF0KCdNTS9ERC9ZWVlZJyk7XG5cbiAgICAgICAgZGF0YXNldCA9IGRhdGFzZXQuZGF0YSB8fCBkYXRhc2V0O1xuICAgICAgICBkYXRhc2V0LmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlW2V2ZW50U3RhcnRLZXldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXZlbnRTdGFydERhdGUgICA9IG1vbWVudChuZXcgRGF0ZSh2YWx1ZVtldmVudFN0YXJ0S2V5XSkpLmZvcm1hdCgnTU0vREQvWVlZWScpO1xuICAgICAgICAgICAgY29uc3QgZXZlbnRFbmREYXRlICAgPSBtb21lbnQobmV3IERhdGUodmFsdWVbZXZlbnRFbmRLZXldIHx8IHZhbHVlW2V2ZW50U3RhcnRLZXldKSkuZm9ybWF0KCdNTS9ERC9ZWVlZJyk7XG4gICAgICAgICAgICBjb25zdCBldmVudEV4aXN0cyA9IG1vbWVudChldmVudFN0YXJ0RGF0ZSkuaXNTYW1lT3JBZnRlcihzdGFydERhdGUpICYmIG1vbWVudChldmVudEVuZERhdGUpLmlzU2FtZU9yQmVmb3JlKGVuZERhdGUpO1xuICAgICAgICAgICAgaWYgKGV2ZW50RXhpc3RzKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyZWREYXRlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZERhdGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXZlbnREcm9wKGV2ZW50RHJvcEluZm8pIHtcbiAgICAgICAgbGV0IG5ld0RhdGFPYmogPSB0aGlzLmNvbnZlcnRFdmVudE9iakZvck9sZEFuZE5ld0RhdGEoZXZlbnREcm9wSW5mby5ldmVudCk7XG4gICAgICAgIGxldCBvbGREYXRhT2JqID0gdGhpcy5jb252ZXJ0RXZlbnRPYmpGb3JPbGRBbmROZXdEYXRhKGV2ZW50RHJvcEluZm8ub2xkRXZlbnQpO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2V2ZW50ZHJvcCcsIHskZXZlbnQ6IGV2ZW50RHJvcEluZm8uanNFdmVudCwgJG5ld0RhdGE6IG5ld0RhdGFPYmosICRvbGREYXRhOiBvbGREYXRhT2JqLCAkZGVsdGE6IGV2ZW50RHJvcEluZm8uZGVsdGEsICRyZXZlcnRGdW5jOiBldmVudERyb3BJbmZvLnJldmVydCwgJHVpOiB7fSwgJHZpZXc6IGV2ZW50RHJvcEluZm8udmlld30pO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgdGhlIGRlZmF1bHQgZGF0ZSB3aGVuIHRoZSBkYXRhdmFsdWUgaXMgcHJvdmlkZWRcbiAgICBnZXREZWZhdWx0RGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5kYXRhdmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGVuZGFyT3B0aW9ucztcbiAgICB9XG5cbiAgICBnZXRMaWIoKSB7XG4gICAgICAgIHJldHVybiAnZnVsbGNhbGVuZGFyJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdCgkc2VsZWN0aW9uSW5mbykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkZGF0ZXMgPSB7c3RhcnQ6IGdldFVUQ0RhdGVUaW1lKCRzZWxlY3Rpb25JbmZvLnN0YXJ0KSwgZW5kOiBnZXRVVENEYXRlVGltZSgkc2VsZWN0aW9uSW5mby5lbmQpfTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGEgPSB0aGlzLnNldFNlbGVjdGVkRGF0YSgkc2VsZWN0aW9uSW5mby5zdGFydCwgJHNlbGVjdGlvbkluZm8uZW5kKTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdzZWxlY3QnLCB7JHN0YXJ0OiAkc2VsZWN0aW9uSW5mby5zdGFydC52YWx1ZU9mKCksICRlbmQ6ICRzZWxlY3Rpb25JbmZvLmVuZC52YWx1ZU9mKCksICR2aWV3OiAkc2VsZWN0aW9uSW5mby52aWV3LCAkZGF0YTogdGhpcy5zZWxlY3RlZGRhdGF9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgdGhpcyBmdW5jdGlvbnMgdW5zZWxlY3RzIGFsbCB0aGUgc2VsZWN0aW9ucyBpbiBjYWxlbmRhclxuICAgICAqL1xuICAgIHB1YmxpYyB1bnNlbGVjdCgpIHtcbiAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLnVuc2VsZWN0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdGhpcyBmdW5jdGlvbiBpcyB0byBhZGQgZXh0ZW5kZWRQcm9wcyBkYXRhIHRvIHRoZSBkYXRhIG9iamVjdC5cbiAgICAgKiB0aGlzIGlzIGRvbmUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICAgKiBAcGFyYW0gZXZlbnRPYmogZXZlbnQgb2JqZWN0IGFzIHBlciBuZXcgdmVyc2lvbiAodjUpXG4gICAgICogQHJldHVybnMgX2V2ZW50TWV0YWRhdGEgZXZlbnQgb2JqZWN0IGFzIHBlciB0aGUgb2xkIHZlcnNpb24gKHYzKVxuICAgICAqL1xuICAgIHByaXZhdGUgY29udmVydEV2ZW50T2JqKGV2ZW50T2JqKSB7XG4gICAgICAgIGlmICghZXZlbnRPYmouZXh0ZW5kZWRQcm9wcy5fZXZlbnRNZXRhZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIGV2ZW50T2JqO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IF9ldmVudE1ldGFkYXRhID0gZXZlbnRPYmouZXh0ZW5kZWRQcm9wcy5fZXZlbnRNZXRhZGF0YTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF9ldmVudE1ldGFkYXRhLCBldmVudE9iaik7XG4gICAgICAgIHJldHVybiBfZXZlbnRNZXRhZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgdGhpcyBmdW5jdGlvbiBpcyB0byBhZGQgZXh0ZW5kZWRQcm9wcyBkYXRhIHRvIHRoZSBkYXRhIG9iamVjdCBleGx1ZGluZyBzdGFydCBlbmQgdGl0bGUgYWxsRGF5IG9iamVjdHMgaWYgdGhlIGtleSBuYW1lIG1hdGNoZXMuXG4gICAgICogKiB0aGlzIGlzIGRvbmUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICAgKiBAcGFyYW0gZXZlbnRPYmogZXZlbnQgb2JqZWN0IGFzIHBlciBuZXcgdmVyc2lvbiAodjUpXG4gICAgICogQHJldHVybnMgZGF0YSBldmVudCBvYmplY3QgYXMgcGVyIHRoZSBvbGQgdmVyc2lvbiAodjMpXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb252ZXJ0RXZlbnRPYmpGb3JPbGRBbmROZXdEYXRhKGV2ZW50T2JqKSB7XG4gICAgICAgIGNvbnN0IF9ldmVudE1ldGFkYXRhID0gZXZlbnRPYmouZXh0ZW5kZWRQcm9wcztcbiAgICAgICAgXy5leHRlbmQoZXZlbnRPYmosIF9ldmVudE1ldGFkYXRhKTtcbiAgICAgICAgcmV0dXJuIGV2ZW50T2JqO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXZlbnRSZXNpemUoZXZlbnRSZXNpemVJbmZvKSB7XG4gICAgICAgIGxldCBuZXdEYXRhT2JqID0gdGhpcy5jb252ZXJ0RXZlbnRPYmpGb3JPbGRBbmROZXdEYXRhKGV2ZW50UmVzaXplSW5mby5ldmVudCk7XG4gICAgICAgIGxldCBvbGREYXRhT2JqID0gdGhpcy5jb252ZXJ0RXZlbnRPYmpGb3JPbGRBbmROZXdEYXRhKGV2ZW50UmVzaXplSW5mby5vbGRFdmVudCk7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZXZlbnRyZXNpemUnLCB7JGV2ZW50OiBldmVudFJlc2l6ZUluZm8uanNFdmVudCwgJG5ld0RhdGE6IG5ld0RhdGFPYmosICRvbGREYXRhOiBvbGREYXRhT2JqLCAkZGVsdGE6IGV2ZW50UmVzaXplSW5mby5kZWx0YSwgJHJldmVydEZ1bmM6IGV2ZW50UmVzaXplSW5mby5yZXZlcnQsICR1aToge30sICR2aWV3OiBldmVudFJlc2l6ZUluZm8udmlld30pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25FdmVudENoYW5nZVN0YXJ0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMub2xkRGF0YSA9IGdldENsb25lZE9iamVjdChldmVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBldmVudENsaWNrKGV2ZW50Q2xpY2tJbmZvKSB7XG4gICAgICAgIGxldCBldmVudE9iaiA9IHRoaXMuY29udmVydEV2ZW50T2JqKGV2ZW50Q2xpY2tJbmZvLmV2ZW50KTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdldmVudGNsaWNrJywgeyRldmVudDogZXZlbnRDbGlja0luZm8uanNFdmVudCwgJGRhdGE6IGV2ZW50T2JqLCAkdmlldzogZXZlbnRDbGlja0luZm8udmlld30pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXZlbnREaWRNb3VudChldmVudCkge1xuICAgICAgICBsZXQgZXZlbnRPYmogPSB0aGlzLmNvbnZlcnRFdmVudE9iaihldmVudC5ldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmNhbGVuZGFydHlwZSA9PT0gVklFV19UWVBFUy5MSVNUKSB7XG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJy5mYy1saXN0LXRhYmxlJykuYWRkQ2xhc3MoJ3RhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdldmVudHJlbmRlcicsIHskZXZlbnQ6IGV2ZW50LmVsLCAkZGF0YTogZXZlbnRPYmosICR2aWV3OiBldmVudC52aWV3fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2aWV3RGlkTW91bnQoJHZpZXcpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FsZW5kYXJ0eXBlID09PSBWSUVXX1RZUEVTLkxJU1QpIHtcbiAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLmZjLWxpc3QtdGFibGUnKS5hZGRDbGFzcygndGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3ZpZXdyZW5kZXInLCB7JHZpZXc6ICR2aWV3fSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCB3aGVuIHRoZSB2aWV3IG9mIHRoZSBjYWxlbmRhciBjaGFuZ2VzLlxuICAgICAqIEBwYXJhbSBkYXRhIGNvbnRhaW5zIHRoZSBzdGFydCBlbmQgZGF0YSBvZiB0aGUgY2FsZW5kYXIgdmlldy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGRhdGVzU2V0KGRhdGEpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50dmlldyA9IHtzdGFydDogbW9tZW50KGRhdGEuc3RhcnQpLmZvcm1hdChcIllZWVktTU0tRERcIiksIGVuZDogbW9tZW50KGRhdGEuZW5kKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRhdGVDbGljaygkaW5mbykge1xuICAgICAgICBjb25zdCBkYXRlSW5mbyA9IGdldFVUQ0RhdGVUaW1lKCRpbmZvLmRhdGUpLnZhbHVlT2YoKTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdkYXRlY2xpY2snLCB7JGRhdGVJbmZvOiBkYXRlSW5mb30pO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSB0aGUgY2FsZW5kYXIgaGVhZGVyIG9wdGlvbnMgb25jZSB0aGUgY29udHJvbHMgY2hhbmdlc1xuICAgIHByaXZhdGUgdXBkYXRlQ2FsZW5kYXJIZWFkZXJPcHRpb25zKCkge1xuICAgICAgICBjb25zdCBjdHJscyA9IHRoaXMuY29udHJvbHMsIHZpZXdUeXBlID0gdGhpcy5jYWxlbmRhcnR5cGUsXG4gICAgICAgICAgICByZWdFeCA9IG5ldyBSZWdFeHAoJ1xcXFxiZGF5XFxcXGInLCAnZycpO1xuICAgICAgICBsZXQgbGVmdCA9ICcnLCByaWdodCA9ICcnO1xuICAgICAgICBpZiAoY3RybHMgJiYgdmlld1R5cGUpIHtcbiAgICAgICAgICAgIGlmIChfLmluY2x1ZGVzKGN0cmxzLCAnbmF2aWdhdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgbGVmdCArPSAnIHByZXYgbmV4dCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfLmluY2x1ZGVzKGN0cmxzLCAndG9kYXknKSkge1xuICAgICAgICAgICAgICAgIGxlZnQgKz0gJyB0b2RheSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfLmluY2x1ZGVzKGN0cmxzLCAneWVhcicpKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQgKz0gKHZpZXdUeXBlID09PSBWSUVXX1RZUEVTLkxJU1QpID8gJ2xpc3RZZWFyJyA6ICcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhjdHJscywgJ21vbnRoJykpIHtcbiAgICAgICAgICAgICAgICByaWdodCArPSAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnIGxpc3RNb250aCcgOiAnIGRheUdyaWRNb250aCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfLmluY2x1ZGVzKGN0cmxzLCAnd2VlaycpKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQgKz0gKHZpZXdUeXBlID09PSBWSUVXX1RZUEVTLkJBU0lDKSA/ICAnIGRheUdyaWRXZWVrJyA6ICh2aWV3VHlwZSA9PT0gVklFV19UWVBFUy5MSVNUKSA/ICcgbGlzdFdlZWsnIDogJyB0aW1lR3JpZFdlZWsnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVnRXgudGVzdChjdHJscykpIHtcbiAgICAgICAgICAgICAgICByaWdodCArPSAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuQkFTSUMpID8gICcgZGF5R3JpZERheScgOiAodmlld1R5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnIGxpc3REYXknIDogJyB0aW1lR3JpZERheSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVmdC5jaGFyQXQoMCkgPT09ICcgJykge1xuICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0LnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyaWdodC5jaGFyQXQoMCkgPT09ICcgJykge1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gcmlnaHQuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXy5leHRlbmQodGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuaGVhZGVyVG9vbGJhciwgeydzdGFydCc6IGxlZnQsICdlbmQnOiByaWdodH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHKTtcblxuICAgICAgICB0aGlzLmV2ZW50U291cmNlcy5wdXNoKHRoaXMuZGF0YVNldEV2ZW50cyk7XG4gICAgICAgIGNvbnN0IEZ1bGxDYWxlbmRhciA9IHdpbmRvd1snRnVsbENhbGVuZGFyJ107XG4gICAgICAgIGlmICghRnVsbENhbGVuZGFyLl9fd21fbG9jYWxlX2luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpMThuU2VydmljZS5pbml0Q2FsZW5kYXJMb2NhbGUoKTtcbiAgICAgICAgICAgIEZ1bGxDYWxlbmRhci5fX3dtX2xvY2FsZV9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0QXBwSW5zdGFuY2UoKS5zdWJzY3JpYmUoXCJsb2NhbGUtY2hhbmdlZFwiLCAobGliTG9jYWxlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExvY2FsZSgpO1xuICAgICAgICAgICAgdGhpcy5hcHBseUNhbGVuZGFyT3B0aW9ucygnb3B0aW9uJywgJ2xvY2FsZScsIGxpYkxvY2FsZS5mdWxsQ2FsZW5kYXIgfHwgJ2VuJyk7XG4gICAgICAgICAgICB0aGlzLnJlZHJhdygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuQ09OVEFJTkVSLCBbJ2hlaWdodCddKTtcbiAgICAgICAgdGhpcy5zZXRMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBvblN0eWxlQ2hhbmdlKGtleSwgbnYsIG92Pykge1xuICAgICAgICBzdXBlci5vblN0eWxlQ2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2hlaWdodCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmhlaWdodCA9IHRoaXMuY2FsY3VsYXRlSGVpZ2h0KG52KTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdvcHRpb24nLCAnaGVpZ2h0JywgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3Y/KSB7XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc2VsZWN0aW9ubW9kZSc6XG4gICAgICAgICAgICAgICAgaWYgKG52ICE9PSBTRUxFQ1RJT05fTU9ERVMuTk9ORSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5zZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhck9wdGlvbnMoJ29wdGlvbicsICdzZWxlY3RhYmxlJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudiA9PT0gU0VMRUNUSU9OX01PREVTLlNJTkdMRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuc2VsZWN0Q29uc3RyYWludCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6ICcwMDowMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGltZTogJzI0OjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJPcHRpb25zKCdvcHRpb24nLCAnc2VsZWN0Q29uc3RyYWludCcsIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLnNlbGVjdENvbnN0cmFpbnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhck9wdGlvbnMoJ29wdGlvbicsICdzZWxlY3RDb25zdHJhaW50Jywge30pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuc2VsZWN0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyT3B0aW9ucygnb3B0aW9uJywgJ3NlbGVjdGFibGUnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmlldyc6XG4gICAgICAgICAgICAgICAgaWYgKG52ICE9PSAnbW9udGgnIHx8IHRoaXMuY2FsZW5kYXJ0eXBlID09PSBWSUVXX1RZUEVTLkxJU1QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuZGVmYXVsdFZpZXcgPSB0aGlzLmNhbGVuZGFydHlwZSArIF8uY2FwaXRhbGl6ZShudik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIuZGVmYXVsdFZpZXcgPSBudjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhck9wdGlvbnMoJ2NoYW5nZVZpZXcnLCB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5kZWZhdWx0Vmlldyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjYWxlbmRhcnR5cGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJ0eXBlID0gbnYgfHwgJ2RheUdyaWQnO1xuICAgICAgICAgICAgY2FzZSAnY29udHJvbHMnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJIZWFkZXJPcHRpb25zKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXRhc2V0JzpcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNldDtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFzZXQgPSBudjtcbiAgICAgICAgICAgICAgICBkYXRhU2V0ID0gY3JlYXRlQXJyYXlGcm9tKGdldENsb25lZE9iamVjdChudikpO1xuICAgICAgICAgICAgICAgIGRhdGFTZXQgPSB0aGlzLmNvbnN0cnVjdENhbGVuZGFyRGF0YXNldChkYXRhU2V0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXRFdmVudHMuZXZlbnRzID0gZGF0YVNldC5maWx0ZXIoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0YXJ0ID0gZXZlbnQuc3RhcnQgfHwgZXZlbnQuZW5kO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckV2ZW50RGF0YVNldCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2hvdyc6XG4gICAgICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyPy5jaGFuZ2VWaWV3KHRoaXMuZ2V0Vmlld1R5cGUodGhpcy52aWV3ID8gdGhpcy52aWV3IDogJ2RheUdyaWRNb250aCcpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRvIGNhbGN1bGF0ZSB0aGUgaGVpZ2h0IGZvciB0aGUgZXZlbnQgbGltaXQgYW5kIHBhcnNpbmcgdGhlIHZhbHVlIHdoZW4gaXQgaXMgcGVyY2VudGFnZSBiYXNlZC5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUhlaWdodChoZWlnaHQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCAkcGFyZW50ID0gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLnBhcmVudCgpLFxuICAgICAgICAgICAgZWxIZWlnaHQgPSBoZWlnaHQgfHwgJzY1MHB4JztcblxuICAgICAgICBsZXQgcGFyZW50SGVpZ2h0ID0gJHBhcmVudC5jc3MoJ2hlaWdodCcpLFxuICAgICAgICAgICAgY29tcHV0ZWRIZWlnaHQ6IG51bWJlcjtcblxuICAgICAgICBpZiAoXy5pbmNsdWRlcyhlbEhlaWdodCwgJyUnKSkge1xuICAgICAgICAgICAgaWYgKF8uaW5jbHVkZXMocGFyZW50SGVpZ2h0LCAnJScpKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50SGVpZ2h0ID0gJHBhcmVudC5oZWlnaHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbXB1dGVkSGVpZ2h0ID0gKHBhcnNlSW50KHBhcmVudEhlaWdodCwgMTApICogTnVtYmVyKGVsSGVpZ2h0LnJlcGxhY2UoL1xcJS9nLCAnJykpKSAvIDEwMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXB1dGVkSGVpZ2h0ID0gcGFyc2VJbnQoZWxIZWlnaHQsIDEwKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci52aWV3cy5tb250aC5ldmVudExpbWl0ID0gcGFyc2VJbnQoJycgKyBjb21wdXRlZEhlaWdodCAvIDIwMCwgMTApICsgMTtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyRWwgPSB0aGlzLl9jYWxlbmRhci5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBGdWxsQ2FsZW5kYXIgPSB3aW5kb3dbJ0Z1bGxDYWxlbmRhciddO1xuICAgICAgICBjb25zdCBjYWxlbmRhciA9IG5ldyBGdWxsQ2FsZW5kYXIuQ2FsZW5kYXIoY2FsZW5kYXJFbCwgdGhpcy5jYWxlbmRhck9wdGlvbnMuY2FsZW5kYXIpO1xuICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIgPSAgY2FsZW5kYXI7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmVmb3JlcmVuZGVyJywgeyckZXZlbnQnIDoge319KTtcbiAgICAgICAgY2FsZW5kYXIucmVuZGVyKCk7XG5cbiAgICAgICAgLy8gaWYgdGhlIGNoYW5nZXMgYXJlIGFscmVhZHkgc3RhY2tlZCBiZWZvcmUgY2FsZW5kYXIgcmVuZGVycyB0aGVuIGV4ZWN1dGUgdGhlbSB3aGVuIG5lZWRlZFxuICAgICAgICBpZiAodGhpcy5jaGFuZ2VzU3RhY2subGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZXNTdGFjay5mb3JFYWNoKChjaGFuZ2VPYmopID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5Q2FsZW5kYXJPcHRpb25zKGNoYW5nZU9iai5vcGVyYXRpb25UeXBlLCBjaGFuZ2VPYmouYXJndW1lbnRLZXksIGNoYW5nZU9iai5hcmd1bWVudFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VzU3RhY2subGVuZ3RoID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vV01TLTIyNDEyIDogY2hhbmdlIGNhbGVuZGVyJ3MgdmlldyBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBzZXQgZnJvbSBzdHVkaW9cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuY2hhbmdlVmlldyh0aGlzLmdldFZpZXdUeXBlKHRoaXMudmlldyA/IHRoaXMudmlldyA6ICdkYXlHcmlkTW9udGgnKSk7XG4gICAgICAgIH0sNTApO1xuICAgIH1cblxuICAgIC8vIGNvbnN0cnVjdHMgdGhlIGNhbGVuZGFyIGRhdGFzZXQgYnkgbWFwcGluZyB0aGUgZXZlbnRzdGFydCwgZXZlbnRlbmQsIGV2ZW50dGl0bGUgZXRjLixcbiAgICBwcml2YXRlIGNvbnN0cnVjdENhbGVuZGFyRGF0YXNldChldmVudFNvdXJjZSkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgdGl0bGU6IHRoaXMuZXZlbnR0aXRsZSB8fCAndGl0bGUnLFxuICAgICAgICAgICAgYWxsRGF5OiB0aGlzLmV2ZW50YWxsZGF5IHx8ICdhbGxkYXknLFxuICAgICAgICAgICAgc3RhcnQ6IHRoaXMuZXZlbnRzdGFydCB8fCAnc3RhcnQnLFxuICAgICAgICAgICAgZW5kOiB0aGlzLmV2ZW50ZW5kIHx8ICdlbmQnLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLmV2ZW50Y2xhc3MgfHwgJ2NsYXNzTmFtZSdcbiAgICAgICAgfTtcblxuICAgICAgICBldmVudFNvdXJjZS5mb3JFYWNoKChvYmopID0+IHtcbiAgICAgICAgICAgIG9iai5fZXZlbnRNZXRhZGF0YSA9IF8uY2xvbmUob2JqKTtcbiAgICAgICAgICAgIGlmKF8uaXNFbXB0eShvYmouX2V2ZW50TWV0YWRhdGEudXJsKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmouX2V2ZW50TWV0YWRhdGEudXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoXy5pc0VtcHR5KG9iai51cmwpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9iai51cmw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8ubWFwS2V5cyhwcm9wZXJ0aWVzLCAgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgb2JqVmFsO1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICd0aXRsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqVmFsID0gZ2V0RXZhbHVhdGVkRGF0YShvYmosIHtleHByZXNzaW9uOiB2YWx1ZX0sIHRoaXMudmlld1BhcmVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhbGxEYXknKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ialZhbCA9ICEhXy5nZXQob2JqLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqVmFsID0gXy5nZXQob2JqLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghb2JqVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JqW2tleV0gPSBvYmpWYWw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBldmVudFNvdXJjZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExvY2FsZSgpIHtcbiAgICAgICAgY29uc3QgeWVhciA9IF8uZ2V0KHRoaXMuYXBwTG9jYWxlLCAnTEFCRUxfQ0FMRU5EQVJfWUVBUicpIHx8IEJVVFRPTl9URVhULllFQVI7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gXy5nZXQodGhpcy5hcHBMb2NhbGUsICdMQUJFTF9DQUxFTkRBUl9NT05USCcpIHx8IEJVVFRPTl9URVhULk1PTlRIO1xuICAgICAgICBjb25zdCB3ZWVrID0gXy5nZXQodGhpcy5hcHBMb2NhbGUsICdMQUJFTF9DQUxFTkRBUl9XRUVLJykgfHwgQlVUVE9OX1RFWFQuV0VFSztcbiAgICAgICAgY29uc3QgZGF5ID0gXy5nZXQodGhpcy5hcHBMb2NhbGUsICdMQUJFTF9DQUxFTkRBUl9EQVknKSB8fCBCVVRUT05fVEVYVC5EQVk7XG4gICAgICAgIGNvbnN0IHRvZGF5ID0gXy5nZXQodGhpcy5hcHBMb2NhbGUsICdMQUJFTF9DQUxFTkRBUl9UT0RBWScpIHx8IEJVVFRPTl9URVhULlRPREFZO1xuICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5idXR0b25UZXh0ICAgID0geyB5ZWFyLCBtb250aCwgd2VlaywgZGF5LCB0b2RheSxcbiAgICAgICAgICAgICdsaXN0WWVhcic6IHllYXIsXG4gICAgICAgICAgICAnbGlzdE1vbnRoJzogbW9udGgsXG4gICAgICAgICAgICAnbGlzdFdlZWsnOiB3ZWVrLFxuICAgICAgICAgICAgJ2xpc3REYXknOiBkYXlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBvdmVycmlkZSB0aGUgZGVmYXVsdCBjYWxlbmRhciBvcHRpb25zIHdpdGggdGhlIG5ld1NldCBvZiBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnNcbiAgICAgKi9cbiAgICBvdmVycmlkZURlZmF1bHRzKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKF8uaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLm1hcChvcHRpb24gPT4gdGhpcy4kZnVsbENhbGVuZGFyLnNldE9wdGlvbihvcHRpb25bMF0sIG9wdGlvblsxXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWYgdGhlIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBiZWZvcmUgdGhlIGNhbGVuZGFyIHJlbmRlcnMsIHRoZSBjaGFuZ2VzIGFyZSBwdXNoZWQgaW50byBjaGFuZ2VzU3RhY2sgYW5kIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGNhbGVuZGFyIGdldHMgcmVuZGVyZWRcbiAgICAgKiBpZiB0aGUgY2FsZW5kYXIgaXMgYWxyZWFkeSByZW5kZXJlZCwgdGhlbiB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIGFjY29yZGluZyB0byB0aGUgb3BlcmF0aW9uIHR5cGVcbiAgICAgKiBAcGFyYW0gb3BlcmF0aW9uVHlwZVxuICAgICAqIEBwYXJhbSBhcmd1bWVudEtleVxuICAgICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlXG4gICAgICovXG4gICAgdXBkYXRlQ2FsZW5kYXJPcHRpb25zKG9wZXJhdGlvblR5cGU6IHN0cmluZywgYXJndW1lbnRLZXk/OiBhbnksIGFyZ3VtZW50VmFsdWU/OiBhbnkpOiB2b2lkIHsvL1xuICAgICAgICBpZiAoIXRoaXMuJGZ1bGxDYWxlbmRhcikge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VzU3RhY2sucHVzaCh7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogb3BlcmF0aW9uVHlwZSxcbiAgICAgICAgICAgICAgICBhcmd1bWVudEtleTogYXJndW1lbnRLZXksXG4gICAgICAgICAgICAgICAgYXJndW1lbnRWYWx1ZTogYXJndW1lbnRWYWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBseUNhbGVuZGFyT3B0aW9ucyhvcGVyYXRpb25UeXBlLCBhcmd1bWVudEtleSwgYXJndW1lbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmVkcmF3KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyT3B0aW9ucygncmVuZGVyJyk7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhcj8uY2hhbmdlVmlldyh0aGlzLmdldFZpZXdUeXBlKHRoaXMudmlldyA/IHRoaXMudmlldyA6ICdkYXlHcmlkTW9udGgnKSk7XG4gICAgfVxuXG4gICAgLy8gb24gZGF0ZSBjaGFuZ2UgaW52b2tlIHRoZSBzZWxlY3QgZXZlbnQsIGFuZCBpZiBkYXRlIGhhcyBldmVudCBvbiBpdCB0aGVuIGludm9rZSB0aGUgZXZlbnQgY2xpY2suXG4gICAgcHJpdmF0ZSBvblZhbHVlQ2hhbmdlKHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJveHlNb2RlbCA9IHZhbHVlO1xuICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgICAgICAgID0gdGhpcy5wcm94eU1vZGVsICYmIG1vbWVudCh0aGlzLnByb3h5TW9kZWwpLnN0YXJ0T2YoJ2RheScpLmZvcm1hdChkYXRlRm9ybWF0KSxcbiAgICAgICAgICAgIHNlbGVjdGVkRXZlbnREYXRhICAgPSB0aGlzLmV2ZW50RGF0YVtzZWxlY3RlZERhdGVdLFxuICAgICAgICAgICAgc3RhcnQgICAgICAgICAgICAgICA9IG1vbWVudCh0aGlzLnByb3h5TW9kZWwpLFxuICAgICAgICAgICAgZW5kICAgICAgICAgICAgICAgICA9IG1vbWVudCh0aGlzLnByb3h5TW9kZWwpLmVuZE9mKCdkYXknKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGEgPSBzZWxlY3RlZEV2ZW50RGF0YTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGRhdGVzID0ge1xuICAgICAgICAgICAgJ3N0YXJ0JzogbW9tZW50KHNlbGVjdGVkRGF0ZSkudmFsdWVPZigpLFxuICAgICAgICAgICAgJ2VuZCcgIDogbW9tZW50KHNlbGVjdGVkRGF0ZSkuZW5kT2YoJ2RheScpLnZhbHVlT2YoKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy5jYWxlbmRhci5zZWxlY3Qoc3RhcnQudmFsdWVPZigpLCBlbmQudmFsdWVPZigpLCB7fSwgdGhpcywgc2VsZWN0ZWRFdmVudERhdGEpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRFdmVudERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLmNhbGVuZGFyLmV2ZW50Q2xpY2soc2VsZWN0ZWRFdmVudERhdGEsIHt9LCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZWNlaXZlIGFuIG9iamVjdCBjb250YWluaW5nIHNvdXJjZSBvZiBjYWxlbmRhciwgYXBpa2V5IGFuZCBjYWxlbmRhcklkIGFuZCB3aWxsIGludGVncmF0ZSB0aGUgcmVzcGVjdGl2ZSBjYWxlbmRhciB3aXRoIGZ1bGxjYWxlbmRhci5cbiAgICAgKiBAcGFyYW0gZXZlbnRPYmplY3RcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRXZlbnRTb3VyY2UoZXZlbnRPYmplY3QpIHtcbiAgICAgICAgaWYgKF8uaXNFbXB0eShldmVudE9iamVjdCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignYWRkRXZlbnRTb3VyY2UgbWV0aG9kIHJlcXVpcmVzIGFuIG9iamVjdCBhcyBhIHBhcmFtZXRlci4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnRPYmplY3Quc291cmNlID09PSAnZ29vZ2xlJykge1xuICAgICAgICAgICAgaWYgKCFldmVudE9iamVjdC5nb29nbGVDYWxlbmRhckFwaUtleSB8fCAhZXZlbnRPYmplY3QuZ29vZ2xlQ2FsZW5kYXJJZCApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0ZvciBnb29nbGUgY2FsZW5kYXIgaW50ZWdyYXRpb24sIFxcJ2dvb2dsZUNhbGVuZGFyQXBpS2V5XFwnIGFuZCBcXCdnb29nbGVDYWxlbmRhcklkXFwnIHNob3VsZCBiZSBwYXNzZWQgaW4gdGhlIHBhcmFtZXRlciBvYmplY3QuJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLnNldE9wdGlvbignZ29vZ2xlQ2FsZW5kYXJBcGlLZXknLCBldmVudE9iamVjdC5nb29nbGVDYWxlbmRhckFwaUtleSk7XG4gICAgICAgICAgICB0aGlzLiRmdWxsQ2FsZW5kYXIuYWRkRXZlbnRTb3VyY2Uoe1xuICAgICAgICAgICAgICAgIGdvb2dsZUNhbGVuZGFySWQ6IGV2ZW50T2JqZWN0Lmdvb2dsZUNhbGVuZGFySWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IHRoZSB2aWV3VHlwZUtleSBhY2NvcmRpbmcgdG8gdGhlIGNhbGVuZGFyVHlwZSBhbmQgdmlld1R5cGUgc2VsZWN0ZWRcbiAgICAgKiBAcGFyYW0gdmlld0tleVxuICAgICAqL1xuICAgIGdldFZpZXdUeXBlKHZpZXdLZXkpIHtcbiAgICAgICAgY29uc3QgY2FsZW5kYXJUeXBlID0gdGhpcy5jYWxlbmRhcnR5cGU7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLnZpZXc7XG4gICAgICAgIGxldCByZXN1bHQ7XG5cbiAgICAgICAgaWYgKHZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnbGlzdE1vbnRoJyA6ICdkYXlHcmlkTW9udGgnO1xuICAgICAgICB9IGVsc2UgaWYgKHZpZXcgPT09ICd3ZWVrJykge1xuICAgICAgICAgICAgcmVzdWx0ID0gKGNhbGVuZGFyVHlwZSA9PT0gVklFV19UWVBFUy5CQVNJQykgPyAgJ2RheUdyaWRXZWVrJyA6IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnbGlzdFdlZWsnIDogJ3RpbWVHcmlkV2Vlayc7XG4gICAgICAgIH0gZWxzZSBpZiAodmlldyA9PT0gJ2RheScpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuQkFTSUMpID8gICdkYXlHcmlkRGF5JyA6IChjYWxlbmRhclR5cGUgPT09IFZJRVdfVFlQRVMuTElTVCkgPyAnbGlzdERheScgOiAndGltZUdyaWREYXknO1xuICAgICAgICB9IGVsc2UgaWYgKHZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgcmVzdWx0ID0gKGNhbGVuZGFyVHlwZSA9PT0gVklFV19UWVBFUy5MSVNUKSA/ICdsaXN0WWVhcicgOiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHZpZXdLZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gb3BlcmF0aW9uVHlwZVxuICAgICAqIEBwYXJhbSBhcmd1bWVudEtleVxuICAgICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlXG4gICAgICogSGFuZGxlIHZhcmlvdXMgb3BlcmF0aW9ucyBsaWtlIFJlbmRlcmluZyBDYWxlbmRhciwgY2hhbmdpbmcgdGhlIGNhbGVuZGFyIHZpZXdUeXBlLCBzZXR0aW5nIHRoZSBjYWxlbmRhck9wdGlvbnMgYWNjb3JkaW5nIHRvIHRoZSBvcGVyYXRpb25UeXBlLlxuICAgICAqL1xuICAgIGFwcGx5Q2FsZW5kYXJPcHRpb25zKG9wZXJhdGlvblR5cGU6IHN0cmluZywgYXJndW1lbnRLZXk/OiBhbnksIGFyZ3VtZW50VmFsdWU/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChvcGVyYXRpb25UeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdyZW5kZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5yZW5kZXIoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLnNldE9wdGlvbihhcmd1bWVudEtleSwgYXJndW1lbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjaGFuZ2VWaWV3JzpcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5nZXRWaWV3VHlwZShhcmd1bWVudEtleSk7XG4gICAgICAgICAgICAgICAgdGhpcy4kZnVsbENhbGVuZGFyLmNoYW5nZVZpZXcodmlldyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHRoZSBuZXcgZXZlbnRzRGF0YVNldCB0byB0aGUgY2FsZW5kYXIgb2JqZWN0IHdpdGggYWRkRXZlbnQgTWV0aG9kIGFuZCByZS1yZW5kZXJzIHRoZSBjYWxlbmRhclxuICAgICAqL1xuICAgIHJlbmRlckV2ZW50RGF0YVNldCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHRoaXMuJGZ1bGxDYWxlbmRhci5iYXRjaFJlbmRlcmluZyhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50cyA9IHNlbGYuJGZ1bGxDYWxlbmRhci5nZXRFdmVudHMoKTtcbiAgICAgICAgICAgIF8uZWFjaCggZXZlbnRzLCBmdW5jdGlvbiggZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudERhdGEgPSBzZWxmLiRmdWxsQ2FsZW5kYXIuZ2V0RXZlbnRCeUlkKGV2ZW50LmlkKTtcbiAgICAgICAgICAgICAgICBldmVudERhdGEucmVtb3ZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF8uZWFjaCggc2VsZi5kYXRhU2V0RXZlbnRzLmV2ZW50cywgZnVuY3Rpb24oIGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgc2VsZi4kZnVsbENhbGVuZGFyLmFkZEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYodGhpcy5jYW5jZWxMb2NhbGVDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsTG9jYWxlQ2hhbmdlU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICNjYWxlbmRhciBbYXR0ci5hcmlhLWxhYmVsXT1cInZpZXcgfHwgJ21vbnRoJ1wiPjwvZGl2PlxuIl19
|
|
@@ -451,6 +451,12 @@ class CalendarComponent extends StylableComponent {
|
|
|
451
451
|
};
|
|
452
452
|
eventSource.forEach((obj) => {
|
|
453
453
|
obj._eventMetadata = _.clone(obj);
|
|
454
|
+
if (_.isEmpty(obj._eventMetadata.url)) {
|
|
455
|
+
delete obj._eventMetadata.url;
|
|
456
|
+
}
|
|
457
|
+
if (_.isEmpty(obj.url)) {
|
|
458
|
+
delete obj.url;
|
|
459
|
+
}
|
|
454
460
|
_.mapKeys(properties, (value, key) => {
|
|
455
461
|
let objVal;
|
|
456
462
|
if (key === 'title') {
|