@elderbyte/ngx-starter 18.11.1 → 18.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +24 -7
- package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +20 -10
- package/esm2022/lib/common/data/datasource/patch/deep-partial-patcher.mjs +58 -0
- package/esm2022/lib/common/time/temporal-util.mjs +7 -1
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +9 -5
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +6 -3
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.service.mjs +13 -3
- package/fesm2022/elderbyte-ngx-starter.mjs +128 -21
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/data/data-context/data-context-source-event-binding.d.ts +2 -5
- package/lib/common/data/datasource/data-source-change-event.d.ts +14 -5
- package/lib/common/data/datasource/patch/deep-partial-patcher.d.ts +28 -0
- package/lib/common/time/temporal-util.d.ts +2 -0
- package/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +2 -2
- package/lib/components/time/elder-interval-picker/elder-interval-picker.component.d.ts +2 -1
- package/lib/components/time/elder-interval-picker/elder-interval-picker.service.d.ts +4 -2
- package/package.json +2 -3
|
@@ -560,11 +560,16 @@ export class ElderIntervalPickerService {
|
|
|
560
560
|
this.calendarMode.set('weeks');
|
|
561
561
|
this.resetTimeRange();
|
|
562
562
|
}
|
|
563
|
-
|
|
563
|
+
selectLastSevenDaysExcludingToday() {
|
|
564
564
|
this.setDatesFromRange(TemporalUtil.getLastSevenDays(this.anchorDate()));
|
|
565
565
|
this.calendarMode.set('days');
|
|
566
566
|
this.resetTimeRange();
|
|
567
567
|
}
|
|
568
|
+
selectLastSevenDaysIncludingToday() {
|
|
569
|
+
this.setDatesFromRange(TemporalUtil.getLastSevenDaysIncludingToday(this.anchorDate()));
|
|
570
|
+
this.calendarMode.set('days');
|
|
571
|
+
this.resetTimeRange();
|
|
572
|
+
}
|
|
568
573
|
selectCurrentMonth() {
|
|
569
574
|
this.setDatesFromRange(TemporalUtil.getCurrentMonth(this.anchorDate()));
|
|
570
575
|
this.calendarMode.set('months');
|
|
@@ -575,11 +580,16 @@ export class ElderIntervalPickerService {
|
|
|
575
580
|
this.calendarMode.set('months');
|
|
576
581
|
this.resetTimeRange();
|
|
577
582
|
}
|
|
578
|
-
|
|
583
|
+
selectLastThirtyDaysExcludingToday() {
|
|
579
584
|
this.setDatesFromRange(TemporalUtil.getLastThirtyDays(this.anchorDate()));
|
|
580
585
|
this.calendarMode.set('days');
|
|
581
586
|
this.resetTimeRange();
|
|
582
587
|
}
|
|
588
|
+
selectLastThirtyDaysIncludingToday() {
|
|
589
|
+
this.setDatesFromRange(TemporalUtil.getLastThirtyDaysIncludingToday(this.anchorDate()));
|
|
590
|
+
this.calendarMode.set('days');
|
|
591
|
+
this.resetTimeRange();
|
|
592
|
+
}
|
|
583
593
|
selectCurrentYear() {
|
|
584
594
|
this.setDatesFromRange(TemporalUtil.getCurrentYear(this.anchorDate()));
|
|
585
595
|
this.calendarMode.set('years');
|
|
@@ -695,4 +705,4 @@ export class ElderIntervalPickerService {
|
|
|
695
705
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderIntervalPickerService, decorators: [{
|
|
696
706
|
type: Injectable
|
|
697
707
|
}] });
|
|
698
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL2VsZGVyLWludGVydmFsLXBpY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFlBQVksRUFDWixVQUFVLEVBRVYsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUM3RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFBOztBQUd6RCxNQUFNLG1CQUFtQixHQUFpQixNQUFNLENBQUE7QUFHaEQsTUFBTSxPQUFPLDBCQUEwQjtJQUR2QztRQUVFOzs7O29GQUk0RTtRQUUzRCxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTdELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFZLENBQUE7UUFFaEQsaUJBQVksR0FBRyxNQUFNLENBQWUsbUJBQW1CLENBQUMsQ0FBQTtRQUV4RCxjQUFTLEdBQUcsTUFBTSxDQUFxQixJQUFJLENBQUMsQ0FBQTtR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Q0FBQTtRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFDdkQsQ0FBQzs4R0FoekJVLDBCQUEwQjtrSEFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgRWZmZWN0UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdGFibGUsXG4gIFNpZ25hbCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcidcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcidcbmltcG9ydCB7IExvY2FsRGF0ZSB9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnXG5pbXBvcnQgeyBUZW1wb3JhbCB9IGZyb20gJ0Bqcy10ZW1wb3JhbC9wb2x5ZmlsbCdcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3RpbWUvaW50ZXJ2YWwnXG5pbXBvcnQgeyBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3RpbWUvdGVtcG9yYWwtcGxhaW4tZGF0ZS1pbnRlcnZhbCdcbmltcG9ydCB7IFRlbXBvcmFsVXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi90aW1lL3RlbXBvcmFsLXV0aWwnXG5pbXBvcnQgeyBUaW1lVXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi90aW1lL3RpbWUtdXRpbCdcblxudHlwZSBjYWxlbmRhck1vZGUgPSAnZGF5cycgfCAnd2Vla3MnIHwgJ21vbnRocycgfCAncXVhcnRlcnMnIHwgJ3llYXJzJ1xuY29uc3QgZGVmYXVsdENhbGVuZGFyTW9kZTogY2FsZW5kYXJNb2RlID0gJ2RheXMnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbGRlckludGVydmFsUGlja2VyU2VydmljZSB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIHByaXZhdGUgX2RhdGVDaGFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxJbnRlcnZhbD4oKVxuXG4gIHJlYWRvbmx5IGNhbGVuZGFyTW9kZSA9IHNpZ25hbDxjYWxlbmRhck1vZGU+KGRlZmF1bHRDYWxlbmRhck1vZGUpXG5cbiAgcmVhZG9ubHkgc3RhcnREYXRlID0gc2lnbmFsPFRlbXBvcmFsLlBsYWluRGF0ZT4obnVsbClcbiAgcmVhZG9ubHkgZW5kRGF0ZSA9IHNpZ25hbDxUZW1wb3JhbC5QbGFpbkRhdGU+KG51bGwpXG5cbiAgcmVhZG9ubHkgYmFzZVJlZmVyZW5jZURhdGUgPSBzaWduYWwoVGVtcG9yYWwuTm93LnBsYWluRGF0ZUlTTygpKVxuICByZWFkb25seSBiYXNlUmVmZXJlbmNlVGltZSA9IHNpZ25hbChUZW1wb3JhbC5Ob3cucGxhaW5UaW1lSVNPKCkpXG5cbiAgcmVhZG9ubHkgZml4ZWRBbmNob3JEYXRlID0gc2lnbmFsPFRlbXBvcmFsLlBsYWluRGF0ZT4obnVsbClcbiAgcmVhZG9ubHkgZml4ZWRBbmNob3JUaW1lID0gc2lnbmFsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMDowMCcpKVxuXG4gIHJlYWRvbmx5IHN0YXJ0VGltZSA9IHNpZ25hbChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSlcbiAgcmVhZG9ubHkgZW5kVGltZSA9IHNpZ25hbChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSlcblxuICBwcml2YXRlIF9pbnB1dEludGVydmFsOiBTaWduYWw8SW50ZXJ2YWw+ID0gbnVsbFxuICBwcml2YXRlIF9pbnB1dEFuY2hvckRhdGVUaW1lOiBTaWduYWw8RGF0ZT4gPSBudWxsXG5cbiAgcmVhZG9ubHkgaXNFbWl0dGluZ09uQ2hhbmdlID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpXG4gIHJlYWRvbmx5IGlzVXBkYXRpbmdJbnRlcnZhbE9uQW5jaG9yQ2hhbmdlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKVxuXG4gIHJlYWRvbmx5IGlzRml4ZWRBbmNob3JEYXRlU2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiAhIXRoaXMuZml4ZWRBbmNob3JEYXRlKClcbiAgfSlcblxuICByZWFkb25seSBhbmNob3JEYXRlID0gY29tcHV0ZWQ8VGVtcG9yYWwuUGxhaW5EYXRlPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuZml4ZWRBbmNob3JEYXRlKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpeGVkQW5jaG9yRGF0ZSgpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJhc2VSZWZlcmVuY2VEYXRlKClcbiAgfSlcblxuICByZWFkb25seSBhbmNob3JUaW1lID0gY29tcHV0ZWQ8VGVtcG9yYWwuUGxhaW5UaW1lPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuZml4ZWRBbmNob3JEYXRlKCkgJiYgdGhpcy5maXhlZEFuY2hvclRpbWUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZml4ZWRBbmNob3JUaW1lKClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYmFzZVJlZmVyZW5jZVRpbWUoKVxuICB9KVxuXG4gIHJlYWRvbmx5IGFuY2hvckRhdGVUaW1lID0gY29tcHV0ZWQ8VGVtcG9yYWwuUGxhaW5EYXRlVGltZT4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmFuY2hvckRhdGUoKS50b1BsYWluRGF0ZVRpbWUodGhpcy5hbmNob3JUaW1lKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlID0gY29tcHV0ZWQ8VGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuaXNTdGFydEFuZEVuZERhdGVzU2V0KCkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBuZXcgVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCh0aGlzLnN0YXJ0RGF0ZSgpLCB0aGlzLmVuZERhdGUoKSlcbiAgfSlcblxuICByZWFkb25seSBkYXRlUmFuZ2VGb3JDYWxlbmRhciA9IGNvbXB1dGVkPERhdGVSYW5nZTxEYXRlPiB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuaXNTdGFydEFuZEVuZERhdGVzU2V0KCkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZSh0aGlzLnN0YXJ0RGF0ZSgpKVxuICAgIGNvbnN0IGVuZERhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUodGhpcy5lbmREYXRlKCkpXG4gICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2Uoc3RhcnREYXRlLCBlbmREYXRlKVxuICB9KVxuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZUluRGF5cyA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5kYXRlUmFuZ2UoKSkge1xuICAgICAgcmV0dXJuIDBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVJhbmdlKCkuZ2V0RHVyYXRpb25JbkRheXMoKVxuICB9KVxuXG4gIHJlYWRvbmx5IGlzU3RhcnRBbmRFbmREYXRlc0VtcHR5ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiAhdGhpcy5zdGFydERhdGUoKSAmJiAhdGhpcy5lbmREYXRlKClcbiAgfSlcblxuICByZWFkb25seSBpc1N0YXJ0QW5kRW5kRGF0ZXNTZXQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgcmV0dXJuICEhKHRoaXMuc3RhcnREYXRlKCkgJiYgdGhpcy5lbmREYXRlKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgaXNSYW5nZU5vdFNldCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICByZXR1cm4gIXRoaXMuaXNTdGFydEFuZEVuZERhdGVzU2V0KClcbiAgfSlcblxuICByZWFkb25seSBzdGFydERhdGVUaW1lID0gY29tcHV0ZWQ8VGVtcG9yYWwuUGxhaW5EYXRlIHwgVGVtcG9yYWwuUGxhaW5EYXRlVGltZT4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5zdGFydERhdGUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RhcnRUaW1lKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0RGF0ZSgpLnRvUGxhaW5EYXRlVGltZSh0aGlzLnN0YXJ0VGltZSgpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGFydERhdGUoKVxuICB9KVxuXG4gIHJlYWRvbmx5IGVuZERhdGVUaW1lID0gY29tcHV0ZWQ8VGVtcG9yYWwuUGxhaW5EYXRlIHwgVGVtcG9yYWwuUGxhaW5EYXRlVGltZT4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5lbmREYXRlKCkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGlmICh0aGlzLmVuZFRpbWUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZW5kRGF0ZSgpLnRvUGxhaW5EYXRlVGltZSh0aGlzLmVuZFRpbWUoKSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZW5kRGF0ZSgpXG4gIH0pXG5cbiAgcmVhZG9ubHkgc3RhcnREYXRlQXNKU0RhdGUgPSBjb21wdXRlZDxEYXRlIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5zdGFydERhdGUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZSh0aGlzLnN0YXJ0RGF0ZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IGVuZERhdGVBc0pTRGF0ZSA9IGNvbXB1dGVkPERhdGUgfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmVuZERhdGUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZSh0aGlzLmVuZERhdGUoKSlcbiAgfSlcblxuICByZWFkb25seSBzdGFydERhdGVUaW1lQXNKU0RhdGUgPSBjb21wdXRlZDxEYXRlIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5zdGFydERhdGVUaW1lKCkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUodGhpcy5zdGFydERhdGVUaW1lKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZW5kRGF0ZVRpbWVBc0pTRGF0ZSA9IGNvbXB1dGVkPERhdGUgfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmVuZERhdGVUaW1lKCkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUodGhpcy5lbmREYXRlVGltZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IGdldENhbGVuZGFyV2VlayA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5zdGFydERhdGUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RhcnREYXRlKCkud2Vla09mWWVhclxuICB9KVxuXG4gIHJlYWRvbmx5IGlzRnVsbENhbGVuZGVyV2Vla1NlbGVjdGVkID0gY29tcHV0ZWQ8Ym9vbGVhbiB8IG51bWJlcj4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCFUZW1wb3JhbFV0aWwuaXNGaXJzdERheU9mV2Vlayh0aGlzLnN0YXJ0RGF0ZSgpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnN0YXJ0RGF0ZSgpLnVudGlsKHRoaXMuZW5kRGF0ZSgpKVxuXG4gICAgaWYgKGR1cmF0aW9uLmRheXMgIT09IDcpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0RGF0ZSgpLndlZWtPZlllYXJcbiAgfSlcblxuICByZWFkb25seSB2aWV3SW50ZXJ2YWxNZXNzYWdlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNSYW5nZU5vdFNldCgpKSB7XG4gICAgICByZXR1cm4gJy0nXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICdxdWFydGVycycpIHtcbiAgICAgIGNvbnN0IHF1YXJ0ZXIgPSBUZW1wb3JhbFV0aWwuZ2V0UXVhcnRlckZvckRhdGUodGhpcy5zdGFydERhdGUoKSlcbiAgICAgIHJldHVybiBgUSR7cXVhcnRlcn0sICR7dGhpcy5zdGFydERhdGUoKS55ZWFyfWBcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ21vbnRocycpIHtcbiAgICAgIGNvbnN0IG1vbnRoTmFtZSA9IHRoaXMuc3RhcnREYXRlKCkubW9udGhcbiAgICAgIHJldHVybiBgMW0gKCR7bW9udGhOYW1lfSwgJHt0aGlzLnN0YXJ0RGF0ZSgpLnllYXJ9KWBcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ3llYXJzJykge1xuICAgICAgY29uc3QgeWVhciA9IHRoaXMuc3RhcnREYXRlKCkueWVhclxuICAgICAgcmV0dXJuIGAxeSAoJHt5ZWFyfSlgXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICd3ZWVrcycpIHtcbiAgICAgIHJldHVybiBgMXcgKENXICR7dGhpcy5nZXRDYWxlbmRhcldlZWsoKX0sICR7dGhpcy5lbmREYXRlKCkueWVhcn0pYFxuICAgIH1cblxuICAgIGlmICh0aGlzLmNhbGVuZGFyTW9kZSgpID09PSAnZGF5cycpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmRhdGVSYW5nZUluRGF5cygpfWRgXG4gICAgfVxuXG4gICAgcmV0dXJuICcnXG4gIH0pXG5cbiAgcmVhZG9ubHkgZGVsdGFBc1RlbXBvcmFsRHVyYXRpb24gPSBjb21wdXRlZDxUZW1wb3JhbC5EdXJhdGlvbj4oKCkgPT4ge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZVRpbWUgPSB0aGlzLnN0YXJ0RGF0ZVRpbWUoKVxuICAgIGNvbnN0IGVuZERhdGVUaW1lID0gdGhpcy5lbmREYXRlVGltZSgpXG5cbiAgICBpZiAoIXN0YXJ0RGF0ZVRpbWUgfHwgIWVuZERhdGVUaW1lKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IGR1cmF0aW9uID0gc3RhcnREYXRlVGltZS51bnRpbChlbmREYXRlVGltZSlcbiAgICByZXR1cm4gZHVyYXRpb25cbiAgfSlcblxuICByZWFkb25seSBkZWx0YUh1bWFuUmVhZGFibGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICBpZiAodGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmRlbHRhQXNUZW1wb3JhbER1cmF0aW9uKClcbiAgICBpZiAoIWR1cmF0aW9uKSB7XG4gICAgICByZXR1cm4gJ+KInidcbiAgICB9XG4gICAgY29uc3QgdG1wID0gW11cbiAgICBpZiAoZHVyYXRpb24uZGF5cykge1xuICAgICAgdG1wLnB1c2goYCR7ZHVyYXRpb24uZGF5c31kYClcbiAgICB9XG4gICAgaWYgKGR1cmF0aW9uLmhvdXJzKSB7XG4gICAgICB0bXAucHVzaChgJHtkdXJhdGlvbi5ob3Vyc31oYClcbiAgICB9XG4gICAgaWYgKGR1cmF0aW9uLm1pbnV0ZXMpIHtcbiAgICAgIHRtcC5wdXNoKGAke2R1cmF0aW9uLm1pbnV0ZXN9bWluYClcbiAgICB9XG4gICAgaWYgKGR1cmF0aW9uLnNlY29uZHMpIHtcbiAgICAgIHRtcC5wdXNoKGAke2R1cmF0aW9uLnNlY29uZHN9c2ApXG4gICAgfVxuXG4gICAgaWYgKCF0bXAubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJzBzJ1xuICAgIH1cblxuICAgIHJldHVybiB0bXAuam9pbignLCAnKVxuICB9KVxuXG4gIHJlYWRvbmx5IGdldFN0YXJ0VGltZVN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SHRtbFRpbWVTdHJpbmdGcm9tUGxhaW5UaW1lKHRoaXMuc3RhcnRUaW1lKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZ2V0RW5kVGltZVN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SHRtbFRpbWVTdHJpbmdGcm9tUGxhaW5UaW1lKHRoaXMuZW5kVGltZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IGdldEFuY2hvclRpbWVTdHJpbmcgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEh0bWxUaW1lU3RyaW5nRnJvbVBsYWluVGltZSh0aGlzLmZpeGVkQW5jaG9yVGltZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IGdldEFuY2hvclBvaW50QXNMb2NhbGVEYXRlID0gY29tcHV0ZWQ8TG9jYWxEYXRlPigoKSA9PiB7XG4gICAgY29uc3QgYW5jaG9yUG9pbnQgPSB0aGlzLmZpeGVkQW5jaG9yRGF0ZSgpXG4gICAgaWYgKCFhbmNob3JQb2ludCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3QganNEYXRlID0gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKGFuY2hvclBvaW50KVxuICAgIGNvbnN0IGxvY2FsZURhdGUgPSBUaW1lVXRpbC5kYXRlVG9Mb2NhbERhdGUoanNEYXRlKVxuICAgIHJldHVybiBsb2NhbGVEYXRlXG4gIH0pXG5cbiAgcmVhZG9ubHkgc3RhcnREYXRlSHRtbFN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SHRtbERhdGVTdHJpbmcodGhpcy5zdGFydERhdGVUaW1lKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZW5kRGF0ZUh0bWxTdHJpbmcgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEh0bWxEYXRlU3RyaW5nKHRoaXMuZW5kRGF0ZVRpbWUoKSlcbiAgfSlcblxuICByZWFkb25seSBpc1N0YXJ0VGltZVNldEFuZE5vdE1pZG5pZ2h0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5zdGFydFRpbWUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnN0YXJ0VGltZSgpLmhvdXIgIT09IDAgfHwgdGhpcy5zdGFydFRpbWUoKS5taW51dGUgIT09IDAgfHwgdGhpcy5zdGFydFRpbWUoKS5zZWNvbmQgIT09IDBcbiAgICApXG4gIH0pXG5cbiAgcmVhZG9ubHkgaXNFbmRUaW1lU2V0QW5kTm90TWlkbmlnaHQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmVuZFRpbWUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmVuZFRpbWUoKS5ob3VyICE9PSAwIHx8IHRoaXMuZW5kVGltZSgpLm1pbnV0ZSAhPT0gMCB8fCB0aGlzLmVuZFRpbWUoKS5zZWNvbmQgIT09IDBcbiAgfSlcblxuICByZWFkb25seSBpc0ZpeGVkQW5jaG9yVGltZVNldEFuZE5vdE1pZG5pZ2h0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5maXhlZEFuY2hvclRpbWUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZpeGVkQW5jaG9yVGltZSgpLmhvdXIgIT09IDAgfHxcbiAgICAgIHRoaXMuZml4ZWRBbmNob3JUaW1lKCkubWludXRlICE9PSAwIHx8XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yVGltZSgpLnNlY29uZCAhPT0gMFxuICAgIClcbiAgfSlcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBzZXRTdGFydERhdGVGcm9tSHRtbFN0cmluZyhodG1sU3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZUZyb21IdG1sRGF0ZVN0cmluZyhodG1sU3RyaW5nKVxuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgdGhpcy5zdGFydERhdGUuc2V0KGRhdGUpXG4gIH1cblxuICBzZXRFbmREYXRlRnJvbUh0bWxTdHJpbmcoaHRtbFN0cmluZzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpbkRhdGVGcm9tSHRtbERhdGVTdHJpbmcoaHRtbFN0cmluZylcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICAgIHRoaXMuZW5kRGF0ZS5zZXQoZGF0ZSlcbiAgfVxuXG4gIHNldHVwSW5wdXRJbnRlcnZhbChzOiBTaWduYWw8SW50ZXJ2YWw+KTogdm9pZCB7XG4gICAgdGhpcy5faW5wdXRJbnRlcnZhbCA9IHNcbiAgfVxuXG4gIHNldHVwSW5wdXRBbmNob3JEYXRlVGltZShzOiBTaWduYWw8RGF0ZT4pOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dEFuY2hvckRhdGVUaW1lID0gc1xuICB9XG5cbiAgc2V0dXBFdmVudEVtaXR0ZXIoZTogRXZlbnRFbWl0dGVyPEludGVydmFsPik6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVDaGFuZ2VFbWl0dGVyID0gZVxuICB9XG5cbiAgc2V0U3RhcnRUaW1lRnJvbVN0cmluZyh0aW1lU3RyOiBzdHJpbmcsIGZvcm1Db250cm9sPzogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdGltZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpblRpbWVGcm9tSHRtbFRpbWVTdHJpbmcodGltZVN0cilcblxuICAgIGlmICh0aW1lKSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZS5zZXQodGltZSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc3RhcnREYXRlKCkpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlLnNldChUZW1wb3JhbC5Ob3cucGxhaW5EYXRlSVNPKCkpXG4gICAgfVxuXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdkYXlzJylcbiAgfVxuXG4gIHNldEVuZFRpbWVGcm9tU3RyaW5nKHRpbWVTdHI6IHN0cmluZywgZm9ybUNvbnRyb2w/OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB0aW1lID0gVGVtcG9yYWxVdGlsLmdldFBsYWluVGltZUZyb21IdG1sVGltZVN0cmluZyh0aW1lU3RyKVxuXG4gICAgaWYgKHRpbWUpIHtcbiAgICAgIHRoaXMuZW5kVGltZS5zZXQodGltZSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICB0aGlzLmVuZERhdGUuc2V0KFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVJU08oKSlcbiAgICB9XG5cbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICB9XG5cbiAgcmVzZXRDYWxlbmRhck1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KGRlZmF1bHRDYWxlbmRhck1vZGUpXG4gIH1cblxuICBwdWxsSW5wdXRJbnRlcnZhbCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0SW50ZXJ2YWwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuc2V0RGF0ZVRpbWVzRnJvbUVsZGVySW50ZXJ2YWwodGhpcy5faW5wdXRJbnRlcnZhbCgpKVxuICB9XG5cbiAgcHVsbElucHV0QW5jaG9yRGF0ZVRpbWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbnB1dEFuY2hvckRhdGVUaW1lKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLnNldEFuY2hvckRhdGVUaW1lRnJvbUpzRGF0ZSh0aGlzLl9pbnB1dEFuY2hvckRhdGVUaW1lKCkpXG4gIH1cblxuICBzZXREYXRlVGltZXNGcm9tRWxkZXJJbnRlcnZhbChpbnRlcnZhbDogSW50ZXJ2YWwpOiB2b2lkIHtcbiAgICBpZiAoIWludGVydmFsKSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQobnVsbClcbiAgICAgIHRoaXMuZW5kRGF0ZS5zZXQobnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpbnRlcnZhbC5zdGFydCkge1xuICAgICAgY29uc3Qgc3RhcnREYXRlQXNKU0RhdGUgPSBUaW1lVXRpbC5kYXRlKGludGVydmFsLnN0YXJ0KVxuICAgICAgdGhpcy5zdGFydERhdGUuc2V0KFRlbXBvcmFsVXRpbC5nZXRQbGFpbkRhdGVGcm9tSlNEYXRlKHN0YXJ0RGF0ZUFzSlNEYXRlKSlcbiAgICAgIHRoaXMuc3RhcnRUaW1lLnNldChUZW1wb3JhbFV0aWwuZ2V0UGxhaW5UaW1lRnJvbUpTRGF0ZShzdGFydERhdGVBc0pTRGF0ZSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlLnNldChudWxsKVxuICAgIH1cblxuICAgIGlmIChpbnRlcnZhbC5lbmQpIHtcbiAgICAgIGNvbnN0IGVuZERhdGVBc0pTRGF0ZSA9IFRpbWVVdGlsLmRhdGUoaW50ZXJ2YWwuZW5kKVxuICAgICAgdGhpcy5lbmREYXRlLnNldChUZW1wb3JhbFV0aWwuZ2V0UGxhaW5EYXRlRnJvbUpTRGF0ZShlbmREYXRlQXNKU0RhdGUpKVxuICAgICAgdGhpcy5lbmRUaW1lLnNldChUZW1wb3JhbFV0aWwuZ2V0UGxhaW5UaW1lRnJvbUpTRGF0ZShlbmREYXRlQXNKU0RhdGUpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuZERhdGUuc2V0KG51bGwpXG4gICAgfVxuXG4gICAgdGhpcy5sb2cuZGVidWcoYFB1bGxlZCBpbnB1dCBpbnRlcnZhbDpgLCBpbnRlcnZhbClcbiAgfVxuXG4gIHNldEFuY2hvckRhdGVUaW1lRnJvbUpzRGF0ZShkYXRlVGltZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmICghZGF0ZVRpbWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBkYXRlID0gVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZUZyb21KU0RhdGUoZGF0ZVRpbWUpXG4gICAgY29uc3QgdGltZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpblRpbWVGcm9tSlNEYXRlKGRhdGVUaW1lKVxuICAgIHRoaXMuZml4ZWRBbmNob3JEYXRlLnNldChkYXRlKVxuICAgIHRoaXMuZml4ZWRBbmNob3JUaW1lLnNldCh0aW1lKVxuICB9XG5cbiAgc2V0Rml4ZWRBbmNob3JQb2ludFRvU3RhcnREYXRlVGltZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhcnREYXRlKCkpIHtcbiAgICAgIHRoaXMucmVzZXRGaXhlZEFuY2hvclBvaW50KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodGhpcy5zdGFydERhdGUoKSkge1xuICAgICAgdGhpcy5maXhlZEFuY2hvckRhdGUuc2V0KHRoaXMuc3RhcnREYXRlKCkpXG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXJ0VGltZSgpKSB7XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yVGltZS5zZXQodGhpcy5zdGFydFRpbWUoKSlcbiAgICB9XG4gIH1cblxuICBzZXRGaXhlZEFuY2hvclBvaW50VG9FbmREYXRlVGltZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICB0aGlzLnJlc2V0Rml4ZWRBbmNob3JQb2ludCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQodGhpcy5lbmREYXRlKCkpXG4gICAgfVxuICAgIGlmICh0aGlzLmVuZFRpbWUoKSkge1xuICAgICAgdGhpcy5maXhlZEFuY2hvclRpbWUuc2V0KHRoaXMuZW5kVGltZSgpKVxuICAgIH1cbiAgfVxuXG4gIHJlc2V0Rml4ZWRBbmNob3JQb2ludCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQobnVsbClcbiAgICB0aGlzLmZpeGVkQW5jaG9yVGltZS5zZXQoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAwOjAwJykpXG4gICAgaWYgKHRoaXMuaXNVcGRhdGluZ0ludGVydmFsT25BbmNob3JDaGFuZ2UoKSAmJiB0aGlzLmlzU3RhcnRBbmRFbmREYXRlc1NldCgpKSB7XG4gICAgICB0aGlzLnNoaWZ0UmFuZ2VFbmRUb1RvZGF5KClcbiAgICB9XG4gIH1cblxuICBzZXRBbmNob3JEYXRlRnJvbUZvcm0oZGF0ZUFyZzogTG9jYWxEYXRlKTogdm9pZCB7XG4gICAgaWYgKCFkYXRlQXJnKSB7XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQobnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGpzRGF0ZSA9IFRpbWVVdGlsLmxvY2FsRGF0ZVRvRGF0ZShkYXRlQXJnKVxuICAgIGNvbnN0IHBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpbkRhdGVGcm9tSlNEYXRlKGpzRGF0ZSlcblxuICAgIGlmICghcGxhaW5EYXRlKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdJbnZhbGlkIGRhdGUnLCBwbGFpbkRhdGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQocGxhaW5EYXRlKVxuXG4gICAgaWYgKCF0aGlzLmlzVXBkYXRpbmdJbnRlcnZhbE9uQW5jaG9yQ2hhbmdlKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLmZpeGVkQW5jaG9yRGF0ZSgpKSB7XG4gICAgICB0aGlzLnNoaWZ0U2VsZWN0aW9uVG9BbmNob3JEYXRlKClcbiAgICB9XG4gIH1cblxuICBjbGVhclN0YXJ0RGF0ZVRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydERhdGUuc2V0KG51bGwpXG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KG51bGwpXG4gIH1cblxuICBjbGVhckVuZERhdGVUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuZW5kRGF0ZS5zZXQobnVsbClcbiAgICB0aGlzLmVuZFRpbWUuc2V0KG51bGwpXG4gIH1cblxuICBjbGVhclN0YXJ0VGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQobnVsbClcbiAgfVxuXG4gIGNsZWFyRW5kVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVuZFRpbWUuc2V0KG51bGwpXG4gIH1cblxuICByZXNldEZpeGVkQW5jaG9yVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpeGVkQW5jaG9yVGltZS5zZXQoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAwOjAwJykpXG4gIH1cblxuICBzZXRBbmNob3JUaW1lRnJvbUZvcm0oaHRtbFN0cmluZzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGltZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpblRpbWVGcm9tSHRtbFRpbWVTdHJpbmcoaHRtbFN0cmluZylcbiAgICBpZiAoIXRpbWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5maXhlZEFuY2hvckRhdGUoKSkge1xuICAgICAgdGhpcy5maXhlZEFuY2hvckRhdGUuc2V0KFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVJU08oKSlcbiAgICB9XG5cbiAgICB0aGlzLmZpeGVkQW5jaG9yVGltZS5zZXQodGltZSlcblxuICAgIGlmICghdGhpcy5pc1VwZGF0aW5nSW50ZXJ2YWxPbkFuY2hvckNoYW5nZSgpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5maXhlZEFuY2hvclRpbWUoKSkge1xuICAgICAgdGhpcy5zaGlmdFNlbGVjdGlvblRvQW5jaG9yVGltZSgpXG4gICAgfVxuICB9XG5cbiAgZW1pdE1haW5EYXRlcygpOiB2b2lkIHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMuY3JlYXRlRWxkZXJJbnRlcnZhbCgpXG4gICAgdGhpcy5fZGF0ZUNoYW5nZUVtaXR0ZXIuZW1pdChpbnRlcnZhbClcbiAgfVxuXG4gIC8vIGRhdGUgc2hpZnRzXG4gIHNoaWZ0RGF5KGRheXM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UodGhpcy5kYXRlUmFuZ2UoKS5zaGlmdERheXMoZGF5cykpXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICd3ZWVrcycgJiYgKGRheXMgPT09IDcgfHwgZGF5cyA9PT0gLTcpKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ3dlZWtzJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICB9XG5cbiAgc2hpZnRNb250aChtb250aHM6IG51bWJlciwgc3RhdGljTW9kZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZSh0aGlzLmRhdGVSYW5nZSgpLnNoaWZ0TW9udGhzKG1vbnRocykpXG4gICAgaWYgKHN0YXRpY01vZGUgJiYgdGhpcy5jYWxlbmRhck1vZGUoKSAhPT0gJ21vbnRocycpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdtb250aHMnKVxuICB9XG5cbiAgc2hpZnRZZWFyKHllYXJzOiBudW1iZXIsIHN0YXRpY01vZGUgPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UodGhpcy5kYXRlUmFuZ2UoKS5zaGlmdFllYXJzKHllYXJzKSlcbiAgICBpZiAoc3RhdGljTW9kZSAmJiB0aGlzLmNhbGVuZGFyTW9kZSgpICE9PSAneWVhcnMnKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgneWVhcnMnKVxuICB9XG5cbiAgc2hpZnRUaW1lKGFtb3VudDogbnVtYmVyLCB1bml0OiAnaG91cnMnIHwgJ21pbnV0ZXMnKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzU3RhcnRBbmRFbmREYXRlc1NldCgpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGFydERhdGVUaW1lID0gdGhpcy5zdGFydERhdGVUaW1lKCkuYWRkKHsgW3VuaXRdOiBhbW91bnQgfSlcbiAgICBjb25zdCBuZXdFbmREYXRlVGltZSA9IHRoaXMuZW5kRGF0ZVRpbWUoKS5hZGQoeyBbdW5pdF06IGFtb3VudCB9KVxuXG4gICAgdGhpcy5zdGFydERhdGUuc2V0KFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKG5ld1N0YXJ0RGF0ZVRpbWUpKVxuICAgIHRoaXMuc3RhcnRUaW1lLnNldChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbShuZXdTdGFydERhdGVUaW1lIGFzIFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUpKVxuXG4gICAgdGhpcy5lbmREYXRlLnNldChUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShuZXdFbmREYXRlVGltZSkpXG4gICAgdGhpcy5lbmRUaW1lLnNldChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbShuZXdFbmREYXRlVGltZSBhcyBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lKSlcbiAgfVxuXG4gIHNtYXJ0U2hpZnQoZGlyZWN0aW9uID0gMSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbGVuZGFyTW9kZSgpID09PSAncXVhcnRlcnMnKSB7XG4gICAgICBjb25zdCBuZXdSYW5nZSA9IHRoaXMuZGF0ZVJhbmdlKCkuc2hpZnRNb250aHMoZGlyZWN0aW9uICogMylcbiAgICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UobmV3UmFuZ2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ21vbnRocycpIHtcbiAgICAgIGNvbnN0IG5ld1JhbmdlID0gdGhpcy5kYXRlUmFuZ2UoKS5zaGlmdE1vbnRocyhkaXJlY3Rpb24pXG4gICAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKG5ld1JhbmdlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICd5ZWFycycpIHtcbiAgICAgIGNvbnN0IG5ld1JhbmdlID0gdGhpcy5kYXRlUmFuZ2UoKS5zaGlmdFllYXJzKGRpcmVjdGlvbilcbiAgICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UobmV3UmFuZ2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ3dlZWtzJykge1xuICAgICAgY29uc3QgbmV3UmFuZ2UgPSB0aGlzLmRhdGVSYW5nZSgpLnNoaWZ0RGF5cyg3ICogZGlyZWN0aW9uKVxuICAgICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShuZXdSYW5nZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRheXNEaWZmID0gdGhpcy5kYXRlUmFuZ2UoKS5nZXREdXJhdGlvbkluRGF5cygpXG4gICAgY29uc3QgbmV3UmFuZ2UgPSB0aGlzLmRhdGVSYW5nZSgpLnNoaWZ0RGF5cyhkYXlzRGlmZiAqIGRpcmVjdGlvbilcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKG5ld1JhbmdlKVxuICB9XG5cbiAgLy8gdGltZSByYW5nZSBzZWxlY3Rpb25zXG4gIHNlbGVjdExhc3RIb3VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaEJhc2VSZWZlcmVuY2VEYXRlVGltZSgpXG5cbiAgICBjb25zdCBlbmQgPSB0aGlzLmFuY2hvckRhdGVUaW1lKClcbiAgICBjb25zdCBzdGFydCA9IGVuZC5zdWJ0cmFjdCh7IGhvdXJzOiAxIH0pXG4gICAgdGhpcy5lbmREYXRlLnNldCh0aGlzLmFuY2hvckRhdGUoKSlcbiAgICB0aGlzLmVuZFRpbWUuc2V0KHRoaXMuYW5jaG9yVGltZSgpKVxuXG4gICAgY29uc3Qgc3RhcnRQbGFpbkRhdGUgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShzdGFydClcbiAgICBjb25zdCBzdGFydFBsYWluVGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHN0YXJ0KVxuICAgIHRoaXMuc3RhcnREYXRlLnNldChzdGFydFBsYWluRGF0ZSlcbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQoc3RhcnRQbGFpblRpbWUpXG5cbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICB9XG5cbiAgc2VsZWN0TGFzdDI0SG91cnMoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQmFzZVJlZmVyZW5jZURhdGVUaW1lKClcblxuICAgIGNvbnN0IGVuZCA9IHRoaXMuYW5jaG9yRGF0ZVRpbWUoKVxuICAgIGNvbnN0IHN0YXJ0ID0gZW5kLnN1YnRyYWN0KHsgZGF5czogMSB9KVxuICAgIHRoaXMuZW5kRGF0ZS5zZXQodGhpcy5hbmNob3JEYXRlKCkpXG4gICAgdGhpcy5lbmRUaW1lLnNldCh0aGlzLmFuY2hvclRpbWUoKSlcblxuICAgIGNvbnN0IHN0YXJ0UGxhaW5EYXRlID0gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oc3RhcnQpXG5cbiAgICBjb25zdCBzdGFydFBsYWluVGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHN0YXJ0KVxuICAgIHRoaXMuc3RhcnREYXRlLnNldChzdGFydFBsYWluRGF0ZSlcbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQoc3RhcnRQbGFpblRpbWUpXG5cbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICB9XG5cbiAgc2VsZWN0TGFzdEZpdmVNaW51dGVzKCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaEJhc2VSZWZlcmVuY2VEYXRlVGltZSgpXG5cbiAgICBjb25zdCBlbmQgPSB0aGlzLmFuY2hvckRhdGVUaW1lKClcbiAgICBjb25zdCBzdGFydCA9IGVuZC5zdWJ0cmFjdCh7IG1pbnV0ZXM6IDUgfSlcbiAgICB0aGlzLmVuZERhdGUuc2V0KHRoaXMuYW5jaG9yRGF0ZSgpKVxuICAgIHRoaXMuZW5kVGltZS5zZXQodGhpcy5hbmNob3JUaW1lKCkpXG5cbiAgICBjb25zdCBzdGFydFBsYWluRGF0ZSA9IFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKHN0YXJ0KVxuICAgIGNvbnN0IHN0YXJ0UGxhaW5UaW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oc3RhcnQpXG4gICAgdGhpcy5zdGFydERhdGUuc2V0KHN0YXJ0UGxhaW5EYXRlKVxuICAgIHRoaXMuc3RhcnRUaW1lLnNldChzdGFydFBsYWluVGltZSlcblxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gIH1cblxuICAvLyBkYXRlIHJhbmdlIHNlbGVjdGlvbnNcbiAgc2VsZWN0Q3VycmVudERheSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKFRlbXBvcmFsVXRpbC5nZXRDdXJyZW50RGF5KHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICB9XG5cbiAgc2VsZWN0WWVzdGVyZGF5KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldFllc3RlcmRheSh0aGlzLmFuY2hvckRhdGUoKSkpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdkYXlzJylcbiAgICB0aGlzLnJlc2V0VGltZVJhbmdlKClcbiAgfVxuXG4gIHNlbGVjdEN1cnJlbnRXZWVrKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldEN1cnJlbnRXZWVrKHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ3dlZWtzJylcbiAgICB0aGlzLnJlc2V0VGltZVJhbmdlKClcbiAgfVxuXG4gIHNlbGVjdFByZXZpb3VzV2VlaygpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKFRlbXBvcmFsVXRpbC5nZXRQcmV2aW91c1dlZWsodGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnd2Vla3MnKVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICB9XG5cbiAgc2VsZWN0TGFzdFNldmVuRGF5cygpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKFRlbXBvcmFsVXRpbC5nZXRMYXN0U2V2ZW5EYXlzKHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICB9XG5cbiAgc2VsZWN0Q3VycmVudE1vbnRoKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldEN1cnJlbnRNb250aCh0aGlzLmFuY2hvckRhdGUoKSkpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdtb250aHMnKVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICB9XG5cbiAgc2VsZWN0UHJldmlvdXNNb250aCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKFRlbXBvcmFsVXRpbC5nZXRQcmV2aW91c01vbnRoKHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ21vbnRocycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RMYXN0VGhpcnR5RGF5cygpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKFRlbXBvcmFsVXRpbC5nZXRMYXN0VGhpcnR5RGF5cyh0aGlzLmFuY2hvckRhdGUoKSkpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdkYXlzJylcbiAgICB0aGlzLnJlc2V0VGltZVJhbmdlKClcbiAgfVxuXG4gIHNlbGVjdEN1cnJlbnRZZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldEN1cnJlbnRZZWFyKHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ3llYXJzJylcbiAgICB0aGlzLnJlc2V0VGltZVJhbmdlKClcbiAgfVxuXG4gIHNlbGVjdFByZXZpb3VzWWVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKFRlbXBvcmFsVXRpbC5nZXRQcmV2aW91c1llYXIodGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgneWVhcnMnKVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICB9XG5cbiAgc2VsZWN0TGFzdDM2NURheXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShUZW1wb3JhbFV0aWwuZ2V0TGFzdDM2NURheXModGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RDdXJyZW50UXVhcnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKFRlbXBvcmFsVXRpbC5nZXRDdXJyZW50UXVhcnRlcih0aGlzLmFuY2hvckRhdGUoKSkpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdxdWFydGVycycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RQcmV2aW91c1F1YXJ0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShUZW1wb3JhbFV0aWwuZ2V0UHJldmlvdXNRdWFydGVyKHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ3F1YXJ0ZXJzJylcbiAgICB0aGlzLnJlc2V0VGltZVJhbmdlKClcbiAgfVxuXG4gIC8vIEFuY2hvciBwb2ludCBzaGlmdCBzZWxlY3Rpb25zXG4gIHByaXZhdGUgc2hpZnRTZWxlY3Rpb25Ub0FuY2hvckRhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzU3RhcnRBbmRFbmREYXRlc1NldCgpIHx8ICF0aGlzLmZpeGVkQW5jaG9yRGF0ZSgpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByYW5nZSA9IG5ldyBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsKHRoaXMuc3RhcnREYXRlKCksIHRoaXMuZW5kRGF0ZSgpKVxuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmZpeGVkQW5jaG9yRGF0ZSgpXG4gICAgY29uc3Qgc3RhcnREYXRlID0gZW5kRGF0ZS5zdWJ0cmFjdCh7IGRheXM6IHJhbmdlLmdldER1cmF0aW9uSW5EYXlzKCkgfSlcbiAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoc3RhcnREYXRlKVxuICAgIHRoaXMuZW5kRGF0ZS5zZXQoZW5kRGF0ZSlcblxuICAgIGlmICh0aGlzLmNhbGVuZGFyTW9kZSgpID09PSAnbW9udGhzJykge1xuICAgICAgdGhpcy5zZWxlY3RDdXJyZW50TW9udGgoKVxuICAgIH1cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ3llYXJzJykge1xuICAgICAgdGhpcy5zZWxlY3RDdXJyZW50WWVhcigpXG4gICAgfVxuICAgIGlmICh0aGlzLmNhbGVuZGFyTW9kZSgpID09PSAnd2Vla3MnKSB7XG4gICAgICB0aGlzLnNlbGVjdEN1cnJlbnRXZWVrKClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNoaWZ0U2VsZWN0aW9uVG9BbmNob3JUaW1lKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKSB8fCAhdGhpcy5maXhlZEFuY2hvclRpbWUoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnN0YXJ0RGF0ZVRpbWUoKS51bnRpbCh0aGlzLmVuZERhdGVUaW1lKCkpXG4gICAgY29uc3QgbmV3U3RhcnREYXRlVGltZSA9IHRoaXMuYW5jaG9yRGF0ZVRpbWUoKS5zdWJ0cmFjdChkdXJhdGlvbilcbiAgICBjb25zdCBuZXdFbmREYXRlVGltZSA9IHRoaXMuYW5jaG9yRGF0ZVRpbWUoKVxuICAgIHRoaXMuc3RhcnREYXRlLnNldChUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShuZXdTdGFydERhdGVUaW1lKSlcbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20obmV3U3RhcnREYXRlVGltZSkpXG4gICAgdGhpcy5lbmREYXRlLnNldChUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShuZXdFbmREYXRlVGltZSkpXG4gICAgdGhpcy5lbmRUaW1lLnNldChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbShuZXdFbmREYXRlVGltZSkpXG5cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ21vbnRocycpIHtcbiAgICAgIHRoaXMuc2VsZWN0Q3VycmVudE1vbnRoKClcbiAgICB9XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICd5ZWFycycpIHtcbiAgICAgIHRoaXMuc2VsZWN0Q3VycmVudFllYXIoKVxuICAgIH1cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ3dlZWtzJykge1xuICAgICAgdGhpcy5zZWxlY3RDdXJyZW50V2VlaygpXG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBjcmVhdGVFbGRlckludGVydmFsKCk6IEludGVydmFsIHtcbiAgICBsZXQgc3RhcnQsXG4gICAgICBlbmQgPSBudWxsXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlVGltZSgpKSB7XG4gICAgICBjb25zdCBqc0RhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUodGhpcy5zdGFydERhdGVUaW1lKCkpXG4gICAgICBzdGFydCA9IFRpbWVVdGlsLmluc3RhbnQoanNEYXRlKVxuICAgIH1cbiAgICBpZiAodGhpcy5lbmREYXRlVGltZSgpKSB7XG4gICAgICBjb25zdCBqc0RhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUodGhpcy5lbmREYXRlVGltZSgpKVxuICAgICAgZW5kID0gVGltZVV0aWwuaW5zdGFudChqc0RhdGUpXG4gICAgfVxuICAgIGlmICghc3RhcnQgJiYgIWVuZCkge1xuICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbChudWxsLCBudWxsKVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEludGVydmFsKHN0YXJ0LCBlbmQpXG4gIH1cblxuICBwcml2YXRlIHNldERhdGVzRnJvbVJhbmdlKHJhbmdlOiBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydERhdGUuc2V0KHJhbmdlLnN0YXJ0KVxuICAgIHRoaXMuZW5kRGF0ZS5zZXQocmFuZ2UuZW5kKVxuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoQmFzZVJlZmVyZW5jZURhdGVUaW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGVUaW1lID0gVGVtcG9yYWwuTm93LnpvbmVkRGF0ZVRpbWVJU08oKVxuICAgIGNvbnN0IGRhdGUgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShkYXRlVGltZSlcbiAgICBjb25zdCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oZGF0ZVRpbWUpXG4gICAgdGhpcy5iYXNlUmVmZXJlbmNlRGF0ZS5zZXQoZGF0ZSlcbiAgICB0aGlzLmJhc2VSZWZlcmVuY2VUaW1lLnNldCh0aW1lKVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldFRpbWVSYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAwOjAwJykpXG4gICAgdGhpcy5lbmRUaW1lLnNldChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSlcbiAgfVxuXG4gIHByaXZhdGUgc2hpZnRSYW5nZUVuZFRvVG9kYXkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzU3RhcnRBbmRFbmREYXRlc1NldCgpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnN0YXJ0RGF0ZSgpLnVudGlsKHRoaXMuZW5kRGF0ZSgpKVxuICAgIHRoaXMuZW5kRGF0ZS5zZXQoVGVtcG9yYWwuTm93LnBsYWluRGF0ZUlTTygpKVxuICAgIHRoaXMuc3RhcnREYXRlLnNldCh0aGlzLmVuZERhdGUoKS5zdWJ0cmFjdChkdXJhdGlvbikpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRWZmZWN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRvRW1pdE9uRGF0ZVRpbWVzQ2hhbmdlRWZmZWN0OiBFZmZlY3RSZWYgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZVRpbWUgPSB0aGlzLnN0YXJ0RGF0ZVRpbWUoKVxuICAgIGNvbnN0IGVuZERhdGVUaW1lID0gdGhpcy5lbmREYXRlVGltZSgpXG5cbiAgICBpZiAodGhpcy5pc0VtaXR0aW5nT25DaGFuZ2UoKSkge1xuICAgICAgdGhpcy5lbWl0TWFpbkRhdGVzKClcbiAgICB9XG4gIH0pXG59XG4iXX0=
|
|
708
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL2VsZGVyLWludGVydmFsLXBpY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFlBQVksRUFDWixVQUFVLEVBRVYsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUM3RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFBOztBQUd6RCxNQUFNLG1CQUFtQixHQUFpQixNQUFNLENBQUE7QUFHaEQsTUFBTSxPQUFPLDBCQUEwQjtJQUR2QztRQUVFOzs7O29GQUk0RTtRQUUzRCxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTdELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFZLENBQUE7UUFFaEQsaUJBQVksR0FBRyxNQUFNLENBQWUsbUJBQW1CLENBQUMsQ0FBQTtRQUV4RCxjQUFTLEdBQUcsTUFBTSxDQUFxQixJQUFJLENBQUMsQ0FBQTtR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LENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQztZQUNsQyxPQUFNO1FBQ1IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDOzhHQTV6QlUsMEJBQTBCO2tIQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBFZmZlY3RSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0YWJsZSxcbiAgU2lnbmFsLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBEYXRlUmFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJ1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgTG9jYWxEYXRlIH0gZnJvbSAnQGpzLWpvZGEvY29yZSdcbmltcG9ydCB7IFRlbXBvcmFsIH0gZnJvbSAnQGpzLXRlbXBvcmFsL3BvbHlmaWxsJ1xuaW1wb3J0IHsgSW50ZXJ2YWwgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdGltZS9pbnRlcnZhbCdcbmltcG9ydCB7IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdGltZS90ZW1wb3JhbC1wbGFpbi1kYXRlLWludGVydmFsJ1xuaW1wb3J0IHsgVGVtcG9yYWxVdGlsIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3RpbWUvdGVtcG9yYWwtdXRpbCdcbmltcG9ydCB7IFRpbWVVdGlsIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3RpbWUvdGltZS11dGlsJ1xuXG50eXBlIGNhbGVuZGFyTW9kZSA9ICdkYXlzJyB8ICd3ZWVrcycgfCAnbW9udGhzJyB8ICdxdWFydGVycycgfCAneWVhcnMnXG5jb25zdCBkZWZhdWx0Q2FsZW5kYXJNb2RlOiBjYWxlbmRhck1vZGUgPSAnZGF5cydcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVsZGVySW50ZXJ2YWxQaWNrZXJTZXJ2aWNlIHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgcHJpdmF0ZSBfZGF0ZUNoYW5nZUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEludGVydmFsPigpXG5cbiAgcmVhZG9ubHkgY2FsZW5kYXJNb2RlID0gc2lnbmFsPGNhbGVuZGFyTW9kZT4oZGVmYXVsdENhbGVuZGFyTW9kZSlcblxuICByZWFkb25seSBzdGFydERhdGUgPSBzaWduYWw8VGVtcG9yYWwuUGxhaW5EYXRlPihudWxsKVxuICByZWFkb25seSBlbmREYXRlID0gc2lnbmFsPFRlbXBvcmFsLlBsYWluRGF0ZT4obnVsbClcblxuICByZWFkb25seSBiYXNlUmVmZXJlbmNlRGF0ZSA9IHNpZ25hbChUZW1wb3JhbC5Ob3cucGxhaW5EYXRlSVNPKCkpXG4gIHJlYWRvbmx5IGJhc2VSZWZlcmVuY2VUaW1lID0gc2lnbmFsKFRlbXBvcmFsLk5vdy5wbGFpblRpbWVJU08oKSlcblxuICByZWFkb25seSBmaXhlZEFuY2hvckRhdGUgPSBzaWduYWw8VGVtcG9yYWwuUGxhaW5EYXRlPihudWxsKVxuICByZWFkb25seSBmaXhlZEFuY2hvclRpbWUgPSBzaWduYWwoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAwOjAwJykpXG5cbiAgcmVhZG9ubHkgc3RhcnRUaW1lID0gc2lnbmFsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMDowMCcpKVxuICByZWFkb25seSBlbmRUaW1lID0gc2lnbmFsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMDowMCcpKVxuXG4gIHByaXZhdGUgX2lucHV0SW50ZXJ2YWw6IFNpZ25hbDxJbnRlcnZhbD4gPSBudWxsXG4gIHByaXZhdGUgX2lucHV0QW5jaG9yRGF0ZVRpbWU6IFNpZ25hbDxEYXRlPiA9IG51bGxcblxuICByZWFkb25seSBpc0VtaXR0aW5nT25DaGFuZ2UgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSlcbiAgcmVhZG9ubHkgaXNVcGRhdGluZ0ludGVydmFsT25BbmNob3JDaGFuZ2UgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgcmVhZG9ubHkgaXNGaXhlZEFuY2hvckRhdGVTZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICEhdGhpcy5maXhlZEFuY2hvckRhdGUoKVxuICB9KVxuXG4gIHJlYWRvbmx5IGFuY2hvckRhdGUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpbkRhdGU+KCgpID0+IHtcbiAgICBpZiAodGhpcy5maXhlZEFuY2hvckRhdGUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZml4ZWRBbmNob3JEYXRlKClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYmFzZVJlZmVyZW5jZURhdGUoKVxuICB9KVxuXG4gIHJlYWRvbmx5IGFuY2hvclRpbWUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpblRpbWU+KCgpID0+IHtcbiAgICBpZiAodGhpcy5maXhlZEFuY2hvckRhdGUoKSAmJiB0aGlzLmZpeGVkQW5jaG9yVGltZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5maXhlZEFuY2hvclRpbWUoKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYXNlUmVmZXJlbmNlVGltZSgpXG4gIH0pXG5cbiAgcmVhZG9ubHkgYW5jaG9yRGF0ZVRpbWUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpbkRhdGVUaW1lPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYW5jaG9yRGF0ZSgpLnRvUGxhaW5EYXRlVGltZSh0aGlzLmFuY2hvclRpbWUoKSlcbiAgfSlcblxuICByZWFkb25seSBkYXRlUmFuZ2UgPSBjb21wdXRlZDxUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsKHRoaXMuc3RhcnREYXRlKCksIHRoaXMuZW5kRGF0ZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZUZvckNhbGVuZGFyID0gY29tcHV0ZWQ8RGF0ZVJhbmdlPERhdGU+IHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3Qgc3RhcnREYXRlID0gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuc3RhcnREYXRlKCkpXG4gICAgY29uc3QgZW5kRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZSh0aGlzLmVuZERhdGUoKSlcbiAgICByZXR1cm4gbmV3IERhdGVSYW5nZShzdGFydERhdGUsIGVuZERhdGUpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlSW5EYXlzID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmRhdGVSYW5nZSgpKSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kYXRlUmFuZ2UoKS5nZXREdXJhdGlvbkluRGF5cygpXG4gIH0pXG5cbiAgcmVhZG9ubHkgaXNTdGFydEFuZEVuZERhdGVzRW1wdHkgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgcmV0dXJuICF0aGlzLnN0YXJ0RGF0ZSgpICYmICF0aGlzLmVuZERhdGUoKVxuICB9KVxuXG4gIHJlYWRvbmx5IGlzU3RhcnRBbmRFbmREYXRlc1NldCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICByZXR1cm4gISEodGhpcy5zdGFydERhdGUoKSAmJiB0aGlzLmVuZERhdGUoKSlcbiAgfSlcblxuICByZWFkb25seSBpc1JhbmdlTm90U2V0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiAhdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKVxuICB9KVxuXG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZVRpbWUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpbkRhdGUgfCBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBpZiAodGhpcy5zdGFydFRpbWUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhcnREYXRlKCkudG9QbGFpbkRhdGVUaW1lKHRoaXMuc3RhcnRUaW1lKCkpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXJ0RGF0ZSgpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZW5kRGF0ZVRpbWUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpbkRhdGUgfCBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmVuZERhdGUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kVGltZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmREYXRlKCkudG9QbGFpbkRhdGVUaW1lKHRoaXMuZW5kVGltZSgpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lbmREYXRlKClcbiAgfSlcblxuICByZWFkb25seSBzdGFydERhdGVBc0pTRGF0ZSA9IGNvbXB1dGVkPERhdGUgfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuc3RhcnREYXRlKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZW5kRGF0ZUFzSlNEYXRlID0gY29tcHV0ZWQ8RGF0ZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuZW5kRGF0ZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZVRpbWVBc0pTRGF0ZSA9IGNvbXB1dGVkPERhdGUgfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZVRpbWUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZSh0aGlzLnN0YXJ0RGF0ZVRpbWUoKSlcbiAgfSlcblxuICByZWFkb25seSBlbmREYXRlVGltZUFzSlNEYXRlID0gY29tcHV0ZWQ8RGF0ZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuZW5kRGF0ZVRpbWUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZSh0aGlzLmVuZERhdGVUaW1lKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZ2V0Q2FsZW5kYXJXZWVrID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGFydERhdGUoKS53ZWVrT2ZZZWFyXG4gIH0pXG5cbiAgcmVhZG9ubHkgaXNGdWxsQ2FsZW5kZXJXZWVrU2VsZWN0ZWQgPSBjb21wdXRlZDxib29sZWFuIHwgbnVtYmVyPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzU3RhcnRBbmRFbmREYXRlc1NldCgpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoIVRlbXBvcmFsVXRpbC5pc0ZpcnN0RGF5T2ZXZWVrKHRoaXMuc3RhcnREYXRlKCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuc3RhcnREYXRlKCkudW50aWwodGhpcy5lbmREYXRlKCkpXG5cbiAgICBpZiAoZHVyYXRpb24uZGF5cyAhPT0gNykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnREYXRlKCkud2Vla09mWWVhclxuICB9KVxuXG4gIHJlYWRvbmx5IHZpZXdJbnRlcnZhbE1lc3NhZ2UgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICBpZiAodGhpcy5pc1JhbmdlTm90U2V0KCkpIHtcbiAgICAgIHJldHVybiAnLSdcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ3F1YXJ0ZXJzJykge1xuICAgICAgY29uc3QgcXVhcnRlciA9IFRlbXBvcmFsVXRpbC5nZXRRdWFydGVyRm9yRGF0ZSh0aGlzLnN0YXJ0RGF0ZSgpKVxuICAgICAgcmV0dXJuIGBRJHtxdWFydGVyfSwgJHt0aGlzLnN0YXJ0RGF0ZSgpLnllYXJ9YFxuICAgIH1cblxuICAgIGlmICh0aGlzLmNhbGVuZGFyTW9kZSgpID09PSAnbW9udGhzJykge1xuICAgICAgY29uc3QgbW9udGhOYW1lID0gdGhpcy5zdGFydERhdGUoKS5tb250aFxuICAgICAgcmV0dXJuIGAxbSAoJHttb250aE5hbWV9LCAke3RoaXMuc3RhcnREYXRlKCkueWVhcn0pYFxuICAgIH1cblxuICAgIGlmICh0aGlzLmNhbGVuZGFyTW9kZSgpID09PSAneWVhcnMnKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdGhpcy5zdGFydERhdGUoKS55ZWFyXG4gICAgICByZXR1cm4gYDF5ICgke3llYXJ9KWBcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ3dlZWtzJykge1xuICAgICAgcmV0dXJuIGAxdyAoQ1cgJHt0aGlzLmdldENhbGVuZGFyV2VlaygpfSwgJHt0aGlzLmVuZERhdGUoKS55ZWFyfSlgXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICdkYXlzJykge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZGF0ZVJhbmdlSW5EYXlzKCl9ZGBcbiAgICB9XG5cbiAgICByZXR1cm4gJydcbiAgfSlcblxuICByZWFkb25seSBkZWx0YUFzVGVtcG9yYWxEdXJhdGlvbiA9IGNvbXB1dGVkPFRlbXBvcmFsLkR1cmF0aW9uPigoKSA9PiB7XG4gICAgY29uc3Qgc3RhcnREYXRlVGltZSA9IHRoaXMuc3RhcnREYXRlVGltZSgpXG4gICAgY29uc3QgZW5kRGF0ZVRpbWUgPSB0aGlzLmVuZERhdGVUaW1lKClcblxuICAgIGlmICghc3RhcnREYXRlVGltZSB8fCAhZW5kRGF0ZVRpbWUpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgZHVyYXRpb24gPSBzdGFydERhdGVUaW1lLnVudGlsKGVuZERhdGVUaW1lKVxuICAgIHJldHVybiBkdXJhdGlvblxuICB9KVxuXG4gIHJlYWRvbmx5IGRlbHRhSHVtYW5SZWFkYWJsZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmlzU3RhcnRBbmRFbmREYXRlc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuZGVsdGFBc1RlbXBvcmFsRHVyYXRpb24oKVxuICAgIGlmICghZHVyYXRpb24pIHtcbiAgICAgIHJldHVybiAn4oieJ1xuICAgIH1cbiAgICBjb25zdCB0bXAgPSBbXVxuICAgIGlmIChkdXJhdGlvbi5kYXlzKSB7XG4gICAgICB0bXAucHVzaChgJHtkdXJhdGlvbi5kYXlzfWRgKVxuICAgIH1cbiAgICBpZiAoZHVyYXRpb24uaG91cnMpIHtcbiAgICAgIHRtcC5wdXNoKGAke2R1cmF0aW9uLmhvdXJzfWhgKVxuICAgIH1cbiAgICBpZiAoZHVyYXRpb24ubWludXRlcykge1xuICAgICAgdG1wLnB1c2goYCR7ZHVyYXRpb24ubWludXRlc31taW5gKVxuICAgIH1cbiAgICBpZiAoZHVyYXRpb24uc2Vjb25kcykge1xuICAgICAgdG1wLnB1c2goYCR7ZHVyYXRpb24uc2Vjb25kc31zYClcbiAgICB9XG5cbiAgICBpZiAoIXRtcC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnMHMnXG4gICAgfVxuXG4gICAgcmV0dXJuIHRtcC5qb2luKCcsICcpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZ2V0U3RhcnRUaW1lU3RyaW5nID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRIdG1sVGltZVN0cmluZ0Zyb21QbGFpblRpbWUodGhpcy5zdGFydFRpbWUoKSlcbiAgfSlcblxuICByZWFkb25seSBnZXRFbmRUaW1lU3RyaW5nID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRIdG1sVGltZVN0cmluZ0Zyb21QbGFpblRpbWUodGhpcy5lbmRUaW1lKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZ2V0QW5jaG9yVGltZVN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SHRtbFRpbWVTdHJpbmdGcm9tUGxhaW5UaW1lKHRoaXMuZml4ZWRBbmNob3JUaW1lKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZ2V0QW5jaG9yUG9pbnRBc0xvY2FsZURhdGUgPSBjb21wdXRlZDxMb2NhbERhdGU+KCgpID0+IHtcbiAgICBjb25zdCBhbmNob3JQb2ludCA9IHRoaXMuZml4ZWRBbmNob3JEYXRlKClcbiAgICBpZiAoIWFuY2hvclBvaW50KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBqc0RhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUoYW5jaG9yUG9pbnQpXG4gICAgY29uc3QgbG9jYWxlRGF0ZSA9IFRpbWVVdGlsLmRhdGVUb0xvY2FsRGF0ZShqc0RhdGUpXG4gICAgcmV0dXJuIGxvY2FsZURhdGVcbiAgfSlcblxuICByZWFkb25seSBzdGFydERhdGVIdG1sU3RyaW5nID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRIdG1sRGF0ZVN0cmluZyh0aGlzLnN0YXJ0RGF0ZVRpbWUoKSlcbiAgfSlcblxuICByZWFkb25seSBlbmREYXRlSHRtbFN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SHRtbERhdGVTdHJpbmcodGhpcy5lbmREYXRlVGltZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IGlzU3RhcnRUaW1lU2V0QW5kTm90TWlkbmlnaHQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0VGltZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc3RhcnRUaW1lKCkuaG91ciAhPT0gMCB8fCB0aGlzLnN0YXJ0VGltZSgpLm1pbnV0ZSAhPT0gMCB8fCB0aGlzLnN0YXJ0VGltZSgpLnNlY29uZCAhPT0gMFxuICAgIClcbiAgfSlcblxuICByZWFkb25seSBpc0VuZFRpbWVTZXRBbmROb3RNaWRuaWdodCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuZW5kVGltZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZW5kVGltZSgpLmhvdXIgIT09IDAgfHwgdGhpcy5lbmRUaW1lKCkubWludXRlICE9PSAwIHx8IHRoaXMuZW5kVGltZSgpLnNlY29uZCAhPT0gMFxuICB9KVxuXG4gIHJlYWRvbmx5IGlzRml4ZWRBbmNob3JUaW1lU2V0QW5kTm90TWlkbmlnaHQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmZpeGVkQW5jaG9yVGltZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZml4ZWRBbmNob3JUaW1lKCkuaG91ciAhPT0gMCB8fFxuICAgICAgdGhpcy5maXhlZEFuY2hvclRpbWUoKS5taW51dGUgIT09IDAgfHxcbiAgICAgIHRoaXMuZml4ZWRBbmNob3JUaW1lKCkuc2Vjb25kICE9PSAwXG4gICAgKVxuICB9KVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHNldFN0YXJ0RGF0ZUZyb21IdG1sU3RyaW5nKGh0bWxTdHJpbmc6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0UGxhaW5EYXRlRnJvbUh0bWxEYXRlU3RyaW5nKGh0bWxTdHJpbmcpXG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdkYXlzJylcbiAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoZGF0ZSlcbiAgfVxuXG4gIHNldEVuZERhdGVGcm9tSHRtbFN0cmluZyhodG1sU3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZUZyb21IdG1sRGF0ZVN0cmluZyhodG1sU3RyaW5nKVxuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgdGhpcy5lbmREYXRlLnNldChkYXRlKVxuICB9XG5cbiAgc2V0dXBJbnB1dEludGVydmFsKHM6IFNpZ25hbDxJbnRlcnZhbD4pOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dEludGVydmFsID0gc1xuICB9XG5cbiAgc2V0dXBJbnB1dEFuY2hvckRhdGVUaW1lKHM6IFNpZ25hbDxEYXRlPik6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0QW5jaG9yRGF0ZVRpbWUgPSBzXG4gIH1cblxuICBzZXR1cEV2ZW50RW1pdHRlcihlOiBFdmVudEVtaXR0ZXI8SW50ZXJ2YWw+KTogdm9pZCB7XG4gICAgdGhpcy5fZGF0ZUNoYW5nZUVtaXR0ZXIgPSBlXG4gIH1cblxuICBzZXRTdGFydFRpbWVGcm9tU3RyaW5nKHRpbWVTdHI6IHN0cmluZywgZm9ybUNvbnRyb2w/OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB0aW1lID0gVGVtcG9yYWxVdGlsLmdldFBsYWluVGltZUZyb21IdG1sVGltZVN0cmluZyh0aW1lU3RyKVxuXG4gICAgaWYgKHRpbWUpIHtcbiAgICAgIHRoaXMuc3RhcnRUaW1lLnNldCh0aW1lKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5zdGFydERhdGUoKSkge1xuICAgICAgdGhpcy5zdGFydERhdGUuc2V0KFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVJU08oKSlcbiAgICB9XG5cbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICB9XG5cbiAgc2V0RW5kVGltZUZyb21TdHJpbmcodGltZVN0cjogc3RyaW5nLCBmb3JtQ29udHJvbD86IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHRpbWUgPSBUZW1wb3JhbFV0aWwuZ2V0UGxhaW5UaW1lRnJvbUh0bWxUaW1lU3RyaW5nKHRpbWVTdHIpXG5cbiAgICBpZiAodGltZSkge1xuICAgICAgdGhpcy5lbmRUaW1lLnNldCh0aW1lKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5lbmREYXRlKCkpIHtcbiAgICAgIHRoaXMuZW5kRGF0ZS5zZXQoVGVtcG9yYWwuTm93LnBsYWluRGF0ZUlTTygpKVxuICAgIH1cblxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gIH1cblxuICByZXNldENhbGVuZGFyTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoZGVmYXVsdENhbGVuZGFyTW9kZSlcbiAgfVxuXG4gIHB1bGxJbnB1dEludGVydmFsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXRJbnRlcnZhbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5zZXREYXRlVGltZXNGcm9tRWxkZXJJbnRlcnZhbCh0aGlzLl9pbnB1dEludGVydmFsKCkpXG4gIH1cblxuICBwdWxsSW5wdXRBbmNob3JEYXRlVGltZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0QW5jaG9yRGF0ZVRpbWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuc2V0QW5jaG9yRGF0ZVRpbWVGcm9tSnNEYXRlKHRoaXMuX2lucHV0QW5jaG9yRGF0ZVRpbWUoKSlcbiAgfVxuXG4gIHNldERhdGVUaW1lc0Zyb21FbGRlckludGVydmFsKGludGVydmFsOiBJbnRlcnZhbCk6IHZvaWQge1xuICAgIGlmICghaW50ZXJ2YWwpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlLnNldChudWxsKVxuICAgICAgdGhpcy5lbmREYXRlLnNldChudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGludGVydmFsLnN0YXJ0KSB7XG4gICAgICBjb25zdCBzdGFydERhdGVBc0pTRGF0ZSA9IFRpbWVVdGlsLmRhdGUoaW50ZXJ2YWwuc3RhcnQpXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZUZyb21KU0RhdGUoc3RhcnREYXRlQXNKU0RhdGUpKVxuICAgICAgdGhpcy5zdGFydFRpbWUuc2V0KFRlbXBvcmFsVXRpbC5nZXRQbGFpblRpbWVGcm9tSlNEYXRlKHN0YXJ0RGF0ZUFzSlNEYXRlKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFydERhdGUuc2V0KG51bGwpXG4gICAgfVxuXG4gICAgaWYgKGludGVydmFsLmVuZCkge1xuICAgICAgY29uc3QgZW5kRGF0ZUFzSlNEYXRlID0gVGltZVV0aWwuZGF0ZShpbnRlcnZhbC5lbmQpXG4gICAgICB0aGlzLmVuZERhdGUuc2V0KFRlbXBvcmFsVXRpbC5nZXRQbGFpbkRhdGVGcm9tSlNEYXRlKGVuZERhdGVBc0pTRGF0ZSkpXG4gICAgICB0aGlzLmVuZFRpbWUuc2V0KFRlbXBvcmFsVXRpbC5nZXRQbGFpblRpbWVGcm9tSlNEYXRlKGVuZERhdGVBc0pTRGF0ZSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kRGF0ZS5zZXQobnVsbClcbiAgICB9XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUHVsbGVkIGlucHV0IGludGVydmFsOmAsIGludGVydmFsKVxuICB9XG5cbiAgc2V0QW5jaG9yRGF0ZVRpbWVGcm9tSnNEYXRlKGRhdGVUaW1lOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKCFkYXRlVGltZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0UGxhaW5EYXRlRnJvbUpTRGF0ZShkYXRlVGltZSlcbiAgICBjb25zdCB0aW1lID0gVGVtcG9yYWxVdGlsLmdldFBsYWluVGltZUZyb21KU0RhdGUoZGF0ZVRpbWUpXG4gICAgdGhpcy5maXhlZEFuY2hvckRhdGUuc2V0KGRhdGUpXG4gICAgdGhpcy5maXhlZEFuY2hvclRpbWUuc2V0KHRpbWUpXG4gIH1cblxuICBzZXRGaXhlZEFuY2hvclBvaW50VG9TdGFydERhdGVUaW1lKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGFydERhdGUoKSkge1xuICAgICAgdGhpcy5yZXNldEZpeGVkQW5jaG9yUG9pbnQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSgpKSB7XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQodGhpcy5zdGFydERhdGUoKSlcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RhcnRUaW1lKCkpIHtcbiAgICAgIHRoaXMuZml4ZWRBbmNob3JUaW1lLnNldCh0aGlzLnN0YXJ0VGltZSgpKVxuICAgIH1cbiAgfVxuXG4gIHNldEZpeGVkQW5jaG9yUG9pbnRUb0VuZERhdGVUaW1lKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lbmREYXRlKCkpIHtcbiAgICAgIHRoaXMucmVzZXRGaXhlZEFuY2hvclBvaW50KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodGhpcy5lbmREYXRlKCkpIHtcbiAgICAgIHRoaXMuZml4ZWRBbmNob3JEYXRlLnNldCh0aGlzLmVuZERhdGUoKSlcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kVGltZSgpKSB7XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yVGltZS5zZXQodGhpcy5lbmRUaW1lKCkpXG4gICAgfVxuICB9XG5cbiAgcmVzZXRGaXhlZEFuY2hvclBvaW50KCk6IHZvaWQge1xuICAgIHRoaXMuZml4ZWRBbmNob3JEYXRlLnNldChudWxsKVxuICAgIHRoaXMuZml4ZWRBbmNob3JUaW1lLnNldChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSlcbiAgICBpZiAodGhpcy5pc1VwZGF0aW5nSW50ZXJ2YWxPbkFuY2hvckNoYW5nZSgpICYmIHRoaXMuaXNTdGFydEFuZEVuZERhdGVzU2V0KCkpIHtcbiAgICAgIHRoaXMuc2hpZnRSYW5nZUVuZFRvVG9kYXkoKVxuICAgIH1cbiAgfVxuXG4gIHNldEFuY2hvckRhdGVGcm9tRm9ybShkYXRlQXJnOiBMb2NhbERhdGUpOiB2b2lkIHtcbiAgICBpZiAoIWRhdGVBcmcpIHtcbiAgICAgIHRoaXMuZml4ZWRBbmNob3JEYXRlLnNldChudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QganNEYXRlID0gVGltZVV0aWwubG9jYWxEYXRlVG9EYXRlKGRhdGVBcmcpXG4gICAgY29uc3QgcGxhaW5EYXRlID0gVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZUZyb21KU0RhdGUoanNEYXRlKVxuXG4gICAgaWYgKCFwbGFpbkRhdGUpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oJ0ludmFsaWQgZGF0ZScsIHBsYWluRGF0ZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuZml4ZWRBbmNob3JEYXRlLnNldChwbGFpbkRhdGUpXG5cbiAgICBpZiAoIXRoaXMuaXNVcGRhdGluZ0ludGVydmFsT25BbmNob3JDaGFuZ2UoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZml4ZWRBbmNob3JEYXRlKCkpIHtcbiAgICAgIHRoaXMuc2hpZnRTZWxlY3Rpb25Ub0FuY2hvckRhdGUoKVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyU3RhcnREYXRlVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQobnVsbClcbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQobnVsbClcbiAgfVxuXG4gIGNsZWFyRW5kRGF0ZVRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5lbmREYXRlLnNldChudWxsKVxuICAgIHRoaXMuZW5kVGltZS5zZXQobnVsbClcbiAgfVxuXG4gIGNsZWFyU3RhcnRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRUaW1lLnNldChudWxsKVxuICB9XG5cbiAgY2xlYXJFbmRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuZW5kVGltZS5zZXQobnVsbClcbiAgfVxuXG4gIHJlc2V0Rml4ZWRBbmNob3JUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuZml4ZWRBbmNob3JUaW1lLnNldChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSlcbiAgfVxuXG4gIHNldEFuY2hvclRpbWVGcm9tRm9ybShodG1sU3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0aW1lID0gVGVtcG9yYWxVdGlsLmdldFBsYWluVGltZUZyb21IdG1sVGltZVN0cmluZyhodG1sU3RyaW5nKVxuICAgIGlmICghdGltZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpeGVkQW5jaG9yRGF0ZSgpKSB7XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQoVGVtcG9yYWwuTm93LnBsYWluRGF0ZUlTTygpKVxuICAgIH1cblxuICAgIHRoaXMuZml4ZWRBbmNob3JUaW1lLnNldCh0aW1lKVxuXG4gICAgaWYgKCF0aGlzLmlzVXBkYXRpbmdJbnRlcnZhbE9uQW5jaG9yQ2hhbmdlKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLmZpeGVkQW5jaG9yVGltZSgpKSB7XG4gICAgICB0aGlzLnNoaWZ0U2VsZWN0aW9uVG9BbmNob3JUaW1lKClcbiAgICB9XG4gIH1cblxuICBlbWl0TWFpbkRhdGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5jcmVhdGVFbGRlckludGVydmFsKClcbiAgICB0aGlzLl9kYXRlQ2hhbmdlRW1pdHRlci5lbWl0KGludGVydmFsKVxuICB9XG5cbiAgLy8gZGF0ZSBzaGlmdHNcbiAgc2hpZnREYXkoZGF5czogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZSh0aGlzLmRhdGVSYW5nZSgpLnNoaWZ0RGF5cyhkYXlzKSlcbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ3dlZWtzJyAmJiAoZGF5cyA9PT0gNyB8fCBkYXlzID09PSAtNykpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnd2Vla3MnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gIH1cblxuICBzaGlmdE1vbnRoKG1vbnRoczogbnVtYmVyLCBzdGF0aWNNb2RlID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKHRoaXMuZGF0ZVJhbmdlKCkuc2hpZnRNb250aHMobW9udGhzKSlcbiAgICBpZiAoc3RhdGljTW9kZSAmJiB0aGlzLmNhbGVuZGFyTW9kZSgpICE9PSAnbW9udGhzJykge1xuICAgICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdkYXlzJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLnJlc2V0VGltZVJhbmdlKClcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ21vbnRocycpXG4gIH1cblxuICBzaGlmdFllYXIoeWVhcnM6IG51bWJlciwgc3RhdGljTW9kZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZSh0aGlzLmRhdGVSYW5nZSgpLnNoaWZ0WWVhcnMoeWVhcnMpKVxuICAgIGlmIChzdGF0aWNNb2RlICYmIHRoaXMuY2FsZW5kYXJNb2RlKCkgIT09ICd5ZWFycycpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCd5ZWFycycpXG4gIH1cblxuICBzaGlmdFRpbWUoYW1vdW50OiBudW1iZXIsIHVuaXQ6ICdob3VycycgfCAnbWludXRlcycpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTdGFydEFuZEVuZERhdGVzU2V0KCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXJ0RGF0ZVRpbWUgPSB0aGlzLnN0YXJ0RGF0ZVRpbWUoKS5hZGQoeyBbdW5pdF06IGFtb3VudCB9KVxuICAgIGNvbnN0IG5ld0VuZERhdGVUaW1lID0gdGhpcy5lbmREYXRlVGltZSgpLmFkZCh7IFt1bml0XTogYW1vdW50IH0pXG5cbiAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20obmV3U3RhcnREYXRlVGltZSkpXG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKG5ld1N0YXJ0RGF0ZVRpbWUgYXMgVGVtcG9yYWwuUGxhaW5EYXRlVGltZSkpXG5cbiAgICB0aGlzLmVuZERhdGUuc2V0KFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKG5ld0VuZERhdGVUaW1lKSlcbiAgICB0aGlzLmVuZFRpbWUuc2V0KFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKG5ld0VuZERhdGVUaW1lIGFzIFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUpKVxuICB9XG5cbiAgc21hcnRTaGlmdChkaXJlY3Rpb24gPSAxKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICdxdWFydGVycycpIHtcbiAgICAgIGNvbnN0IG5ld1JhbmdlID0gdGhpcy5kYXRlUmFuZ2UoKS5zaGlmdE1vbnRocyhkaXJlY3Rpb24gKiAzKVxuICAgICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShuZXdSYW5nZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLmNhbGVuZGFyTW9kZSgpID09PSAnbW9udGhzJykge1xuICAgICAgY29uc3QgbmV3UmFuZ2UgPSB0aGlzLmRhdGVSYW5nZSgpLnNoaWZ0TW9udGhzKGRpcmVjdGlvbilcbiAgICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UobmV3UmFuZ2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ3llYXJzJykge1xuICAgICAgY29uc3QgbmV3UmFuZ2UgPSB0aGlzLmRhdGVSYW5nZSgpLnNoaWZ0WWVhcnMoZGlyZWN0aW9uKVxuICAgICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShuZXdSYW5nZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLmNhbGVuZGFyTW9kZSgpID09PSAnd2Vla3MnKSB7XG4gICAgICBjb25zdCBuZXdSYW5nZSA9IHRoaXMuZGF0ZVJhbmdlKCkuc2hpZnREYXlzKDcgKiBkaXJlY3Rpb24pXG4gICAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKG5ld1JhbmdlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGF5c0RpZmYgPSB0aGlzLmRhdGVSYW5nZSgpLmdldER1cmF0aW9uSW5EYXlzKClcbiAgICBjb25zdCBuZXdSYW5nZSA9IHRoaXMuZGF0ZVJhbmdlKCkuc2hpZnREYXlzKGRheXNEaWZmICogZGlyZWN0aW9uKVxuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UobmV3UmFuZ2UpXG4gIH1cblxuICAvLyB0aW1lIHJhbmdlIHNlbGVjdGlvbnNcbiAgc2VsZWN0TGFzdEhvdXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQmFzZVJlZmVyZW5jZURhdGVUaW1lKClcblxuICAgIGNvbnN0IGVuZCA9IHRoaXMuYW5jaG9yRGF0ZVRpbWUoKVxuICAgIGNvbnN0IHN0YXJ0ID0gZW5kLnN1YnRyYWN0KHsgaG91cnM6IDEgfSlcbiAgICB0aGlzLmVuZERhdGUuc2V0KHRoaXMuYW5jaG9yRGF0ZSgpKVxuICAgIHRoaXMuZW5kVGltZS5zZXQodGhpcy5hbmNob3JUaW1lKCkpXG5cbiAgICBjb25zdCBzdGFydFBsYWluRGF0ZSA9IFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKHN0YXJ0KVxuICAgIGNvbnN0IHN0YXJ0UGxhaW5UaW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oc3RhcnQpXG4gICAgdGhpcy5zdGFydERhdGUuc2V0KHN0YXJ0UGxhaW5EYXRlKVxuICAgIHRoaXMuc3RhcnRUaW1lLnNldChzdGFydFBsYWluVGltZSlcblxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gIH1cblxuICBzZWxlY3RMYXN0MjRIb3VycygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hCYXNlUmVmZXJlbmNlRGF0ZVRpbWUoKVxuXG4gICAgY29uc3QgZW5kID0gdGhpcy5hbmNob3JEYXRlVGltZSgpXG4gICAgY29uc3Qgc3RhcnQgPSBlbmQuc3VidHJhY3QoeyBkYXlzOiAxIH0pXG4gICAgdGhpcy5lbmREYXRlLnNldCh0aGlzLmFuY2hvckRhdGUoKSlcbiAgICB0aGlzLmVuZFRpbWUuc2V0KHRoaXMuYW5jaG9yVGltZSgpKVxuXG4gICAgY29uc3Qgc3RhcnRQbGFpbkRhdGUgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShzdGFydClcblxuICAgIGNvbnN0IHN0YXJ0UGxhaW5UaW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oc3RhcnQpXG4gICAgdGhpcy5zdGFydERhdGUuc2V0KHN0YXJ0UGxhaW5EYXRlKVxuICAgIHRoaXMuc3RhcnRUaW1lLnNldChzdGFydFBsYWluVGltZSlcblxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gIH1cblxuICBzZWxlY3RMYXN0Rml2ZU1pbnV0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQmFzZVJlZmVyZW5jZURhdGVUaW1lKClcblxuICAgIGNvbnN0IGVuZCA9IHRoaXMuYW5jaG9yRGF0ZVRpbWUoKVxuICAgIGNvbnN0IHN0YXJ0ID0gZW5kLnN1YnRyYWN0KHsgbWludXRlczogNSB9KVxuICAgIHRoaXMuZW5kRGF0ZS5zZXQodGhpcy5hbmNob3JEYXRlKCkpXG4gICAgdGhpcy5lbmRUaW1lLnNldCh0aGlzLmFuY2hvclRpbWUoKSlcblxuICAgIGNvbnN0IHN0YXJ0UGxhaW5EYXRlID0gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oc3RhcnQpXG4gICAgY29uc3Qgc3RhcnRQbGFpblRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbShzdGFydClcbiAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoc3RhcnRQbGFpbkRhdGUpXG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KHN0YXJ0UGxhaW5UaW1lKVxuXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdkYXlzJylcbiAgfVxuXG4gIC8vIGRhdGUgcmFuZ2Ugc2VsZWN0aW9uc1xuICBzZWxlY3RDdXJyZW50RGF5KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldEN1cnJlbnREYXkodGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RZZXN0ZXJkYXkoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShUZW1wb3JhbFV0aWwuZ2V0WWVzdGVyZGF5KHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICB9XG5cbiAgc2VsZWN0Q3VycmVudFdlZWsoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShUZW1wb3JhbFV0aWwuZ2V0Q3VycmVudFdlZWsodGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnd2Vla3MnKVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICB9XG5cbiAgc2VsZWN0UHJldmlvdXNXZWVrKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldFByZXZpb3VzV2Vlayh0aGlzLmFuY2hvckRhdGUoKSkpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCd3ZWVrcycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RMYXN0U2V2ZW5EYXlzRXhjbHVkaW5nVG9kYXkoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShUZW1wb3JhbFV0aWwuZ2V0TGFzdFNldmVuRGF5cyh0aGlzLmFuY2hvckRhdGUoKSkpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdkYXlzJylcbiAgICB0aGlzLnJlc2V0VGltZVJhbmdlKClcbiAgfVxuXG4gIHNlbGVjdExhc3RTZXZlbkRheXNJbmNsdWRpbmdUb2RheSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKFRlbXBvcmFsVXRpbC5nZXRMYXN0U2V2ZW5EYXlzSW5jbHVkaW5nVG9kYXkodGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RDdXJyZW50TW9udGgoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShUZW1wb3JhbFV0aWwuZ2V0Q3VycmVudE1vbnRoKHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ21vbnRocycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RQcmV2aW91c01vbnRoKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldFByZXZpb3VzTW9udGgodGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnbW9udGhzJylcbiAgICB0aGlzLnJlc2V0VGltZVJhbmdlKClcbiAgfVxuXG4gIHNlbGVjdExhc3RUaGlydHlEYXlzRXhjbHVkaW5nVG9kYXkoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShUZW1wb3JhbFV0aWwuZ2V0TGFzdFRoaXJ0eURheXModGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RMYXN0VGhpcnR5RGF5c0luY2x1ZGluZ1RvZGF5KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldExhc3RUaGlydHlEYXlzSW5jbHVkaW5nVG9kYXkodGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RDdXJyZW50WWVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVzRnJvbVJhbmdlKFRlbXBvcmFsVXRpbC5nZXRDdXJyZW50WWVhcih0aGlzLmFuY2hvckRhdGUoKSkpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCd5ZWFycycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICBzZWxlY3RQcmV2aW91c1llYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShUZW1wb3JhbFV0aWwuZ2V0UHJldmlvdXNZZWFyKHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ3llYXJzJylcbiAgICB0aGlzLnJlc2V0VGltZVJhbmdlKClcbiAgfVxuXG4gIHNlbGVjdExhc3QzNjVEYXlzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldExhc3QzNjVEYXlzKHRoaXMuYW5jaG9yRGF0ZSgpKSlcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoJ2RheXMnKVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICB9XG5cbiAgc2VsZWN0Q3VycmVudFF1YXJ0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlc0Zyb21SYW5nZShUZW1wb3JhbFV0aWwuZ2V0Q3VycmVudFF1YXJ0ZXIodGhpcy5hbmNob3JEYXRlKCkpKVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgncXVhcnRlcnMnKVxuICAgIHRoaXMucmVzZXRUaW1lUmFuZ2UoKVxuICB9XG5cbiAgc2VsZWN0UHJldmlvdXNRdWFydGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZXNGcm9tUmFuZ2UoVGVtcG9yYWxVdGlsLmdldFByZXZpb3VzUXVhcnRlcih0aGlzLmFuY2hvckRhdGUoKSkpXG4gICAgdGhpcy5jYWxlbmRhck1vZGUuc2V0KCdxdWFydGVycycpXG4gICAgdGhpcy5yZXNldFRpbWVSYW5nZSgpXG4gIH1cblxuICAvLyBBbmNob3IgcG9pbnQgc2hpZnQgc2VsZWN0aW9uc1xuICBwcml2YXRlIHNoaWZ0U2VsZWN0aW9uVG9BbmNob3JEYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKSB8fCAhdGhpcy5maXhlZEFuY2hvckRhdGUoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgcmFuZ2UgPSBuZXcgVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCh0aGlzLnN0YXJ0RGF0ZSgpLCB0aGlzLmVuZERhdGUoKSlcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5maXhlZEFuY2hvckRhdGUoKVxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGVuZERhdGUuc3VidHJhY3QoeyBkYXlzOiByYW5nZS5nZXREdXJhdGlvbkluRGF5cygpIH0pXG4gICAgdGhpcy5zdGFydERhdGUuc2V0KHN0YXJ0RGF0ZSlcbiAgICB0aGlzLmVuZERhdGUuc2V0KGVuZERhdGUpXG5cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ21vbnRocycpIHtcbiAgICAgIHRoaXMuc2VsZWN0Q3VycmVudE1vbnRoKClcbiAgICB9XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICd5ZWFycycpIHtcbiAgICAgIHRoaXMuc2VsZWN0Q3VycmVudFllYXIoKVxuICAgIH1cbiAgICBpZiAodGhpcy5jYWxlbmRhck1vZGUoKSA9PT0gJ3dlZWtzJykge1xuICAgICAgdGhpcy5zZWxlY3RDdXJyZW50V2VlaygpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdFNlbGVjdGlvblRvQW5jaG9yVGltZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTdGFydEFuZEVuZERhdGVzU2V0KCkgfHwgIXRoaXMuZml4ZWRBbmNob3JUaW1lKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy5zdGFydERhdGVUaW1lKCkudW50aWwodGhpcy5lbmREYXRlVGltZSgpKVxuICAgIGNvbnN0IG5ld1N0YXJ0RGF0ZVRpbWUgPSB0aGlzLmFuY2hvckRhdGVUaW1lKCkuc3VidHJhY3QoZHVyYXRpb24pXG4gICAgY29uc3QgbmV3RW5kRGF0ZVRpbWUgPSB0aGlzLmFuY2hvckRhdGVUaW1lKClcbiAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20obmV3U3RhcnREYXRlVGltZSkpXG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKG5ld1N0YXJ0RGF0ZVRpbWUpKVxuICAgIHRoaXMuZW5kRGF0ZS5zZXQoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20obmV3RW5kRGF0ZVRpbWUpKVxuICAgIHRoaXMuZW5kVGltZS5zZXQoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20obmV3RW5kRGF0ZVRpbWUpKVxuXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICdtb250aHMnKSB7XG4gICAgICB0aGlzLnNlbGVjdEN1cnJlbnRNb250aCgpXG4gICAgfVxuICAgIGlmICh0aGlzLmNhbGVuZGFyTW9kZSgpID09PSAneWVhcnMnKSB7XG4gICAgICB0aGlzLnNlbGVjdEN1cnJlbnRZZWFyKClcbiAgICB9XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNb2RlKCkgPT09ICd3ZWVrcycpIHtcbiAgICAgIHRoaXMuc2VsZWN0Q3VycmVudFdlZWsoKVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY3JlYXRlRWxkZXJJbnRlcnZhbCgpOiBJbnRlcnZhbCB7XG4gICAgbGV0IHN0YXJ0LFxuICAgICAgZW5kID0gbnVsbFxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZVRpbWUoKSkge1xuICAgICAgY29uc3QganNEYXRlID0gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuc3RhcnREYXRlVGltZSgpKVxuICAgICAgc3RhcnQgPSBUaW1lVXRpbC5pbnN0YW50KGpzRGF0ZSlcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kRGF0ZVRpbWUoKSkge1xuICAgICAgY29uc3QganNEYXRlID0gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuZW5kRGF0ZVRpbWUoKSlcbiAgICAgIGVuZCA9IFRpbWVVdGlsLmluc3RhbnQoanNEYXRlKVxuICAgIH1cbiAgICBpZiAoIXN0YXJ0ICYmICFlbmQpIHtcbiAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwobnVsbCwgbnVsbClcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbnRlcnZhbChzdGFydCwgZW5kKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXRlc0Zyb21SYW5nZShyYW5nZTogVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnREYXRlLnNldChyYW5nZS5zdGFydClcbiAgICB0aGlzLmVuZERhdGUuc2V0KHJhbmdlLmVuZClcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaEJhc2VSZWZlcmVuY2VEYXRlVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlVGltZSA9IFRlbXBvcmFsLk5vdy56b25lZERhdGVUaW1lSVNPKClcbiAgICBjb25zdCBkYXRlID0gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oZGF0ZVRpbWUpXG4gICAgY29uc3QgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKGRhdGVUaW1lKVxuICAgIHRoaXMuYmFzZVJlZmVyZW5jZURhdGUuc2V0KGRhdGUpXG4gICAgdGhpcy5iYXNlUmVmZXJlbmNlVGltZS5zZXQodGltZSlcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRUaW1lUmFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMDowMCcpKVxuICAgIHRoaXMuZW5kVGltZS5zZXQoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAwOjAwJykpXG4gIH1cblxuICBwcml2YXRlIHNoaWZ0UmFuZ2VFbmRUb1RvZGF5KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy5zdGFydERhdGUoKS51bnRpbCh0aGlzLmVuZERhdGUoKSlcbiAgICB0aGlzLmVuZERhdGUuc2V0KFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVJU08oKSlcbiAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQodGhpcy5lbmREYXRlKCkuc3VidHJhY3QoZHVyYXRpb24pKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEVmZmVjdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0b0VtaXRPbkRhdGVUaW1lc0NoYW5nZUVmZmVjdDogRWZmZWN0UmVmID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzdGFydERhdGVUaW1lID0gdGhpcy5zdGFydERhdGVUaW1lKClcbiAgICBjb25zdCBlbmREYXRlVGltZSA9IHRoaXMuZW5kRGF0ZVRpbWUoKVxuXG4gICAgaWYgKHRoaXMuaXNFbWl0dGluZ09uQ2hhbmdlKCkpIHtcbiAgICAgIHRoaXMuZW1pdE1haW5EYXRlcygpXG4gICAgfVxuICB9KVxufVxuIl19
|