@rivet-health/design-system 26.12.2 → 26.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/input/calendar/calendar.component.mjs +7 -3
- package/esm2020/lib/input/date-range/date-range.component.mjs +4 -4
- package/esm2020/lib/input/simple-select/simple-select.component.mjs +2 -2
- package/esm2020/lib/overlay/callout/tooltip/tooltip.component.mjs +2 -2
- package/esm2020/lib/table/table/table/table.component.mjs +3 -3
- package/esm2020/lib/visualization/stacked-column/stacked-column.component.mjs +3 -2
- package/esm2020/lib/visualization/time-series/time-series.component.mjs +3 -2
- package/fesm2015/rivet-health-design-system.mjs +18 -12
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +18 -12
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/input/calendar/calendar.component.d.ts +1 -0
- package/lib/input/date-range/date-range.component.d.ts +3 -3
- package/lib/input/simple-select/simple-select.component.d.ts +1 -1
- package/lib/visualization/stacked-column/stacked-column.component.d.ts +1 -1
- package/lib/visualization/time-series/time-series.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -252,12 +252,16 @@ export class CalendarComponent {
|
|
|
252
252
|
}
|
|
253
253
|
this.dateSelect.emit(day.date);
|
|
254
254
|
}
|
|
255
|
+
emitActiveYearMonth(yearMonth) {
|
|
256
|
+
if (yearMonth)
|
|
257
|
+
this.activeYearMonthChange.emit(yearMonth);
|
|
258
|
+
}
|
|
255
259
|
}
|
|
256
260
|
CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
257
|
-
CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CalendarComponent, selector: "riv-calendar", inputs: { activeYearMonth: "activeYearMonth", displayMin: "displayMin", displayMax: "displayMax", selectableMin: "selectableMin", selectableMax: "selectableMax", omitRange: "omitRange", selectedValue: "selectedValue" }, outputs: { activeYearMonthChange: "activeYearMonthChange", dateSelect: "dateSelect" }, ngImport: i0, template: "<div class=\"controls\">\n <div>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Month...' }\"\n [optionGroups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"
|
|
261
|
+
CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CalendarComponent, selector: "riv-calendar", inputs: { activeYearMonth: "activeYearMonth", displayMin: "displayMin", displayMax: "displayMax", selectableMin: "selectableMin", selectableMax: "selectableMax", omitRange: "omitRange", selectedValue: "selectedValue" }, outputs: { activeYearMonthChange: "activeYearMonthChange", dateSelect: "dateSelect" }, ngImport: i0, template: "<div class=\"controls\">\n <div>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Month...' }\"\n [optionGroups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"emitActiveYearMonth($event?.date ?? null)\"\n >\n <ng-template #trigger let-state=\"state\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ state.display.selected || '...' }}\n </button>\n </ng-template>\n </riv-simple-select>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Year...' }\"\n [optionGroups]=\"yearOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedYearOption$ | async\"\n (selectedOptionChange)=\"emitActiveYearMonth($event?.date ?? null)\"\n >\n <ng-template #trigger let-state=\"state\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ state.display.selected || '...' }}\n </button>\n </ng-template>\n </riv-simple-select>\n </div>\n <div\n *ngIf=\"{ prev: previousMonth$ | async, next: nextMonth$ | async }; let vm\"\n >\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowLeft'\"\n [disabled]=\"!vm.prev\"\n (click)=\"vm.prev ? activeYearMonthChange.emit(vm.prev) : null\"\n type=\"button\"\n ></button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowRight'\"\n [disabled]=\"!vm.next\"\n (click)=\"vm.next ? activeYearMonthChange.emit(vm.next) : null\"\n type=\"button\"\n ></button>\n </div>\n</div>\n<div class=\"calendar\">\n <span class=\"label\">Su</span>\n <span class=\"label\">Mo</span>\n <span class=\"label\">Tu</span>\n <span class=\"label\">We</span>\n <span class=\"label\">Th</span>\n <span class=\"label\">Fr</span>\n <span class=\"label\">Sa</span>\n <button\n *ngFor=\"let day of dates$ | async\"\n class=\"day\"\n [disabled]=\"day.hidden\"\n [class.bleed]=\"!day.inCurrentMonth\"\n [class.fade-in]=\"day.fadeIn\"\n [class.fade-out]=\"day.fadeOut\"\n [class.in-range]=\"day.inRange\"\n [class.rounded-ne]=\"day.roundedNe\"\n [class.rounded-nw]=\"day.roundedNw\"\n [class.rounded-se]=\"day.roundedSe\"\n [class.rounded-sw]=\"day.roundedSw\"\n (click)=\"selectDay(day)\"\n type=\"button\"\n >\n <span\n class=\"day-wrapper\"\n [class.selected]=\"day.selected\"\n [class.today]=\"day.today\"\n [class.hidden]=\"day.hidden\"\n >\n {{ day.display }}\n </span>\n </button>\n</div>\n", styles: [".controls{display:flex;align-items:center;justify-content:space-between}.calendar{display:grid;grid-template-columns:repeat(7,calc(var(--base-grid-size) * 10));grid-auto-rows:calc(var(--base-grid-size) * 6)}.label{display:flex;justify-content:center;align-items:center;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);font-weight:var(--font-weight-heavy)}.day{display:flex;align-items:stretch;cursor:pointer}.day:hover{background-color:var(--surface-light-1)}.day.in-range{background-color:var(--purp-10)}.day.fade-out{background-image:linear-gradient(to right,var(--purp-10),var(--white-100))}.day.fade-in{background-image:linear-gradient(to right,var(--white-100),var(--purp-10))}.day.bleed{color:var(--type-light-disabled)}.day.rounded-ne{border-top-right-radius:var(--border-radius-medium)}.day.rounded-nw{border-top-left-radius:var(--border-radius-medium)}.day.rounded-sw{border-bottom-left-radius:var(--border-radius-medium)}.day.rounded-se{border-bottom-right-radius:var(--border-radius-medium)}.day-wrapper{flex-grow:1;display:flex;justify-content:center;align-items:center;border-radius:var(--border-radius-medium)}.day-wrapper.selected{background-color:var(--purp-60);color:var(--type-dark-high-contrast)}.day-wrapper.today{border-radius:calc(var(--base-grid-size) * 8);border:var(--border-width) solid var(--border-light);font-weight:var(--font-weight-heavy)}.day-wrapper.hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i3.SimpleSelectComponent, selector: "riv-simple-select", inputs: ["optionGroups", "selectedOption", "size", "disabled", "locked", "filterabilityOptions", "maxHeight", "maxWidth"], outputs: ["selectedOptionChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.OptionGroupPipe, name: "rivOptionGroup" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
258
262
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
259
263
|
type: Component,
|
|
260
|
-
args: [{ selector: 'riv-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"controls\">\n <div>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Month...' }\"\n [optionGroups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"
|
|
264
|
+
args: [{ selector: 'riv-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"controls\">\n <div>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Month...' }\"\n [optionGroups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"emitActiveYearMonth($event?.date ?? null)\"\n >\n <ng-template #trigger let-state=\"state\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ state.display.selected || '...' }}\n </button>\n </ng-template>\n </riv-simple-select>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Year...' }\"\n [optionGroups]=\"yearOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedYearOption$ | async\"\n (selectedOptionChange)=\"emitActiveYearMonth($event?.date ?? null)\"\n >\n <ng-template #trigger let-state=\"state\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ state.display.selected || '...' }}\n </button>\n </ng-template>\n </riv-simple-select>\n </div>\n <div\n *ngIf=\"{ prev: previousMonth$ | async, next: nextMonth$ | async }; let vm\"\n >\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowLeft'\"\n [disabled]=\"!vm.prev\"\n (click)=\"vm.prev ? activeYearMonthChange.emit(vm.prev) : null\"\n type=\"button\"\n ></button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowRight'\"\n [disabled]=\"!vm.next\"\n (click)=\"vm.next ? activeYearMonthChange.emit(vm.next) : null\"\n type=\"button\"\n ></button>\n </div>\n</div>\n<div class=\"calendar\">\n <span class=\"label\">Su</span>\n <span class=\"label\">Mo</span>\n <span class=\"label\">Tu</span>\n <span class=\"label\">We</span>\n <span class=\"label\">Th</span>\n <span class=\"label\">Fr</span>\n <span class=\"label\">Sa</span>\n <button\n *ngFor=\"let day of dates$ | async\"\n class=\"day\"\n [disabled]=\"day.hidden\"\n [class.bleed]=\"!day.inCurrentMonth\"\n [class.fade-in]=\"day.fadeIn\"\n [class.fade-out]=\"day.fadeOut\"\n [class.in-range]=\"day.inRange\"\n [class.rounded-ne]=\"day.roundedNe\"\n [class.rounded-nw]=\"day.roundedNw\"\n [class.rounded-se]=\"day.roundedSe\"\n [class.rounded-sw]=\"day.roundedSw\"\n (click)=\"selectDay(day)\"\n type=\"button\"\n >\n <span\n class=\"day-wrapper\"\n [class.selected]=\"day.selected\"\n [class.today]=\"day.today\"\n [class.hidden]=\"day.hidden\"\n >\n {{ day.display }}\n </span>\n </button>\n</div>\n", styles: [".controls{display:flex;align-items:center;justify-content:space-between}.calendar{display:grid;grid-template-columns:repeat(7,calc(var(--base-grid-size) * 10));grid-auto-rows:calc(var(--base-grid-size) * 6)}.label{display:flex;justify-content:center;align-items:center;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);font-weight:var(--font-weight-heavy)}.day{display:flex;align-items:stretch;cursor:pointer}.day:hover{background-color:var(--surface-light-1)}.day.in-range{background-color:var(--purp-10)}.day.fade-out{background-image:linear-gradient(to right,var(--purp-10),var(--white-100))}.day.fade-in{background-image:linear-gradient(to right,var(--white-100),var(--purp-10))}.day.bleed{color:var(--type-light-disabled)}.day.rounded-ne{border-top-right-radius:var(--border-radius-medium)}.day.rounded-nw{border-top-left-radius:var(--border-radius-medium)}.day.rounded-sw{border-bottom-left-radius:var(--border-radius-medium)}.day.rounded-se{border-bottom-right-radius:var(--border-radius-medium)}.day-wrapper{flex-grow:1;display:flex;justify-content:center;align-items:center;border-radius:var(--border-radius-medium)}.day-wrapper.selected{background-color:var(--purp-60);color:var(--type-dark-high-contrast)}.day-wrapper.today{border-radius:calc(var(--base-grid-size) * 8);border:var(--border-width) solid var(--border-light);font-weight:var(--font-weight-heavy)}.day-wrapper.hidden{display:none}\n"] }]
|
|
261
265
|
}], propDecorators: { activeYearMonth: [{
|
|
262
266
|
type: Input
|
|
263
267
|
}], displayMin: [{
|
|
@@ -281,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
281
285
|
CalendarComponent.defaultMin = timeYear.floor(timeYear.offset(new Date(), -7));
|
|
282
286
|
CalendarComponent.defaultMax = timeDay.offset(timeYear.floor(timeYear.offset(new Date(), 5)), -1);
|
|
283
287
|
})(CalendarComponent || (CalendarComponent = {}));
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBR2QsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFaEQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFVO0lBQ2xDLE9BQU8sUUFBUSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQW9CRCw2RUFBNkU7QUFDN0UsMkJBQTJCO0FBQzNCLG1HQUFtRztBQU9uRyxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBT21CLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFPLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQVN6RCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUNoRCxpQkFBaUIsQ0FBQyxVQUFVLENBQzdCLENBQUM7UUFTZSxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUNoRCxpQkFBaUIsQ0FBQyxVQUFVLENBQzdCLENBQUM7UUFTZSxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUNuRCxTQUFTLENBQ1YsQ0FBQztRQVNlLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQ25ELFNBQVMsQ0FDVixDQUFDO1FBU2UsZUFBVSxHQUFHLElBQUksZUFBZSxDQUMvQyxTQUFTLENBQ1YsQ0FBQztRQVNlLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBRW5ELFNBQVMsQ0FBQyxDQUFDO1FBU0osaUJBQVksR0FBNkIsYUFBYSxDQUFDO1lBQzlELElBQUksQ0FBQyxXQUFXO1lBQ2hCLElBQUksQ0FBQyxXQUFXO1lBQ2hCLElBQUksQ0FBQyxjQUFjO1lBQ25CLElBQUksQ0FBQyxjQUFjO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0I7U0FDdEIsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQ0QsQ0FBQyxDQUNDLFVBQVUsRUFDVixVQUFVLEVBQ1YsYUFBYSxFQUNiLGFBQWEsRUFDYixlQUFlLEVBQ2hCLEVBQUUsRUFBRTtZQUNILE1BQU0sR0FBRyxHQUFTLGFBQWEsSUFBSSxVQUFVLENBQUM7WUFDOUMsTUFBTSxHQUFHLEdBQVMsYUFBYSxJQUFJLFVBQVUsQ0FBQztZQUM5QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQztpQkFDckQsT0FBTyxFQUFFO2lCQUNULEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQ25CLFdBQVcsQ0FBQyxXQUFXLEVBQUUsRUFDekIsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUMzQixDQUFDO2dCQUNGLE9BQU87b0JBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUU7b0JBQ2pDLEtBQUssRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDO29CQUMxQixRQUFRLEVBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUU7d0JBQ3RDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFO29CQUN4QyxJQUFJLEVBQUUsSUFBSTtpQkFDWCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQ0YsRUFDRCxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO1FBRU8sd0JBQW1CLEdBQUcsYUFBYSxDQUFDO1lBQzNDLElBQUksQ0FBQyxZQUFZO1lBQ2pCLElBQUksQ0FBQyxnQkFBZ0I7U0FDdEIsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQ0QsQ0FBQyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFLENBQ2pDLFdBQVcsQ0FBQyxJQUFJLENBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FDdkQsSUFBSSxJQUFJLENBQ1osRUFDRCxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO1FBRU8sa0JBQWEsR0FBNkIsYUFBYSxDQUFDO1lBQy9ELElBQUksQ0FBQyxnQkFBZ0I7WUFDckIsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLGNBQWM7WUFDbkIsSUFBSSxDQUFDLGNBQWM7U0FDcEIsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQ0QsQ0FBQyxDQUNDLGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLGFBQWEsRUFDYixhQUFhLEVBQ2QsRUFBRSxFQUFFO1lBQ0gsTUFBTSxHQUFHLEdBQUcsYUFBYSxJQUFJLFVBQVUsQ0FBQztZQUN4QyxNQUFNLEdBQUcsR0FBRyxhQUFhLElBQUksVUFBVSxDQUFDO1lBQ3hDLE9BQU8sVUFBVSxDQUNmLFFBQVEsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQy9CLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDcEQsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNkLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO2dCQUMvQixLQUFLLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQztnQkFDNUIsUUFBUSxFQUNOLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BFLElBQUksRUFBRSxLQUFLO2FBQ1osQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDLENBQ0YsRUFDRCxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO1FBRU8seUJBQW9CLEdBQUcsYUFBYSxDQUFDO1lBQzVDLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0I7U0FDdEIsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQ0QsQ0FBQyxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFLENBQ2xDLFlBQVksQ0FBQyxJQUFJLENBQ2YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FDcEQsSUFBSSxJQUFJLENBQ1osRUFDRCxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO1FBRU8sbUJBQWMsR0FBRyxhQUFhLENBQUM7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQjtZQUNyQixJQUFJLENBQUMsV0FBVztZQUNoQixJQUFJLENBQUMsY0FBYztTQUNwQixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQzdDLE1BQU0sR0FBRyxHQUFTLGFBQWEsSUFBSSxVQUFVLENBQUM7WUFDOUMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNwRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRU8sZUFBVSxHQUFHLGFBQWEsQ0FBQztZQUNsQyxJQUFJLENBQUMsZ0JBQWdCO1lBQ3JCLElBQUksQ0FBQyxXQUFXO1lBQ2hCLElBQUksQ0FBQyxjQUFjO1NBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDN0MsTUFBTSxHQUFHLEdBQVMsYUFBYSxJQUFJLFVBQVUsQ0FBQztZQUM5QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNoRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFZSwwQkFBcUIsR0FDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsYUFBYTtnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUM5QixJQUFJLGFBQWEsWUFBWSxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxRCxPQUFPLFFBQVEsQ0FDYixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ25ELENBQUM7UUFDSixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO1FBRUssV0FBTSxHQUErQixhQUFhLENBQUM7WUFDMUQsSUFBSSxDQUFDLGdCQUFnQjtZQUNyQixJQUFJLENBQUMsY0FBYztZQUNuQixJQUFJLENBQUMscUJBQXFCO1lBQzFCLElBQUksQ0FBQyxjQUFjO1lBQ25CLElBQUksQ0FBQyxjQUFjO1lBQ25CLElBQUksQ0FBQyxVQUFVO1NBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUNELENBQUMsQ0FDQyxlQUFlLEVBQ2YsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsYUFBYSxFQUNiLFNBQVMsRUFDVixFQUFFLEVBQUU7WUFDSCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQzVCLFVBQVUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQ2pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDdEQsQ0FBQztZQUNGLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNoRSxNQUFNLHVCQUF1QixHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO1lBQ3BFLE1BQU0sMkJBQTJCLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUM3RCxRQUFRLENBQUMsRUFBRSxDQUNULFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFO2dCQUMvQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRTtnQkFDL0MsQ0FBQyxhQUFhO29CQUNaLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRTtvQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDVCxDQUFDLGFBQWE7b0JBQ1osQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFO29CQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNULENBQUMsU0FBUztvQkFDUixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7d0JBQzNDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO29CQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ1osQ0FBQztZQUNGLElBQUksMkJBQTJCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUMsTUFBTSw4QkFBOEIsR0FBRyxnQkFBZ0IsQ0FDckQsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLENBQy9CLENBQUM7Z0JBQ0YsMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNsRCxNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDckMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMvRCx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxTQUFTLG9CQUFvQixDQUFDLFdBQTZCO2dCQUN6RCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsQ0FBQztZQUVELE1BQU0sc0NBQXNDLEdBQUcsSUFBSSxHQUFHLENBQ3BELENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUNoRSxDQUFDO1lBRUYsU0FBUyxpQkFBaUIsQ0FBQyxJQUFVO2dCQU1uQyxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxXQUFXO29CQUNkLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO2dCQUMzQixNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDMUMsS0FBSyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUN4QyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQ3pDLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsT0FBTztvQkFDTCxFQUFFLEVBQ0EsQ0FBQyxzQ0FBc0MsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO3dCQUNoRCxDQUFDLHNDQUFzQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7b0JBQ25ELEVBQUUsRUFDQSxDQUFDLHNDQUFzQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7d0JBQ2hELENBQUMsc0NBQXNDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDcEQsRUFBRSxFQUNBLENBQUMsc0NBQXNDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQzt3QkFDbEQsQ0FBQyxzQ0FBc0MsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO29CQUNyRCxFQUFFLEVBQ0EsQ0FBQyxzQ0FBc0MsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO3dCQUNqRCxDQUFDLHNDQUFzQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7aUJBQ3RELENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxpQ0FBaUMsR0FBRyxJQUFJLEdBQUcsQ0FDL0MsMkJBQTJCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQ2hFLENBQUM7WUFFRixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztZQUV4QyxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzlCLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxNQUFNLE9BQU8sR0FBRyxpQ0FBaUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pFLE1BQU0sUUFBUSxHQUFHLGFBQWE7b0JBQzVCLENBQUMsQ0FBQyxhQUFhLFlBQVksSUFBSTt3QkFDN0IsQ0FBQyxDQUFDLFNBQVMsS0FBSyxhQUFhLENBQUMsT0FBTyxFQUFFO3dCQUN2QyxDQUFDLENBQUMsU0FBUyxLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7NEJBQ3hDLFNBQVMsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO29CQUM1QyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUNWLE9BQU87b0JBQ0wsSUFBSTtvQkFDSixPQUFPLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDM0IsTUFBTSxFQUNKLE9BQU87d0JBQ1AsQ0FBQyxTQUFTOzRCQUNSLElBQUksQ0FBQyxHQUFHLENBQ04sZUFBZSxDQUFDLE9BQU8sRUFBRSxFQUN6QixhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQ3RDOzRCQUNELFNBQVM7Z0NBQ1AsQ0FBQyxTQUFTO29DQUNSLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7b0NBQzNDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNyQixPQUFPLEVBQ0wsT0FBTzt3QkFDUCxDQUFDLFNBQVM7NEJBQ1IsSUFBSSxDQUFDLEdBQUcsQ0FDTixlQUFlLENBQUMsT0FBTyxFQUFFLEVBQ3pCLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxRQUFRLENBQ3JDOzRCQUNELFNBQVM7Z0NBQ1AsQ0FBQyxTQUFTO29DQUNSLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtvQ0FDNUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNwQixNQUFNLEVBQ0osU0FBUyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO3dCQUNuRCxTQUFTLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksUUFBUSxDQUFDO3dCQUNsRCxDQUFDLFNBQVM7NEJBQ1IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxTQUFTO2dDQUNuQyxTQUFTLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTs0QkFDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDWixjQUFjLEVBQ1osU0FBUyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUU7d0JBQ3RDLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7b0JBQzVELE9BQU87b0JBQ1AsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsUUFBUTtvQkFDUixLQUFLLEVBQUUsU0FBUyxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUU7aUJBQ3JDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FDRixFQUNELFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQy9DLENBQUM7UUFVRiwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBR2pELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBQ3ZDO0lBclhDLElBQ1csZUFBZSxDQUFDLENBQU87UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFLRCxJQUNXLFVBQVUsQ0FBQyxDQUFPO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFLRCxJQUNXLFVBQVUsQ0FBQyxDQUFPO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFLRCxJQUNXLGFBQWEsQ0FBQyxDQUFtQjtRQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBS0QsSUFDVyxhQUFhLENBQUMsQ0FBbUI7UUFDMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUtELElBQ1csU0FBUyxDQUFDLENBQTJCO1FBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFLRCxJQUNXLGFBQWEsQ0FBQyxDQUFrQztRQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBaVNELFNBQVMsQ0FBQyxHQUFpQjtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDNUQ7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQzs7OEdBaFhVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHVXQzlEOUIsazhGQWlHQTsyRkRuQ2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTs4QkFLcEMsZUFBZTtzQkFEekIsS0FBSztnQkFZSyxVQUFVO3NCQURwQixLQUFLO2dCQVlLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBWUssYUFBYTtzQkFEdkIsS0FBSztnQkFZSyxhQUFhO3NCQUR2QixLQUFLO2dCQVlLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBWUssYUFBYTtzQkFEdkIsS0FBSztnQkErU04scUJBQXFCO3NCQURwQixNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTs7QUFJVCxXQUFpQixpQkFBaUI7SUFDbkIsNEJBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsNEJBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUN0QyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxFQU5nQixpQkFBaUIsS0FBakIsaUJBQWlCLFFBTWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIHRpbWVEYXksXG4gIHRpbWVEYXlzLFxuICB0aW1lTW9udGgsXG4gIHRpbWVNb250aHMsXG4gIHRpbWVTdW5kYXksXG4gIHRpbWVZZWFyLFxuICB0aW1lWWVhcnMsXG59IGZyb20gJ2QzLXRpbWUnO1xuaW1wb3J0IHsgdGltZUZvcm1hdCB9IGZyb20gJ2QzLXRpbWUtZm9ybWF0JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9zaW5nbGUtc2VsZWN0L3NpbmdsZS1zZWxlY3QuY29tcG9uZW50JztcblxuY29uc3QgbW9udGhGb3JtYXR0ZXIgPSB0aW1lRm9ybWF0KCclQicpO1xuY29uc3QgeWVhckZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyVZJyk7XG5jb25zdCBkYXlGb3JtYXR0ZXIgPSB0aW1lRm9ybWF0KCclZScpO1xuY29uc3Qgd2Vla2RheU51bWJlckZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyV3Jyk7XG5cbmZ1bmN0aW9uIGdldFdlZWtkYXlOdW1iZXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludCh3ZWVrZGF5TnVtYmVyRm9ybWF0dGVyKGRhdGUpKTtcbn1cblxudHlwZSBEYXRlT3B0aW9uID0gU2luZ2xlU2VsZWN0Q29tcG9uZW50Lk9wdGlvbiAmIHsgZGF0ZTogRGF0ZSB9O1xuXG50eXBlIENhbGVuZGFyRGF0ZSA9IHtcbiAgZGF0ZTogRGF0ZTtcbiAgZGlzcGxheTogc3RyaW5nO1xuICBmYWRlSW46IGJvb2xlYW47XG4gIGZhZGVPdXQ6IGJvb2xlYW47XG4gIGhpZGRlbjogYm9vbGVhbjtcbiAgaW5DdXJyZW50TW9udGg6IGJvb2xlYW47XG4gIGluUmFuZ2U6IGJvb2xlYW47XG4gIHJvdW5kZWROZTogYm9vbGVhbjtcbiAgcm91bmRlZE53OiBib29sZWFuO1xuICByb3VuZGVkU2U6IGJvb2xlYW47XG4gIHJvdW5kZWRTdzogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIHRvZGF5OiBib29sZWFuO1xufTtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLlxuLy8gaHR0cHM6Ly93d3cubm90aW9uLnNvL3JpdmV0L1Jlc29sdmUtVE9ET3MtYWZ0ZXItQW5ndWxhci11cGdyYWRlLTFmMjY2N2ViMmEzMTgwYjc5ZjZhZDkyYTdlNTc2ZjA4XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlWWVhck1vbnRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obmV3IERhdGUoKSk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWN0aXZlWWVhck1vbnRoKHY6IERhdGUpIHtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGFjdGl2ZVllYXJNb250aCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVZZWFyTW9udGgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc3BsYXlNaW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihcbiAgICBDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWluLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlNaW4odjogRGF0ZSkge1xuICAgIHRoaXMuZGlzcGxheU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGRpc3BsYXlNaW4oKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KFxuICAgIENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNYXgsXG4gICk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheU1heCh2OiBEYXRlKSB7XG4gICAgdGhpcy5kaXNwbGF5TWF4JC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgZGlzcGxheU1heCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5TWF4JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RhYmxlTWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGFibGVNaW4odjogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGFibGVNaW4oKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0YWJsZU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGUgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RhYmxlTWF4KHY6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGFibGVNYXgkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RhYmxlTWF4KCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGVNYXgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IG9taXRSYW5nZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG9taXRSYW5nZSh2OiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm9taXRSYW5nZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IG9taXRSYW5nZSgpOiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9taXRSYW5nZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVmFsdWUodjogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVmFsdWUoKTogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHllYXJPcHRpb25zJDogT2JzZXJ2YWJsZTxEYXRlT3B0aW9uW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kaXNwbGF5TWluJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgZGlzcGxheU1pbixcbiAgICAgICAgZGlzcGxheU1heCxcbiAgICAgICAgc2VsZWN0YWJsZU1pbixcbiAgICAgICAgc2VsZWN0YWJsZU1heCxcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBtaW46IERhdGUgPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICAgIGNvbnN0IG1heDogRGF0ZSA9IHNlbGVjdGFibGVNYXggPz8gZGlzcGxheU1heDtcbiAgICAgICAgcmV0dXJuIHRpbWVZZWFycyh0aW1lWWVhci5mbG9vcihkaXNwbGF5TWluKSwgZGlzcGxheU1heClcbiAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgLm1hcChmbG9vcmVkWWVhciA9PiB7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgIGZsb29yZWRZZWFyLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICAgIGFjdGl2ZVllYXJNb250aC5nZXRNb250aCgpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGlkOiB5ZWFyLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgdGl0bGU6IHllYXJGb3JtYXR0ZXIoeWVhciksXG4gICAgICAgICAgICAgIGRpc2FibGVkOlxuICAgICAgICAgICAgICAgIHllYXIuZ2V0RnVsbFllYXIoKSA8IG1pbi5nZXRGdWxsWWVhcigpIHx8XG4gICAgICAgICAgICAgICAgeWVhci5nZXRGdWxsWWVhcigpID4gbWF4LmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICAgIGRhdGU6IHllYXIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRZZWFyT3B0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMueWVhck9wdGlvbnMkLFxuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW3llYXJPcHRpb25zLCBhY3RpdmVZZWFyTW9udGhdKSA9PlxuICAgICAgICB5ZWFyT3B0aW9ucy5maW5kKFxuICAgICAgICAgIHkgPT4geS5pZCA9PT0gYWN0aXZlWWVhck1vbnRoLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSxcbiAgICAgICAgKSB8fCBudWxsLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBtb250aE9wdGlvbnMkOiBPYnNlcnZhYmxlPERhdGVPcHRpb25bXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gICAgdGhpcy5kaXNwbGF5TWluJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW1xuICAgICAgICBhY3RpdmVZZWFyTW9udGgsXG4gICAgICAgIGRpc3BsYXlNaW4sXG4gICAgICAgIGRpc3BsYXlNYXgsXG4gICAgICAgIHNlbGVjdGFibGVNaW4sXG4gICAgICAgIHNlbGVjdGFibGVNYXgsXG4gICAgICBdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1pbiA9IHNlbGVjdGFibGVNaW4gPz8gZGlzcGxheU1pbjtcbiAgICAgICAgY29uc3QgbWF4ID0gc2VsZWN0YWJsZU1heCA/PyBkaXNwbGF5TWF4O1xuICAgICAgICByZXR1cm4gdGltZU1vbnRocyhcbiAgICAgICAgICB0aW1lWWVhci5mbG9vcihhY3RpdmVZZWFyTW9udGgpLFxuICAgICAgICAgIHRpbWVZZWFyLmZsb29yKHRpbWVZZWFyLm9mZnNldChhY3RpdmVZZWFyTW9udGgsIDEpKSxcbiAgICAgICAgKS5tYXAobW9udGggPT4gKHtcbiAgICAgICAgICBpZDogbW9udGguZ2V0TW9udGgoKS50b1N0cmluZygpLFxuICAgICAgICAgIHRpdGxlOiBtb250aEZvcm1hdHRlcihtb250aCksXG4gICAgICAgICAgZGlzYWJsZWQ6XG4gICAgICAgICAgICBtb250aC52YWx1ZU9mKCkgPCBtaW4udmFsdWVPZigpIHx8IG1vbnRoLnZhbHVlT2YoKSA+IG1heC52YWx1ZU9mKCksXG4gICAgICAgICAgZGF0ZTogbW9udGgsXG4gICAgICAgIH0pKTtcbiAgICAgIH0sXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkTW9udGhPcHRpb24kID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5tb250aE9wdGlvbnMkLFxuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW21vbnRoT3B0aW9ucywgYWN0aXZlWWVhck1vbnRoXSkgPT5cbiAgICAgICAgbW9udGhPcHRpb25zLmZpbmQoXG4gICAgICAgICAgbSA9PiBtLmlkID09PSBhY3RpdmVZZWFyTW9udGguZ2V0TW9udGgoKS50b1N0cmluZygpLFxuICAgICAgICApIHx8IG51bGwsXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHByZXZpb3VzTW9udGgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuZGlzcGxheU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWluJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt5ZWFyTW9udGgsIGRpc3BsYXlNaW4sIHNlbGVjdGFibGVNaW5dKSA9PiB7XG4gICAgICBjb25zdCBtaW46IERhdGUgPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICBjb25zdCBwcmV2aW91cyA9IHRpbWVNb250aC5mbG9vcih0aW1lTW9udGgub2Zmc2V0KHllYXJNb250aCwgLTEpKTtcbiAgICAgIGlmIChwcmV2aW91cy52YWx1ZU9mKCkgPCBtaW4udmFsdWVPZigpKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICB9KSxcbiAgKTtcblxuICByZWFkb25seSBuZXh0TW9udGgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuZGlzcGxheU1heCQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt5ZWFyTW9udGgsIGRpc3BsYXlNYXgsIHNlbGVjdGFibGVNYXhdKSA9PiB7XG4gICAgICBjb25zdCBtYXg6IERhdGUgPSBzZWxlY3RhYmxlTWF4ID8/IGRpc3BsYXlNYXg7XG4gICAgICBjb25zdCBuZXh0ID0gdGltZU1vbnRoLmZsb29yKHRpbWVNb250aC5vZmZzZXQoeWVhck1vbnRoLCAxKSk7XG4gICAgICBpZiAobmV4dC52YWx1ZU9mKCkgPiBtYXgudmFsdWVPZigpKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0ZXNJblNlbGVjdGVkUmFuZ2UkOiBPYnNlcnZhYmxlPERhdGVbXT4gPVxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQucGlwZShcbiAgICAgIG1hcChzZWxlY3RlZFZhbHVlID0+IHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFZhbHVlKSByZXR1cm4gW107XG4gICAgICAgIGlmIChzZWxlY3RlZFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIFtzZWxlY3RlZFZhbHVlXTtcbiAgICAgICAgcmV0dXJuIHRpbWVEYXlzKFxuICAgICAgICAgIHRpbWVEYXkuZmxvb3Ioc2VsZWN0ZWRWYWx1ZVswXSksXG4gICAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldChzZWxlY3RlZFZhbHVlWzFdLCAxKSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSBkYXRlcyQ6IE9ic2VydmFibGU8Q2FsZW5kYXJEYXRlW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQsXG4gICAgdGhpcy5kYXRlc0luU2VsZWN0ZWRSYW5nZSQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWluJCxcbiAgICB0aGlzLnNlbGVjdGFibGVNYXgkLFxuICAgIHRoaXMub21pdFJhbmdlJCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW1xuICAgICAgICBhY3RpdmVZZWFyTW9udGgsXG4gICAgICAgIHNlbGVjdGVkVmFsdWUsXG4gICAgICAgIGRhdGVzSW5TZWxlY3RlZFJhbmdlLFxuICAgICAgICBzZWxlY3RhYmxlTWluLFxuICAgICAgICBzZWxlY3RhYmxlTWF4LFxuICAgICAgICBvbWl0UmFuZ2UsXG4gICAgICBdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyRGF0ZXMgPSB0aW1lRGF5cyhcbiAgICAgICAgICB0aW1lU3VuZGF5LmZsb29yKGFjdGl2ZVllYXJNb250aCksXG4gICAgICAgICAgdGltZVN1bmRheS5jZWlsKHRpbWVNb250aC5vZmZzZXQoYWN0aXZlWWVhck1vbnRoLCAxKSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG1pbkNhbGVuZGFyRGF0ZSA9IGNhbGVuZGFyRGF0ZXNbMF07XG4gICAgICAgIGNvbnN0IG1heENhbGVuZGFyRGF0ZSA9IGNhbGVuZGFyRGF0ZXNbY2FsZW5kYXJEYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlQ29vcmRpbmF0ZXMgPSBuZXcgTWFwPG51bWJlciwgW251bWJlciwgbnVtYmVyXT4oKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlID0gZGF0ZXNJblNlbGVjdGVkUmFuZ2UuZmlsdGVyKFxuICAgICAgICAgIHNlbGVjdGVkID0+XG4gICAgICAgICAgICBzZWxlY3RlZC52YWx1ZU9mKCkgPj0gbWluQ2FsZW5kYXJEYXRlLnZhbHVlT2YoKSAmJlxuICAgICAgICAgICAgc2VsZWN0ZWQudmFsdWVPZigpIDw9IG1heENhbGVuZGFyRGF0ZS52YWx1ZU9mKCkgJiZcbiAgICAgICAgICAgIChzZWxlY3RhYmxlTWluXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWQudmFsdWVPZigpID49IHNlbGVjdGFibGVNaW4udmFsdWVPZigpXG4gICAgICAgICAgICAgIDogdHJ1ZSkgJiZcbiAgICAgICAgICAgIChzZWxlY3RhYmxlTWF4XG4gICAgICAgICAgICAgID8gc2VsZWN0ZWQudmFsdWVPZigpIDw9IHNlbGVjdGFibGVNYXgudmFsdWVPZigpXG4gICAgICAgICAgICAgIDogdHJ1ZSkgJiZcbiAgICAgICAgICAgIChvbWl0UmFuZ2VcbiAgICAgICAgICAgICAgPyBzZWxlY3RlZC52YWx1ZU9mKCkgPCBvbWl0UmFuZ2VbMF0udmFsdWVPZigpIHx8XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQudmFsdWVPZigpID4gb21pdFJhbmdlWzFdLnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IHRydWUpLFxuICAgICAgICApO1xuICAgICAgICBpZiAodmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBmaXJzdFZpc2libGVTZWxlY3RlZERhdGVPZmZzZXQgPSBnZXRXZWVrZGF5TnVtYmVyKFxuICAgICAgICAgICAgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlWzBdLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlLmZvckVhY2goKHNlbGVjdGVkLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB4ID0gZ2V0V2Vla2RheU51bWJlcihzZWxlY3RlZCk7XG4gICAgICAgICAgICBjb25zdCB5ID0gTWF0aC5mbG9vcigoaSArIGZpcnN0VmlzaWJsZVNlbGVjdGVkRGF0ZU9mZnNldCkgLyA3KTtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzLnNldChzZWxlY3RlZC52YWx1ZU9mKCksIFt4LCB5XSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2VyaWFsaXplQ29vcmRpbmF0ZXMoY29vcmRpbmF0ZXM6IFtudW1iZXIsIG51bWJlcl0pOiBzdHJpbmcge1xuICAgICAgICAgIHJldHVybiBjb29yZGluYXRlcy5qb2luKCc6Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcyA9IG5ldyBTZXQoXG4gICAgICAgICAgWy4uLnNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzLnZhbHVlcygpXS5tYXAoc2VyaWFsaXplQ29vcmRpbmF0ZXMpLFxuICAgICAgICApO1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldFJvdW5kZWRDb3JuZXJzKGRhdGU6IERhdGUpOiB7XG4gICAgICAgICAgbnc6IGJvb2xlYW47XG4gICAgICAgICAgbmU6IGJvb2xlYW47XG4gICAgICAgICAgc2U6IGJvb2xlYW47XG4gICAgICAgICAgc3c6IGJvb2xlYW47XG4gICAgICAgIH0ge1xuICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gc2VsZWN0ZWREYXRlQ29vcmRpbmF0ZXMuZ2V0KGRhdGUudmFsdWVPZigpKTtcbiAgICAgICAgICBpZiAoIWNvb3JkaW5hdGVzKVxuICAgICAgICAgICAgcmV0dXJuIHsgbnc6IGZhbHNlLCBuZTogZmFsc2UsIHNlOiBmYWxzZSwgc3c6IGZhbHNlIH07XG4gICAgICAgICAgY29uc3QgW3gsIHldID0gY29vcmRpbmF0ZXM7XG4gICAgICAgICAgY29uc3QgdG9wID0gc2VyaWFsaXplQ29vcmRpbmF0ZXMoW3gsIHkgLSAxXSksXG4gICAgICAgICAgICByaWdodCA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4ICsgMSwgeV0pLFxuICAgICAgICAgICAgYm90dG9tID0gc2VyaWFsaXplQ29vcmRpbmF0ZXMoW3gsIHkgKyAxXSksXG4gICAgICAgICAgICBsZWZ0ID0gc2VyaWFsaXplQ29vcmRpbmF0ZXMoW3ggLSAxLCB5XSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG53OlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKHRvcCkgJiZcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhsZWZ0KSxcbiAgICAgICAgICAgIG5lOlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKHRvcCkgJiZcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhyaWdodCksXG4gICAgICAgICAgICBzZTpcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhyaWdodCkgJiZcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhib3R0b20pLFxuICAgICAgICAgICAgc3c6XG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMobGVmdCkgJiZcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhib3R0b20pLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VWYWx1ZXMgPSBuZXcgU2V0KFxuICAgICAgICAgIHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZS5tYXAoc2VsZWN0ZWQgPT4gc2VsZWN0ZWQudmFsdWVPZigpKSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB0b2RheSA9IHRpbWVEYXkuZmxvb3IobmV3IERhdGUoKSk7XG5cbiAgICAgICAgcmV0dXJuIGNhbGVuZGFyRGF0ZXMubWFwKGRhdGUgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgbncsIG5lLCBzZSwgc3cgfSA9IGdldFJvdW5kZWRDb3JuZXJzKGRhdGUpO1xuICAgICAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IGRhdGUudmFsdWVPZigpO1xuICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VWYWx1ZXMuaGFzKGRhdGVWYWx1ZSk7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlXG4gICAgICAgICAgICA/IHNlbGVjdGVkVmFsdWUgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICAgID8gZGF0ZVZhbHVlID09PSBzZWxlY3RlZFZhbHVlLnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IGRhdGVWYWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZVswXS52YWx1ZU9mKCkgfHxcbiAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPT09IHNlbGVjdGVkVmFsdWVbMV0udmFsdWVPZigpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgZGlzcGxheTogZGF5Rm9ybWF0dGVyKGRhdGUpLFxuICAgICAgICAgICAgZmFkZUluOlxuICAgICAgICAgICAgICBpblJhbmdlICYmXG4gICAgICAgICAgICAgIChkYXRlVmFsdWUgPT09XG4gICAgICAgICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICBtaW5DYWxlbmRhckRhdGUudmFsdWVPZigpLFxuICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZU1pbj8udmFsdWVPZigpID8/IC1JbmZpbml0eSxcbiAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgKG9taXRSYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IHRpbWVEYXkub2Zmc2V0KG9taXRSYW5nZVsxXSwgMSkudmFsdWVPZigpXG4gICAgICAgICAgICAgICAgICAgIDogLUluZmluaXR5KSksXG4gICAgICAgICAgICBmYWRlT3V0OlxuICAgICAgICAgICAgICBpblJhbmdlICYmXG4gICAgICAgICAgICAgIChkYXRlVmFsdWUgPT09XG4gICAgICAgICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICBtYXhDYWxlbmRhckRhdGUudmFsdWVPZigpLFxuICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZU1heD8udmFsdWVPZigpID8/IEluZmluaXR5LFxuICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPT09XG4gICAgICAgICAgICAgICAgICAob21pdFJhbmdlXG4gICAgICAgICAgICAgICAgICAgID8gdGltZURheS5vZmZzZXQob21pdFJhbmdlWzBdLCAtMSkudmFsdWVPZigpXG4gICAgICAgICAgICAgICAgICAgIDogSW5maW5pdHkpKSxcbiAgICAgICAgICAgIGhpZGRlbjpcbiAgICAgICAgICAgICAgZGF0ZVZhbHVlIDwgKHNlbGVjdGFibGVNaW4/LnZhbHVlT2YoKSA/PyAtSW5maW5pdHkpIHx8XG4gICAgICAgICAgICAgIGRhdGVWYWx1ZSA+IChzZWxlY3RhYmxlTWF4Py52YWx1ZU9mKCkgPz8gSW5maW5pdHkpIHx8XG4gICAgICAgICAgICAgIChvbWl0UmFuZ2VcbiAgICAgICAgICAgICAgICA/IG9taXRSYW5nZVswXS52YWx1ZU9mKCkgPD0gZGF0ZVZhbHVlICYmXG4gICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPD0gb21pdFJhbmdlWzFdLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgIDogZmFsc2UpLFxuICAgICAgICAgICAgaW5DdXJyZW50TW9udGg6XG4gICAgICAgICAgICAgIGRhdGVWYWx1ZSA+PSBhY3RpdmVZZWFyTW9udGgudmFsdWVPZigpICYmXG4gICAgICAgICAgICAgIGRhdGVWYWx1ZSA8IHRpbWVNb250aC5vZmZzZXQoYWN0aXZlWWVhck1vbnRoLCAxKS52YWx1ZU9mKCksXG4gICAgICAgICAgICBpblJhbmdlLFxuICAgICAgICAgICAgcm91bmRlZE5lOiBuZSxcbiAgICAgICAgICAgIHJvdW5kZWROdzogbncsXG4gICAgICAgICAgICByb3VuZGVkU2U6IHNlLFxuICAgICAgICAgICAgcm91bmRlZFN3OiBzdyxcbiAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgdG9kYXk6IGRhdGVWYWx1ZSA9PT0gdG9kYXkudmFsdWVPZigpLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgc2VsZWN0RGF5KGRheTogQ2FsZW5kYXJEYXRlKSB7XG4gICAgaWYgKCFkYXkuaW5DdXJyZW50TW9udGgpIHtcbiAgICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoQ2hhbmdlLmVtaXQodGltZU1vbnRoLmZsb29yKGRheS5kYXRlKSk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KGRheS5kYXRlKTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBhY3RpdmVZZWFyTW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGRhdGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ2FsZW5kYXJDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgZGVmYXVsdE1pbiA9IHRpbWVZZWFyLmZsb29yKHRpbWVZZWFyLm9mZnNldChuZXcgRGF0ZSgpLCAtNykpO1xuICBleHBvcnQgY29uc3QgZGVmYXVsdE1heCA9IHRpbWVEYXkub2Zmc2V0KFxuICAgIHRpbWVZZWFyLmZsb29yKHRpbWVZZWFyLm9mZnNldChuZXcgRGF0ZSgpLCA1KSksXG4gICAgLTEsXG4gICk7XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udHJvbHNcIj5cbiAgPGRpdj5cbiAgICA8cml2LXNpbXBsZS1zZWxlY3RcbiAgICAgIFtmaWx0ZXJhYmlsaXR5T3B0aW9uc109XCJ7IGVuYWJsZWQ6IHRydWUsIHBsYWNlaG9sZGVyOiAnTW9udGguLi4nIH1cIlxuICAgICAgW29wdGlvbkdyb3Vwc109XCJtb250aE9wdGlvbnMkIHwgYXN5bmMgfCByaXZPcHRpb25Hcm91cFwiXG4gICAgICBbc2VsZWN0ZWRPcHRpb25dPVwic2VsZWN0ZWRNb250aE9wdGlvbiQgfCBhc3luY1wiXG4gICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwiYWN0aXZlWWVhck1vbnRoQ2hhbmdlLmVtaXQoJGV2ZW50LmRhdGUpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgI3RyaWdnZXIgbGV0LXN0YXRlPVwic3RhdGVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICAgIFtpY29uXT1cIidDaGV2cm9uRG93bidcIlxuICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwiJ2xhc3QnXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN0YXRlLmRpc3BsYXkuc2VsZWN0ZWQgfHwgJy4uLicgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcml2LXNpbXBsZS1zZWxlY3Q+XG4gICAgPHJpdi1zaW1wbGUtc2VsZWN0XG4gICAgICBbZmlsdGVyYWJpbGl0eU9wdGlvbnNdPVwieyBlbmFibGVkOiB0cnVlLCBwbGFjZWhvbGRlcjogJ1llYXIuLi4nIH1cIlxuICAgICAgW29wdGlvbkdyb3Vwc109XCJ5ZWFyT3B0aW9ucyQgfCBhc3luYyB8IHJpdk9wdGlvbkdyb3VwXCJcbiAgICAgIFtzZWxlY3RlZE9wdGlvbl09XCJzZWxlY3RlZFllYXJPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgKHNlbGVjdGVkT3B0aW9uQ2hhbmdlKT1cImFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KCRldmVudC5kYXRlKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlICN0cmlnZ2VyIGxldC1zdGF0ZT1cInN0YXRlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICByaXZCdXR0b25cbiAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgICAgICBbaWNvbl09XCInQ2hldnJvbkRvd24nXCJcbiAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidsYXN0J1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdGF0ZS5kaXNwbGF5LnNlbGVjdGVkIHx8ICcuLi4nIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Jpdi1zaW1wbGUtc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwieyBwcmV2OiBwcmV2aW91c01vbnRoJCB8IGFzeW5jLCBuZXh0OiBuZXh0TW9udGgkIHwgYXN5bmMgfTsgbGV0IHZtXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIHJpdkJ1dHRvblxuICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgIFtpY29uXT1cIidBcnJvd0xlZnQnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhdm0ucHJldlwiXG4gICAgICAoY2xpY2spPVwidm0ucHJldiA/IGFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHZtLnByZXYpIDogbnVsbFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+PC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgcml2QnV0dG9uXG4gICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgW2ljb25dPVwiJ0Fycm93UmlnaHQnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhdm0ubmV4dFwiXG4gICAgICAoY2xpY2spPVwidm0ubmV4dCA/IGFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHZtLm5leHQpIDogbnVsbFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlN1PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+TW88L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5UdTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPldlPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+VGg8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Gcjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlNhPC9zcGFuPlxuICA8YnV0dG9uXG4gICAgKm5nRm9yPVwibGV0IGRheSBvZiBkYXRlcyQgfCBhc3luY1wiXG4gICAgY2xhc3M9XCJkYXlcIlxuICAgIFtkaXNhYmxlZF09XCJkYXkuaGlkZGVuXCJcbiAgICBbY2xhc3MuYmxlZWRdPVwiIWRheS5pbkN1cnJlbnRNb250aFwiXG4gICAgW2NsYXNzLmZhZGUtaW5dPVwiZGF5LmZhZGVJblwiXG4gICAgW2NsYXNzLmZhZGUtb3V0XT1cImRheS5mYWRlT3V0XCJcbiAgICBbY2xhc3MuaW4tcmFuZ2VdPVwiZGF5LmluUmFuZ2VcIlxuICAgIFtjbGFzcy5yb3VuZGVkLW5lXT1cImRheS5yb3VuZGVkTmVcIlxuICAgIFtjbGFzcy5yb3VuZGVkLW53XT1cImRheS5yb3VuZGVkTndcIlxuICAgIFtjbGFzcy5yb3VuZGVkLXNlXT1cImRheS5yb3VuZGVkU2VcIlxuICAgIFtjbGFzcy5yb3VuZGVkLXN3XT1cImRheS5yb3VuZGVkU3dcIlxuICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJkYXktd3JhcHBlclwiXG4gICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5LnNlbGVjdGVkXCJcbiAgICAgIFtjbGFzcy50b2RheV09XCJkYXkudG9kYXlcIlxuICAgICAgW2NsYXNzLmhpZGRlbl09XCJkYXkuaGlkZGVuXCJcbiAgICA+XG4gICAgICB7eyBkYXkuZGlzcGxheSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBR2QsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFaEQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFVO0lBQ2xDLE9BQU8sUUFBUSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQW9CRCw2RUFBNkU7QUFDN0UsMkJBQTJCO0FBQzNCLG1HQUFtRztBQU9uRyxNQUFNLE9BQU8saUJBQWlCO0lBTjlC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Q0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxFQU5nQixpQkFBaUIsS0FBakIsaUJBQWlCLFFBTWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIHRpbWVEYXksXG4gIHRpbWVEYXlzLFxuICB0aW1lTW9udGgsXG4gIHRpbWVNb250aHMsXG4gIHRpbWVTdW5kYXksXG4gIHRpbWVZZWFyLFxuICB0aW1lWWVhcnMsXG59IGZyb20gJ2QzLXRpbWUnO1xuaW1wb3J0IHsgdGltZUZvcm1hdCB9IGZyb20gJ2QzLXRpbWUtZm9ybWF0JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9zaW5nbGUtc2VsZWN0L3NpbmdsZS1zZWxlY3QuY29tcG9uZW50JztcblxuY29uc3QgbW9udGhGb3JtYXR0ZXIgPSB0aW1lRm9ybWF0KCclQicpO1xuY29uc3QgeWVhckZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyVZJyk7XG5jb25zdCBkYXlGb3JtYXR0ZXIgPSB0aW1lRm9ybWF0KCclZScpO1xuY29uc3Qgd2Vla2RheU51bWJlckZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyV3Jyk7XG5cbmZ1bmN0aW9uIGdldFdlZWtkYXlOdW1iZXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludCh3ZWVrZGF5TnVtYmVyRm9ybWF0dGVyKGRhdGUpKTtcbn1cblxudHlwZSBEYXRlT3B0aW9uID0gU2luZ2xlU2VsZWN0Q29tcG9uZW50Lk9wdGlvbiAmIHsgZGF0ZTogRGF0ZSB9O1xuXG50eXBlIENhbGVuZGFyRGF0ZSA9IHtcbiAgZGF0ZTogRGF0ZTtcbiAgZGlzcGxheTogc3RyaW5nO1xuICBmYWRlSW46IGJvb2xlYW47XG4gIGZhZGVPdXQ6IGJvb2xlYW47XG4gIGhpZGRlbjogYm9vbGVhbjtcbiAgaW5DdXJyZW50TW9udGg6IGJvb2xlYW47XG4gIGluUmFuZ2U6IGJvb2xlYW47XG4gIHJvdW5kZWROZTogYm9vbGVhbjtcbiAgcm91bmRlZE53OiBib29sZWFuO1xuICByb3VuZGVkU2U6IGJvb2xlYW47XG4gIHJvdW5kZWRTdzogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIHRvZGF5OiBib29sZWFuO1xufTtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLlxuLy8gaHR0cHM6Ly93d3cubm90aW9uLnNvL3JpdmV0L1Jlc29sdmUtVE9ET3MtYWZ0ZXItQW5ndWxhci11cGdyYWRlLTFmMjY2N2ViMmEzMTgwYjc5ZjZhZDkyYTdlNTc2ZjA4XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlWWVhck1vbnRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obmV3IERhdGUoKSk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWN0aXZlWWVhck1vbnRoKHY6IERhdGUpIHtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGFjdGl2ZVllYXJNb250aCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVZZWFyTW9udGgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc3BsYXlNaW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihcbiAgICBDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWluLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlNaW4odjogRGF0ZSkge1xuICAgIHRoaXMuZGlzcGxheU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGRpc3BsYXlNaW4oKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KFxuICAgIENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNYXgsXG4gICk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheU1heCh2OiBEYXRlKSB7XG4gICAgdGhpcy5kaXNwbGF5TWF4JC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgZGlzcGxheU1heCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5TWF4JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RhYmxlTWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGFibGVNaW4odjogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGFibGVNaW4oKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0YWJsZU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGUgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RhYmxlTWF4KHY6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGFibGVNYXgkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RhYmxlTWF4KCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGVNYXgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IG9taXRSYW5nZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG9taXRSYW5nZSh2OiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm9taXRSYW5nZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IG9taXRSYW5nZSgpOiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9taXRSYW5nZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVmFsdWUodjogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVmFsdWUoKTogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHllYXJPcHRpb25zJDogT2JzZXJ2YWJsZTxEYXRlT3B0aW9uW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kaXNwbGF5TWluJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgZGlzcGxheU1pbixcbiAgICAgICAgZGlzcGxheU1heCxcbiAgICAgICAgc2VsZWN0YWJsZU1pbixcbiAgICAgICAgc2VsZWN0YWJsZU1heCxcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBtaW46IERhdGUgPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICAgIGNvbnN0IG1heDogRGF0ZSA9IHNlbGVjdGFibGVNYXggPz8gZGlzcGxheU1heDtcbiAgICAgICAgcmV0dXJuIHRpbWVZZWFycyh0aW1lWWVhci5mbG9vcihkaXNwbGF5TWluKSwgZGlzcGxheU1heClcbiAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgLm1hcChmbG9vcmVkWWVhciA9PiB7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgIGZsb29yZWRZZWFyLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICAgIGFjdGl2ZVllYXJNb250aC5nZXRNb250aCgpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGlkOiB5ZWFyLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgdGl0bGU6IHllYXJGb3JtYXR0ZXIoeWVhciksXG4gICAgICAgICAgICAgIGRpc2FibGVkOlxuICAgICAgICAgICAgICAgIHllYXIuZ2V0RnVsbFllYXIoKSA8IG1pbi5nZXRGdWxsWWVhcigpIHx8XG4gICAgICAgICAgICAgICAgeWVhci5nZXRGdWxsWWVhcigpID4gbWF4LmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICAgIGRhdGU6IHllYXIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRZZWFyT3B0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMueWVhck9wdGlvbnMkLFxuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW3llYXJPcHRpb25zLCBhY3RpdmVZZWFyTW9udGhdKSA9PlxuICAgICAgICB5ZWFyT3B0aW9ucy5maW5kKFxuICAgICAgICAgIHkgPT4geS5pZCA9PT0gYWN0aXZlWWVhck1vbnRoLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSxcbiAgICAgICAgKSB8fCBudWxsLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBtb250aE9wdGlvbnMkOiBPYnNlcnZhYmxlPERhdGVPcHRpb25bXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gICAgdGhpcy5kaXNwbGF5TWluJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW1xuICAgICAgICBhY3RpdmVZZWFyTW9udGgsXG4gICAgICAgIGRpc3BsYXlNaW4sXG4gICAgICAgIGRpc3BsYXlNYXgsXG4gICAgICAgIHNlbGVjdGFibGVNaW4sXG4gICAgICAgIHNlbGVjdGFibGVNYXgsXG4gICAgICBdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1pbiA9IHNlbGVjdGFibGVNaW4gPz8gZGlzcGxheU1pbjtcbiAgICAgICAgY29uc3QgbWF4ID0gc2VsZWN0YWJsZU1heCA/PyBkaXNwbGF5TWF4O1xuICAgICAgICByZXR1cm4gdGltZU1vbnRocyhcbiAgICAgICAgICB0aW1lWWVhci5mbG9vcihhY3RpdmVZZWFyTW9udGgpLFxuICAgICAgICAgIHRpbWVZZWFyLmZsb29yKHRpbWVZZWFyLm9mZnNldChhY3RpdmVZZWFyTW9udGgsIDEpKSxcbiAgICAgICAgKS5tYXAobW9udGggPT4gKHtcbiAgICAgICAgICBpZDogbW9udGguZ2V0TW9udGgoKS50b1N0cmluZygpLFxuICAgICAgICAgIHRpdGxlOiBtb250aEZvcm1hdHRlcihtb250aCksXG4gICAgICAgICAgZGlzYWJsZWQ6XG4gICAgICAgICAgICBtb250aC52YWx1ZU9mKCkgPCBtaW4udmFsdWVPZigpIHx8IG1vbnRoLnZhbHVlT2YoKSA+IG1heC52YWx1ZU9mKCksXG4gICAgICAgICAgZGF0ZTogbW9udGgsXG4gICAgICAgIH0pKTtcbiAgICAgIH0sXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkTW9udGhPcHRpb24kID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5tb250aE9wdGlvbnMkLFxuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW21vbnRoT3B0aW9ucywgYWN0aXZlWWVhck1vbnRoXSkgPT5cbiAgICAgICAgbW9udGhPcHRpb25zLmZpbmQoXG4gICAgICAgICAgbSA9PiBtLmlkID09PSBhY3RpdmVZZWFyTW9udGguZ2V0TW9udGgoKS50b1N0cmluZygpLFxuICAgICAgICApIHx8IG51bGwsXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHByZXZpb3VzTW9udGgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuZGlzcGxheU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWluJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt5ZWFyTW9udGgsIGRpc3BsYXlNaW4sIHNlbGVjdGFibGVNaW5dKSA9PiB7XG4gICAgICBjb25zdCBtaW46IERhdGUgPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICBjb25zdCBwcmV2aW91cyA9IHRpbWVNb250aC5mbG9vcih0aW1lTW9udGgub2Zmc2V0KHllYXJNb250aCwgLTEpKTtcbiAgICAgIGlmIChwcmV2aW91cy52YWx1ZU9mKCkgPCBtaW4udmFsdWVPZigpKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICB9KSxcbiAgKTtcblxuICByZWFkb25seSBuZXh0TW9udGgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuZGlzcGxheU1heCQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt5ZWFyTW9udGgsIGRpc3BsYXlNYXgsIHNlbGVjdGFibGVNYXhdKSA9PiB7XG4gICAgICBjb25zdCBtYXg6IERhdGUgPSBzZWxlY3RhYmxlTWF4ID8/IGRpc3BsYXlNYXg7XG4gICAgICBjb25zdCBuZXh0ID0gdGltZU1vbnRoLmZsb29yKHRpbWVNb250aC5vZmZzZXQoeWVhck1vbnRoLCAxKSk7XG4gICAgICBpZiAobmV4dC52YWx1ZU9mKCkgPiBtYXgudmFsdWVPZigpKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0ZXNJblNlbGVjdGVkUmFuZ2UkOiBPYnNlcnZhYmxlPERhdGVbXT4gPVxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQucGlwZShcbiAgICAgIG1hcChzZWxlY3RlZFZhbHVlID0+IHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFZhbHVlKSByZXR1cm4gW107XG4gICAgICAgIGlmIChzZWxlY3RlZFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIFtzZWxlY3RlZFZhbHVlXTtcbiAgICAgICAgcmV0dXJuIHRpbWVEYXlzKFxuICAgICAgICAgIHRpbWVEYXkuZmxvb3Ioc2VsZWN0ZWRWYWx1ZVswXSksXG4gICAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldChzZWxlY3RlZFZhbHVlWzFdLCAxKSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSBkYXRlcyQ6IE9ic2VydmFibGU8Q2FsZW5kYXJEYXRlW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQsXG4gICAgdGhpcy5kYXRlc0luU2VsZWN0ZWRSYW5nZSQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWluJCxcbiAgICB0aGlzLnNlbGVjdGFibGVNYXgkLFxuICAgIHRoaXMub21pdFJhbmdlJCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW1xuICAgICAgICBhY3RpdmVZZWFyTW9udGgsXG4gICAgICAgIHNlbGVjdGVkVmFsdWUsXG4gICAgICAgIGRhdGVzSW5TZWxlY3RlZFJhbmdlLFxuICAgICAgICBzZWxlY3RhYmxlTWluLFxuICAgICAgICBzZWxlY3RhYmxlTWF4LFxuICAgICAgICBvbWl0UmFuZ2UsXG4gICAgICBdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyRGF0ZXMgPSB0aW1lRGF5cyhcbiAgICAgICAgICB0aW1lU3VuZGF5LmZsb29yKGFjdGl2ZVllYXJNb250aCksXG4gICAgICAgICAgdGltZVN1bmRheS5jZWlsKHRpbWVNb250aC5vZmZzZXQoYWN0aXZlWWVhck1vbnRoLCAxKSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG1pbkNhbGVuZGFyRGF0ZSA9IGNhbGVuZGFyRGF0ZXNbMF07XG4gICAgICAgIGNvbnN0IG1heENhbGVuZGFyRGF0ZSA9IGNhbGVuZGFyRGF0ZXNbY2FsZW5kYXJEYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlQ29vcmRpbmF0ZXMgPSBuZXcgTWFwPG51bWJlciwgW251bWJlciwgbnVtYmVyXT4oKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlID0gZGF0ZXNJblNlbGVjdGVkUmFuZ2UuZmlsdGVyKFxuICAgICAgICAgIHNlbGVjdGVkID0+XG4gICAgICAgICAgICBzZWxlY3RlZC52YWx1ZU9mKCkgPj0gbWluQ2FsZW5kYXJEYXRlLnZhbHVlT2YoKSAmJlxuICAgICAgICAgICAgc2VsZWN0ZWQudmFsdWVPZigpIDw9IG1heENhbGVuZGFyRGF0ZS52YWx1ZU9mKCkgJiZcbiAgICAgICAgICAgIChzZWxlY3RhYmxlTWluXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWQudmFsdWVPZigpID49IHNlbGVjdGFibGVNaW4udmFsdWVPZigpXG4gICAgICAgICAgICAgIDogdHJ1ZSkgJiZcbiAgICAgICAgICAgIChzZWxlY3RhYmxlTWF4XG4gICAgICAgICAgICAgID8gc2VsZWN0ZWQudmFsdWVPZigpIDw9IHNlbGVjdGFibGVNYXgudmFsdWVPZigpXG4gICAgICAgICAgICAgIDogdHJ1ZSkgJiZcbiAgICAgICAgICAgIChvbWl0UmFuZ2VcbiAgICAgICAgICAgICAgPyBzZWxlY3RlZC52YWx1ZU9mKCkgPCBvbWl0UmFuZ2VbMF0udmFsdWVPZigpIHx8XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQudmFsdWVPZigpID4gb21pdFJhbmdlWzFdLnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IHRydWUpLFxuICAgICAgICApO1xuICAgICAgICBpZiAodmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBmaXJzdFZpc2libGVTZWxlY3RlZERhdGVPZmZzZXQgPSBnZXRXZWVrZGF5TnVtYmVyKFxuICAgICAgICAgICAgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlWzBdLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlLmZvckVhY2goKHNlbGVjdGVkLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB4ID0gZ2V0V2Vla2RheU51bWJlcihzZWxlY3RlZCk7XG4gICAgICAgICAgICBjb25zdCB5ID0gTWF0aC5mbG9vcigoaSArIGZpcnN0VmlzaWJsZVNlbGVjdGVkRGF0ZU9mZnNldCkgLyA3KTtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzLnNldChzZWxlY3RlZC52YWx1ZU9mKCksIFt4LCB5XSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2VyaWFsaXplQ29vcmRpbmF0ZXMoY29vcmRpbmF0ZXM6IFtudW1iZXIsIG51bWJlcl0pOiBzdHJpbmcge1xuICAgICAgICAgIHJldHVybiBjb29yZGluYXRlcy5qb2luKCc6Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcyA9IG5ldyBTZXQoXG4gICAgICAgICAgWy4uLnNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzLnZhbHVlcygpXS5tYXAoc2VyaWFsaXplQ29vcmRpbmF0ZXMpLFxuICAgICAgICApO1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldFJvdW5kZWRDb3JuZXJzKGRhdGU6IERhdGUpOiB7XG4gICAgICAgICAgbnc6IGJvb2xlYW47XG4gICAgICAgICAgbmU6IGJvb2xlYW47XG4gICAgICAgICAgc2U6IGJvb2xlYW47XG4gICAgICAgICAgc3c6IGJvb2xlYW47XG4gICAgICAgIH0ge1xuICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gc2VsZWN0ZWREYXRlQ29vcmRpbmF0ZXMuZ2V0KGRhdGUudmFsdWVPZigpKTtcbiAgICAgICAgICBpZiAoIWNvb3JkaW5hdGVzKVxuICAgICAgICAgICAgcmV0dXJuIHsgbnc6IGZhbHNlLCBuZTogZmFsc2UsIHNlOiBmYWxzZSwgc3c6IGZhbHNlIH07XG4gICAgICAgICAgY29uc3QgW3gsIHldID0gY29vcmRpbmF0ZXM7XG4gICAgICAgICAgY29uc3QgdG9wID0gc2VyaWFsaXplQ29vcmRpbmF0ZXMoW3gsIHkgLSAxXSksXG4gICAgICAgICAgICByaWdodCA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4ICsgMSwgeV0pLFxuICAgICAgICAgICAgYm90dG9tID0gc2VyaWFsaXplQ29vcmRpbmF0ZXMoW3gsIHkgKyAxXSksXG4gICAgICAgICAgICBsZWZ0ID0gc2VyaWFsaXplQ29vcmRpbmF0ZXMoW3ggLSAxLCB5XSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG53OlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKHRvcCkgJiZcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhsZWZ0KSxcbiAgICAgICAgICAgIG5lOlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKHRvcCkgJiZcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhyaWdodCksXG4gICAgICAgICAgICBzZTpcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhyaWdodCkgJiZcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhib3R0b20pLFxuICAgICAgICAgICAgc3c6XG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMobGVmdCkgJiZcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhib3R0b20pLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VWYWx1ZXMgPSBuZXcgU2V0KFxuICAgICAgICAgIHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZS5tYXAoc2VsZWN0ZWQgPT4gc2VsZWN0ZWQudmFsdWVPZigpKSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB0b2RheSA9IHRpbWVEYXkuZmxvb3IobmV3IERhdGUoKSk7XG5cbiAgICAgICAgcmV0dXJuIGNhbGVuZGFyRGF0ZXMubWFwKGRhdGUgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgbncsIG5lLCBzZSwgc3cgfSA9IGdldFJvdW5kZWRDb3JuZXJzKGRhdGUpO1xuICAgICAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IGRhdGUudmFsdWVPZigpO1xuICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VWYWx1ZXMuaGFzKGRhdGVWYWx1ZSk7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlXG4gICAgICAgICAgICA/IHNlbGVjdGVkVmFsdWUgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICAgID8gZGF0ZVZhbHVlID09PSBzZWxlY3RlZFZhbHVlLnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IGRhdGVWYWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZVswXS52YWx1ZU9mKCkgfHxcbiAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPT09IHNlbGVjdGVkVmFsdWVbMV0udmFsdWVPZigpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgZGlzcGxheTogZGF5Rm9ybWF0dGVyKGRhdGUpLFxuICAgICAgICAgICAgZmFkZUluOlxuICAgICAgICAgICAgICBpblJhbmdlICYmXG4gICAgICAgICAgICAgIChkYXRlVmFsdWUgPT09XG4gICAgICAgICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICBtaW5DYWxlbmRhckRhdGUudmFsdWVPZigpLFxuICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZU1pbj8udmFsdWVPZigpID8/IC1JbmZpbml0eSxcbiAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgKG9taXRSYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IHRpbWVEYXkub2Zmc2V0KG9taXRSYW5nZVsxXSwgMSkudmFsdWVPZigpXG4gICAgICAgICAgICAgICAgICAgIDogLUluZmluaXR5KSksXG4gICAgICAgICAgICBmYWRlT3V0OlxuICAgICAgICAgICAgICBpblJhbmdlICYmXG4gICAgICAgICAgICAgIChkYXRlVmFsdWUgPT09XG4gICAgICAgICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICBtYXhDYWxlbmRhckRhdGUudmFsdWVPZigpLFxuICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZU1heD8udmFsdWVPZigpID8/IEluZmluaXR5LFxuICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPT09XG4gICAgICAgICAgICAgICAgICAob21pdFJhbmdlXG4gICAgICAgICAgICAgICAgICAgID8gdGltZURheS5vZmZzZXQob21pdFJhbmdlWzBdLCAtMSkudmFsdWVPZigpXG4gICAgICAgICAgICAgICAgICAgIDogSW5maW5pdHkpKSxcbiAgICAgICAgICAgIGhpZGRlbjpcbiAgICAgICAgICAgICAgZGF0ZVZhbHVlIDwgKHNlbGVjdGFibGVNaW4/LnZhbHVlT2YoKSA/PyAtSW5maW5pdHkpIHx8XG4gICAgICAgICAgICAgIGRhdGVWYWx1ZSA+IChzZWxlY3RhYmxlTWF4Py52YWx1ZU9mKCkgPz8gSW5maW5pdHkpIHx8XG4gICAgICAgICAgICAgIChvbWl0UmFuZ2VcbiAgICAgICAgICAgICAgICA/IG9taXRSYW5nZVswXS52YWx1ZU9mKCkgPD0gZGF0ZVZhbHVlICYmXG4gICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPD0gb21pdFJhbmdlWzFdLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgIDogZmFsc2UpLFxuICAgICAgICAgICAgaW5DdXJyZW50TW9udGg6XG4gICAgICAgICAgICAgIGRhdGVWYWx1ZSA+PSBhY3RpdmVZZWFyTW9udGgudmFsdWVPZigpICYmXG4gICAgICAgICAgICAgIGRhdGVWYWx1ZSA8IHRpbWVNb250aC5vZmZzZXQoYWN0aXZlWWVhck1vbnRoLCAxKS52YWx1ZU9mKCksXG4gICAgICAgICAgICBpblJhbmdlLFxuICAgICAgICAgICAgcm91bmRlZE5lOiBuZSxcbiAgICAgICAgICAgIHJvdW5kZWROdzogbncsXG4gICAgICAgICAgICByb3VuZGVkU2U6IHNlLFxuICAgICAgICAgICAgcm91bmRlZFN3OiBzdyxcbiAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgdG9kYXk6IGRhdGVWYWx1ZSA9PT0gdG9kYXkudmFsdWVPZigpLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgc2VsZWN0RGF5KGRheTogQ2FsZW5kYXJEYXRlKSB7XG4gICAgaWYgKCFkYXkuaW5DdXJyZW50TW9udGgpIHtcbiAgICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoQ2hhbmdlLmVtaXQodGltZU1vbnRoLmZsb29yKGRheS5kYXRlKSk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KGRheS5kYXRlKTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBhY3RpdmVZZWFyTW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgZW1pdEFjdGl2ZVllYXJNb250aCh5ZWFyTW9udGg6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKHllYXJNb250aCkgdGhpcy5hY3RpdmVZZWFyTW9udGhDaGFuZ2UuZW1pdCh5ZWFyTW9udGgpO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIGRhdGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ2FsZW5kYXJDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgZGVmYXVsdE1pbiA9IHRpbWVZZWFyLmZsb29yKHRpbWVZZWFyLm9mZnNldChuZXcgRGF0ZSgpLCAtNykpO1xuICBleHBvcnQgY29uc3QgZGVmYXVsdE1heCA9IHRpbWVEYXkub2Zmc2V0KFxuICAgIHRpbWVZZWFyLmZsb29yKHRpbWVZZWFyLm9mZnNldChuZXcgRGF0ZSgpLCA1KSksXG4gICAgLTEsXG4gICk7XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udHJvbHNcIj5cbiAgPGRpdj5cbiAgICA8cml2LXNpbXBsZS1zZWxlY3RcbiAgICAgIFtmaWx0ZXJhYmlsaXR5T3B0aW9uc109XCJ7IGVuYWJsZWQ6IHRydWUsIHBsYWNlaG9sZGVyOiAnTW9udGguLi4nIH1cIlxuICAgICAgW29wdGlvbkdyb3Vwc109XCJtb250aE9wdGlvbnMkIHwgYXN5bmMgfCByaXZPcHRpb25Hcm91cFwiXG4gICAgICBbc2VsZWN0ZWRPcHRpb25dPVwic2VsZWN0ZWRNb250aE9wdGlvbiQgfCBhc3luY1wiXG4gICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwiZW1pdEFjdGl2ZVllYXJNb250aCgkZXZlbnQ/LmRhdGUgPz8gbnVsbClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdHJpZ2dlciBsZXQtc3RhdGU9XCJzdGF0ZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgW2ljb25dPVwiJ0NoZXZyb25Eb3duJ1wiXG4gICAgICAgICAgW2ljb25Qb3NpdGlvbl09XCInbGFzdCdcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3RhdGUuZGlzcGxheS5zZWxlY3RlZCB8fCAnLi4uJyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9yaXYtc2ltcGxlLXNlbGVjdD5cbiAgICA8cml2LXNpbXBsZS1zZWxlY3RcbiAgICAgIFtmaWx0ZXJhYmlsaXR5T3B0aW9uc109XCJ7IGVuYWJsZWQ6IHRydWUsIHBsYWNlaG9sZGVyOiAnWWVhci4uLicgfVwiXG4gICAgICBbb3B0aW9uR3JvdXBzXT1cInllYXJPcHRpb25zJCB8IGFzeW5jIHwgcml2T3B0aW9uR3JvdXBcIlxuICAgICAgW3NlbGVjdGVkT3B0aW9uXT1cInNlbGVjdGVkWWVhck9wdGlvbiQgfCBhc3luY1wiXG4gICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwiZW1pdEFjdGl2ZVllYXJNb250aCgkZXZlbnQ/LmRhdGUgPz8gbnVsbClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdHJpZ2dlciBsZXQtc3RhdGU9XCJzdGF0ZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgW2ljb25dPVwiJ0NoZXZyb25Eb3duJ1wiXG4gICAgICAgICAgW2ljb25Qb3NpdGlvbl09XCInbGFzdCdcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3RhdGUuZGlzcGxheS5zZWxlY3RlZCB8fCAnLi4uJyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9yaXYtc2ltcGxlLXNlbGVjdD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cInsgcHJldjogcHJldmlvdXNNb250aCQgfCBhc3luYywgbmV4dDogbmV4dE1vbnRoJCB8IGFzeW5jIH07IGxldCB2bVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICByaXZCdXR0b25cbiAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICBbaWNvbl09XCInQXJyb3dMZWZ0J1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIXZtLnByZXZcIlxuICAgICAgKGNsaWNrKT1cInZtLnByZXYgPyBhY3RpdmVZZWFyTW9udGhDaGFuZ2UuZW1pdCh2bS5wcmV2KSA6IG51bGxcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPjwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHJpdkJ1dHRvblxuICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgIFtpY29uXT1cIidBcnJvd1JpZ2h0J1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIXZtLm5leHRcIlxuICAgICAgKGNsaWNrKT1cInZtLm5leHQgPyBhY3RpdmVZZWFyTW9udGhDaGFuZ2UuZW1pdCh2bS5uZXh0KSA6IG51bGxcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPjwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNhbGVuZGFyXCI+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5TdTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPk1vPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+VHU8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5XZTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlRoPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+RnI8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5TYTwvc3Bhbj5cbiAgPGJ1dHRvblxuICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF0ZXMkIHwgYXN5bmNcIlxuICAgIGNsYXNzPVwiZGF5XCJcbiAgICBbZGlzYWJsZWRdPVwiZGF5LmhpZGRlblwiXG4gICAgW2NsYXNzLmJsZWVkXT1cIiFkYXkuaW5DdXJyZW50TW9udGhcIlxuICAgIFtjbGFzcy5mYWRlLWluXT1cImRheS5mYWRlSW5cIlxuICAgIFtjbGFzcy5mYWRlLW91dF09XCJkYXkuZmFkZU91dFwiXG4gICAgW2NsYXNzLmluLXJhbmdlXT1cImRheS5pblJhbmdlXCJcbiAgICBbY2xhc3Mucm91bmRlZC1uZV09XCJkYXkucm91bmRlZE5lXCJcbiAgICBbY2xhc3Mucm91bmRlZC1ud109XCJkYXkucm91bmRlZE53XCJcbiAgICBbY2xhc3Mucm91bmRlZC1zZV09XCJkYXkucm91bmRlZFNlXCJcbiAgICBbY2xhc3Mucm91bmRlZC1zd109XCJkYXkucm91bmRlZFN3XCJcbiAgICAoY2xpY2spPVwic2VsZWN0RGF5KGRheSlcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZGF5LXdyYXBwZXJcIlxuICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImRheS5zZWxlY3RlZFwiXG4gICAgICBbY2xhc3MudG9kYXldPVwiZGF5LnRvZGF5XCJcbiAgICAgIFtjbGFzcy5oaWRkZW5dPVwiZGF5LmhpZGRlblwiXG4gICAgPlxuICAgICAge3sgZGF5LmRpc3BsYXkgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -44,7 +44,7 @@ export class DateRangeComponent extends InputLabelComponent {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
return date;
|
|
47
|
-
})), this.userSelectedPreset$.pipe(map(preset => preset.dates))).pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
|
47
|
+
})), this.userSelectedPreset$.pipe(filter((preset) => preset !== null), map(preset => preset.dates))).pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
|
48
48
|
this.presetFilterQuery$ = new BehaviorSubject('');
|
|
49
49
|
this.filteredPresetOptions$ = combineLatest([
|
|
50
50
|
this.presetFilterQuery$,
|
|
@@ -110,7 +110,7 @@ export class DateRangeComponent extends InputLabelComponent {
|
|
|
110
110
|
this.rightMax$ = this.max$.pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
|
111
111
|
this.leftActiveYearMonth$ = combineLatest([
|
|
112
112
|
this.leftMax$,
|
|
113
|
-
merge(this.userLeftActiveYearMonth$.pipe(startWith(timeMonth.floor(this.TODAY))), this.userSelectedPreset$.pipe(map(preset => timeMonth.floor(preset.dates[0]))), this.value$.pipe(filter((v) => v !== undefined), map(v => timeMonth.floor(v[0])))),
|
|
113
|
+
merge(this.userLeftActiveYearMonth$.pipe(startWith(timeMonth.floor(this.TODAY))), this.userSelectedPreset$.pipe(filter((preset) => preset !== null), map(preset => timeMonth.floor(preset.dates[0]))), this.value$.pipe(filter((v) => v !== undefined), map(v => timeMonth.floor(v[0])))),
|
|
114
114
|
]).pipe(map(([leftMax, left]) => {
|
|
115
115
|
if (left.valueOf() >= leftMax.valueOf())
|
|
116
116
|
return timeMonth.floor(leftMax);
|
|
@@ -119,7 +119,7 @@ export class DateRangeComponent extends InputLabelComponent {
|
|
|
119
119
|
}), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
120
120
|
this.rightActiveYearMonth$ = combineLatest([
|
|
121
121
|
this.leftActiveYearMonth$,
|
|
122
|
-
merge(this.userRightActiveYearMonth$.pipe(startWith(timeMonth.ceil(this.TODAY))), this.userSelectedPreset$.pipe(map(preset => timeMonth.floor(preset.dates[1]))), this.value$.pipe(filter((v) => v !== undefined), map(v => timeMonth.floor(v[1])))),
|
|
122
|
+
merge(this.userRightActiveYearMonth$.pipe(startWith(timeMonth.ceil(this.TODAY))), this.userSelectedPreset$.pipe(filter((preset) => preset !== null), map(preset => timeMonth.floor(preset.dates[1]))), this.value$.pipe(filter((v) => v !== undefined), map(v => timeMonth.floor(v[1])))),
|
|
123
123
|
this.rightMax$,
|
|
124
124
|
]).pipe(map(([left, userRight, rightMax$]) => {
|
|
125
125
|
if (left.valueOf() >= userRight.valueOf())
|
|
@@ -469,4 +469,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
469
469
|
},
|
|
470
470
|
]);
|
|
471
471
|
})(DateRangeComponent || (DateRangeComponent = {}));
|
|
472
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUNMLGVBQWUsRUFFZixPQUFPLEVBQ1AsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBQ2pGLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUM7QUFFeEMsNkVBQTZFO0FBQzdFLDJCQUEyQjtBQUMzQixtR0FBbUc7QUFP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QUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN6QztTQUNGO0tBQ0YsQ0FBQztJQUlXLGdDQUFhLEdBQUcscUJBQXFCLENBQUMsYUFBYSxDQUFDO1FBQy9EO1lBQ0UsT0FBTyxFQUFFLG1CQUFBLE9BQU87U0FDakI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLEVBOVBnQixrQkFBa0IsS0FBbEIsa0JBQWtCLFFBOFBsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGltZURheSwgdGltZU1vbnRoLCB0aW1lU3VuZGF5LCB0aW1lV2VlaywgdGltZVllYXIgfSBmcm9tICdkMy10aW1lJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBtZXJnZSxcbiAgc2NhbixcbiAgc2hhcmVSZXBsYXksXG4gIHNraXBVbnRpbCxcbiAgc3RhcnRXaXRoLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJy4uLy4uL2Zvcm1hdC9waXBlcy9kYXRlLnBpcGUnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlIH0gZnJvbSAnLi4vLi4vdXRpbC9sb2NhbC1zdG9yYWdlJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0TGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC1sYWJlbC9pbnB1dC1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2luZ2xlU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vc2luZ2xlLXNlbGVjdC9zaW5nbGUtc2VsZWN0LmNvbXBvbmVudCc7XG5jb25zdCB0aW1lUXVhcnRlciA9IHRpbWVNb250aC5ldmVyeSgzKSE7XG5cbi8vIFRPRE86IG9uY2Ugd2UgdXBncmFkZSB0byBBbmd1bGFyIDE2LCB0aGlzIGNvbXBvbmVudCBjYW4gYmUgY2xlYW5lZCB1cCB3aXRoXG4vLyBzaWduYWxzIGluc3RlYWQgb2YgUnhKUy5cbi8vIGh0dHBzOi8vd3d3Lm5vdGlvbi5zby9yaXZldC9SZXNvbHZlLVRPRE9zLWFmdGVyLUFuZ3VsYXItdXBncmFkZS0xZjI2NjdlYjJhMzE4MGI3OWY2YWQ5MmE3ZTU3NmYwOFxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LWRhdGUtcmFuZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcmFuZ2UuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlQ29tcG9uZW50IGV4dGVuZHMgSW5wdXRMYWJlbENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IFRPREFZID0gbmV3IERhdGUoKTtcbiAgcmVhZG9ubHkgU1RPUkFHRV9LRVkgPSAnZGF0ZS1yYW5nZS5kZWZhdWx0JztcblxuICBwcml2YXRlIHJlYWRvbmx5IHNob3dQcmVzZXRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIEBJbnB1dCgpXG4gIHNldCBzaG93UHJlc2V0cyh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93UHJlc2V0cyQubmV4dCh2KTtcbiAgfVxuICBnZXQgc2hvd1ByZXNldHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1ByZXNldHMkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBtaW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWluKTtcbiAgQElucHV0KClcbiAgc2V0IG1pbih2OiBEYXRlKSB7XG4gICAgdGhpcy5taW4kLm5leHQodik7XG4gIH1cbiAgZ2V0IG1pbigpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5taW4kLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBtYXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWF4KTtcbiAgQElucHV0KClcbiAgc2V0IG1heCh2OiBEYXRlKSB7XG4gICAgdGhpcy5tYXgkLm5leHQodik7XG4gIH1cbiAgZ2V0IG1heCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5tYXgkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSB2YWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudmFsdWUkLm5leHQodik7XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBwbGFjZWhvbGRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ1NlbGVjdCBkYXRlIHJhbmdlLi4uJyk7XG4gIEBJbnB1dCgpXG4gIHNldCBwbGFjZWhvbGRlcih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyJC5uZXh0KHYpO1xuICB9XG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh2KTtcbiAgfVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBhbHRlcm5hdGl2ZVByZXNldExpc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZVtdXG4gID4oW10pO1xuICBASW5wdXQoKVxuICBzZXQgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0KHY6IERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRUeXBlW10pIHtcbiAgICB0aGlzLmFsdGVybmF0aXZlUHJlc2V0TGlzdCQubmV4dCh2KTtcbiAgfVxuICBnZXQgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0KCk6IERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLmFsdGVybmF0aXZlUHJlc2V0TGlzdCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IG9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgdXNlclNlbGVjdGVkUHJlc2V0JCA9IG5ldyBTdWJqZWN0PERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQ+KCk7XG5cbiAgcmVhZG9ubHkgdXNlclNlbGVjdGVkRGF0ZSQgPSBuZXcgU3ViamVjdDxEYXRlIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBzZWxlY3RlZFZhbHVlJDogT2JzZXJ2YWJsZTxEYXRlIHwgW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPiA9IG1lcmdlKFxuICAgIHRoaXMudmFsdWUkLFxuICAgIHRoaXMudXNlclNlbGVjdGVkRGF0ZSQucGlwZShcbiAgICAgIHNjYW4oXG4gICAgICAgIChwcmV2aW91czogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCwgZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgIGlmIChwcmV2aW91cyBpbnN0YW5jZW9mIERhdGUgJiYgZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIGlmIChkYXRlLnZhbHVlT2YoKSA+PSBwcmV2aW91cy52YWx1ZU9mKCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGFpcjogW0RhdGUsIERhdGVdID0gW3ByZXZpb3VzLCBkYXRlXTtcbiAgICAgICAgICAgICAgcmV0dXJuIHBhaXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApLFxuICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JC5waXBlKG1hcChwcmVzZXQgPT4gcHJlc2V0LmRhdGVzKSksXG4gICkucGlwZShzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pKTtcblxuICByZWFkb25seSBwcmVzZXRGaWx0ZXJRdWVyeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgcmVhZG9ubHkgZmlsdGVyZWRQcmVzZXRPcHRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMucHJlc2V0RmlsdGVyUXVlcnkkLFxuICAgIHRoaXMubWluJCxcbiAgICB0aGlzLm1heCQsXG4gICAgdGhpcy5hbHRlcm5hdGl2ZVByZXNldExpc3QkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3F1ZXJ5LCBtaW4sIG1heCwgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0XSkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uc0ZpbHRlcmVkT25TZWFyY2ggPSBEYXRlUmFuZ2VDb21wb25lbnQuZmlsdGVyUHJlc2V0cyhxdWVyeSk7XG4gICAgICBjb25zdCBvcHRpb25zRmlsdGVyZWRPbk1pbk1heCA9IG9wdGlvbnNGaWx0ZXJlZE9uU2VhcmNoLm1hcChwcmVzZXRzID0+ICh7XG4gICAgICAgIC4uLnByZXNldHMsXG4gICAgICAgIG9wdGlvbnM6IHByZXNldHMub3B0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgcCA9PlxuICAgICAgICAgICAgcC5kYXRlc1swXS52YWx1ZU9mKCkgPj0gbWluLnZhbHVlT2YoKSAmJlxuICAgICAgICAgICAgcC5kYXRlc1sxXS52YWx1ZU9mKCkgPD0gbWF4LnZhbHVlT2YoKSxcbiAgICAgICAgKSxcbiAgICAgIH0pKTtcbiAgICAgIGlmIChhbHRlcm5hdGl2ZVByZXNldExpc3QubGVuZ3RoID09IDApIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnNGaWx0ZXJlZE9uTWluTWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0ZpbHRlcmVkT25BbHRlcm5hdGl2ZVByZXNldExpc3QgPVxuICAgICAgICAgIG9wdGlvbnNGaWx0ZXJlZE9uTWluTWF4Lm1hcChwcmVzZXRzID0+ICh7XG4gICAgICAgICAgICAuLi5wcmVzZXRzLFxuICAgICAgICAgICAgb3B0aW9uczogcHJlc2V0cy5vcHRpb25zLmZpbHRlcihwID0+XG4gICAgICAgICAgICAgIGFsdGVybmF0aXZlUHJlc2V0TGlzdC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICA8RGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFR5cGU+cC5pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gb3B0aW9uc0ZpbHRlcmVkT25BbHRlcm5hdGl2ZVByZXNldExpc3Q7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZFByZXNldCQ6IE9ic2VydmFibGU8RGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCB8IG51bGw+ID1cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQsXG4gICAgICB0aGlzLnVzZXJTZWxlY3RlZFByZXNldCQucGlwZShzdGFydFdpdGgobnVsbCkpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtzZWxlY3RlZFZhbHVlLCB1c2VyU2VsZWN0ZWRQcmVzZXRdKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZFZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldHMuZmlsdGVyKFxuICAgICAgICAgICAgcHJlc2V0ID0+XG4gICAgICAgICAgICAgIHByZXNldC5kYXRlc1swXS52YWx1ZU9mKCkgPT09IHNlbGVjdGVkVmFsdWVbMF0udmFsdWVPZigpICYmXG4gICAgICAgICAgICAgIHByZXNldC5kYXRlc1sxXS52YWx1ZU9mKCkgPT09IHNlbGVjdGVkVmFsdWVbMV0udmFsdWVPZigpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBTb21lIGRhdGUgcmFuZ2VzIG1hdGNoIG11bHRpcGxlIHByZXNldHMsIGUuZy4gb24gSmFuIDE5dGgsIGFcbiAgICAgICAgICAgIC8vIHNlbGVjdGVkIGRhdGUgcmFuZ2Ugb2YgSmFuIDEtMTkgd291bGQgY29ycmVzcG9uZCB0byBcInRoaXMgbW9udGhcbiAgICAgICAgICAgIC8vIHNvIGZhcixcIiBcInRoaXMgcXVhcnRlciBzbyBmYXIsXCIgYW5kIFwidGhpcyB5ZWFyIHNvIGZhci5cIiBXZSdsbFxuICAgICAgICAgICAgLy8gdXNlIHRoZSB1c2VyJ3MgbW9zdCByZWNlbnQgbWFudWFsIHNlbGVjdGlvbiBhcyBhIHRpZSBicmVha2VyXG4gICAgICAgICAgICAvLyB3aGVyZSBwb3NzaWJsZS5cbiAgICAgICAgICAgIGNvbnN0IG1vc3RSZWNlbnQgPSBvcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAgIG9wdGlvbiA9PiBvcHRpb24uaWQgPT09IHVzZXJTZWxlY3RlZFByZXNldD8uaWQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1vc3RSZWNlbnQpIHJldHVybiBtb3N0UmVjZW50O1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNbMF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSksXG4gICAgKTtcblxuICByZWFkb25seSBmYXZvcml0ZVByZXNldElkcyQgPSBuZXcgTG9jYWxTdG9yYWdlPHN0cmluZ1tdPihcbiAgICB0aGlzLlNUT1JBR0VfS0VZLFxuICAgIFtdLFxuICApO1xuXG4gIHNldEZhdm9yaXRlKHByZXNldDogRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCwgZmF2b3JpdGU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpZHMgPSBuZXcgU2V0KHRoaXMuZmF2b3JpdGVQcmVzZXRJZHMkLmdldFZhbHVlKCkpO1xuICAgIGlmIChmYXZvcml0ZSkge1xuICAgICAgaWRzLmFkZChwcmVzZXQuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZHMuZGVsZXRlKHByZXNldC5pZCk7XG4gICAgfVxuICAgIHRoaXMuZmF2b3JpdGVQcmVzZXRJZHMkLm5leHQoWy4uLmlkc10pO1xuICB9XG5cbiAgcmVhZG9ubHkgZmF2b3JpdGVQcmVzZXRzJDogT2JzZXJ2YWJsZTxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0W10+ID1cbiAgICB0aGlzLmZhdm9yaXRlUHJlc2V0SWRzJC5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5hbHRlcm5hdGl2ZVByZXNldExpc3QkKSxcbiAgICAgIG1hcCgoW2lkcywgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0XSkgPT4ge1xuICAgICAgICBjb25zdCBmYXZvcml0ZVByZXNldHMgPSBpZHNcbiAgICAgICAgICAubWFwKGlkID0+XG4gICAgICAgICAgICBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0cy5maW5kKHByZXNldCA9PiBwcmVzZXQuaWQgPT09IGlkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLmZpbHRlcigocCk6IHAgaXMgRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCA9PiBwICE9PSB1bmRlZmluZWQpO1xuXG4gICAgICAgIGlmIChhbHRlcm5hdGl2ZVByZXNldExpc3QubGVuZ3RoID09IDApIHtcbiAgICAgICAgICByZXR1cm4gZmF2b3JpdGVQcmVzZXRzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGZhdm9yaXRlc0ZpbHRlcmVkT25BbHRlcm5hdGl2ZVByZXNldExpc3QgPVxuICAgICAgICAgICAgZmF2b3JpdGVQcmVzZXRzLmZpbHRlcihwID0+XG4gICAgICAgICAgICAgIGFsdGVybmF0aXZlUHJlc2V0TGlzdC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICA8RGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFR5cGU+cC5pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGZhdm9yaXRlc0ZpbHRlcmVkT25BbHRlcm5hdGl2ZVByZXNldExpc3Q7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IHVzZXJMZWZ0QWN0aXZlWWVhck1vbnRoJCA9IG5ldyBTdWJqZWN0PERhdGU+KCk7XG4gIHJlYWRvbmx5IHVzZXJSaWdodEFjdGl2ZVllYXJNb250aCQgPSBuZXcgU3ViamVjdDxEYXRlPigpO1xuXG4gIHJlYWRvbmx5IGxlZnRNaW4kID0gdGhpcy5taW4kLnBpcGUoXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcbiAgcmVhZG9ubHkgbGVmdE1heCQgPSB0aGlzLm1heCQucGlwZShcbiAgICBtYXAobWF4ID0+IHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5mbG9vcihtYXgpLCAtMSkpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG4gIHJlYWRvbmx5IHJpZ2h0TWF4JCA9IHRoaXMubWF4JC5waXBlKFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbGVmdEFjdGl2ZVllYXJNb250aCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmxlZnRNYXgkLFxuICAgIG1lcmdlKFxuICAgICAgdGhpcy51c2VyTGVmdEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRpbWVNb250aC5mbG9vcih0aGlzLlRPREFZKSksXG4gICAgICApLFxuICAgICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICAgIG1hcChwcmVzZXQgPT4gdGltZU1vbnRoLmZsb29yKHByZXNldC5kYXRlc1swXSkpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodik6IHYgaXMgW0RhdGUsIERhdGVdID0+IHYgIT09IHVuZGVmaW5lZCksXG4gICAgICAgIG1hcCh2ID0+IHRpbWVNb250aC5mbG9vcih2WzBdKSksXG4gICAgICApLFxuICAgICksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbGVmdE1heCwgbGVmdF0pID0+IHtcbiAgICAgIGlmIChsZWZ0LnZhbHVlT2YoKSA+PSBsZWZ0TWF4LnZhbHVlT2YoKSkgcmV0dXJuIHRpbWVNb250aC5mbG9vcihsZWZ0TWF4KTtcbiAgICAgIGVsc2UgcmV0dXJuIGxlZnQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSByaWdodEFjdGl2ZVllYXJNb250aCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmxlZnRBY3RpdmVZZWFyTW9udGgkLFxuICAgIG1lcmdlKFxuICAgICAgdGhpcy51c2VyUmlnaHRBY3RpdmVZZWFyTW9udGgkLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aW1lTW9udGguY2VpbCh0aGlzLlRPREFZKSksXG4gICAgICApLFxuICAgICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICAgIG1hcChwcmVzZXQgPT4gdGltZU1vbnRoLmZsb29yKHByZXNldC5kYXRlc1sxXSkpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodik6IHYgaXMgW0RhdGUsIERhdGVdID0+IHYgIT09IHVuZGVmaW5lZCksXG4gICAgICAgIG1hcCh2ID0+IHRpbWVNb250aC5mbG9vcih2WzFdKSksXG4gICAgICApLFxuICAgICksXG4gICAgdGhpcy5yaWdodE1heCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbGVmdCwgdXNlclJpZ2h0LCByaWdodE1heCRdKSA9PiB7XG4gICAgICBpZiAobGVmdC52YWx1ZU9mKCkgPj0gdXNlclJpZ2h0LnZhbHVlT2YoKSlcbiAgICAgICAgcmV0dXJuIHRpbWVNb250aC5mbG9vcih0aW1lTW9udGgub2Zmc2V0KGxlZnQsIDEpKTtcbiAgICAgIGVsc2UgaWYgKHVzZXJSaWdodC52YWx1ZU9mKCkgPj0gcmlnaHRNYXgkLnZhbHVlT2YoKSlcbiAgICAgICAgcmV0dXJuIHRpbWVNb250aC5mbG9vcihyaWdodE1heCQpO1xuICAgICAgZWxzZSByZXR1cm4gdXNlclJpZ2h0O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgcmlnaHRNaW4kID0gdGhpcy5sZWZ0QWN0aXZlWWVhck1vbnRoJC5waXBlKFxuICAgIG1hcChsZWZ0ID0+IHRpbWVNb250aC5mbG9vcih0aW1lTW9udGgub2Zmc2V0KGxlZnQsIDEpKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBsZWZ0T21pdFJhbmdlJDogT2JzZXJ2YWJsZTxbRGF0ZSwgRGF0ZV0+ID1cbiAgICB0aGlzLnJpZ2h0QWN0aXZlWWVhck1vbnRoJC5waXBlKFxuICAgICAgbWFwPERhdGUsIFtEYXRlLCBEYXRlXT4ocmlnaHRBY3RpdmVZZWFyTW9udGggPT4ge1xuICAgICAgICBjb25zdCBmaXJzdCA9IHRpbWVNb250aC5mbG9vcihyaWdodEFjdGl2ZVllYXJNb250aCk7XG4gICAgICAgIGNvbnN0IGxhc3QgPSB0aW1lRGF5Lm9mZnNldChcbiAgICAgICAgICB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChyaWdodEFjdGl2ZVllYXJNb250aCwgMSkpLFxuICAgICAgICAgIC0xLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gW2ZpcnN0LCBsYXN0XTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IHVzZXJJbnRlcmFjdGVkJCA9IG1lcmdlKFxuICAgIHRoaXMudXNlclNlbGVjdGVkRGF0ZSQsXG4gICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLFxuICApO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSB2YWx1ZUNoYW5nZTogT2JzZXJ2YWJsZTxbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQ+ID1cbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLnBpcGUoXG4gICAgICBza2lwVW50aWwoXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgIHRoaXMudXNlckludGVyYWN0ZWQkLFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQucGlwZShmaWx0ZXIodiA9PiB2ICE9PSB1bmRlZmluZWQpKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBmaWx0ZXIoKHYpOiB2IGlzIFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCA9PiAhKHYgaW5zdGFuY2VvZiBEYXRlKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgKHByZXZpb3VzLCBjdXJyZW50KSA9PlxuICAgICAgICAgIHByZXZpb3VzPy5bMF0udmFsdWVPZigpID09PSBjdXJyZW50Py5bMF0udmFsdWVPZigpICYmXG4gICAgICAgICAgcHJldmlvdXM/LlsxXS52YWx1ZU9mKCkgPT09IGN1cnJlbnQ/LlsxXS52YWx1ZU9mKCksXG4gICAgICApLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZSQ6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiA9XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5waXBlKFxuICAgICAgbWFwKHYgPT4ge1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgIHJldHVybiB2Lm1hcChkYXRlID0+IG5ldyBEYXRlUGlwZSgpLnRyYW5zZm9ybShkYXRlKSkuam9pbignIOKAlCAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICAgICk7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRGF0ZVJhbmdlQ29tcG9uZW50IHtcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuXG4gIGV4cG9ydCBlbnVtIFByZXNldFR5cGUge1xuICAgIFRPREFZID0gJ3RvZGF5JyxcbiAgICBZRVNURVJEQVkgPSAneWVzdGVyZGF5JyxcbiAgICBUT01PUlJPVyA9ICd0b21vcnJvdycsXG4gICAgVEhJU19XRUVLID0gJ3RoaXNfd2VlaycsXG4gICAgVEhJU19XRUVLX1NPX0ZBUiA9ICd0aGlzX3dlZWtfc29fZmFyJyxcbiAgICBMQVNUX1dFRUsgPSAnbGFzdF93ZWVrJyxcbiAgICBORVhUX1dFRUsgPSAnbmV4dF93ZWVrJyxcbiAgICBUSElTX01PTlRIID0gJ3RoaXNfbW9udGgnLFxuICAgIFRISVNfTU9OVEhfU09fRkFSID0gJ3RoaXNfbW9udGhfc29fZmFyJyxcbiAgICBMQVNUX01PTlRIID0gJ2xhc3RfbW9udGgnLFxuICAgIE5FWFRfTU9OVEggPSAnbmV4dF9tb250aCcsXG4gICAgVEhJU19RVUFSVEVSID0gJ3RoaXNfcXVhcnRlcicsXG4gICAgVEhJU19RVUFSVEVSX1NPX0ZBUiA9ICd0aGlzX3F1YXJ0ZXJfc29fZmFyJyxcbiAgICBMQVNUX1FVQVJURVIgPSAnbGFzdF9xdWFydGVyJyxcbiAgICBORVhUX1FVQVJURVIgPSAnbmV4dF9xdWFydGVyJyxcbiAgICBUSElTX1lFQVIgPSAndGhpc195ZWFyJyxcbiAgICBUSElTX1lFQVJfU09fRkFSID0gJ3RoaXNfeWVhcl9zb19mYXInLFxuICAgIExBU1RfWUVBUiA9ICdsYXN0X3llYXInLFxuICAgIE5FWFRfWUVBUiA9ICduZXh0X3llYXInLFxuICAgIExBU1RfN19EQVlTID0gJ2xhc3RfN19kYXlzJyxcbiAgICBMQVNUXzE0X0RBWVMgPSAnbGFzdF8xNF9kYXlzJyxcbiAgICBMQVNUXzMwX0RBWVMgPSAnbGFzdF8zMF9kYXlzJyxcbiAgICBMQVNUXzYwX0RBWVMgPSAnbGFzdF82MF9kYXlzJyxcbiAgICBMQVNUXzkwX0RBWVMgPSAnbGFzdF85MF9kYXlzJyxcbiAgICBMQVNUXzE4MF9EQVlTID0gJ2xhc3RfMTgwX2RheXMnLFxuICAgIExBU1RfMzY1X0RBWVMgPSAnbGFzdF8zNjVfZGF5cycsXG4gIH1cblxuICBleHBvcnQgY29uc3QgUHJlc2V0czogKFNpbmdsZVNlbGVjdENvbXBvbmVudC5PcHRpb24gJiB7XG4gICAgZGF0ZXM6IFtEYXRlLCBEYXRlXTtcbiAgfSlbXSA9IFtcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5UT0RBWSxcbiAgICAgIHRpdGxlOiAnVG9kYXknLFxuICAgICAgc3VidGl0bGU6ICdUb2RheSBmcm9tIG1pZG5pZ2h0IHVudGlsIHRoZSBjdXJyZW50IHRpbWUnLFxuICAgICAgZGF0ZXM6IFt0aW1lRGF5KCksIHRpbWVEYXkoKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ZRVNURVJEQVksXG4gICAgICB0aXRsZTogJ1llc3RlcmRheScsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyAyNCBob3VyIGRheScsXG4gICAgICBkYXRlczogW3RpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgLTEpLCB0aW1lRGF5Lm9mZnNldCh0aW1lRGF5KCksIC0xKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5UT01PUlJPVyxcbiAgICAgIHRpdGxlOiAnVG9tb3Jyb3cnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCAyNCBob3VyIGRheScsXG4gICAgICBkYXRlczogW3RpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgMSksIHRpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgMSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19XRUVLLFxuICAgICAgdGl0bGU6ICdUaGlzIHdlZWsnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBjYWxlbmRhciB3ZWVrJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVTdW5kYXkuZmxvb3IodG9kYXkpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lU3VuZGF5LmNlaWwodG9kYXkpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19XRUVLX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyB3ZWVrIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHdlZWsgdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZVN1bmRheS5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfV0VFSyxcbiAgICAgIHRpdGxlOiAnTGFzdCB3ZWVrJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGNhbGVuZGFyIHdlZWsnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVTdW5kYXkub2Zmc2V0KHRpbWVXZWVrLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX1dFRUssXG4gICAgICB0aXRsZTogJ05leHQgd2VlaycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGNhbGVuZGFyIHdlZWsnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19NT05USCxcbiAgICAgIHRpdGxlOiAnVGhpcyBtb250aCcsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIG1vbnRoJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVNb250aC5mbG9vcih0b2RheSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5jZWlsKHRvZGF5KSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfTU9OVEhfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIG1vbnRoIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIG1vbnRoIHVwIHRvIG5vdycsXG4gICAgICBkYXRlczogW3RpbWVNb250aC5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfTU9OVEgsXG4gICAgICB0aXRsZTogJ0xhc3QgbW9udGgnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgY2FsZW5kYXIgbW9udGgnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5vZmZzZXQodGltZU1vbnRoLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX01PTlRILFxuICAgICAgdGl0bGU6ICdOZXh0IG1vbnRoJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIG5leHQgY2FsZW5kYXIgbW9udGgnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19RVUFSVEVSLFxuICAgICAgdGl0bGU6ICdUaGlzIHF1YXJ0ZXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBxdWFydGVyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVRdWFydGVyLmZsb29yKHRvZGF5KSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVF1YXJ0ZXIuY2VpbCh0b2RheSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1FVQVJURVJfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIHF1YXJ0ZXIgc28gZmFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgcXVhcnRlciB1cCB0byBub3cnLFxuICAgICAgZGF0ZXM6IFt0aW1lUXVhcnRlci5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfUVVBUlRFUixcbiAgICAgIHRpdGxlOiAnTGFzdCBxdWFydGVyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGZ1bGwgcXVhcnRlcicsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lUXVhcnRlci5vZmZzZXQodGltZVF1YXJ0ZXIuZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5jZWlsKHRvZGF5KSwgLTEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTkVYVF9RVUFSVEVSLFxuICAgICAgdGl0bGU6ICdOZXh0IHF1YXJ0ZXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCBmdWxsIHF1YXJ0ZXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVF1YXJ0ZXIub2Zmc2V0KHRpbWVRdWFydGVyLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1lFQVIsXG4gICAgICB0aXRsZTogJ1RoaXMgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHllYXInLFxuICAgICAgZGF0ZXM6IFt0aW1lWWVhci5mbG9vcih0b2RheSksIHRpbWVEYXkub2Zmc2V0KHRpbWVZZWFyLmNlaWwodG9kYXkpLCAtMSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19ZRUFSX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyB5ZWFyIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHllYXIgdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZVllYXIuZmxvb3IodG9kYXkpLCB0aW1lRGF5LmZsb29yKHRvZGF5KV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUX1lFQVIsXG4gICAgICB0aXRsZTogJ0xhc3QgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyBjYWxlbmRhciB5ZWFyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5mbG9vcih0b2RheSksIC0xKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX1lFQVIsXG4gICAgICB0aXRsZTogJ05leHQgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGNhbGVuZGFyIHllYXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzdfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA3IGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgNyBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtOCkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMTRfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAxNCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDE0IGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xNSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMzBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAzMCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDMwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0zMSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfNjBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA2MCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDYwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC02MSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfOTBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA5MCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDkwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC05MSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMTgwX0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgMTgwIGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgMTgwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xODEpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzM2NV9EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDM2NSBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDM2NSBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMzY2KSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG5cbiAgZXhwb3J0IHR5cGUgUHJlc2V0ID0gKHR5cGVvZiBQcmVzZXRzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBmaWx0ZXJQcmVzZXRzID0gU2luZ2xlU2VsZWN0Q29tcG9uZW50LmdldEZpbHRlclN5bmMoW1xuICAgIHtcbiAgICAgIG9wdGlvbnM6IFByZXNldHMsXG4gICAgfSxcbiAgXSk7XG59XG4iLCI8cml2LWlucHV0LWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtoZWxwXT1cImhlbHBcIlxuICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbbGFiZWxBY3Rpb25UZXh0XT1cImxhYmVsQWN0aW9uVGV4dFwiXG4gIChsYWJlbEFjdGlvbik9XCJsYWJlbEFjdGlvbi5lbWl0KCRldmVudClcIlxuPlxuICA8YnV0dG9uXG4gICAgI3RyaWdnZXJcbiAgICBjbGFzcz1cInRyaWdnZXJcIlxuICAgIChjbGljayk9XCJvcGVuJC5uZXh0KHRydWUpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJkaXNwbGF5VmFsdWUkIHwgYXN5bmM7IGVsc2UgcGxhY2Vob2xkZXJWYWx1ZTsgbGV0IGRpc3BsYXlcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57eyBkaXNwbGF5IH19PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJWYWx1ZT5cbiAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciQgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvblwiPlxuICAgICAgPHJpdi1pY29uIFtuYW1lXT1cIidDYWxlbmRhcidcIiBbc2l6ZV09XCIxNlwiPjwvcml2LWljb24+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvcml2LWlucHV0LWxhYmVsPlxuXG48bmctdGVtcGxhdGVcbiAgI3NlbGZcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZlwiXG4gIGxldC1pbnB1dFZhbHVlXG4gIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogKHZhbHVlJCB8IGFzeW5jKSB9XCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wZW4kIHwgYXN5bmNcIj5cbiAgICA8cml2LWNhbGxvdXRcbiAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgW2FuY2hvcl09XCJ0cmlnZ2VyXCJcbiAgICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgW2FsbG93ZWRQb3NpdGlvbnNdPVwiW1xuICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAndG9wLWNlbnRlcicsXG4gICAgICAgICd0b3AtcmlnaHQnLFxuICAgICAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAnYm90dG9tLWxlZnQnXG4gICAgICBdXCJcbiAgICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInYm90dG9tLXJpZ2h0J1wiXG4gICAgICAoY2xvc2UpPVwib3BlbiQubmV4dChmYWxzZSk7IHVzZXJTZWxlY3RlZERhdGUkLm5leHQoaW5wdXRWYWx1ZSlcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UHJlc2V0c1wiIGNsYXNzPVwicHJlc2V0c1wiPlxuICAgICAgICAgIDxyaXYtc2ltcGxlLXNlbGVjdFxuICAgICAgICAgICAgW2xhYmVsXT1cIidEYXRlIHByZXNldHMnXCJcbiAgICAgICAgICAgIFtmaWx0ZXJhYmlsaXR5T3B0aW9uc109XCJ7IGVuYWJsZWQ6IHRydWUsIHBsYWNlaG9sZGVyOiAnU2VhcmNoLi4uJyB9XCJcbiAgICAgICAgICAgIFtvcHRpb25Hcm91cHNdPVwiKGZpbHRlcmVkUHJlc2V0T3B0aW9ucyQgfCBhc3luYykgPz8gW11cIlxuICAgICAgICAgICAgW3NlbGVjdGVkT3B0aW9uXT1cInNlbGVjdGVkUHJlc2V0JCB8IGFzeW5jXCJcbiAgICAgICAgICAgIChzZWxlY3RlZE9wdGlvbkNoYW5nZSk9XCJ1c2VyU2VsZWN0ZWRQcmVzZXQkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvcHRpb24gbGV0LW5vZGU9XCJub2RlXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICNzZWxmXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZlwiXG4gICAgICAgICAgICAgICAgbGV0LWlzRmF2b3JpdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiAoZmF2b3JpdGVQcmVzZXRJZHMkIHwgYXN5bmMpPy5pbmNsdWRlcyhub2RlLmlkKVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXNldFwiIFtjbGFzcy5mYXZvcml0ZV09XCJpc0Zhdm9yaXRlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJub2RlLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5kaWNlc109XCJub2RlLnRpdGxlSGlnaGxpZ2h0SW5kaWNlcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgICAgIDxyaXYtaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwibm9kZS5zdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2luZGljZXNdPVwibm9kZS5zdWJ0aXRsZUhpZ2hsaWdodEluZGljZXMgfHwgW11cIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICBzZXRGYXZvcml0ZShub2RlLCAhaXNGYXZvcml0ZSk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaXNGYXZvcml0ZSA/ICdIZWFydEFjdGl2ZScgOiAnSGVhcnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgICAgW3JpdlRvb2x0aXBdPVwiJ01hcmsgYXMgZmF2b3JpdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcml2LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9yaXYtc2ltcGxlLXNlbGVjdD5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNzZWxmXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxmXCJcbiAgICAgICAgICAgIGxldC1mYXZvcml0ZXNcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZmF2b3JpdGVQcmVzZXRzJCB8IGFzeW5jIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxyaXYtaW5wdXQtbGFiZWwgKm5nSWY9XCJmYXZvcml0ZXMubGVuZ3RoXCIgW2xhYmVsXT1cIidGYXZvcml0ZXMnXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaG9ydGN1dHNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmF2b3JpdGUgb2YgZmF2b3JpdGVzXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIoc2VsZWN0ZWRQcmVzZXQkIHwgYXN5bmMpPy5pZCA9PT0gZmF2b3JpdGUuaWRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZXJTZWxlY3RlZFByZXNldCQubmV4dChmYXZvcml0ZSlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnt7IGZhdm9yaXRlLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0RmF2b3JpdGUoZmF2b3JpdGUsIGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtyaXZUb29sdGlwXT1cIidSZW1vdmUgZmF2b3JpdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxyaXYtaWNvbiBbbmFtZV09XCInSGVhcnRBY3RpdmUnXCIgW3NpemVdPVwiMTZcIj48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9yaXYtaW5wdXQtbGFiZWw+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyc1wiPlxuICAgICAgICAgIDxyaXYtY2FsZW5kYXJcbiAgICAgICAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICAgICAgICBbYWN0aXZlWWVhck1vbnRoXT1cIihsZWZ0QWN0aXZlWWVhck1vbnRoJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICAoYWN0aXZlWWVhck1vbnRoQ2hhbmdlKT1cInVzZXJMZWZ0QWN0aXZlWWVhck1vbnRoJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgW2Rpc3BsYXlNaW5dPVwiKG1pbiQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlNYXhdPVwiKG1heCQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVNaW5dPVwiKGxlZnRNaW4kIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlTWF4XT1cIihsZWZ0TWF4JCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbb21pdFJhbmdlXT1cIihsZWZ0T21pdFJhbmdlJCB8IGFzeW5jKSB8fCBbVE9EQVksIFRPREFZXVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCIoc2VsZWN0ZWRWYWx1ZSQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgKGRhdGVTZWxlY3QpPVwidXNlclNlbGVjdGVkRGF0ZSQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9yaXYtY2FsZW5kYXI+XG4gICAgICAgICAgPHJpdi1jYWxlbmRhclxuICAgICAgICAgICAgY2xhc3M9XCJyaWdodFwiXG4gICAgICAgICAgICBbYWN0aXZlWWVhck1vbnRoXT1cIihyaWdodEFjdGl2ZVllYXJNb250aCQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgKGFjdGl2ZVllYXJNb250aENoYW5nZSk9XCJ1c2VyUmlnaHRBY3RpdmVZZWFyTW9udGgkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZGlzcGxheU1pbl09XCIobWluJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbZGlzcGxheU1heF09XCIobWF4JCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0YWJsZU1pbl09XCIocmlnaHRNaW4kIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlTWF4XT1cIihyaWdodE1heCQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwiKHNlbGVjdGVkVmFsdWUkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIChkYXRlU2VsZWN0KT1cInVzZXJTZWxlY3RlZERhdGUkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvcml2LWNhbGVuZGFyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Zm9vdGVyIGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1c2VyU2VsZWN0ZWREYXRlJC5uZXh0KHVuZGVmaW5lZClcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQ2xlYXJcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICByaXZCdXR0b25cbiAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuJC5uZXh0KGZhbHNlKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBEb25lXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZm9vdGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9yaXYtY2FsbG91dD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
472
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUNMLGVBQWUsRUFFZixPQUFPLEVBQ1AsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBQ2pGLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUM7QUFFeEMsNkVBQTZFO0FBQzdFLDJCQUEyQjtBQUMzQixtR0FBbUc7QUFP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S0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekM7U0FDRjtRQUNEO1lBQ0UsRUFBRSxFQUFFLFVBQVUsQ0FBQyxhQUFhO1lBQzVCLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFFBQVEsRUFBRSxvQ0FBb0M7WUFDOUMsS0FBSyxFQUFFO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pDO1NBQ0Y7S0FDRixDQUFDO0lBSVcsZ0NBQWEsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUM7UUFDL0Q7WUFDRSxPQUFPLEVBQUUsbUJBQUEsT0FBTztTQUNqQjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsRUE5UGdCLGtCQUFrQixLQUFsQixrQkFBa0IsUUE4UGxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0aW1lRGF5LCB0aW1lTW9udGgsIHRpbWVTdW5kYXksIHRpbWVXZWVrLCB0aW1lWWVhciB9IGZyb20gJ2QzLXRpbWUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIG1lcmdlLFxuICBzY2FuLFxuICBzaGFyZVJlcGxheSxcbiAgc2tpcFVudGlsLFxuICBzdGFydFdpdGgsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnLi4vLi4vZm9ybWF0L3BpcGVzL2RhdGUucGlwZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2UgfSBmcm9tICcuLi8uLi91dGlsL2xvY2FsLXN0b3JhZ2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0LWxhYmVsL2lucHV0LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9zaW5nbGUtc2VsZWN0L3NpbmdsZS1zZWxlY3QuY29tcG9uZW50JztcbmNvbnN0IHRpbWVRdWFydGVyID0gdGltZU1vbnRoLmV2ZXJ5KDMpITtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLlxuLy8gaHR0cHM6Ly93d3cubm90aW9uLnNvL3JpdmV0L1Jlc29sdmUtVE9ET3MtYWZ0ZXItQW5ndWxhci11cGdyYWRlLTFmMjY2N2ViMmEzMTgwYjc5ZjZhZDkyYTdlNTc2ZjA4XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtZGF0ZS1yYW5nZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VDb21wb25lbnQgZXh0ZW5kcyBJbnB1dExhYmVsQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgVE9EQVkgPSBuZXcgRGF0ZSgpO1xuICByZWFkb25seSBTVE9SQUdFX0tFWSA9ICdkYXRlLXJhbmdlLmRlZmF1bHQnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd1ByZXNldHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgQElucHV0KClcbiAgc2V0IHNob3dQcmVzZXRzKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dQcmVzZXRzJC5uZXh0KHYpO1xuICB9XG4gIGdldCBzaG93UHJlc2V0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93UHJlc2V0cyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IG1pbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNaW4pO1xuICBASW5wdXQoKVxuICBzZXQgbWluKHY6IERhdGUpIHtcbiAgICB0aGlzLm1pbiQubmV4dCh2KTtcbiAgfVxuICBnZXQgbWluKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLm1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IG1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNYXgpO1xuICBASW5wdXQoKVxuICBzZXQgbWF4KHY6IERhdGUpIHtcbiAgICB0aGlzLm1heCQubmV4dCh2KTtcbiAgfVxuICBnZXQgbWF4KCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLm1heCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8W0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy52YWx1ZSQubmV4dCh2KTtcbiAgfVxuICBnZXQgdmFsdWUoKTogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignU2VsZWN0IGRhdGUgcmFuZ2UuLi4nKTtcbiAgQElucHV0KClcbiAgc2V0IHBsYWNlaG9sZGVyKHY6IHN0cmluZykge1xuICAgIHRoaXMucGxhY2Vob2xkZXIkLm5leHQodik7XG4gIH1cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXIkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KHYpO1xuICB9XG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGFsdGVybmF0aXZlUHJlc2V0TGlzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRUeXBlW11cbiAgPihbXSk7XG4gIEBJbnB1dCgpXG4gIHNldCBhbHRlcm5hdGl2ZVByZXNldExpc3QodjogRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFR5cGVbXSkge1xuICAgIHRoaXMuYWx0ZXJuYXRpdmVQcmVzZXRMaXN0JC5uZXh0KHYpO1xuICB9XG4gIGdldCBhbHRlcm5hdGl2ZVByZXNldExpc3QoKTogRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFR5cGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuYWx0ZXJuYXRpdmVQcmVzZXRMaXN0JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgb3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICByZWFkb25seSB1c2VyU2VsZWN0ZWRQcmVzZXQkID1cbiAgICBuZXcgU3ViamVjdDxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0IHwgbnVsbD4oKTtcblxuICByZWFkb25seSB1c2VyU2VsZWN0ZWREYXRlJCA9IG5ldyBTdWJqZWN0PERhdGUgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkVmFsdWUkOiBPYnNlcnZhYmxlPERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQ+ID0gbWVyZ2UoXG4gICAgdGhpcy52YWx1ZSQsXG4gICAgdGhpcy51c2VyU2VsZWN0ZWREYXRlJC5waXBlKFxuICAgICAgc2NhbihcbiAgICAgICAgKHByZXZpb3VzOiBEYXRlIHwgW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkLCBkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgaWYgKHByZXZpb3VzIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgaWYgKGRhdGUudmFsdWVPZigpID49IHByZXZpb3VzLnZhbHVlT2YoKSkge1xuICAgICAgICAgICAgICBjb25zdCBwYWlyOiBbRGF0ZSwgRGF0ZV0gPSBbcHJldmlvdXMsIGRhdGVdO1xuICAgICAgICAgICAgICByZXR1cm4gcGFpcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICksXG4gICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICBmaWx0ZXIoKHByZXNldCk6IHByZXNldCBpcyBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0ID0+IHByZXNldCAhPT0gbnVsbCksXG4gICAgICBtYXAocHJlc2V0ID0+IHByZXNldC5kYXRlcyksXG4gICAgKSxcbiAgKS5waXBlKHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSkpO1xuXG4gIHJlYWRvbmx5IHByZXNldEZpbHRlclF1ZXJ5JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICByZWFkb25seSBmaWx0ZXJlZFByZXNldE9wdGlvbnMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5wcmVzZXRGaWx0ZXJRdWVyeSQsXG4gICAgdGhpcy5taW4kLFxuICAgIHRoaXMubWF4JCxcbiAgICB0aGlzLmFsdGVybmF0aXZlUHJlc2V0TGlzdCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbcXVlcnksIG1pbiwgbWF4LCBhbHRlcm5hdGl2ZVByZXNldExpc3RdKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zRmlsdGVyZWRPblNlYXJjaCA9IERhdGVSYW5nZUNvbXBvbmVudC5maWx0ZXJQcmVzZXRzKHF1ZXJ5KTtcbiAgICAgIGNvbnN0IG9wdGlvbnNGaWx0ZXJlZE9uTWluTWF4ID0gb3B0aW9uc0ZpbHRlcmVkT25TZWFyY2gubWFwKHByZXNldHMgPT4gKHtcbiAgICAgICAgLi4ucHJlc2V0cyxcbiAgICAgICAgb3B0aW9uczogcHJlc2V0cy5vcHRpb25zLmZpbHRlcihcbiAgICAgICAgICBwID0+XG4gICAgICAgICAgICBwLmRhdGVzWzBdLnZhbHVlT2YoKSA+PSBtaW4udmFsdWVPZigpICYmXG4gICAgICAgICAgICBwLmRhdGVzWzFdLnZhbHVlT2YoKSA8PSBtYXgudmFsdWVPZigpLFxuICAgICAgICApLFxuICAgICAgfSkpO1xuICAgICAgaWYgKGFsdGVybmF0aXZlUHJlc2V0TGlzdC5sZW5ndGggPT0gMCkge1xuICAgICAgICByZXR1cm4gb3B0aW9uc0ZpbHRlcmVkT25NaW5NYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBvcHRpb25zRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdCA9XG4gICAgICAgICAgb3B0aW9uc0ZpbHRlcmVkT25NaW5NYXgubWFwKHByZXNldHMgPT4gKHtcbiAgICAgICAgICAgIC4uLnByZXNldHMsXG4gICAgICAgICAgICBvcHRpb25zOiBwcmVzZXRzLm9wdGlvbnMuZmlsdGVyKHAgPT5cbiAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0LmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIDxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZT5wLmlkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBvcHRpb25zRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdDtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkUHJlc2V0JDogT2JzZXJ2YWJsZTxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0IHwgbnVsbD4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlJCxcbiAgICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JC5waXBlKHN0YXJ0V2l0aChudWxsKSksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3NlbGVjdGVkVmFsdWUsIHVzZXJTZWxlY3RlZFByZXNldF0pID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkVmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0cy5maWx0ZXIoXG4gICAgICAgICAgICBwcmVzZXQgPT5cbiAgICAgICAgICAgICAgcHJlc2V0LmRhdGVzWzBdLnZhbHVlT2YoKSA9PT0gc2VsZWN0ZWRWYWx1ZVswXS52YWx1ZU9mKCkgJiZcbiAgICAgICAgICAgICAgcHJlc2V0LmRhdGVzWzFdLnZhbHVlT2YoKSA9PT0gc2VsZWN0ZWRWYWx1ZVsxXS52YWx1ZU9mKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIFNvbWUgZGF0ZSByYW5nZXMgbWF0Y2ggbXVsdGlwbGUgcHJlc2V0cywgZS5nLiBvbiBKYW4gMTl0aCwgYVxuICAgICAgICAgICAgLy8gc2VsZWN0ZWQgZGF0ZSByYW5nZSBvZiBKYW4gMS0xOSB3b3VsZCBjb3JyZXNwb25kIHRvIFwidGhpcyBtb250aFxuICAgICAgICAgICAgLy8gc28gZmFyLFwiIFwidGhpcyBxdWFydGVyIHNvIGZhcixcIiBhbmQgXCJ0aGlzIHllYXIgc28gZmFyLlwiIFdlJ2xsXG4gICAgICAgICAgICAvLyB1c2UgdGhlIHVzZXIncyBtb3N0IHJlY2VudCBtYW51YWwgc2VsZWN0aW9uIGFzIGEgdGllIGJyZWFrZXJcbiAgICAgICAgICAgIC8vIHdoZXJlIHBvc3NpYmxlLlxuICAgICAgICAgICAgY29uc3QgbW9zdFJlY2VudCA9IG9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgb3B0aW9uID0+IG9wdGlvbi5pZCA9PT0gdXNlclNlbGVjdGVkUHJlc2V0Py5pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobW9zdFJlY2VudCkgcmV0dXJuIG1vc3RSZWNlbnQ7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uc1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IGZhdm9yaXRlUHJlc2V0SWRzJCA9IG5ldyBMb2NhbFN0b3JhZ2U8c3RyaW5nW10+KFxuICAgIHRoaXMuU1RPUkFHRV9LRVksXG4gICAgW10sXG4gICk7XG5cbiAgc2V0RmF2b3JpdGUocHJlc2V0OiBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0LCBmYXZvcml0ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGlkcyA9IG5ldyBTZXQodGhpcy5mYXZvcml0ZVByZXNldElkcyQuZ2V0VmFsdWUoKSk7XG4gICAgaWYgKGZhdm9yaXRlKSB7XG4gICAgICBpZHMuYWRkKHByZXNldC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkcy5kZWxldGUocHJlc2V0LmlkKTtcbiAgICB9XG4gICAgdGhpcy5mYXZvcml0ZVByZXNldElkcyQubmV4dChbLi4uaWRzXSk7XG4gIH1cblxuICByZWFkb25seSBmYXZvcml0ZVByZXNldHMkOiBPYnNlcnZhYmxlPERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRbXT4gPVxuICAgIHRoaXMuZmF2b3JpdGVQcmVzZXRJZHMkLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmFsdGVybmF0aXZlUHJlc2V0TGlzdCQpLFxuICAgICAgbWFwKChbaWRzLCBhbHRlcm5hdGl2ZVByZXNldExpc3RdKSA9PiB7XG4gICAgICAgIGNvbnN0IGZhdm9yaXRlUHJlc2V0cyA9IGlkc1xuICAgICAgICAgIC5tYXAoaWQgPT5cbiAgICAgICAgICAgIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRzLmZpbmQocHJlc2V0ID0+IHByZXNldC5pZCA9PT0gaWQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuZmlsdGVyKChwKTogcCBpcyBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0ID0+IHAgIT09IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKGFsdGVybmF0aXZlUHJlc2V0TGlzdC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIHJldHVybiBmYXZvcml0ZVByZXNldHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZmF2b3JpdGVzRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdCA9XG4gICAgICAgICAgICBmYXZvcml0ZVByZXNldHMuZmlsdGVyKHAgPT5cbiAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0LmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIDxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZT5wLmlkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gZmF2b3JpdGVzRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdDtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICAgICk7XG5cbiAgcmVhZG9ubHkgdXNlckxlZnRBY3RpdmVZZWFyTW9udGgkID0gbmV3IFN1YmplY3Q8RGF0ZT4oKTtcbiAgcmVhZG9ubHkgdXNlclJpZ2h0QWN0aXZlWWVhck1vbnRoJCA9IG5ldyBTdWJqZWN0PERhdGU+KCk7XG5cbiAgcmVhZG9ubHkgbGVmdE1pbiQgPSB0aGlzLm1pbiQucGlwZShcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuICByZWFkb25seSBsZWZ0TWF4JCA9IHRoaXMubWF4JC5waXBlKFxuICAgIG1hcChtYXggPT4gdGltZURheS5vZmZzZXQodGltZU1vbnRoLmZsb29yKG1heCksIC0xKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcbiAgcmVhZG9ubHkgcmlnaHRNYXgkID0gdGhpcy5tYXgkLnBpcGUoXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBsZWZ0QWN0aXZlWWVhck1vbnRoJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubGVmdE1heCQsXG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLnVzZXJMZWZ0QWN0aXZlWWVhck1vbnRoJC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGltZU1vbnRoLmZsb29yKHRoaXMuVE9EQVkpKSxcbiAgICAgICksXG4gICAgICB0aGlzLnVzZXJTZWxlY3RlZFByZXNldCQucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChwcmVzZXQpOiBwcmVzZXQgaXMgRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCA9PiBwcmVzZXQgIT09IG51bGwsXG4gICAgICAgICksXG4gICAgICAgIG1hcChwcmVzZXQgPT4gdGltZU1vbnRoLmZsb29yKHByZXNldC5kYXRlc1swXSkpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodik6IHYgaXMgW0RhdGUsIERhdGVdID0+IHYgIT09IHVuZGVmaW5lZCksXG4gICAgICAgIG1hcCh2ID0+IHRpbWVNb250aC5mbG9vcih2WzBdKSksXG4gICAgICApLFxuICAgICksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbGVmdE1heCwgbGVmdF0pID0+IHtcbiAgICAgIGlmIChsZWZ0LnZhbHVlT2YoKSA+PSBsZWZ0TWF4LnZhbHVlT2YoKSkgcmV0dXJuIHRpbWVNb250aC5mbG9vcihsZWZ0TWF4KTtcbiAgICAgIGVsc2UgcmV0dXJuIGxlZnQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSByaWdodEFjdGl2ZVllYXJNb250aCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmxlZnRBY3RpdmVZZWFyTW9udGgkLFxuICAgIG1lcmdlKFxuICAgICAgdGhpcy51c2VyUmlnaHRBY3RpdmVZZWFyTW9udGgkLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aW1lTW9udGguY2VpbCh0aGlzLlRPREFZKSksXG4gICAgICApLFxuICAgICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAocHJlc2V0KTogcHJlc2V0IGlzIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgPT4gcHJlc2V0ICE9PSBudWxsLFxuICAgICAgICApLFxuICAgICAgICBtYXAocHJlc2V0ID0+IHRpbWVNb250aC5mbG9vcihwcmVzZXQuZGF0ZXNbMV0pKSxcbiAgICAgICksXG4gICAgICB0aGlzLnZhbHVlJC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHYpOiB2IGlzIFtEYXRlLCBEYXRlXSA9PiB2ICE9PSB1bmRlZmluZWQpLFxuICAgICAgICBtYXAodiA9PiB0aW1lTW9udGguZmxvb3IodlsxXSkpLFxuICAgICAgKSxcbiAgICApLFxuICAgIHRoaXMucmlnaHRNYXgkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2xlZnQsIHVzZXJSaWdodCwgcmlnaHRNYXgkXSkgPT4ge1xuICAgICAgaWYgKGxlZnQudmFsdWVPZigpID49IHVzZXJSaWdodC52YWx1ZU9mKCkpXG4gICAgICAgIHJldHVybiB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChsZWZ0LCAxKSk7XG4gICAgICBlbHNlIGlmICh1c2VyUmlnaHQudmFsdWVPZigpID49IHJpZ2h0TWF4JC52YWx1ZU9mKCkpXG4gICAgICAgIHJldHVybiB0aW1lTW9udGguZmxvb3IocmlnaHRNYXgkKTtcbiAgICAgIGVsc2UgcmV0dXJuIHVzZXJSaWdodDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHJpZ2h0TWluJCA9IHRoaXMubGVmdEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICBtYXAobGVmdCA9PiB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChsZWZ0LCAxKSkpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbGVmdE9taXRSYW5nZSQ6IE9ic2VydmFibGU8W0RhdGUsIERhdGVdPiA9XG4gICAgdGhpcy5yaWdodEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICAgIG1hcDxEYXRlLCBbRGF0ZSwgRGF0ZV0+KHJpZ2h0QWN0aXZlWWVhck1vbnRoID0+IHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0aW1lTW9udGguZmxvb3IocmlnaHRBY3RpdmVZZWFyTW9udGgpO1xuICAgICAgICBjb25zdCBsYXN0ID0gdGltZURheS5vZmZzZXQoXG4gICAgICAgICAgdGltZU1vbnRoLmZsb29yKHRpbWVNb250aC5vZmZzZXQocmlnaHRBY3RpdmVZZWFyTW9udGgsIDEpKSxcbiAgICAgICAgICAtMSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFtmaXJzdCwgbGFzdF07XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSB1c2VySW50ZXJhY3RlZCQgPSBtZXJnZShcbiAgICB0aGlzLnVzZXJTZWxlY3RlZERhdGUkLFxuICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JCxcbiAgKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IE9ic2VydmFibGU8W0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPiA9XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlJC5waXBlKFxuICAgICAgc2tpcFVudGlsKFxuICAgICAgICBtZXJnZShcbiAgICAgICAgICB0aGlzLnVzZXJJbnRlcmFjdGVkJCxcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLnBpcGUoZmlsdGVyKHYgPT4gdiAhPT0gdW5kZWZpbmVkKSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgZmlsdGVyKCh2KTogdiBpcyBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQgPT4gISh2IGluc3RhbmNlb2YgRGF0ZSkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgIChwcmV2aW91cywgY3VycmVudCkgPT5cbiAgICAgICAgICBwcmV2aW91cz8uWzBdLnZhbHVlT2YoKSA9PT0gY3VycmVudD8uWzBdLnZhbHVlT2YoKSAmJlxuICAgICAgICAgIHByZXZpb3VzPy5bMV0udmFsdWVPZigpID09PSBjdXJyZW50Py5bMV0udmFsdWVPZigpLFxuICAgICAgKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSBkaXNwbGF5VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gPVxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICByZXR1cm4gdi5tYXAoZGF0ZSA9PiBuZXcgRGF0ZVBpcGUoKS50cmFuc2Zvcm0oZGF0ZSkpLmpvaW4oJyDigJQgJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIERhdGVSYW5nZUNvbXBvbmVudCB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICBleHBvcnQgZW51bSBQcmVzZXRUeXBlIHtcbiAgICBUT0RBWSA9ICd0b2RheScsXG4gICAgWUVTVEVSREFZID0gJ3llc3RlcmRheScsXG4gICAgVE9NT1JST1cgPSAndG9tb3Jyb3cnLFxuICAgIFRISVNfV0VFSyA9ICd0aGlzX3dlZWsnLFxuICAgIFRISVNfV0VFS19TT19GQVIgPSAndGhpc193ZWVrX3NvX2ZhcicsXG4gICAgTEFTVF9XRUVLID0gJ2xhc3Rfd2VlaycsXG4gICAgTkVYVF9XRUVLID0gJ25leHRfd2VlaycsXG4gICAgVEhJU19NT05USCA9ICd0aGlzX21vbnRoJyxcbiAgICBUSElTX01PTlRIX1NPX0ZBUiA9ICd0aGlzX21vbnRoX3NvX2ZhcicsXG4gICAgTEFTVF9NT05USCA9ICdsYXN0X21vbnRoJyxcbiAgICBORVhUX01PTlRIID0gJ25leHRfbW9udGgnLFxuICAgIFRISVNfUVVBUlRFUiA9ICd0aGlzX3F1YXJ0ZXInLFxuICAgIFRISVNfUVVBUlRFUl9TT19GQVIgPSAndGhpc19xdWFydGVyX3NvX2ZhcicsXG4gICAgTEFTVF9RVUFSVEVSID0gJ2xhc3RfcXVhcnRlcicsXG4gICAgTkVYVF9RVUFSVEVSID0gJ25leHRfcXVhcnRlcicsXG4gICAgVEhJU19ZRUFSID0gJ3RoaXNfeWVhcicsXG4gICAgVEhJU19ZRUFSX1NPX0ZBUiA9ICd0aGlzX3llYXJfc29fZmFyJyxcbiAgICBMQVNUX1lFQVIgPSAnbGFzdF95ZWFyJyxcbiAgICBORVhUX1lFQVIgPSAnbmV4dF95ZWFyJyxcbiAgICBMQVNUXzdfREFZUyA9ICdsYXN0XzdfZGF5cycsXG4gICAgTEFTVF8xNF9EQVlTID0gJ2xhc3RfMTRfZGF5cycsXG4gICAgTEFTVF8zMF9EQVlTID0gJ2xhc3RfMzBfZGF5cycsXG4gICAgTEFTVF82MF9EQVlTID0gJ2xhc3RfNjBfZGF5cycsXG4gICAgTEFTVF85MF9EQVlTID0gJ2xhc3RfOTBfZGF5cycsXG4gICAgTEFTVF8xODBfREFZUyA9ICdsYXN0XzE4MF9kYXlzJyxcbiAgICBMQVNUXzM2NV9EQVlTID0gJ2xhc3RfMzY1X2RheXMnLFxuICB9XG5cbiAgZXhwb3J0IGNvbnN0IFByZXNldHM6IChTaW5nbGVTZWxlY3RDb21wb25lbnQuT3B0aW9uICYge1xuICAgIGRhdGVzOiBbRGF0ZSwgRGF0ZV07XG4gIH0pW10gPSBbXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVE9EQVksXG4gICAgICB0aXRsZTogJ1RvZGF5JyxcbiAgICAgIHN1YnRpdGxlOiAnVG9kYXkgZnJvbSBtaWRuaWdodCB1bnRpbCB0aGUgY3VycmVudCB0aW1lJyxcbiAgICAgIGRhdGVzOiBbdGltZURheSgpLCB0aW1lRGF5KCldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuWUVTVEVSREFZLFxuICAgICAgdGl0bGU6ICdZZXN0ZXJkYXknLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgMjQgaG91ciBkYXknLFxuICAgICAgZGF0ZXM6IFt0aW1lRGF5Lm9mZnNldCh0aW1lRGF5KCksIC0xKSwgdGltZURheS5vZmZzZXQodGltZURheSgpLCAtMSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVE9NT1JST1csXG4gICAgICB0aXRsZTogJ1RvbW9ycm93JyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIG5leHQgMjQgaG91ciBkYXknLFxuICAgICAgZGF0ZXM6IFt0aW1lRGF5Lm9mZnNldCh0aW1lRGF5KCksIDEpLCB0aW1lRGF5Lm9mZnNldCh0aW1lRGF5KCksIDEpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfV0VFSyxcbiAgICAgIHRpdGxlOiAnVGhpcyB3ZWVrJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgY2FsZW5kYXIgd2VlaycsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lU3VuZGF5LmZsb29yKHRvZGF5KSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVN1bmRheS5jZWlsKHRvZGF5KSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfV0VFS19TT19GQVIsXG4gICAgICB0aXRsZTogJ1RoaXMgd2VlayBzbyBmYXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBjYWxlbmRhciB3ZWVrIHVwIHRvIG5vdycsXG4gICAgICBkYXRlczogW3RpbWVTdW5kYXkuZmxvb3IodG9kYXkpLCB0aW1lRGF5LmZsb29yKHRvZGF5KV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUX1dFRUssXG4gICAgICB0aXRsZTogJ0xhc3Qgd2VlaycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyBjYWxlbmRhciB3ZWVrJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVTdW5kYXkub2Zmc2V0KHRpbWVXZWVrLmZsb29yKHRvZGF5KSwgLTEpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lU3VuZGF5Lm9mZnNldCh0aW1lV2Vlay5jZWlsKHRvZGF5KSwgLTEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTkVYVF9XRUVLLFxuICAgICAgdGl0bGU6ICdOZXh0IHdlZWsnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCBjYWxlbmRhciB3ZWVrJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVTdW5kYXkub2Zmc2V0KHRpbWVXZWVrLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVTdW5kYXkub2Zmc2V0KHRpbWVXZWVrLmNlaWwodG9kYXkpLCAxKSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfTU9OVEgsXG4gICAgICB0aXRsZTogJ1RoaXMgbW9udGgnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBjYWxlbmRhciBtb250aCcsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lTW9udGguZmxvb3IodG9kYXkpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lTW9udGguY2VpbCh0b2RheSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX01PTlRIX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyBtb250aCBzbyBmYXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBjYWxlbmRhciBtb250aCB1cCB0byBub3cnLFxuICAgICAgZGF0ZXM6IFt0aW1lTW9udGguZmxvb3IodG9kYXkpLCB0aW1lRGF5LmZsb29yKHRvZGF5KV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUX01PTlRILFxuICAgICAgdGl0bGU6ICdMYXN0IG1vbnRoJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGNhbGVuZGFyIG1vbnRoJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVNb250aC5vZmZzZXQodGltZU1vbnRoLmZsb29yKHRvZGF5KSwgLTEpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lTW9udGgub2Zmc2V0KHRpbWVNb250aC5jZWlsKHRvZGF5KSwgLTEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTkVYVF9NT05USCxcbiAgICAgIHRpdGxlOiAnTmV4dCBtb250aCcsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGNhbGVuZGFyIG1vbnRoJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVNb250aC5vZmZzZXQodGltZU1vbnRoLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5vZmZzZXQodGltZU1vbnRoLmNlaWwodG9kYXkpLCAxKSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfUVVBUlRFUixcbiAgICAgIHRpdGxlOiAnVGhpcyBxdWFydGVyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgcXVhcnRlcicsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lUXVhcnRlci5mbG9vcih0b2RheSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVRdWFydGVyLmNlaWwodG9kYXkpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19RVUFSVEVSX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyBxdWFydGVyIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IHF1YXJ0ZXIgdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZVF1YXJ0ZXIuZmxvb3IodG9kYXkpLCB0aW1lRGF5LmZsb29yKHRvZGF5KV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUX1FVQVJURVIsXG4gICAgICB0aXRsZTogJ0xhc3QgcXVhcnRlcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyBmdWxsIHF1YXJ0ZXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVF1YXJ0ZXIub2Zmc2V0KHRpbWVRdWFydGVyLmZsb29yKHRvZGF5KSwgLTEpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lUXVhcnRlci5vZmZzZXQodGltZVF1YXJ0ZXIuY2VpbCh0b2RheSksIC0xKSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLk5FWFRfUVVBUlRFUixcbiAgICAgIHRpdGxlOiAnTmV4dCBxdWFydGVyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIG5leHQgZnVsbCBxdWFydGVyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5mbG9vcih0b2RheSksIDEpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lUXVhcnRlci5vZmZzZXQodGltZVF1YXJ0ZXIuY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19ZRUFSLFxuICAgICAgdGl0bGU6ICdUaGlzIHllYXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBjYWxlbmRhciB5ZWFyJyxcbiAgICAgIGRhdGVzOiBbdGltZVllYXIuZmxvb3IodG9kYXkpLCB0aW1lRGF5Lm9mZnNldCh0aW1lWWVhci5jZWlsKHRvZGF5KSwgLTEpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfWUVBUl9TT19GQVIsXG4gICAgICB0aXRsZTogJ1RoaXMgeWVhciBzbyBmYXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBjYWxlbmRhciB5ZWFyIHVwIHRvIG5vdycsXG4gICAgICBkYXRlczogW3RpbWVZZWFyLmZsb29yKHRvZGF5KSwgdGltZURheS5mbG9vcih0b2RheSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF9ZRUFSLFxuICAgICAgdGl0bGU6ICdMYXN0IHllYXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgY2FsZW5kYXIgeWVhcicsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lWWVhci5vZmZzZXQodGltZVllYXIuZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5jZWlsKHRvZGF5KSwgLTEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTkVYVF9ZRUFSLFxuICAgICAgdGl0bGU6ICdOZXh0IHllYXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCBjYWxlbmRhciB5ZWFyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5mbG9vcih0b2RheSksIDEpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lWWVhci5vZmZzZXQodGltZVllYXIuY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF83X0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgNyBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDcgZGF5cyBiZWZvcmUgdG9kYXknLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTgpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzE0X0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgMTQgZGF5cycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyAxNCBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMTUpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzMwX0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgMzAgZGF5cycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyAzMCBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMzEpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzYwX0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgNjAgZGF5cycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyA2MCBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtNjEpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzkwX0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgOTAgZGF5cycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyA5MCBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtOTEpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzE4MF9EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDE4MCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDE4MCBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMTgxKSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF8zNjVfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAzNjUgZGF5cycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyAzNjUgZGF5cyBiZWZvcmUgdG9kYXknLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTM2NikpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuXG4gIGV4cG9ydCB0eXBlIFByZXNldCA9ICh0eXBlb2YgUHJlc2V0cylbbnVtYmVyXTtcblxuICBleHBvcnQgY29uc3QgZmlsdGVyUHJlc2V0cyA9IFNpbmdsZVNlbGVjdENvbXBvbmVudC5nZXRGaWx0ZXJTeW5jKFtcbiAgICB7XG4gICAgICBvcHRpb25zOiBQcmVzZXRzLFxuICAgIH0sXG4gIF0pO1xufVxuIiwiPHJpdi1pbnB1dC1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW2xhYmVsQWN0aW9uVGV4dF09XCJsYWJlbEFjdGlvblRleHRcIlxuICAobGFiZWxBY3Rpb24pPVwibGFiZWxBY3Rpb24uZW1pdCgkZXZlbnQpXCJcbj5cbiAgPGJ1dHRvblxuICAgICN0cmlnZ2VyXG4gICAgY2xhc3M9XCJ0cmlnZ2VyXCJcbiAgICAoY2xpY2spPVwib3BlbiQubmV4dCh0cnVlKVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiZGlzcGxheVZhbHVlJCB8IGFzeW5jOyBlbHNlIHBsYWNlaG9sZGVyVmFsdWU7IGxldCBkaXNwbGF5XCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgZGlzcGxheSB9fTwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyVmFsdWU+XG4gICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIHBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIkIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8c3BhbiBjbGFzcz1cImNoZXZyb25cIj5cbiAgICAgIDxyaXYtaWNvbiBbbmFtZV09XCInQ2FsZW5kYXInXCIgW3NpemVdPVwiMTZcIj48L3Jpdi1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L3Jpdi1pbnB1dC1sYWJlbD5cblxuPG5nLXRlbXBsYXRlXG4gICNzZWxmXG4gIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGZcIlxuICBsZXQtaW5wdXRWYWx1ZVxuICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6ICh2YWx1ZSQgfCBhc3luYykgfVwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcGVuJCB8IGFzeW5jXCI+XG4gICAgPHJpdi1jYWxsb3V0XG4gICAgICAqcml2LW92ZXJsYXlcbiAgICAgIFthbmNob3JdPVwidHJpZ2dlclwiXG4gICAgICBbc2hvd0NhcmV0XT1cImZhbHNlXCJcbiAgICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICAgIFthbGxvd2VkUG9zaXRpb25zXT1cIltcbiAgICAgICAgJ3RvcC1sZWZ0JyxcbiAgICAgICAgJ3RvcC1jZW50ZXInLFxuICAgICAgICAndG9wLXJpZ2h0JyxcbiAgICAgICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgICAgICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgJ2JvdHRvbS1sZWZ0J1xuICAgICAgXVwiXG4gICAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2JvdHRvbS1yaWdodCdcIlxuICAgICAgKGNsb3NlKT1cIm9wZW4kLm5leHQoZmFsc2UpOyB1c2VyU2VsZWN0ZWREYXRlJC5uZXh0KGlucHV0VmFsdWUpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1ByZXNldHNcIiBjbGFzcz1cInByZXNldHNcIj5cbiAgICAgICAgICA8cml2LXNpbXBsZS1zZWxlY3RcbiAgICAgICAgICAgIFtsYWJlbF09XCInRGF0ZSBwcmVzZXRzJ1wiXG4gICAgICAgICAgICBbZmlsdGVyYWJpbGl0eU9wdGlvbnNdPVwieyBlbmFibGVkOiB0cnVlLCBwbGFjZWhvbGRlcjogJ1NlYXJjaC4uLicgfVwiXG4gICAgICAgICAgICBbb3B0aW9uR3JvdXBzXT1cIihmaWx0ZXJlZFByZXNldE9wdGlvbnMkIHwgYXN5bmMpID8/IFtdXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZE9wdGlvbl09XCJzZWxlY3RlZFByZXNldCQgfCBhc3luY1wiXG4gICAgICAgICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwidXNlclNlbGVjdGVkUHJlc2V0JC5uZXh0KCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uIGxldC1ub2RlPVwibm9kZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAjc2VsZlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGZcIlxuICAgICAgICAgICAgICAgIGxldC1pc0Zhdm9yaXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogKGZhdm9yaXRlUHJlc2V0SWRzJCB8IGFzeW5jKT8uaW5jbHVkZXMobm9kZS5pZClcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmVzZXRcIiBbY2xhc3MuZmF2b3JpdGVdPVwiaXNGYXZvcml0ZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxyaXYtaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwibm9kZS50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2luZGljZXNdPVwibm9kZS50aXRsZUhpZ2hsaWdodEluZGljZXMgfHwgW11cIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIm5vZGUuc3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cIm5vZGUuc3VidGl0bGVIaWdobGlnaHRJbmRpY2VzIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2V0RmF2b3JpdGUobm9kZSwgIWlzRmF2b3JpdGUpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImlzRmF2b3JpdGUgPyAnSGVhcnRBY3RpdmUnIDogJ0hlYXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyaXZUb29sdGlwXT1cIidNYXJrIGFzIGZhdm9yaXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvcml2LXNpbXBsZS1zZWxlY3Q+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAjc2VsZlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZlwiXG4gICAgICAgICAgICBsZXQtZmF2b3JpdGVzXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGZhdm9yaXRlUHJlc2V0cyQgfCBhc3luYyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cml2LWlucHV0LWxhYmVsICpuZ0lmPVwiZmF2b3JpdGVzLmxlbmd0aFwiIFtsYWJlbF09XCInRmF2b3JpdGVzJ1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hvcnRjdXRzXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZhdm9yaXRlIG9mIGZhdm9yaXRlc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNob3J0Y3V0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiKHNlbGVjdGVkUHJlc2V0JCB8IGFzeW5jKT8uaWQgPT09IGZhdm9yaXRlLmlkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1c2VyU2VsZWN0ZWRQcmVzZXQkLm5leHQoZmF2b3JpdGUpXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyBmYXZvcml0ZS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEZhdm9yaXRlKGZhdm9yaXRlLCBmYWxzZSlcIlxuICAgICAgICAgICAgICAgICAgICBbcml2VG9vbHRpcF09XCInUmVtb3ZlIGZhdm9yaXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cml2LWljb24gW25hbWVdPVwiJ0hlYXJ0QWN0aXZlJ1wiIFtzaXplXT1cIjE2XCI+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvcml2LWlucHV0LWxhYmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhcnNcIj5cbiAgICAgICAgICA8cml2LWNhbGVuZGFyXG4gICAgICAgICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgICAgICAgW2FjdGl2ZVllYXJNb250aF09XCIobGVmdEFjdGl2ZVllYXJNb250aCQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgKGFjdGl2ZVllYXJNb250aENoYW5nZSk9XCJ1c2VyTGVmdEFjdGl2ZVllYXJNb250aCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWluXT1cIihtaW4kIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWF4XT1cIihtYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlTWluXT1cIihsZWZ0TWluJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0YWJsZU1heF09XCIobGVmdE1heCQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW29taXRSYW5nZV09XCIobGVmdE9taXRSYW5nZSQgfCBhc3luYykgfHwgW1RPREFZLCBUT0RBWV1cIlxuICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwiKHNlbGVjdGVkVmFsdWUkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIChkYXRlU2VsZWN0KT1cInVzZXJTZWxlY3RlZERhdGUkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvcml2LWNhbGVuZGFyPlxuICAgICAgICAgIDxyaXYtY2FsZW5kYXJcbiAgICAgICAgICAgIGNsYXNzPVwicmlnaHRcIlxuICAgICAgICAgICAgW2FjdGl2ZVllYXJNb250aF09XCIocmlnaHRBY3RpdmVZZWFyTW9udGgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIChhY3RpdmVZZWFyTW9udGhDaGFuZ2UpPVwidXNlclJpZ2h0QWN0aXZlWWVhck1vbnRoJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgW2Rpc3BsYXlNaW5dPVwiKG1pbiQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlNYXhdPVwiKG1heCQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVNaW5dPVwiKHJpZ2h0TWluJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0YWJsZU1heF09XCIocmlnaHRNYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cIihzZWxlY3RlZFZhbHVlJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICAoZGF0ZVNlbGVjdCk9XCJ1c2VyU2VsZWN0ZWREYXRlJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgID48L3Jpdi1jYWxlbmRhcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZvb3RlciBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICByaXZCdXR0b25cbiAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwidXNlclNlbGVjdGVkRGF0ZSQubmV4dCh1bmRlZmluZWQpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIENsZWFyXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgIFt2YXJpYW50XT1cIidwcmltYXJ5J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbiQubmV4dChmYWxzZSlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgRG9uZVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvcml2LWNhbGxvdXQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|