@dhutaryan/ngx-mat-timepicker 17.5.1 → 17.6.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/clock-dials.mjs +11 -13
- package/esm2022/lib/time-input-base.mjs +3 -14
- package/esm2022/lib/time-inputs.mjs +7 -9
- package/esm2022/lib/timepicker-base.mjs +66 -17
- package/esm2022/lib/timepicker-content.mjs +40 -9
- package/esm2022/lib/timepicker-input-base.mjs +35 -4
- package/esm2022/lib/timepicker-toggle.mjs +31 -6
- package/fesm2022/dhutaryan-ngx-mat-timepicker.mjs +180 -62
- package/fesm2022/dhutaryan-ngx-mat-timepicker.mjs.map +1 -1
- package/lib/timepicker-base.d.ts +23 -1
- package/lib/timepicker-content.d.ts +7 -1
- package/lib/timepicker-input-base.d.ts +12 -2
- package/lib/timepicker-toggle.d.ts +9 -3
- package/package.json +9 -8
|
@@ -39,18 +39,16 @@ export class MatClockDials extends MatTimeFaceBase {
|
|
|
39
39
|
focusActiveCell() {
|
|
40
40
|
this._ngZone.runOutsideAngular(() => {
|
|
41
41
|
this._ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
}, 50);
|
|
42
|
+
const activeCell = this._elementRef.nativeElement.querySelector('.mat-timepicker-content .mat-clock-dial-cell-active');
|
|
43
|
+
if (activeCell) {
|
|
44
|
+
activeCell.focus();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const activePoint = this._elementRef.nativeElement.querySelector('.mat-timepicker-content .mat-clock-dial-hand-point');
|
|
48
|
+
if (activePoint) {
|
|
49
|
+
// if no active cell we need to focus a small dot
|
|
50
|
+
activePoint.focus();
|
|
51
|
+
}
|
|
54
52
|
});
|
|
55
53
|
});
|
|
56
54
|
}
|
|
@@ -94,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
94
92
|
}], touchUi: [{
|
|
95
93
|
type: Input
|
|
96
94
|
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2stZGlhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXQtdGltZXBpY2tlci9zcmMvbGliL2Nsb2NrLWRpYWxzLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0LXRpbWVwaWNrZXIvc3JjL2xpYi9jbG9jay1kaWFscy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUdqQixRQUFRLEVBR1IsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBeUI5QyxNQUFNLE9BQU8sYUFDWCxTQUFRLGVBQWtCO0lBZTFCLFlBQ1MsS0FBd0IsRUFDbkIsWUFBNEIsRUFDaEMsT0FBZSxFQUNmLFdBQXVCLEVBQ3ZCLElBQXVCO1FBRS9CLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQU5iLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBRXZCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixn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aUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWiwwQkFBMEI7d0JBQzFCLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixhQUFhO3FCQUNkLFlBR1MsZUFBZSxtQkFDUix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLElBQUksRUFBRSxNQUFNO3dCQUNaLEtBQUssRUFBRSxpQkFBaUI7cUJBQ3pCLGNBQ1csQ0FBQyxtQkFBbUIsQ0FBQzs7MEJBb0I5QixRQUFRO3VIQWJGLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgTmdab25lLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFRpbWVBZGFwdGVyIH0gZnJvbSAnLi9hZGFwdGVyJztcbmltcG9ydCB7IE1hdFRpbWVGYWNlQmFzZSB9IGZyb20gJy4vdGltZS1mYWNlLWJhc2UnO1xuaW1wb3J0IHsgd2l0aFplcm9QcmVmaXhNZXJpZGllbSB9IGZyb20gJy4vdGltZS1pbnB1dC1iYXNlJztcbmltcG9ydCB7IE1hdFRpbWVwaWNrZXJJbnRsIH0gZnJvbSAnLi90aW1lcGlja2VyLWludGwnO1xuaW1wb3J0IHsgVGltZXBpY2tlck9yaWVudGF0aW9uIH0gZnJvbSAnLi9vcmllbnRhdGlvbic7XG5pbXBvcnQgeyBlbnRlckxlYXZlQW5pbWF0aW9uIH0gZnJvbSAnLi9jbG9jay1kaWFsLWFkbmltYXRpb24nO1xuaW1wb3J0IHsgTWF0VGltZXBpY2tlckNvbnRlbnRMYXlvdXQgfSBmcm9tICcuL3RpbWVwaWNrZXItY29udGVudC1sYXlvdXQnO1xuaW1wb3J0IHsgTWF0SG91cnNDbG9ja0RpYWwgfSBmcm9tICcuL2hvdXJzLWNsb2NrLWRpYWwnO1xuaW1wb3J0IHsgTWF0TWludXRlc0Nsb2NrRGlhbCB9IGZyb20gJy4vbWludXRlcy1jbG9jay1kaWFsJztcbmltcG9ydCB7IE1hdFRpbWVQZXJpb2QgfSBmcm9tICcuL3RpbWUtcGVyaW9kJztcblxuZXhwb3J0IHR5cGUgTWF0RGlhbFZpZXcgPSAnaG91cnMnIHwgJ21pbnV0ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtY2xvY2stZGlhbHMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdFRpbWVwaWNrZXJDb250ZW50TGF5b3V0LFxuICAgIE1hdEhvdXJzQ2xvY2tEaWFsLFxuICAgIE1hdE1pbnV0ZXNDbG9ja0RpYWwsXG4gICAgTWF0VGltZVBlcmlvZCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nsb2NrLWRpYWxzLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jbG9jay1kaWFscy5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnbWF0Q2xvY2tEaWFscycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgcm9sZTogJ2RpYWwnLFxuICAgIGNsYXNzOiAnbWF0LWNsb2NrLWRpYWxzJyxcbiAgfSxcbiAgYW5pbWF0aW9uczogW2VudGVyTGVhdmVBbmltYXRpb25dLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRDbG9ja0RpYWxzPFQ+XG4gIGV4dGVuZHMgTWF0VGltZUZhY2VCYXNlPFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqIExheW91dCBvcmllbnRhdGlvbi4gKi9cbiAgQElucHV0KCkgb3JpZW50YXRpb246IFRpbWVwaWNrZXJPcmllbnRhdGlvbjtcblxuICAvKiogV2hldGhlciB0aGUgdGltZXBpY2tlciBVSSBpcyBpbiB0b3VjaCBtb2RlLiAqL1xuICBASW5wdXQoKSB0b3VjaFVpOiBib29sZWFuO1xuXG4gIGlzSG91cnNWaWV3ID0gdHJ1ZTtcblxuICAvKiogU3BlY2lmaWVzIHRoZSB2aWV3IG9mIGNsb2NrIGRpYWwuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hdERpYWxWaWV3PignaG91cnMnKTtcbiAgcHJpdmF0ZSBfdmlld1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2ludGw6IE1hdFRpbWVwaWNrZXJJbnRsLFxuICAgIEBPcHRpb25hbCgpIF90aW1lQWRhcHRlcjogVGltZUFkYXB0ZXI8VD4sXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihfdGltZUFkYXB0ZXIpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdmlld1N1YnNjcmlwdGlvbiA9IHRoaXMuX3ZpZXcuc3Vic2NyaWJlKFxuICAgICAgKHZpZXcpID0+ICh0aGlzLmlzSG91cnNWaWV3ID0gdmlldyA9PT0gJ2hvdXJzJyksXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fdmlld1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gIH1cblxuICAvKiogQ2hhbmdlcyBjbG9jayBkaWFsIHZpZXcuICovXG4gIG9uVmlld0NoYW5nZShldmVudDogRXZlbnQsIHZpZXc6IE1hdERpYWxWaWV3KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLl92aWV3Lm5leHQodmlldyk7XG4gIH1cblxuICBmb2N1c0FjdGl2ZUNlbGwoKTogdm9pZCB7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZUNlbGw6IEhUTUxFbGVtZW50IHwgbnVsbCA9XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgJy5tYXQtdGltZXBpY2tlci1jb250ZW50IC5tYXQtY2xvY2stZGlhbC1jZWxsLWFjdGl2ZScsIC8vIHRvIGF2b2lkIGZvY3VzIGZvciBpbmxpbmUgbW9kZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChhY3RpdmVDZWxsKSB7XG4gICAgICAgICAgICBhY3RpdmVDZWxsLmZvY3VzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYWN0aXZlUG9pbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgJy5tYXQtdGltZXBpY2tlci1jb250ZW50IC5tYXQtY2xvY2stZGlhbC1oYW5kLXBvaW50JywgLy8gdG8gYXZvaWQgZm9jdXMgZm9yIGlubGluZSBtb2RlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGFjdGl2ZVBvaW50KSB7XG4gICAgICAgICAgICAvLyBpZiBubyBhY3RpdmUgY2VsbCB3ZSBuZWVkIHRvIGZvY3VzIGEgc21hbGwgZG90XG4gICAgICAgICAgICBhY3RpdmVQb2ludC5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBfd2l0aFplcm9QcmVmaXgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICByZXR1cm4gJzAwJztcbiAgICB9XG5cbiAgICByZXR1cm4gd2l0aFplcm9QcmVmaXhNZXJpZGllbSh2YWx1ZSwgdGhpcy5pc01lcmlkaWVtKTtcbiAgfVxuXG4gIG92ZXJyaWRlIF9vbk1pbnV0ZVNlbGVjdGVkKG1pbnV0ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgc3VwZXIuX29uTWludXRlU2VsZWN0ZWQobWludXRlKTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMgaG91ciBzZWxlY3Rpb24uICovXG4gIF9vbkhvdXJDaGFuZ2VkKHtcbiAgICBob3VyLFxuICAgIGNoYW5nZVZpZXcgPSBmYWxzZSxcbiAgfToge1xuICAgIGhvdXI6IG51bWJlcjtcbiAgICBjaGFuZ2VWaWV3PzogYm9vbGVhbjtcbiAgfSk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VWaWV3KSB7XG4gICAgICB0aGlzLl92aWV3Lm5leHQoJ21pbnV0ZXMnKTtcbiAgICB9XG4gICAgdGhpcy5fb25Ib3VyU2VsZWN0ZWQoaG91cik7XG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPG1hdC10aW1lcGlja2VyLWNvbnRlbnQtbGF5b3V0IFt0aXRsZV09XCJfaW50bC5kaWFsc1RpdGxlXCIgW29yaWVudGF0aW9uXT1cIm9yaWVudGF0aW9uXCI+XG4gIDxkaXZcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIGNsYXNzPVwibWF0LWNsb2NrLWRpYWwtdmFsdWVcIlxuICAgIGhvdXJzXG4gICAgW2NsYXNzLm1hdC1jbG9jay1kaWFsLXZhbHVlLWFjdGl2ZV09XCJpc0hvdXJzVmlld1wiXG4gICAgKGNsaWNrKT1cIm9uVmlld0NoYW5nZSgkZXZlbnQsICdob3VycycpXCJcbiAgICAoa2V5ZG93bi5zcGFjZSk9XCJvblZpZXdDaGFuZ2UoJGV2ZW50LCAnaG91cnMnKVwiXG4gID5cbiAgICB7eyBfd2l0aFplcm9QcmVmaXgoc2VsZWN0ZWRIb3VyKSB9fVxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgY2xhc3M9XCJtYXQtY2xvY2stZGlhbC12YWx1ZVwiXG4gICAgbWludXRlc1xuICAgIFtjbGFzcy5tYXQtY2xvY2stZGlhbC12YWx1ZS1hY3RpdmVdPVwiIWlzSG91cnNWaWV3XCJcbiAgICAoY2xpY2spPVwib25WaWV3Q2hhbmdlKCRldmVudCwgJ21pbnV0ZXMnKVwiXG4gICAgKGtleWRvd24uc3BhY2UpPVwib25WaWV3Q2hhbmdlKCRldmVudCwgJ21pbnV0ZXMnKVwiXG4gID5cbiAgICB7eyBfd2l0aFplcm9QcmVmaXgoc2VsZWN0ZWRNaW51dGUpIH19XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSBtYXQtdGltZS1wZXJpb2QgW25nSWZdPVwiaXNNZXJpZGllbVwiPlxuICAgIDxtYXQtdGltZS1wZXJpb2RcbiAgICAgIFtwZXJpb2RdPVwicGVyaW9kXCJcbiAgICAgIFtkaXNhYmxlZFBlcmlvZF09XCJkaXNhYmxlZFBlcmlvZFwiXG4gICAgICBbdmVydGljYWxdPVwib3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgKHBlcmlvZENoYW5nZWQpPVwiX29uUGVyaW9kQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICA+PC9tYXQtdGltZS1wZXJpb2Q+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwibWF0LWNsb2NrLWRpYWwtZmFjZXNcIlxuICAgIFtjbGFzcy5tYXQtY2xvY2stZGlhbC1mYWNlcy1ob3Jpem9udGFsXT1cIm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCdcIlxuICA+XG4gICAgQGlmIChpc0hvdXJzVmlldykge1xuICAgICAgPG1hdC1ob3Vycy1jbG9jay1kaWFsXG4gICAgICAgIFtAZW50ZXJMZWF2ZUFuaW1hdGlvbl1cbiAgICAgICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgW3NlbGVjdGVkSG91cl09XCJzZWxlY3RlZEhvdXJcIlxuICAgICAgICBbaXNNZXJpZGllbV09XCJpc01lcmlkaWVtXCJcbiAgICAgICAgW2F2YWlsYWJsZUhvdXJzXT1cIl9nZXRBdmFpbGFibGVIb3VycygpXCJcbiAgICAgICAgW3RvdWNoVWldPVwidG91Y2hVaVwiXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJfb25Ib3VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwiX29uS2V5ZG93bigkZXZlbnQsICdob3VyJylcIlxuICAgICAgPjwvbWF0LWhvdXJzLWNsb2NrLWRpYWw+XG4gICAgfVxuXG4gICAgQGlmICghaXNIb3Vyc1ZpZXcpIHtcbiAgICAgIDxtYXQtbWludXRlcy1jbG9jay1kaWFsXG4gICAgICAgIFtAZW50ZXJMZWF2ZUFuaW1hdGlvbl1cbiAgICAgICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgW3NlbGVjdGVkTWludXRlXT1cInNlbGVjdGVkTWludXRlXCJcbiAgICAgICAgW2ludGVydmFsXT1cIm1pbnV0ZUludGVydmFsXCJcbiAgICAgICAgW2F2YWlsYWJsZU1pbnV0ZXNdPVwiYXZhaWxhYmxlTWludXRlc1wiXG4gICAgICAgIFt0b3VjaFVpXT1cInRvdWNoVWlcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiX29uTWludXRlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duKT1cIl9vbktleWRvd24oJGV2ZW50LCAnbWludXRlJylcIlxuICAgICAgPjwvbWF0LW1pbnV0ZXMtY2xvY2stZGlhbD5cbiAgICB9XG4gIDwvZGl2PlxuPC9tYXQtdGltZXBpY2tlci1jb250ZW50LWxheW91dD5cbiJdfQ==
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2stZGlhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXQtdGltZXBpY2tlci9zcmMvbGliL2Nsb2NrLWRpYWxzLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0LXRpbWVwaWNrZXIvc3JjL2xpYi9jbG9jay1kaWFscy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUdqQixRQUFRLEVBR1IsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBeUI5QyxNQUFNLE9BQU8sYUFDWCxTQUFRLGVBQWtCO0lBZTFCLFlBQ1MsS0FBd0IsRUFDbkIsWUFBNEIsRUFDaEMsT0FBZSxFQUNmLFdBQXVCLEVBQ3ZCLElBQXVCO1FBRS9CLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQU5iLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBRXZCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixn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QkFDakIsbUJBQW1CO3dCQUNuQixhQUFhO3FCQUNkLFlBR1MsZUFBZSxtQkFDUix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLElBQUksRUFBRSxNQUFNO3dCQUNaLEtBQUssRUFBRSxpQkFBaUI7cUJBQ3pCLGNBQ1csQ0FBQyxtQkFBbUIsQ0FBQzs7MEJBb0I5QixRQUFRO3VIQWJGLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgTmdab25lLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFRpbWVBZGFwdGVyIH0gZnJvbSAnLi9hZGFwdGVyJztcbmltcG9ydCB7IE1hdFRpbWVGYWNlQmFzZSB9IGZyb20gJy4vdGltZS1mYWNlLWJhc2UnO1xuaW1wb3J0IHsgd2l0aFplcm9QcmVmaXhNZXJpZGllbSB9IGZyb20gJy4vdGltZS1pbnB1dC1iYXNlJztcbmltcG9ydCB7IE1hdFRpbWVwaWNrZXJJbnRsIH0gZnJvbSAnLi90aW1lcGlja2VyLWludGwnO1xuaW1wb3J0IHsgVGltZXBpY2tlck9yaWVudGF0aW9uIH0gZnJvbSAnLi9vcmllbnRhdGlvbic7XG5pbXBvcnQgeyBlbnRlckxlYXZlQW5pbWF0aW9uIH0gZnJvbSAnLi9jbG9jay1kaWFsLWFkbmltYXRpb24nO1xuaW1wb3J0IHsgTWF0VGltZXBpY2tlckNvbnRlbnRMYXlvdXQgfSBmcm9tICcuL3RpbWVwaWNrZXItY29udGVudC1sYXlvdXQnO1xuaW1wb3J0IHsgTWF0SG91cnNDbG9ja0RpYWwgfSBmcm9tICcuL2hvdXJzLWNsb2NrLWRpYWwnO1xuaW1wb3J0IHsgTWF0TWludXRlc0Nsb2NrRGlhbCB9IGZyb20gJy4vbWludXRlcy1jbG9jay1kaWFsJztcbmltcG9ydCB7IE1hdFRpbWVQZXJpb2QgfSBmcm9tICcuL3RpbWUtcGVyaW9kJztcblxuZXhwb3J0IHR5cGUgTWF0RGlhbFZpZXcgPSAnaG91cnMnIHwgJ21pbnV0ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtY2xvY2stZGlhbHMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdFRpbWVwaWNrZXJDb250ZW50TGF5b3V0LFxuICAgIE1hdEhvdXJzQ2xvY2tEaWFsLFxuICAgIE1hdE1pbnV0ZXNDbG9ja0RpYWwsXG4gICAgTWF0VGltZVBlcmlvZCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nsb2NrLWRpYWxzLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jbG9jay1kaWFscy5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnbWF0Q2xvY2tEaWFscycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgcm9sZTogJ2RpYWwnLFxuICAgIGNsYXNzOiAnbWF0LWNsb2NrLWRpYWxzJyxcbiAgfSxcbiAgYW5pbWF0aW9uczogW2VudGVyTGVhdmVBbmltYXRpb25dLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRDbG9ja0RpYWxzPFQ+XG4gIGV4dGVuZHMgTWF0VGltZUZhY2VCYXNlPFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqIExheW91dCBvcmllbnRhdGlvbi4gKi9cbiAgQElucHV0KCkgb3JpZW50YXRpb246IFRpbWVwaWNrZXJPcmllbnRhdGlvbjtcblxuICAvKiogV2hldGhlciB0aGUgdGltZXBpY2tlciBVSSBpcyBpbiB0b3VjaCBtb2RlLiAqL1xuICBASW5wdXQoKSB0b3VjaFVpOiBib29sZWFuO1xuXG4gIGlzSG91cnNWaWV3ID0gdHJ1ZTtcblxuICAvKiogU3BlY2lmaWVzIHRoZSB2aWV3IG9mIGNsb2NrIGRpYWwuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hdERpYWxWaWV3PignaG91cnMnKTtcbiAgcHJpdmF0ZSBfdmlld1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2ludGw6IE1hdFRpbWVwaWNrZXJJbnRsLFxuICAgIEBPcHRpb25hbCgpIF90aW1lQWRhcHRlcjogVGltZUFkYXB0ZXI8VD4sXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihfdGltZUFkYXB0ZXIpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdmlld1N1YnNjcmlwdGlvbiA9IHRoaXMuX3ZpZXcuc3Vic2NyaWJlKFxuICAgICAgKHZpZXcpID0+ICh0aGlzLmlzSG91cnNWaWV3ID0gdmlldyA9PT0gJ2hvdXJzJyksXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fdmlld1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gIH1cblxuICAvKiogQ2hhbmdlcyBjbG9jayBkaWFsIHZpZXcuICovXG4gIG9uVmlld0NoYW5nZShldmVudDogRXZlbnQsIHZpZXc6IE1hdERpYWxWaWV3KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLl92aWV3Lm5leHQodmlldyk7XG4gIH1cblxuICBmb2N1c0FjdGl2ZUNlbGwoKTogdm9pZCB7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUNlbGw6IEhUTUxFbGVtZW50IHwgbnVsbCA9XG4gICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAnLm1hdC10aW1lcGlja2VyLWNvbnRlbnQgLm1hdC1jbG9jay1kaWFsLWNlbGwtYWN0aXZlJywgLy8gdG8gYXZvaWQgZm9jdXMgZm9yIGlubGluZSBtb2RlXG4gICAgICAgICAgKTtcblxuICAgICAgICBpZiAoYWN0aXZlQ2VsbCkge1xuICAgICAgICAgIGFjdGl2ZUNlbGwuZm9jdXMoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpdmVQb2ludDogSFRNTEVsZW1lbnQgfCBudWxsID1cbiAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICcubWF0LXRpbWVwaWNrZXItY29udGVudCAubWF0LWNsb2NrLWRpYWwtaGFuZC1wb2ludCcsIC8vIHRvIGF2b2lkIGZvY3VzIGZvciBpbmxpbmUgbW9kZVxuICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVBvaW50KSB7XG4gICAgICAgICAgLy8gaWYgbm8gYWN0aXZlIGNlbGwgd2UgbmVlZCB0byBmb2N1cyBhIHNtYWxsIGRvdFxuICAgICAgICAgIGFjdGl2ZVBvaW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgX3dpdGhaZXJvUHJlZml4KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuICcwMCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdpdGhaZXJvUHJlZml4TWVyaWRpZW0odmFsdWUsIHRoaXMuaXNNZXJpZGllbSk7XG4gIH1cblxuICBvdmVycmlkZSBfb25NaW51dGVTZWxlY3RlZChtaW51dGU6IG51bWJlcik6IHZvaWQge1xuICAgIHN1cGVyLl9vbk1pbnV0ZVNlbGVjdGVkKG1pbnV0ZSk7XG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGVzIGhvdXIgc2VsZWN0aW9uLiAqL1xuICBfb25Ib3VyQ2hhbmdlZCh7XG4gICAgaG91cixcbiAgICBjaGFuZ2VWaWV3ID0gZmFsc2UsXG4gIH06IHtcbiAgICBob3VyOiBudW1iZXI7XG4gICAgY2hhbmdlVmlldz86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlVmlldykge1xuICAgICAgdGhpcy5fdmlldy5uZXh0KCdtaW51dGVzJyk7XG4gICAgfVxuICAgIHRoaXMuX29uSG91clNlbGVjdGVkKGhvdXIpO1xuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjxtYXQtdGltZXBpY2tlci1jb250ZW50LWxheW91dCBbdGl0bGVdPVwiX2ludGwuZGlhbHNUaXRsZVwiIFtvcmllbnRhdGlvbl09XCJvcmllbnRhdGlvblwiPlxuICA8ZGl2XG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBjbGFzcz1cIm1hdC1jbG9jay1kaWFsLXZhbHVlXCJcbiAgICBob3Vyc1xuICAgIFtjbGFzcy5tYXQtY2xvY2stZGlhbC12YWx1ZS1hY3RpdmVdPVwiaXNIb3Vyc1ZpZXdcIlxuICAgIChjbGljayk9XCJvblZpZXdDaGFuZ2UoJGV2ZW50LCAnaG91cnMnKVwiXG4gICAgKGtleWRvd24uc3BhY2UpPVwib25WaWV3Q2hhbmdlKCRldmVudCwgJ2hvdXJzJylcIlxuICA+XG4gICAge3sgX3dpdGhaZXJvUHJlZml4KHNlbGVjdGVkSG91cikgfX1cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIGNsYXNzPVwibWF0LWNsb2NrLWRpYWwtdmFsdWVcIlxuICAgIG1pbnV0ZXNcbiAgICBbY2xhc3MubWF0LWNsb2NrLWRpYWwtdmFsdWUtYWN0aXZlXT1cIiFpc0hvdXJzVmlld1wiXG4gICAgKGNsaWNrKT1cIm9uVmlld0NoYW5nZSgkZXZlbnQsICdtaW51dGVzJylcIlxuICAgIChrZXlkb3duLnNwYWNlKT1cIm9uVmlld0NoYW5nZSgkZXZlbnQsICdtaW51dGVzJylcIlxuICA+XG4gICAge3sgX3dpdGhaZXJvUHJlZml4KHNlbGVjdGVkTWludXRlKSB9fVxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgbWF0LXRpbWUtcGVyaW9kIFtuZ0lmXT1cImlzTWVyaWRpZW1cIj5cbiAgICA8bWF0LXRpbWUtcGVyaW9kXG4gICAgICBbcGVyaW9kXT1cInBlcmlvZFwiXG4gICAgICBbZGlzYWJsZWRQZXJpb2RdPVwiZGlzYWJsZWRQZXJpb2RcIlxuICAgICAgW3ZlcnRpY2FsXT1cIm9yaWVudGF0aW9uID09PSAndmVydGljYWwnXCJcbiAgICAgIChwZXJpb2RDaGFuZ2VkKT1cIl9vblBlcmlvZENoYW5nZWQoJGV2ZW50KVwiXG4gICAgPjwvbWF0LXRpbWUtcGVyaW9kPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cIm1hdC1jbG9jay1kaWFsLWZhY2VzXCJcbiAgICBbY2xhc3MubWF0LWNsb2NrLWRpYWwtZmFjZXMtaG9yaXpvbnRhbF09XCJvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnXCJcbiAgPlxuICAgIEBpZiAoaXNIb3Vyc1ZpZXcpIHtcbiAgICAgIDxtYXQtaG91cnMtY2xvY2stZGlhbFxuICAgICAgICBbQGVudGVyTGVhdmVBbmltYXRpb25dXG4gICAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICAgIFtzZWxlY3RlZEhvdXJdPVwic2VsZWN0ZWRIb3VyXCJcbiAgICAgICAgW2lzTWVyaWRpZW1dPVwiaXNNZXJpZGllbVwiXG4gICAgICAgIFthdmFpbGFibGVIb3Vyc109XCJfZ2V0QXZhaWxhYmxlSG91cnMoKVwiXG4gICAgICAgIFt0b3VjaFVpXT1cInRvdWNoVWlcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiX29uSG91ckNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duKT1cIl9vbktleWRvd24oJGV2ZW50LCAnaG91cicpXCJcbiAgICAgID48L21hdC1ob3Vycy1jbG9jay1kaWFsPlxuICAgIH1cblxuICAgIEBpZiAoIWlzSG91cnNWaWV3KSB7XG4gICAgICA8bWF0LW1pbnV0ZXMtY2xvY2stZGlhbFxuICAgICAgICBbQGVudGVyTGVhdmVBbmltYXRpb25dXG4gICAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICAgIFtzZWxlY3RlZE1pbnV0ZV09XCJzZWxlY3RlZE1pbnV0ZVwiXG4gICAgICAgIFtpbnRlcnZhbF09XCJtaW51dGVJbnRlcnZhbFwiXG4gICAgICAgIFthdmFpbGFibGVNaW51dGVzXT1cImF2YWlsYWJsZU1pbnV0ZXNcIlxuICAgICAgICBbdG91Y2hVaV09XCJ0b3VjaFVpXCJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cIl9vbk1pbnV0ZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bik9XCJfb25LZXlkb3duKCRldmVudCwgJ21pbnV0ZScpXCJcbiAgICAgID48L21hdC1taW51dGVzLWNsb2NrLWRpYWw+XG4gICAgfVxuICA8L2Rpdj5cbjwvbWF0LXRpbWVwaWNrZXItY29udGVudC1sYXlvdXQ+XG4iXX0=
|
|
@@ -8,18 +8,7 @@ export function withZeroPrefixMeridiem(value, isMeridiem) {
|
|
|
8
8
|
const newValue = isMeridiem && value === 0 ? 12 : value;
|
|
9
9
|
return withZeroPrefix(newValue);
|
|
10
10
|
}
|
|
11
|
-
const DIGIT_KEYS =
|
|
12
|
-
'Digit0',
|
|
13
|
-
'Digit1',
|
|
14
|
-
'Digit2',
|
|
15
|
-
'Digit3',
|
|
16
|
-
'Digit4',
|
|
17
|
-
'Digit5',
|
|
18
|
-
'Digit6',
|
|
19
|
-
'Digit7',
|
|
20
|
-
'Digit8',
|
|
21
|
-
'Digit9',
|
|
22
|
-
];
|
|
11
|
+
const DIGIT_KEYS = Array.from({ length: 10 }, (_, i) => `${i}`);
|
|
23
12
|
const SPECIAL_KEYS = ['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'];
|
|
24
13
|
export class MatTimeInputBase {
|
|
25
14
|
get value() {
|
|
@@ -36,7 +25,7 @@ export class MatTimeInputBase {
|
|
|
36
25
|
}, 0);
|
|
37
26
|
}
|
|
38
27
|
_keydown(event) {
|
|
39
|
-
const isAllow = (DIGIT_KEYS.includes(event.
|
|
28
|
+
const isAllow = (DIGIT_KEYS.includes(event.key) && !event.shiftKey) ||
|
|
40
29
|
SPECIAL_KEYS.includes(event.code);
|
|
41
30
|
if (!isAllow) {
|
|
42
31
|
event.preventDefault();
|
|
@@ -93,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
93
82
|
type: HostListener,
|
|
94
83
|
args: ['keydown', ['$event']]
|
|
95
84
|
}] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0LXRpbWVwaWNrZXIvc3JjL2xpYi90aW1lLWlucHV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBR1QsTUFBTSxFQUVOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQzs7QUFFdkIsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFhO0lBQzFDLE9BQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxLQUFhLEVBQ2IsVUFBbUI7SUFFbkIsTUFBTSxRQUFRLEdBQUcsVUFBVSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRXhELE9BQU8sY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sWUFBWSxHQUFHLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRy9FLE1BQU0sT0FBZ0IsZ0JBQWdCO0lBQ3BDLElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lB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S0FBSztzQkFEUixLQUFLO2dCQWdCSSxXQUFXO3NCQUFwQixNQUFNO2dCQUU4QixRQUFRO3NCQUE1QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgSW5qZWN0LFxuICBTZWxmLFxuICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFplcm9QcmVmaXgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZSA8IDEwID8gYDAke3ZhbHVlfWAgOiBgJHt2YWx1ZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFplcm9QcmVmaXhNZXJpZGllbShcbiAgdmFsdWU6IG51bWJlcixcbiAgaXNNZXJpZGllbTogYm9vbGVhbixcbik6IHN0cmluZyB7XG4gIGNvbnN0IG5ld1ZhbHVlID0gaXNNZXJpZGllbSAmJiB2YWx1ZSA9PT0gMCA/IDEyIDogdmFsdWU7XG5cbiAgcmV0dXJuIHdpdGhaZXJvUHJlZml4KG5ld1ZhbHVlKTtcbn1cblxuY29uc3QgRElHSVRfS0VZUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEwIH0sICAoXywgaSkgPT4gYCR7aX1gKTtcbmNvbnN0IFNQRUNJQUxfS0VZUyA9IFsnQmFja3NwYWNlJywgJ0RlbGV0ZScsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdUYWInXTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWF0VGltZUlucHV0QmFzZSB7XG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgaWYgKCF0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgIH1cbiAgICAvLyB3ZSBuZWVkIHRpbWVvdXQgaGVyZSB0byBzZXQgcGxhY2Vob2xkZXIgZmlyc3QgdGltZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRJbnB1dFBsYWNlaG9sZGVyKHRoaXMuX3ZhbHVlKTtcbiAgICB9LCAwKTtcbiAgfVxuICBwcml2YXRlIF92YWx1ZTogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSB0aW1lQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBfa2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGlzQWxsb3cgPVxuICAgICAgKERJR0lUX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSAmJiAhZXZlbnQuc2hpZnRLZXkpIHx8XG4gICAgICBTUEVDSUFMX0tFWVMuaW5jbHVkZXMoZXZlbnQuY29kZSk7XG5cbiAgICBpZiAoIWlzQWxsb3cpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlucHV0RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgfVxuXG4gIGdldCBoYXNGb2N1cygpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Py5uYXRpdmVFbGVtZW50ID09PSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICApIHt9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5zZXRJbnB1dFZhbHVlKG51bGwpO1xuICB9XG5cbiAgYmx1cigpIHtcbiAgICBjb25zdCBpc051bWJlciA9ICFpc05hTihOdW1iZXIodGhpcy5pbnB1dEVsZW1lbnQudmFsdWUpKTtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2Zvcm1hdFZhbHVlKFxuICAgICAgaXNOdW1iZXIgPyBOdW1iZXIodGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgfHwgdGhpcy5fdmFsdWUpIDogdGhpcy52YWx1ZSxcbiAgICApO1xuICAgIHRoaXMuc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5zZXRJbnB1dFBsYWNlaG9sZGVyKHZhbHVlKTtcbiAgICB0aGlzLnRpbWVDaGFuZ2VkLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgc2V0SW5wdXRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLl93aXRoWmVyb1ByZWZpeCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc2V0SW5wdXRQbGFjZWhvbGRlcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSB0aGlzLl93aXRoWmVyb1ByZWZpeCh2YWx1ZSk7XG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgYWJzdHJhY3QgX3dpdGhaZXJvUHJlZml4KHZhbHVlOiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgX2Zvcm1hdFZhbHVlKHZhbHVlOiBudW1iZXIpOiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@ import { MatFormFieldModule } from '@angular/material/form-field';
|
|
|
5
5
|
import { MatInputModule } from '@angular/material/input';
|
|
6
6
|
import { take } from 'rxjs';
|
|
7
7
|
import { MatTimeFaceBase } from './time-face-base';
|
|
8
|
-
import { MatTimeInputBase, withZeroPrefix, withZeroPrefixMeridiem } from './time-input-base';
|
|
8
|
+
import { MatTimeInputBase, withZeroPrefix, withZeroPrefixMeridiem, } from './time-input-base';
|
|
9
9
|
import { MatTimePeriod } from './time-period';
|
|
10
10
|
import { MatTimepickerContentLayout } from './timepicker-content-layout';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
@@ -149,13 +149,11 @@ export class MatTimeInputs extends MatTimeFaceBase {
|
|
|
149
149
|
focusActiveCell() {
|
|
150
150
|
this._ngZone.runOutsideAngular(() => {
|
|
151
151
|
this._ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
}
|
|
158
|
-
});
|
|
152
|
+
const activeCell = this._elementRef.nativeElement.querySelector('.mat-timepicker-content input');
|
|
153
|
+
if (activeCell && !this._skipNextTickFocus) {
|
|
154
|
+
activeCell.focus();
|
|
155
|
+
this._skipNextTickFocus = true;
|
|
156
|
+
}
|
|
159
157
|
});
|
|
160
158
|
});
|
|
161
159
|
}
|
|
@@ -178,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
178
176
|
}], ctorParameters: () => [{ type: i1.MatTimepickerIntl }, { type: i2.TimeAdapter, decorators: [{
|
|
179
177
|
type: Optional
|
|
180
178
|
}] }, { type: i0.NgZone }, { type: i0.ElementRef }] });
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnB1dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXQtdGltZXBpY2tlci9zcmMvbGliL3RpbWUtaW5wdXRzLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0LXRpbWVwaWNrZXIvc3JjL2xpYi90aW1lLWlucHV0cy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixTQUFTLEVBQ1QsS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFZekUsTUFBTSxPQUFPLFlBQWEsU0FBUSxnQkFBZ0I7SUFDaEQsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBZTtRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJ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QixHQUFHLElBQUksQ0FBQztxQkFDaEM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E5QlUsYUFBYTtrR0FBYixhQUFhLCtJQ3BMMUIsbTVDQWtEQSw0dkNEa0hJLFlBQVksa0lBQ1osa0JBQWtCLGlVQUNsQixjQUFjLDJXQUNkLDBCQUEwQixnSkFwSWpCLFlBQVksc0lBK0VaLGNBQWMsd0lBd0R2QixhQUFhOzsyRkFVSixhQUFhO2tCQXBCekIsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsMEJBQTBCO3dCQUMxQixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsYUFBYTtxQkFDZCxtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsaUJBQWlCO3FCQUN6Qjs7MEJBS0UsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9wdGlvbmFsLFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgSW5qZWN0LFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVGltZUFkYXB0ZXIgfSBmcm9tICcuL2FkYXB0ZXInO1xuaW1wb3J0IHsgTWF0VGltZUZhY2VCYXNlIH0gZnJvbSAnLi90aW1lLWZhY2UtYmFzZSc7XG5pbXBvcnQgeyBNYXRUaW1lcGlja2VySW50bCB9IGZyb20gJy4vdGltZXBpY2tlci1pbnRsJztcbmltcG9ydCB7IE1hdFRpbWVJbnB1dEJhc2UsIHdpdGhaZXJvUHJlZml4LCB3aXRoWmVyb1ByZWZpeE1lcmlkaWVtIH0gZnJvbSAnLi90aW1lLWlucHV0LWJhc2UnO1xuaW1wb3J0IHsgTWF0VGltZVBlcmlvZCB9IGZyb20gJy4vdGltZS1wZXJpb2QnO1xuaW1wb3J0IHsgTWF0VGltZXBpY2tlckNvbnRlbnRMYXlvdXQgfSBmcm9tICcuL3RpbWVwaWNrZXItY29udGVudC1sYXlvdXQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFttYXRIb3VySW5wdXRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZXhwb3J0QXM6ICdtYXRUaW1lSW5wdXQnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdtYXQtdGltZS1pbnB1dCcsXG4gICAgJyhmb2N1cyknOiAnZm9jdXMoJGV2ZW50KScsXG4gICAgJyhibHVyKSc6ICdibHVyKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXRIb3VySW5wdXQgZXh0ZW5kcyBNYXRUaW1lSW5wdXRCYXNlIHtcbiAgQElucHV0KClcbiAgZ2V0IGF2YWlsYWJsZUhvdXJzKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fYXZhaWxhYmxlSG91cnM7XG4gIH1cbiAgc2V0IGF2YWlsYWJsZUhvdXJzKHZhbHVlOiBudW1iZXJbXSkge1xuICAgIHRoaXMuX2F2YWlsYWJsZUhvdXJzID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfYXZhaWxhYmxlSG91cnM6IG51bWJlcltdID0gW107XG5cbiAgQElucHV0KCkgaXNNZXJpZGllbTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogRG9jdW1lbnQsXG4gICkge1xuICAgIHN1cGVyKGVsZW1lbnQsIF9jZHIsIF9kb2N1bWVudCk7XG4gIH1cblxuICBfd2l0aFplcm9QcmVmaXgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHdpdGhaZXJvUHJlZml4TWVyaWRpZW0odmFsdWUsIHRoaXMuaXNNZXJpZGllbSk7XG4gIH1cblxuICBfZm9ybWF0VmFsdWUoaG91cjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBnZXRWYWx1ZSA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzTWVyaWRpZW0pIHtcbiAgICAgICAgaWYgKGhvdXIgPT09IDAgfHwgaG91ciA9PT0gMjQpIHtcbiAgICAgICAgICByZXR1cm4gMTI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGhvdXIgPT09IDI0KSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5pc01lcmlkaWVtICYmIGhvdXIgPiAxMiA/IGhvdXIgLSAxMiA6IGhvdXI7XG4gICAgfTtcblxuICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWUoKTtcblxuICAgIGlmICh0aGlzLmlzTWVyaWRpZW0pIHtcbiAgICAgIGlmICghdGhpcy5hdmFpbGFibGVIb3Vycy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gMTIgJiYgdGhpcy5hdmFpbGFibGVIb3Vycy5pbmNsdWRlcygxMikpIHtcbiAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IDEyICYmICF0aGlzLmF2YWlsYWJsZUhvdXJzLmluY2x1ZGVzKDEyKSkge1xuICAgICAgICByZXR1cm4gTWF0aC5taW4oLi4udGhpcy5hdmFpbGFibGVIb3Vycyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA+PSAxICYmIHZhbHVlIDwgMTIpIHtcbiAgICAgICAgLy8gdGhlIGxhc3QgaXRlbSBpcyBtYXggYmVjdWFzZSAxMiBhdCB0aGUgYmVnaW5uaW5nIGlzIGtpbmRhIFwibWluXCJcbiAgICAgICAgY29uc3QgbWF4SG91ciA9IHRoaXMuYXZhaWxhYmxlSG91cnNbdGhpcy5hdmFpbGFibGVIb3Vycy5sZW5ndGggLSAxXTtcblxuICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgodmFsdWUsIE1hdGgubWluKC4uLnRoaXMuYXZhaWxhYmxlSG91cnMpKSwgbWF4SG91cik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgTWF0aC5tYXgodmFsdWUsIE1hdGgubWluKC4uLnRoaXMuYXZhaWxhYmxlSG91cnMpKSxcbiAgICAgIE1hdGgubWF4KC4uLnRoaXMuYXZhaWxhYmxlSG91cnMpLFxuICAgICk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbbWF0TWludXRlSW5wdXRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZXhwb3J0QXM6ICdtYXRUaW1lSW5wdXQnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdtYXQtdGltZS1pbnB1dCcsXG4gICAgJyhmb2N1cyknOiAnZm9jdXMoJGV2ZW50KScsXG4gICAgJyhibHVyKSc6ICdibHVyKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXRNaW51dGVJbnB1dCBleHRlbmRzIE1hdFRpbWVJbnB1dEJhc2Uge1xuICAvKiogU3RlcCBvdmVyIG1pbnV0ZXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCBpbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcnZhbDtcbiAgfVxuICBzZXQgaW50ZXJ2YWwodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2ludGVydmFsID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpIHx8IDE7XG4gIH1cbiAgcHJpdmF0ZSBfaW50ZXJ2YWw6IG51bWJlciA9IDE7XG5cbiAgQElucHV0KClcbiAgZ2V0IGF2YWlsYWJsZU1pbnV0ZXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9hdmFpbGFibGVNaW51dGVzO1xuICB9XG4gIHNldCBhdmFpbGFibGVNaW51dGVzKHZhbHVlOiBudW1iZXJbXSkge1xuICAgIHRoaXMuX2F2YWlsYWJsZU1pbnV0ZXMgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9hdmFpbGFibGVNaW51dGVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChET0NVTUVOVCkgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgX2NkciwgX2RvY3VtZW50KTtcbiAgfVxuXG4gIF93aXRoWmVyb1ByZWZpeCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gd2l0aFplcm9QcmVmaXgodmFsdWUpO1xuICB9XG5cbiAgX2Zvcm1hdFZhbHVlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5hdmFpbGFibGVNaW51dGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91bmRlZFZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSAvIHRoaXMuaW50ZXJ2YWwpICogdGhpcy5pbnRlcnZhbDtcblxuICAgIHJldHVybiBNYXRoLm1pbihcbiAgICAgIE1hdGgubWF4KHJvdW5kZWRWYWx1ZSwgTWF0aC5taW4oLi4udGhpcy5hdmFpbGFibGVNaW51dGVzKSksXG4gICAgICBNYXRoLm1heCguLi50aGlzLmF2YWlsYWJsZU1pbnV0ZXMpLFxuICAgICk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LXRpbWUtaW5wdXRzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0VGltZXBpY2tlckNvbnRlbnRMYXlvdXQsXG4gICAgTWF0SG91cklucHV0LFxuICAgIE1hdE1pbnV0ZUlucHV0LFxuICAgIE1hdFRpbWVQZXJpb2QsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLWlucHV0cy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1pbnB1dHMuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbWF0LXRpbWUtaW5wdXRzJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0VGltZUlucHV0czxUPiBleHRlbmRzIE1hdFRpbWVGYWNlQmFzZTxUPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfaW50bDogTWF0VGltZXBpY2tlckludGwsXG4gICAgQE9wdGlvbmFsKCkgX3RpbWVBZGFwdGVyOiBUaW1lQWRhcHRlcjxUPixcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApIHtcbiAgICBzdXBlcihfdGltZUFkYXB0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzaW5nIGZvciBza2lwcGluZyB0aGF0IGZvY3VzIHNob3VsZG4ndCBiZSBtb3ZlZCB0byB0aGUgYWN0aXZlIGNlbGwgb24gdGhlIG5leHQgdGljay5cbiAgICogV2UgbmVlZCB0byB1c2UgaXQgdG8gYXZvaWQgZm9jdXNpbmcgaW5wdXQgZm9yIGlucHV0IG1vZGUuXG4gICAqL1xuICBwcml2YXRlIF9za2lwTmV4dFRpY2tGb2N1cyA9IGZhbHNlO1xuXG4gIGZvY3VzQWN0aXZlQ2VsbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlQ2VsbDogSFRNTEVsZW1lbnQgfCBudWxsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAnLm1hdC10aW1lcGlja2VyLWNvbnRlbnQgaW5wdXQnLCAvLyB0byBhdm9pZCBmb2N1cyBmb3IgaW5saW5lIG1vZGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChhY3RpdmVDZWxsICYmICF0aGlzLl9za2lwTmV4dFRpY2tGb2N1cykge1xuICAgICAgICAgICAgYWN0aXZlQ2VsbC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5fc2tpcE5leHRUaWNrRm9jdXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPG1hdC10aW1lcGlja2VyLWNvbnRlbnQtbGF5b3V0IFt0aXRsZV09XCJfaW50bC5pbnB1dHNUaXRsZVwiPlxuICA8bWF0LWZvcm0tZmllbGRcbiAgICBjbGFzcz1cIm1hdC10aW1lLWlucHV0cy1maWVsZFwiXG4gICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxuICAgIGhvdXJzXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICBtYXhsZW5ndGg9XCIyXCJcbiAgICAgIG1hdElucHV0XG4gICAgICBtYXRIb3VySW5wdXRcbiAgICAgIFtpc01lcmlkaWVtXT1cImlzTWVyaWRpZW1cIlxuICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkSG91clwiXG4gICAgICBbYXZhaWxhYmxlSG91cnNdPVwiX2dldEF2YWlsYWJsZUhvdXJzKClcIlxuICAgICAgKHRpbWVDaGFuZ2VkKT1cIl9vbkhvdXJTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIChrZXlkb3duKT1cIl9vbktleWRvd24oJGV2ZW50LCAnaG91cicpXCJcbiAgICAvPlxuICAgIDxtYXQtaGludD57e19pbnRsLmhvdXJJbnB1dEhpbnR9fTwvbWF0LWhpbnQ+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgIGNsYXNzPVwibWF0LXRpbWUtaW5wdXRzLWZpZWxkXCJcbiAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXG4gICAgbWludXRlc1xuICAgIFtjb2xvcl09XCJjb2xvclwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICBtYXRJbnB1dFxuICAgICAgbWF0TWludXRlSW5wdXRcbiAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZE1pbnV0ZVwiXG4gICAgICBbaW50ZXJ2YWxdPVwibWludXRlSW50ZXJ2YWxcIlxuICAgICAgW2F2YWlsYWJsZU1pbnV0ZXNdPVwiYXZhaWxhYmxlTWludXRlc1wiXG4gICAgICAodGltZUNoYW5nZWQpPVwiX29uTWludXRlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bik9XCJfb25LZXlkb3duKCRldmVudCwgJ21pbnV0ZScpXCJcbiAgICAvPlxuICAgIDxtYXQtaGludD57e19pbnRsLm1pbnV0ZUlucHV0SGludH19PC9tYXQtaGludD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8bmctdGVtcGxhdGUgbWF0LXRpbWUtcGVyaW9kIFtuZ0lmXT1cImlzTWVyaWRpZW1cIj5cbiAgICA8bWF0LXRpbWUtcGVyaW9kXG4gICAgICBbcGVyaW9kXT1cInBlcmlvZFwiXG4gICAgICBbZGlzYWJsZWRQZXJpb2RdPVwiZGlzYWJsZWRQZXJpb2RcIlxuICAgICAgKHBlcmlvZENoYW5nZWQpPVwiX29uUGVyaW9kQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICA+PC9tYXQtdGltZS1wZXJpb2Q+XG4gIDwvbmctdGVtcGxhdGU+XG48L21hdC10aW1lcGlja2VyLWNvbnRlbnQtbGF5b3V0PlxuIl19
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnB1dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXQtdGltZXBpY2tlci9zcmMvbGliL3RpbWUtaW5wdXRzLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0LXRpbWVwaWNrZXIvc3JjL2xpYi90aW1lLWlucHV0cy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixTQUFTLEVBQ1QsS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsc0JBQXNCLEdBQ3ZCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQVl6RSxNQUFNLE9BQU8sWUFBYSxTQUFRLGdCQUFnQjtJQUNoRCxJQUNJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUFlO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFD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QUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTdCVSxhQUFhO2tHQUFiLGFBQWEsK0lDM0wxQixtNUNBa0RBLDR2Q0R5SEksWUFBWSxrSUFDWixrQkFBa0IsaVVBQ2xCLGNBQWMsMldBQ2QsMEJBQTBCLGdKQXZJakIsWUFBWSxzSUFrRlosY0FBYyx3SUF3RHZCLGFBQWE7OzJGQVVKLGFBQWE7a0JBcEJ6QixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCwwQkFBMEI7d0JBQzFCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxhQUFhO3FCQUNkLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSxpQkFBaUI7cUJBQ3pCOzswQkFLRSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgT3B0aW9uYWwsXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBJbmplY3QsXG4gIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUaW1lQWRhcHRlciB9IGZyb20gJy4vYWRhcHRlcic7XG5pbXBvcnQgeyBNYXRUaW1lRmFjZUJhc2UgfSBmcm9tICcuL3RpbWUtZmFjZS1iYXNlJztcbmltcG9ydCB7IE1hdFRpbWVwaWNrZXJJbnRsIH0gZnJvbSAnLi90aW1lcGlja2VyLWludGwnO1xuaW1wb3J0IHtcbiAgTWF0VGltZUlucHV0QmFzZSxcbiAgd2l0aFplcm9QcmVmaXgsXG4gIHdpdGhaZXJvUHJlZml4TWVyaWRpZW0sXG59IGZyb20gJy4vdGltZS1pbnB1dC1iYXNlJztcbmltcG9ydCB7IE1hdFRpbWVQZXJpb2QgfSBmcm9tICcuL3RpbWUtcGVyaW9kJztcbmltcG9ydCB7IE1hdFRpbWVwaWNrZXJDb250ZW50TGF5b3V0IH0gZnJvbSAnLi90aW1lcGlja2VyLWNvbnRlbnQtbGF5b3V0JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbbWF0SG91cklucHV0XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGV4cG9ydEFzOiAnbWF0VGltZUlucHV0JyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbWF0LXRpbWUtaW5wdXQnLFxuICAgICcoZm9jdXMpJzogJ2ZvY3VzKCRldmVudCknLFxuICAgICcoYmx1ciknOiAnYmx1cigkZXZlbnQpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0SG91cklucHV0IGV4dGVuZHMgTWF0VGltZUlucHV0QmFzZSB7XG4gIEBJbnB1dCgpXG4gIGdldCBhdmFpbGFibGVIb3VycygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUhvdXJzO1xuICB9XG4gIHNldCBhdmFpbGFibGVIb3Vycyh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICB0aGlzLl9hdmFpbGFibGVIb3VycyA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX2F2YWlsYWJsZUhvdXJzOiBudW1iZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGlzTWVyaWRpZW06IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PixcbiAgICBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICApIHtcbiAgICBzdXBlcihlbGVtZW50LCBfY2RyLCBfZG9jdW1lbnQpO1xuICB9XG5cbiAgX3dpdGhaZXJvUHJlZml4KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aXRoWmVyb1ByZWZpeE1lcmlkaWVtKHZhbHVlLCB0aGlzLmlzTWVyaWRpZW0pO1xuICB9XG5cbiAgX2Zvcm1hdFZhbHVlKGhvdXI6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgZ2V0VmFsdWUgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc01lcmlkaWVtKSB7XG4gICAgICAgIGlmIChob3VyID09PSAwIHx8IGhvdXIgPT09IDI0KSB7XG4gICAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChob3VyID09PSAyNCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuaXNNZXJpZGllbSAmJiBob3VyID4gMTIgPyBob3VyIC0gMTIgOiBob3VyO1xuICAgIH07XG5cbiAgICBjb25zdCB2YWx1ZSA9IGdldFZhbHVlKCk7XG5cbiAgICBpZiAodGhpcy5pc01lcmlkaWVtKSB7XG4gICAgICBpZiAoIXRoaXMuYXZhaWxhYmxlSG91cnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IDEyICYmIHRoaXMuYXZhaWxhYmxlSG91cnMuaW5jbHVkZXMoMTIpKSB7XG4gICAgICAgIHJldHVybiAxMjtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlID09PSAxMiAmJiAhdGhpcy5hdmFpbGFibGVIb3Vycy5pbmNsdWRlcygxMikpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKC4uLnRoaXMuYXZhaWxhYmxlSG91cnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPj0gMSAmJiB2YWx1ZSA8IDEyKSB7XG4gICAgICAgIC8vIHRoZSBsYXN0IGl0ZW0gaXMgbWF4IGJlY3Vhc2UgMTIgYXQgdGhlIGJlZ2lubmluZyBpcyBraW5kYSBcIm1pblwiXG4gICAgICAgIGNvbnN0IG1heEhvdXIgPSB0aGlzLmF2YWlsYWJsZUhvdXJzW3RoaXMuYXZhaWxhYmxlSG91cnMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgICAgIE1hdGgubWF4KHZhbHVlLCBNYXRoLm1pbiguLi50aGlzLmF2YWlsYWJsZUhvdXJzKSksXG4gICAgICAgICAgbWF4SG91cixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5taW4oXG4gICAgICBNYXRoLm1heCh2YWx1ZSwgTWF0aC5taW4oLi4udGhpcy5hdmFpbGFibGVIb3VycykpLFxuICAgICAgTWF0aC5tYXgoLi4udGhpcy5hdmFpbGFibGVIb3VycyksXG4gICAgKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFttYXRNaW51dGVJbnB1dF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBleHBvcnRBczogJ21hdFRpbWVJbnB1dCcsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ21hdC10aW1lLWlucHV0JyxcbiAgICAnKGZvY3VzKSc6ICdmb2N1cygkZXZlbnQpJyxcbiAgICAnKGJsdXIpJzogJ2JsdXIoJGV2ZW50KScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdE1pbnV0ZUlucHV0IGV4dGVuZHMgTWF0VGltZUlucHV0QmFzZSB7XG4gIC8qKiBTdGVwIG92ZXIgbWludXRlcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGludGVydmFsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVydmFsO1xuICB9XG4gIHNldCBpbnRlcnZhbCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5faW50ZXJ2YWwgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSkgfHwgMTtcbiAgfVxuICBwcml2YXRlIF9pbnRlcnZhbDogbnVtYmVyID0gMTtcblxuICBASW5wdXQoKVxuICBnZXQgYXZhaWxhYmxlTWludXRlcygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZU1pbnV0ZXM7XG4gIH1cbiAgc2V0IGF2YWlsYWJsZU1pbnV0ZXModmFsdWU6IG51bWJlcltdKSB7XG4gICAgdGhpcy5fYXZhaWxhYmxlTWludXRlcyA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX2F2YWlsYWJsZU1pbnV0ZXM6IG51bWJlcltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PixcbiAgICBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICApIHtcbiAgICBzdXBlcihlbGVtZW50LCBfY2RyLCBfZG9jdW1lbnQpO1xuICB9XG5cbiAgX3dpdGhaZXJvUHJlZml4KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aXRoWmVyb1ByZWZpeCh2YWx1ZSk7XG4gIH1cblxuICBfZm9ybWF0VmFsdWUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmF2YWlsYWJsZU1pbnV0ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCByb3VuZGVkVmFsdWUgPSBNYXRoLnJvdW5kKHZhbHVlIC8gdGhpcy5pbnRlcnZhbCkgKiB0aGlzLmludGVydmFsO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgTWF0aC5tYXgocm91bmRlZFZhbHVlLCBNYXRoLm1pbiguLi50aGlzLmF2YWlsYWJsZU1pbnV0ZXMpKSxcbiAgICAgIE1hdGgubWF4KC4uLnRoaXMuYXZhaWxhYmxlTWludXRlcyksXG4gICAgKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtdGltZS1pbnB1dHMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRUaW1lcGlja2VyQ29udGVudExheW91dCxcbiAgICBNYXRIb3VySW5wdXQsXG4gICAgTWF0TWludXRlSW5wdXQsXG4gICAgTWF0VGltZVBlcmlvZCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtaW5wdXRzLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lLWlucHV0cy5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdtYXQtdGltZS1pbnB1dHMnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXRUaW1lSW5wdXRzPFQ+IGV4dGVuZHMgTWF0VGltZUZhY2VCYXNlPFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIF9pbnRsOiBNYXRUaW1lcGlja2VySW50bCxcbiAgICBAT3B0aW9uYWwoKSBfdGltZUFkYXB0ZXI6IFRpbWVBZGFwdGVyPFQ+LFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICkge1xuICAgIHN1cGVyKF90aW1lQWRhcHRlcik7XG4gIH1cblxuICAvKipcbiAgICogVXNpbmcgZm9yIHNraXBwaW5nIHRoYXQgZm9jdXMgc2hvdWxkbid0IGJlIG1vdmVkIHRvIHRoZSBhY3RpdmUgY2VsbCBvbiB0aGUgbmV4dCB0aWNrLlxuICAgKiBXZSBuZWVkIHRvIHVzZSBpdCB0byBhdm9pZCBmb2N1c2luZyBpbnB1dCBmb3IgaW5wdXQgbW9kZS5cbiAgICovXG4gIHByaXZhdGUgX3NraXBOZXh0VGlja0ZvY3VzID0gZmFsc2U7XG5cbiAgZm9jdXNBY3RpdmVDZWxsKCk6IHZvaWQge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVDZWxsOiBIVE1MRWxlbWVudCB8IG51bGwgPVxuICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgJy5tYXQtdGltZXBpY2tlci1jb250ZW50IGlucHV0JywgLy8gdG8gYXZvaWQgZm9jdXMgZm9yIGlubGluZSBtb2RlXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKGFjdGl2ZUNlbGwgJiYgIXRoaXMuX3NraXBOZXh0VGlja0ZvY3VzKSB7XG4gICAgICAgICAgYWN0aXZlQ2VsbC5mb2N1cygpO1xuICAgICAgICAgIHRoaXMuX3NraXBOZXh0VGlja0ZvY3VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxtYXQtdGltZXBpY2tlci1jb250ZW50LWxheW91dCBbdGl0bGVdPVwiX2ludGwuaW5wdXRzVGl0bGVcIj5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgY2xhc3M9XCJtYXQtdGltZS1pbnB1dHMtZmllbGRcIlxuICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcbiAgICBob3Vyc1xuICAgIFtjb2xvcl09XCJjb2xvclwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICBtYXRJbnB1dFxuICAgICAgbWF0SG91cklucHV0XG4gICAgICBbaXNNZXJpZGllbV09XCJpc01lcmlkaWVtXCJcbiAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZEhvdXJcIlxuICAgICAgW2F2YWlsYWJsZUhvdXJzXT1cIl9nZXRBdmFpbGFibGVIb3VycygpXCJcbiAgICAgICh0aW1lQ2hhbmdlZCk9XCJfb25Ib3VyU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bik9XCJfb25LZXlkb3duKCRldmVudCwgJ2hvdXInKVwiXG4gICAgLz5cbiAgICA8bWF0LWhpbnQ+e3tfaW50bC5ob3VySW5wdXRIaW50fX08L21hdC1oaW50PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8bWF0LWZvcm0tZmllbGRcbiAgICBjbGFzcz1cIm1hdC10aW1lLWlucHV0cy1maWVsZFwiXG4gICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxuICAgIG1pbnV0ZXNcbiAgICBbY29sb3JdPVwiY29sb3JcIlxuICA+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgIG1heGxlbmd0aD1cIjJcIlxuICAgICAgbWF0SW5wdXRcbiAgICAgIG1hdE1pbnV0ZUlucHV0XG4gICAgICBbdmFsdWVdPVwic2VsZWN0ZWRNaW51dGVcIlxuICAgICAgW2ludGVydmFsXT1cIm1pbnV0ZUludGVydmFsXCJcbiAgICAgIFthdmFpbGFibGVNaW51dGVzXT1cImF2YWlsYWJsZU1pbnV0ZXNcIlxuICAgICAgKHRpbWVDaGFuZ2VkKT1cIl9vbk1pbnV0ZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwiX29uS2V5ZG93bigkZXZlbnQsICdtaW51dGUnKVwiXG4gICAgLz5cbiAgICA8bWF0LWhpbnQ+e3tfaW50bC5taW51dGVJbnB1dEhpbnR9fTwvbWF0LWhpbnQ+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG5nLXRlbXBsYXRlIG1hdC10aW1lLXBlcmlvZCBbbmdJZl09XCJpc01lcmlkaWVtXCI+XG4gICAgPG1hdC10aW1lLXBlcmlvZFxuICAgICAgW3BlcmlvZF09XCJwZXJpb2RcIlxuICAgICAgW2Rpc2FibGVkUGVyaW9kXT1cImRpc2FibGVkUGVyaW9kXCJcbiAgICAgIChwZXJpb2RDaGFuZ2VkKT1cIl9vblBlcmlvZENoYW5nZWQoJGV2ZW50KVwiXG4gICAgPjwvbWF0LXRpbWUtcGVyaW9kPlxuICA8L25nLXRlbXBsYXRlPlxuPC9tYXQtdGltZXBpY2tlci1jb250ZW50LWxheW91dD5cbiJdfQ==
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { Input, Directive, Inject, Output, EventEmitter, InjectionToken, Optional, booleanAttribute, } from '@angular/core';
|
|
1
|
+
import { Input, Directive, Inject, Output, EventEmitter, InjectionToken, Optional, booleanAttribute, inject, } from '@angular/core';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';
|
|
2
4
|
import { coerceBooleanProperty, coerceNumberProperty, } from '@angular/cdk/coercion';
|
|
3
5
|
import { FlexibleConnectedPositionStrategy, OverlayConfig, } from '@angular/cdk/overlay';
|
|
4
6
|
import { ComponentPortal, } from '@angular/cdk/portal';
|
|
5
7
|
import { DOWN_ARROW, ESCAPE, hasModifierKey, PAGE_DOWN, PAGE_UP, UP_ARROW, } from '@angular/cdk/keycodes';
|
|
6
|
-
import { filter, first, merge } from 'rxjs';
|
|
8
|
+
import { filter, first, merge, Subject, take } from 'rxjs';
|
|
7
9
|
import { MatTimepickerContent } from './timepicker-content';
|
|
8
10
|
import { MAT_TIMEPICKER_SCROLL_STRATEGY } from './timepicker-scroll-strategy';
|
|
9
11
|
import { MAT_DEFAULT_ACITONS } from './timepicker-actions-default';
|
|
@@ -34,6 +36,7 @@ export class MatTimepickerBase {
|
|
|
34
36
|
const newValue = coerceBooleanProperty(value);
|
|
35
37
|
if (newValue !== this._disabled) {
|
|
36
38
|
this._disabled = newValue;
|
|
39
|
+
this.stateChanges.next(undefined);
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
/** Whether the timepicker is open. */
|
|
@@ -130,14 +133,27 @@ export class MatTimepickerBase {
|
|
|
130
133
|
this.xPosition = 'start';
|
|
131
134
|
/** Preferred position of the timepicker in the Y axis. */
|
|
132
135
|
this.yPosition = 'below';
|
|
136
|
+
/**
|
|
137
|
+
* Whether to restore focus to the previously-focused element when the timepicker is closed.
|
|
138
|
+
* Note that automatic focus restoration is an accessibility feature and it is recommended that
|
|
139
|
+
* you provide your own equivalent, if you decide to turn it off.
|
|
140
|
+
*/
|
|
141
|
+
this.restoreFocus = true;
|
|
142
|
+
/** Emits when the timepicker has been opened. */
|
|
143
|
+
this.openedStream = new EventEmitter();
|
|
133
144
|
/** Emits when the timepicker has been closed. */
|
|
134
145
|
this.closedStream = new EventEmitter();
|
|
135
146
|
/** The id for the timepicker. */
|
|
136
147
|
this.id = `mat-timepicker-${timepickerUid++}`;
|
|
137
148
|
/** Portal with projected action buttons. */
|
|
138
149
|
this._actionsPortal = null;
|
|
150
|
+
/** Emits when the timepicker's state changes. */
|
|
151
|
+
this.stateChanges = new Subject();
|
|
139
152
|
/** Unique class that will be added to the backdrop so that the test harnesses can look it up. */
|
|
140
153
|
this._backdropHarnessClass = `${this.id}-backdrop`;
|
|
154
|
+
/** The element that was focused before the timepicker was opened. */
|
|
155
|
+
this._focusedElementBeforeOpen = null;
|
|
156
|
+
this._document = inject(DOCUMENT);
|
|
141
157
|
this._scrollStrategy = scrollStrategy;
|
|
142
158
|
if (_defaults) {
|
|
143
159
|
this.showToggleModeButton =
|
|
@@ -157,39 +173,66 @@ export class MatTimepickerBase {
|
|
|
157
173
|
}
|
|
158
174
|
}
|
|
159
175
|
}
|
|
176
|
+
this.stateChanges.next(undefined);
|
|
160
177
|
}
|
|
161
178
|
ngOnDestroy() {
|
|
162
179
|
this._destroyOverlay();
|
|
163
180
|
this.close();
|
|
181
|
+
this.stateChanges.complete();
|
|
164
182
|
}
|
|
165
183
|
/** Opens the timepicker. */
|
|
166
184
|
open() {
|
|
167
|
-
if (this._opened ||
|
|
185
|
+
if (this._opened ||
|
|
186
|
+
this.disabled ||
|
|
187
|
+
this._componentRef?.instance._isAnimating) {
|
|
168
188
|
return;
|
|
169
189
|
}
|
|
170
190
|
if (!this.timepickerInput) {
|
|
171
191
|
throw Error('Attempted to open an MatTimepicker with no associated input.');
|
|
172
192
|
}
|
|
193
|
+
this._focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();
|
|
173
194
|
this._openOverlay();
|
|
174
195
|
this._opened = true;
|
|
196
|
+
this.openedStream.emit();
|
|
175
197
|
}
|
|
176
198
|
/** Closes the timepicker. */
|
|
177
199
|
close() {
|
|
178
|
-
if (!this._opened) {
|
|
200
|
+
if (!this._opened || this._componentRef?.instance._isAnimating) {
|
|
179
201
|
return;
|
|
180
202
|
}
|
|
203
|
+
const canRestoreFocus = this.restoreFocus &&
|
|
204
|
+
this._focusedElementBeforeOpen &&
|
|
205
|
+
typeof this._focusedElementBeforeOpen.focus === 'function';
|
|
206
|
+
const completeClose = () => {
|
|
207
|
+
// The `_opened` could've been reset already if
|
|
208
|
+
// we got two events in quick succession.
|
|
209
|
+
if (this._opened) {
|
|
210
|
+
this._opened = false;
|
|
211
|
+
this.closedStream.emit();
|
|
212
|
+
}
|
|
213
|
+
};
|
|
181
214
|
if (this._componentRef) {
|
|
182
|
-
const instance = this._componentRef
|
|
183
|
-
instance.
|
|
184
|
-
instance._animationDone
|
|
185
|
-
.
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
215
|
+
const { instance, location } = this._componentRef;
|
|
216
|
+
instance._startExitAnimation();
|
|
217
|
+
instance._animationDone.pipe(take(1)).subscribe(() => {
|
|
218
|
+
const activeElement = this._document.activeElement;
|
|
219
|
+
// Since we restore focus after the exit animation, we have to check that
|
|
220
|
+
// the user didn't move focus themselves inside the `close` handler.
|
|
221
|
+
if (canRestoreFocus &&
|
|
222
|
+
(!activeElement ||
|
|
223
|
+
activeElement === this._document.activeElement ||
|
|
224
|
+
location.nativeElement.contains(activeElement))) {
|
|
225
|
+
this._focusedElementBeforeOpen.focus();
|
|
226
|
+
}
|
|
227
|
+
this._focusedElementBeforeOpen = null;
|
|
228
|
+
this._destroyOverlay();
|
|
229
|
+
});
|
|
230
|
+
if (canRestoreFocus) {
|
|
231
|
+
setTimeout(completeClose);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
completeClose();
|
|
235
|
+
}
|
|
193
236
|
}
|
|
194
237
|
}
|
|
195
238
|
/**
|
|
@@ -362,7 +405,7 @@ export class MatTimepickerBase {
|
|
|
362
405
|
})));
|
|
363
406
|
}
|
|
364
407
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MatTimepickerBase, deps: [{ token: i0.ViewContainerRef }, { token: i1.Overlay }, { token: i0.NgZone }, { token: MAT_TIMEPICKER_SCROLL_STRATEGY }, { token: MAT_DEFAULT_ACITONS }, { token: i2.MatTimeSelectionModel }, { token: MAT_TIMEPICKER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
365
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.9", type: MatTimepickerBase, inputs: { disabled: "disabled", opened: "opened", openAs: "openAs", color: "color", mode: "mode", format: "format", showToggleModeButton: "showToggleModeButton", minuteInterval: "minuteInterval", orientation: "orientation", touchUi: ["touchUi", "touchUi", booleanAttribute], xPosition: "xPosition", yPosition: "yPosition" }, outputs: { closedStream: "closed" }, usesOnChanges: true, ngImport: i0 }); }
|
|
408
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.9", type: MatTimepickerBase, inputs: { disabled: "disabled", opened: "opened", openAs: "openAs", color: "color", mode: "mode", format: "format", showToggleModeButton: "showToggleModeButton", minuteInterval: "minuteInterval", orientation: "orientation", touchUi: ["touchUi", "touchUi", booleanAttribute], xPosition: "xPosition", yPosition: "yPosition", restoreFocus: ["restoreFocus", "restoreFocus", booleanAttribute] }, outputs: { openedStream: "opened", closedStream: "closed" }, usesOnChanges: true, ngImport: i0 }); }
|
|
366
409
|
}
|
|
367
410
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MatTimepickerBase, decorators: [{
|
|
368
411
|
type: Directive
|
|
@@ -402,8 +445,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
402
445
|
type: Input
|
|
403
446
|
}], yPosition: [{
|
|
404
447
|
type: Input
|
|
448
|
+
}], restoreFocus: [{
|
|
449
|
+
type: Input,
|
|
450
|
+
args: [{ transform: booleanAttribute }]
|
|
451
|
+
}], openedStream: [{
|
|
452
|
+
type: Output,
|
|
453
|
+
args: ['opened']
|
|
405
454
|
}], closedStream: [{
|
|
406
455
|
type: Output,
|
|
407
456
|
args: ['closed']
|
|
408
457
|
}] } });
|
|
409
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0LXRpbWVwaWNrZXIvc3JjL2xpYi90aW1lcGlja2VyLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssRUFHTCxTQUFTLEVBRVQsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEVBSVosY0FBYyxFQUNkLFFBQVEsRUFDUixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVMLHFCQUFxQixFQUNyQixvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsaUNBQWlDLEVBRWpDLGFBQWEsR0FHZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxlQUFlLEdBR2hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxHQUNULE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBMkRuRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FDekMsSUFBSSxjQUFjLENBQ2hCLGdDQUFnQyxDQUNqQyxDQUFDO0FBRUosOENBQThDO0FBQzlDLE1BQU0sZUFBZSxHQUFxQixPQUFPLENBQUM7QUFFbEQsMkNBQTJDO0FBQzNDLE1BQU0sWUFBWSxHQUFtQixNQUFNLENBQUM7QUFFNUMsNkNB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QUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzs4R0EzY21CLGlCQUFpQiwrRkEwSzNCLDhCQUE4QixhQUM5QixtQkFBbUIsa0RBSW5CLDhCQUE4QjtrR0EvS3BCLGlCQUFpQixrUUErR2pCLGdCQUFnQjs7MkZBL0doQixpQkFBaUI7a0JBRHRDLFNBQVM7OzBCQTJLTCxNQUFNOzJCQUFDLDhCQUE4Qjs7MEJBQ3JDLE1BQU07MkJBQUMsbUJBQW1COzswQkFHMUIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyw4QkFBOEI7eUNBdktwQyxRQUFRO3NCQURYLEtBQUs7Z0JBaUJGLE1BQU07c0JBRFQsS0FBSztnQkFXRixNQUFNO3NCQURULEtBQUs7Z0JBV0YsS0FBSztzQkFEUixLQUFLO2dCQWlCRixJQUFJO3NCQURQLEtBQUs7Z0JBV0YsTUFBTTtzQkFEVCxLQUFLO2dCQVdGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFXRixjQUFjO3NCQURqQixLQUFLO2dCQVdGLFdBQVc7c0JBRGQsS0FBSztnQkFhRixPQUFPO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBZXRDLFNBQVM7c0JBRFIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBSXFCLFlBQVk7c0JBQXRDLE1BQU07dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElucHV0LFxuICBDb21wb25lbnRSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIERpcmVjdGl2ZSxcbiAgTmdab25lLFxuICBJbmplY3QsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGlvblRva2VuLFxuICBPcHRpb25hbCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIEJvb2xlYW5JbnB1dCxcbiAgY29lcmNlQm9vbGVhblByb3BlcnR5LFxuICBjb2VyY2VOdW1iZXJQcm9wZXJ0eSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheVJlZixcbiAgU2Nyb2xsU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gIENvbXBvbmVudFBvcnRhbCxcbiAgQ29tcG9uZW50VHlwZSxcbiAgVGVtcGxhdGVQb3J0YWwsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgRE9XTl9BUlJPVyxcbiAgRVNDQVBFLFxuICBoYXNNb2RpZmllcktleSxcbiAgUEFHRV9ET1dOLFxuICBQQUdFX1VQLFxuICBVUF9BUlJPVyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIG1lcmdlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1hdFRpbWVwaWNrZXJDb250ZW50IH0gZnJvbSAnLi90aW1lcGlja2VyLWNvbnRlbnQnO1xuaW1wb3J0IHsgTUFUX1RJTUVQSUNLRVJfU0NST0xMX1NUUkFURUdZIH0gZnJvbSAnLi90aW1lcGlja2VyLXNjcm9sbC1zdHJhdGVneSc7XG5pbXBvcnQge1xuICBFeHRyYWN0VGltZVR5cGVGcm9tU2VsZWN0aW9uLFxuICBNYXRUaW1lU2VsZWN0aW9uTW9kZWwsXG59IGZyb20gJy4vdGltZS1zZWxlY3Rpb24tbW9kZWwnO1xuaW1wb3J0IHsgTUFUX0RFRkFVTFRfQUNJVE9OUyB9IGZyb20gJy4vdGltZXBpY2tlci1hY3Rpb25zLWRlZmF1bHQnO1xuaW1wb3J0IHsgVGltZXBpY2tlck9yaWVudGF0aW9uIH0gZnJvbSAnLi9vcmllbnRhdGlvbic7XG5cbi8qKiBQb3NzaWJsZSBvcHRpb25zIGZvciB0aGUgdGltZXBpY2tlciB0byBvcGVuLiAqL1xuZXhwb3J0IHR5cGUgVGltZXBpY2tlck9wZW5BcyA9ICdkaWFsb2cnIHwgJ3BvcHVwJztcblxuLyoqIFBvc3NpYmxlIHBvc2l0aW9ucyBmb3IgdGhlIHRpbWVwaWNrZXIgZHJvcGRvd24gYWxvbmcgdGhlIFggYXhpcy4gKi9cbmV4cG9ydCB0eXBlIFRpbWVwaWNrZXJEcm9wZG93blBvc2l0aW9uWCA9ICdzdGFydCcgfCAnZW5kJztcblxuLyoqIFBvc3NpYmxlIHBvc2l0aW9ucyBmb3IgdGhlIHRpbWVwaWNrZXIgZHJvcGRvd24gYWxvbmcgdGhlIFkgYXhpcy4gKi9cbmV4cG9ydCB0eXBlIFRpbWVwaWNrZXJEcm9wZG93blBvc2l0aW9uWSA9ICdhYm92ZScgfCAnYmVsb3cnO1xuXG4vKiogUG9zc2libGUgb3B0aW9ucyBmb3IgdGhlIHRpbWVwaWNrZXIgdG8gZGlzcGxheS4gKi9cbmV4cG9ydCB0eXBlIFRpbWVwaWNrZXJNb2RlID0gJ2lucHV0JyB8ICdkaWFsJztcblxuLyoqIFBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoZSB0aW1lcGlja2VyIHBlcmlvZCBmb3JtYXQuICovXG5leHBvcnQgdHlwZSBUaW1lcGlja2VyRm9ybWF0ID0gJzEyaCcgfCAnMjRoJztcblxuLyoqIEZvcm0gY29udHJvbCB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSB0aW1lcGlja2VyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRUaW1lcGlja2VyQ29udHJvbDxUPiB7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBtaW46IFQgfCBudWxsO1xuICBtYXg6IFQgfCBudWxsO1xuICBnZXRUaGVtZVBhbGV0dGUoKTogVGhlbWVQYWxldHRlO1xuICBnZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCk6IEVsZW1lbnRSZWY7XG4gIGdldE92ZXJsYXlMYWJlbElkKCk6IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKiBBIHRpbWVwaWNrZXIgdGhhdCBjYW4gYmUgYXR0YWNoZWQgdG8gYSB7QGxpbmsgTWF0VGltZXBpY2tlckNvbnRyb2x9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRUaW1lcGlja2VyUGFuZWw8XG4gIEMgZXh0ZW5kcyBNYXRUaW1lcGlja2VyQ29udHJvbDxUPixcbiAgUyxcbiAgVCA9IEV4dHJhY3RUaW1lVHlwZUZyb21TZWxlY3Rpb248Uz5cbj4ge1xuICAvKiogUmVnaXN0ZXIgYW4gaW5wdXQgd2l0aCB0aGUgdGltZWVwaWNrZXIuICovXG4gIHJlZ2lzdGVySW5wdXQoaW5wdXQ6IEMpOiBNYXRUaW1lU2VsZWN0aW9uTW9kZWw8UywgVD47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgZm9ybSBmaWVsZCB0aGF0IGNhbiBiZSBjb25maWd1cmVkXG4gKiB1c2luZyB0aGUgYE1BVF9USU1FUElDS0VSX0RFRkFVTFRfT1BUSU9OU2AgaW5qZWN0aW9uIHRva2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdFRpbWVwaWNrZXJEZWZhdWx0T3B0aW9ucyB7XG4gIC8qKiBEZWZhdWx0IGNvbG9yIG9mIHRoZSB0aW1lcGlja2VyLiAqL1xuICBjb2xvcj86IFRoZW1lUGFsZXR0ZTtcbiAgLyoqIERlZmF1bHQgdGltZXBpY2tlciBtb2RlLiAqL1xuICBtb2RlOiBUaW1lcGlja2VyTW9kZTtcbiAgLyoqIERlZmluZXMgaG93IHRpbWVwaWNrZXIgd2lsbCBiZSBhcHBlYXJlZC4gKi9cbiAgb3BlbkFzOiBUaW1lcGlja2VyT3BlbkFzO1xuICAvKiogRGVmYXVsdCB0aW1lcGlja2VyIGZvcm1hdC4gKi9cbiAgZm9ybWF0OiBUaW1lcGlja2VyRm9ybWF0O1xuICAvKiogU2hvdWxkIHRvZ2dsZSBmYWNlIGJ1dHRvbiBiZSB2aXNpYmxlLiAqL1xuICBzaG93VG9nZ2xlTW9kZUJ1dHRvbjogYm9vbGVhbjtcbiAgLyoqIFN0ZXAgZm9yIG1pbnV0ZXMuICovXG4gIG1pbnV0ZUludGVydmFsOiBudW1iZXI7XG4gIC8qKiBPcmllbnRhdGlvbiBmb3IgZGlhbCBtb2RlLiAqL1xuICBvcmllbnRhdGlvbjogVGltZXBpY2tlck9yaWVudGF0aW9uO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGVcbiAqIGRlZmF1bHQgb3B0aW9ucyBmb3IgYWxsIHRpbWVwaWNrZXJzIHdpdGhpbiBhbiBhcHAuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVRfVElNRVBJQ0tFUl9ERUZBVUxUX09QVElPTlMgPVxuICBuZXcgSW5qZWN0aW9uVG9rZW48TWF0VGltZXBpY2tlckRlZmF1bHRPcHRpb25zPihcbiAgICAnTUFUX1RJTUVQSUNLRVJfREVGQVVMVF9PUFRJT05TJ1xuICApO1xuXG4vKiogRGVmYXVsdCBvcGVuIGFzIHVzZWQgYnkgdGhlIHRpbWVwaWNrZXIuICovXG5jb25zdCBERUZBVUxUX09QRU5fQVM6IFRpbWVwaWNrZXJPcGVuQXMgPSAncG9wdXAnO1xuXG4vKiogRGVmYXVsdCBtb2RlIHVzZWQgYnkgdGhlIHRpbWVwaWNrZXIuICovXG5jb25zdCBERUZBVUxUX01PREU6IFRpbWVwaWNrZXJNb2RlID0gJ2RpYWwnO1xuXG4vKiogRGVmYXVsdCBmb3JtYXQgdXNlZCBieSB0aGUgdGltZXBpY2tlci4gKi9cbmNvbnN0IERFRkFVTFRfRk9STUFUOiBUaW1lcGlja2VyRm9ybWF0ID0gJzEyaCc7XG5cbi8qKiBVc2VkIHRvIGdlbmVyYXRlIGEgdW5pcXVlIElEIGZvciBlYWNoIHRpbWVwaWNrZXIgaW5zdGFuY2UuICovXG5sZXQgdGltZXBpY2tlclVpZCA9IDA7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1hdFRpbWVwaWNrZXJCYXNlPFxuICBDIGV4dGVuZHMgTWF0VGltZXBpY2tlckNvbnRyb2w8VD4sXG4gIFMsXG4gIFQgPSBFeHRyYWN0VGltZVR5cGVGcm9tU2VsZWN0aW9uPFM+XG4+IGltcGxlbWVudHMgT25DaGFuZ2VzXG57XG4gIC8qKiBXaGV0aGVyIHRoZSB0aW1lcGlja2VyIHBvcC11cCBzaG91bGQgYmUgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnRpbWVwaWNrZXJJbnB1dFxuICAgICAgPyB0aGlzLnRpbWVwaWNrZXJJbnB1dC5kaXNhYmxlZFxuICAgICAgOiAhIXRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHRpbWVwaWNrZXIgaXMgb3Blbi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG9wZW5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbmVkO1xuICB9XG4gIHNldCBvcGVuZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkgPyB0aGlzLm9wZW4oKSA6IHRoaXMuY2xvc2UoKTtcbiAgfVxuICBwcml2YXRlIF9vcGVuZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgdGltZXBpY2tlciBtb2RlIHdoaWNoIGRldGVybWluZXMgd2hhdCB0aGUgdGltZXBpY2tlciB3aWxsIGJlIG9wZW5lZCBhcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG9wZW5BcygpOiBUaW1lcGlja2VyT3BlbkFzIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbkFzIHx8IHRoaXMuX2RlZmF1bHRzPy5vcGVuQXMgfHwgREVGQVVMVF9PUEVOX0FTO1xuICB9XG4gIHNldCBvcGVuQXModmFsdWU6IFRpbWVwaWNrZXJPcGVuQXMpIHtcbiAgICB0aGlzLl9vcGVuQXMgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9vcGVuQXM6IFRpbWVwaWNrZXJPcGVuQXM7XG5cbiAgLyoqIENvbG9yIHBhbGV0dGUgdG8gdXNlIG9uIHRoZSB0aW1lcGlja2VyJ3MgY29udGVudC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGNvbG9yKCk6IFRoZW1lUGFsZXR0ZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX2NvbG9yIHx8XG4gICAgICB0aGlzLl9kZWZhdWx0cz8uY29sb3IgfHxcbiAgICAgICh0aGlzLnRpbWVwaWNrZXJJbnB1dFxuICAgICAgICA/IHRoaXMudGltZXBpY2tlcklucHV0LmdldFRoZW1lUGFsZXR0ZSgpXG4gICAgICAgIDogdW5kZWZpbmVkKVxuICAgICk7XG4gIH1cbiAgc2V0IGNvbG9yKHZhbHVlOiBUaGVtZVBhbGV0dGUpIHtcbiAgICB0aGlzLl9jb2xvciA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX2NvbG9yOiBUaGVtZVBhbGV0dGU7XG5cbiAgLyoqIFRpbWVwaWNrZXIgZGlzcGxheSBtb2RlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbW9kZSgpOiBUaW1lcGlja2VyTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGUgfHwgdGhpcy5fZGVmYXVsdHM/Lm1vZGUgfHwgREVGQVVMVF9NT0RFO1xuICB9XG4gIHNldCBtb2RlKHZhbHVlOiBUaW1lcGlja2VyTW9kZSkge1xuICAgIHRoaXMuX21vZGUgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9tb2RlOiBUaW1lcGlja2VyTW9kZTtcblxuICAvKiogVGltZXBpY2tlciBwZXJpb2QgZm9ybWF0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgZm9ybWF0KCk6IFRpbWVwaWNrZXJGb3JtYXQge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXQgfHwgdGhpcy5fZGVmYXVsdHM/LmZvcm1hdCB8fCBERUZBVUxUX0ZPUk1BVDtcbiAgfVxuICBzZXQgZm9ybWF0KHZhbHVlOiBUaW1lcGlja2VyRm9ybWF0KSB7XG4gICAgdGhpcy5fZm9ybWF0ID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfZm9ybWF0OiBUaW1lcGlja2VyRm9ybWF0O1xuXG4gIC8qKiBTaG93IG9yIGhpZGUgdG9nZ2xlIGJ1dHRvbiBiZXR3ZWVuIGRpYWwgYW5kIGlucHV0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2hvd1RvZ2dsZU1vZGVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dUb2dnbGVNb2RlQnV0dG9uO1xuICB9XG4gIHNldCBzaG93VG9nZ2xlTW9kZUJ1dHRvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dUb2dnbGVNb2RlQnV0dG9uID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfc2hvd1RvZ2dsZU1vZGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBTdGVwIGZvciBtaW51dGVzLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbWludXRlSW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWludXRlSW50ZXJ2YWwgfHwgdGhpcy5fZGVmYXVsdHM/Lm1pbnV0ZUludGVydmFsIHx8IDE7XG4gIH1cbiAgc2V0IG1pbnV0ZUludGVydmFsKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9taW51dGVJbnRlcnZhbCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9taW51dGVJbnRlcnZhbDogbnVtYmVyO1xuXG4gIC8qKiBPcmllbnRhdGlvbiBmb3IgZGlhbCBtb2RlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgb3JpZW50YXRpb24oKTogVGltZXBpY2tlck9yaWVudGF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fb3JpZW50YXRpb24gfHwgdGhpcy5fZGVmYXVsdHM/Lm9yaWVudGF0aW9uIHx8ICd2ZXJ0aWNhbCc7XG4gIH1cbiAgc2V0IG9yaWVudGF0aW9uKHZhbHVlOiBUaW1lcGlja2VyT3JpZW50YXRpb24pIHtcbiAgICB0aGlzLl9vcmllbnRhdGlvbiA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX29yaWVudGF0aW9uOiBUaW1lcGlja2VyT3JpZW50YXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRpbWVwaWNrZXIgVUkgaXMgaW4gdG91Y2ggbW9kZS4gSW4gdG91Y2ggbW9kZSBlbGVtZW50cyBhcmUgbGFyZ2VyIGZvciBiaWdnZXIgdG91Y2ggdGFyZ2V0cy5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBnZXQgdG91Y2hVaSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdG91Y2hVaTtcbiAgfVxuICBzZXQgdG91Y2hVaSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3RvdWNoVWkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLm9wZW5BcyA9ICdkaWFsb2cnO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF90b3VjaFVpOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFByZWZlcnJlZCBwb3NpdGlvbiBvZiB0aGUgdGltZXBpY2tlciBpbiB0aGUgWCBheGlzLiAqL1xuICBASW5wdXQoKVxuICB4UG9zaXRpb246IFRpbWVwaWNrZXJEcm9wZG93blBvc2l0aW9uWCA9ICdzdGFydCc7XG5cbiAgLyoqIFByZWZlcnJlZCBwb3NpdGlvbiBvZiB0aGUgdGltZXBpY2tlciBpbiB0aGUgWSBheGlzLiAqL1xuICBASW5wdXQoKVxuICB5UG9zaXRpb246IFRpbWVwaWNrZXJEcm9wZG93blBvc2l0aW9uWSA9ICdiZWxvdyc7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIHRpbWVwaWNrZXIgaGFzIGJlZW4gY2xvc2VkLiAqL1xuICBAT3V0cHV0KCdjbG9zZWQnKSByZWFkb25seSBjbG9zZWRTdHJlYW0gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIFRoZSBpZCBmb3IgdGhlIHRpbWVwaWNrZXIuICovXG4gIGlkOiBzdHJpbmcgPSBgbWF0LXRpbWVwaWNrZXItJHt0aW1lcGlja2VyVWlkKyt9YDtcblxuICAvKiogVGhlIGlucHV0IGVsZW1lbnQgdGhpcyB0aW1lcGlja2VyIGlzIGFzc29jaWF0ZWQgd2l0aC4gKi9cbiAgdGltZXBpY2tlcklucHV0ITogQztcblxuICAvKiogUG9ydGFsIHdpdGggcHJvamVjdGVkIGFjdGlvbiBidXR0b25zLiAqL1xuICBfYWN0aW9uc1BvcnRhbDogVGVtcGxhdGVQb3J0YWwgfCBudWxsID0gbnVsbDtcblxuICAvKiogQSByZWZlcmVuY2UgdG8gdGhlIG92ZXJsYXkgaW50byB3aGljaCB3ZSd2ZSByZW5kZXJlZCB0aGUgdGltZXBpY2tlci4gKi9cbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGw7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIHRoZSBvdmVybGF5LiAqL1xuICBwcml2YXRlIF9jb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8TWF0VGltZXBpY2tlckNvbnRlbnQ8UywgVD4+IHwgbnVsbDtcblxuICAvKiogVW5pcXVlIGNsYXNzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYmFja2Ryb3Agc28gdGhhdCB0aGUgdGVzdCBoYXJuZXNzZXMgY2FuIGxvb2sgaXQgdXAuICovXG4gIHByaXZhdGUgX2JhY2tkcm9wSGFybmVzc0NsYXNzID0gYCR7dGhpcy5pZH0tYmFja2Ryb3BgO1xuXG4gIC8qKiBTY3JvbGwgc3RyYXRlZ3kuICovXG4gIHByaXZhdGUgX3Njcm9sbFN0cmF0ZWd5OiAoKSA9PiBTY3JvbGxTdHJhdGVneTtcblxuICAvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSB0aW1lLiAqL1xuICBfZ2V0TWluVGltZSgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudGltZXBpY2tlcklucHV0ICYmIHRoaXMudGltZXBpY2tlcklucHV0Lm1pbjtcbiAgfVxuXG4gIC8qKiBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIHRpbWUuICovXG4gIF9nZXRNYXhUaW1lKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy50aW1lcGlja2VySW5wdXQgJiYgdGhpcy50aW1lcGlja2VySW5wdXQubWF4O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIEBJbmplY3QoTUFUX1RJTUVQSUNLRVJfU0NST0xMX1NUUkFURUdZKSBzY3JvbGxTdHJhdGVneTogYW55LFxuICAgIEBJbmplY3QoTUFUX0RFRkFVTFRfQUNJVE9OUylcbiAgICBwcml2YXRlIF9kZWZhdWx0QWN0aW9uc0NvbXBvbmVudDogQ29tcG9uZW50VHlwZTxhbnk+LFxuICAgIHByaXZhdGUgX21vZGVsOiBNYXRUaW1lU2VsZWN0aW9uTW9kZWw8UywgVD4sXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE1BVF9USU1FUElDS0VSX0RFRkFVTFRfT1BUSU9OUylcbiAgICBwcml2YXRlIF9kZWZhdWx0cz86IE1hdFRpbWVwaWNrZXJEZWZhdWx0T3B0aW9uc1xuICApIHtcbiAgICB0aGlzLl9zY3JvbGxTdHJhdGVneSA9IHNjcm9sbFN0cmF0ZWd5O1xuXG4gICAgaWYgKF9kZWZhdWx0cykge1xuICAgICAgdGhpcy5zaG93VG9nZ2xlTW9kZUJ1dHRvbiA9XG4gICAgICAgIF9kZWZhdWx0cy5zaG93VG9nZ2xlTW9kZUJ1dHRvbiAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBfZGVmYXVsdHMuc2hvd1RvZ2dsZU1vZGVCdXR0b25cbiAgICAgICAgICA6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IHBvc2l0aW9uQ2hhbmdlID0gY2hhbmdlc1sneFBvc2l0aW9uJ10gfHwgY2hhbmdlc1sneVBvc2l0aW9uJ107XG5cbiAgICBpZiAocG9zaXRpb25DaGFuZ2UgJiYgIXBvc2l0aW9uQ2hhbmdlLmZpcnN0Q2hhbmdlICYmIHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLnBvc2l0aW9uU3RyYXRlZ3k7XG5cbiAgICAgIGlmIChwb3NpdGlvblN0cmF0ZWd5IGluc3RhbmNlb2YgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KSB7XG4gICAgICAgIHRoaXMuX3NldENvbm5lY3RlZFBvc2l0aW9ucyhwb3NpdGlvblN0cmF0ZWd5KTtcblxuICAgICAgICBpZiAodGhpcy5vcGVuZWQpIHtcbiAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKiBPcGVucyB0aGUgdGltZXBpY2tlci4gKi9cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3BlbmVkIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudGltZXBpY2tlcklucHV0KSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0F0dGVtcHRlZCB0byBvcGVuIGFuIE1hdFRpbWVwaWNrZXIgd2l0aCBubyBhc3NvY2lhdGVkIGlucHV0LidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fb3Blbk92ZXJsYXkoKTtcbiAgICB0aGlzLl9vcGVuZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgdGltZXBpY2tlci4gKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9vcGVuZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgIGluc3RhbmNlLnN0YXJ0RXhpdEFuaW1hdGlvbigpO1xuICAgICAgaW5zdGFuY2UuX2FuaW1hdGlvbkRvbmVcbiAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kZXN0cm95T3ZlcmxheSgpKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgYF9vcGVuZWRgIGNvdWxkJ3ZlIGJlZW4gcmVzZXQgYWxyZWFkeSBpZlxuICAgIC8vIHdlIGdvdCB0d28gZXZlbnRzIGluIHF1aWNrIHN1Y2Nlc3Npb24uXG4gICAgaWYgKHRoaXMuX29wZW5lZCkge1xuICAgICAgdGhpcy5fb3BlbmVkID0gZmFsc2U7XG4gICAgICB0aGlzLmNsb3NlZFN0cmVhbS5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGlucHV0IHdpdGggdGhpcyB0aW1lcGlja2VyLlxuICAgKiBAcGFyYW0gaW5wdXQgVGhlIHRpbWVwaWNrZXIgaW5wdXQgdG8gcmVnaXN0ZXIgd2l0aCB0aGlzIHRpbWVwaWNrZXIuXG4gICAqIEByZXR1cm5zIFNlbGVjdGlvbiBtb2RlbCB0aGF0IHRoZSBpbnB1dCBzaG91bGQgaG9vayBpdHNlbGYgdXAgdG8uXG4gICAqL1xuICByZWdpc3RlcklucHV0KGlucHV0OiBDKTogTWF0VGltZVNlbGVjdGlvbk1vZGVsPFMsIFQ+IHtcbiAgICBpZiAodGhpcy50aW1lcGlja2VySW5wdXQpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnQSBNYXRUaW1lcGlja2VyIGNhbiBvbmx5IGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBpbnB1dC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudGltZXBpY2tlcklucHV0ID0gaW5wdXQ7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHBvcnRhbCBjb250YWluaW5nIGFjdGlvbiBidXR0b25zIHdpdGggdGhlIHRpbWVwaWNrZXIuXG4gICAqIEBwYXJhbSBwb3J0YWwgUG9ydGFsIHRvIGJlIHJlZ2lzdGVyZWQuXG4gICAqL1xuICByZWdpc3RlckFjdGlvbnMocG9ydGFsOiBUZW1wbGF0ZVBvcnRhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hY3Rpb25zUG9ydGFsKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0EgTWF0VGltZXBpY2tlciBjYW4gb25seSBiZSBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgYWN0aW9ucyByb3cuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aW9uc1BvcnRhbCA9IHBvcnRhbDtcbiAgICB0aGlzLl9jb21wb25lbnRSZWY/Lmluc3RhbmNlLl9hc3NpZ25BY3Rpb25zKHBvcnRhbCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHBvcnRhbCBjb250YWluaW5nIGFjdGlvbiBidXR0b25zIGZyb20gdGhlIHRpbWVwaWNrZXIuXG4gICAqIEBwYXJhbSBwb3J0YWwgUG9ydGFsIHRvIGJlIHJlbW92ZWQuXG4gICAqL1xuICByZW1vdmVBY3Rpb25zKHBvcnRhbDogVGVtcGxhdGVQb3J0YWwpOiB2b2lkIHtcbiAgICBpZiAocG9ydGFsID09PSB0aGlzLl9hY3Rpb25zUG9ydGFsKSB7XG4gICAgICB0aGlzLl9hY3Rpb25zUG9ydGFsID0gbnVsbDtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZj8uaW5zdGFuY2UuX2Fzc2lnbkFjdGlvbnMobnVsbCwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEFwcGxpZXMgdGhlIGN1cnJlbnQgcGVuZGluZyBzZWxlY3Rpb24gb24gdGhlIG92ZXJsYXkgdG8gdGhlIG1vZGVsLiAqL1xuICBfYXBwbHlQZW5kaW5nU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZj8uaW5zdGFuY2U/Ll9hcHBseVBlbmRpbmdTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIC8qKiBGb3J3YXJkcyByZWxldmFudCB2YWx1ZXMgZnJvbSB0aGUgdGltZXBpY2tlciB0byB0aGUgdGltZXBpY2tlciBjb250ZW50IGluc2lkZSB0aGUgb3ZlcmxheS4gKi9cbiAgcHJvdGVjdGVkIF9mb3J3YXJkQ29udGVudFZhbHVlcyhpbnN0YW5jZTogTWF0VGltZXBpY2tlckNvbnRlbnQ8UywgVD4pOiB2b2lkIHtcbiAgICBjb25zdCBkZWZhdWx0UG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLl9kZWZhdWx0QWN0aW9uc0NvbXBvbmVudCk7XG5cbiAgICBpbnN0YW5jZS50aW1lcGlja2VyID0gdGhpcztcbiAgICBpbnN0YW5jZS5jb2xvciA9IHRoaXMuY29sb3I7XG4gICAgaW5zdGFuY2UubW9kZSA9IHRoaXMubW9kZTtcbiAgICBpbnN0YW5jZS5pc01lcmlkaWVtID0gdGhpcy5mb3JtYXQgPT09ICcxMmgnO1xuICAgIGluc3RhbmNlLnNob3dUb2dnbGVNb2RlQnV0dG9uID0gdGhpcy5zaG93VG9nZ2xlTW9kZUJ1dHRvbjtcbiAgICBpbnN0YW5jZS5taW51dGVJbnRlcnZhbCA9IHRoaXMubWludXRlSW50ZXJ2YWw7XG4gICAgaW5zdGFuY2Uub3JpZW50YXRpb24gPSB0aGlzLm9yaWVudGF0aW9uO1xuICAgIGluc3RhbmNlLl9kaWFsb2dMYWJlbElkID0gdGhpcy50aW1lcGlja2VySW5wdXQuZ2V0T3ZlcmxheUxhYmVsSWQoKTtcbiAgICBpbnN0YW5jZS5fYXNzaWduQWN0aW9ucyh0aGlzLl9hY3Rpb25zUG9ydGFsIHx8IGRlZmF1bHRQb3J0YWwsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKiBPcGVucyB0aGUgb3ZlcmxheSB3aXRoIHRoZSB0aW1lcGlja2VyLiAqL1xuICBwcml2YXRlIF9vcGVuT3ZlcmxheSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuXG4gICAgY29uc3QgaXNEaWFsb2cgPSB0aGlzLm9wZW5BcyA9PT0gJ2RpYWxvZyc7XG4gICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbDxNYXRUaW1lcGlja2VyQ29udGVudDxTLCBUPj4oXG4gICAgICBNYXRUaW1lcGlja2VyQ29udGVudCxcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWZcbiAgICApO1xuXG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9ICh0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IGlzRGlhbG9nXG4gICAgICAgICAgPyB0aGlzLl9nZXREaWFsb2dTdHJhdGVneSgpXG4gICAgICAgICAgOiB0aGlzLl9nZXREcm9wZG93blN0cmF0ZWd5KCksXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBiYWNrZHJvcENsYXNzOiBbXG4gICAgICAgICAgaXNEaWFsb2dcbiAgICAgICAgICAgID8gJ2Nkay1vdmVybGF5LWRhcmstYmFja2Ryb3AnXG4gICAgICAgICAgICA6ICdtYXQtb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICAgICAgdGhpcy5fYmFja2Ryb3BIYXJuZXNzQ2xhc3MsXG4gICAgICAgIF0sXG4gICAgICAgIGRpcmVjdGlvbjogJ2x0cicsXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBpc0RpYWxvZ1xuICAgICAgICAgID8gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcbiAgICAgICAgICA6IHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCksXG4gICAgICAgIHBhbmVsQ2xhc3M6IGBtYXQtdGltZXBpY2tlci0ke3RoaXMub3BlbkFzfWAsXG4gICAgICB9KVxuICAgICkpO1xuXG4gICAgdGhpcy5fZ2V0Q2xvc2VTdHJlYW0ob3ZlcmxheVJlZikuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgYHByZXZlbnREZWZhdWx0YCBjYWxsIGhhcHBlbnMgaW5zaWRlIHRoZSB0aW1lcGlja2VyIGFzIHdlbGwsIGhvd2V2ZXIgZm9jdXMgbW92ZXMgaW50b1xuICAgIC8vIGl0IGluc2lkZSBhIHRpbWVvdXQgd2hpY2ggY2FuIGdpdmUgYnJvd3NlcnMgYSBjaGFuY2UgdG8gZmlyZSBvZmYgYSBrZXlib2FyZCBldmVudCBpbi1iZXR3ZWVuXG4gICAgLy8gdGhhdCBjYW4gc2Nyb2xsIHRoZSBwYWdlLiBBbHdheXMgYmxvY2sgZGVmYXVsdCBhY3Rpb25zIG9mIGFycm93IGtleXMgZm9yIHRoZVxuICAgIC8vIGVudGlyZSBvdmVybGF5IHNvIHRoZSBwYWdlIGRvZXNuJ3QgZ2V0IHNjcm9sbGVkIGJ5IGFjY2lkZW50LlxuICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGtleUNvZGUgPT09IFVQX0FSUk9XIHx8XG4gICAgICAgIGtleUNvZGUgPT09IERPV05fQVJST1cgfHxcbiAgICAgICAga2V5Q29kZSA9PT0gUEFHRV9VUCB8fFxuICAgICAgICBrZXlDb2RlID09PSBQQUdFX0RPV05cbiAgICAgICkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fY29tcG9uZW50UmVmID0gb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcbiAgICB0aGlzLl9mb3J3YXJkQ29udGVudFZhbHVlcyh0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbiBvbmNlIHRoZSB0aW1lcGlja2VyIGhhcyByZW5kZXJlZC4gT25seSByZWxldmFudCBpbiBkcm9wZG93biBtb2RlLlxuICAgIGlmICghaXNEaWFsb2cpIHtcbiAgICAgIHRoaXMuX25nWm9uZS5vblN0YWJsZVxuICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IG92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERlc3Ryb3lzIHRoZSBjdXJyZW50IG92ZXJsYXkuICovXG4gIHByaXZhdGUgX2Rlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXRzIGEgcG9zaXRpb24gc3RyYXRlZ3kgdGhhdCB3aWxsIG9wZW4gdGhlIHRpbWVwaWNrZXIgYXMgYSBkcm9wZG93bi4gKi9cbiAgcHJpdmF0ZSBfZ2V0RGlhbG9nU3RyYXRlZ3koKSB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZ2xvYmFsKClcbiAgICAgIC5jZW50ZXJIb3Jpem9udGFsbHkoKVxuICAgICAgLmNlbnRlclZlcnRpY2FsbHkoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIGEgcG9zaXRpb24gc3RyYXRlZ3kgdGhhdCB3aWxsIG9wZW4gdGhlIHRpbWVwaWNrZXIgYXMgYSBkcm9wZG93bi4gKi9cbiAgcHJpdmF0ZSBfZ2V0RHJvcGRvd25TdHJhdGVneSgpIHtcbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnRpbWVwaWNrZXJJbnB1dC5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCkpXG4gICAgICAud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcubWF0LXRpbWVwaWNrZXItY29udGVudCcpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgIC53aXRoVmlld3BvcnRNYXJnaW4oOClcbiAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKTtcblxuICAgIHJldHVybiB0aGlzLl9zZXRDb25uZWN0ZWRQb3NpdGlvbnMoc3RyYXRlZ3kpO1xuICB9XG5cbiAgLyoqIFNldHMgdGhlIHBvc2l0aW9ucyBvZiB0aGUgdGltZXBpY2tlciBpbiBkcm9wZG93biBtb2RlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uICovXG4gIHByaXZhdGUgX3NldENvbm5lY3RlZFBvc2l0aW9ucyhcbiAgICBzdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5XG4gICk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgY29uc3QgcHJpbWFyeVggPSB0aGlzLnhQb3NpdGlvbiA9PT0gJ2VuZCcgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgY29uc3Qgc2Vjb25kYXJ5WCA9IHByaW1hcnlYID09PSAnc3RhcnQnID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgIGNvbnN0IHByaW1hcnlZID0gdGhpcy55UG9zaXRpb24gPT09ICdhYm92ZScgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgIGNvbnN0IHNlY29uZGFyeVkgPSBwcmltYXJ5WSA9PT0gJ3RvcCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuXG4gICAgcmV0dXJuIHN0cmF0ZWd5LndpdGhQb3NpdGlvbnMoW1xuICAgICAge1xuICAgICAgICBvcmlnaW5YOiBwcmltYXJ5WCxcbiAgICAgICAgb3JpZ2luWTogc2Vjb25kYXJ5WSxcbiAgICAgICAgb3ZlcmxheVg6IHByaW1hcnlYLFxuICAgICAgICBvdmVybGF5WTogcHJpbWFyeVksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiBwcmltYXJ5WCxcbiAgICAgICAgb3JpZ2luWTogcHJpbWFyeVksXG4gICAgICAgIG92ZXJsYXlYOiBwcmltYXJ5WCxcbiAgICAgICAgb3ZlcmxheVk6IHNlY29uZGFyeVksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiBzZWNvbmRhcnlYLFxuICAgICAgICBvcmlnaW5ZOiBzZWNvbmRhcnlZLFxuICAgICAgICBvdmVybGF5WDogc2Vjb25kYXJ5WCxcbiAgICAgICAgb3ZlcmxheVk6IHByaW1hcnlZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogc2Vjb25kYXJ5WCxcbiAgICAgICAgb3JpZ2luWTogcHJpbWFyeVksXG4gICAgICAgIG92ZXJsYXlYOiBzZWNvbmRhcnlYLFxuICAgICAgICBvdmVybGF5WTogc2Vjb25kYXJ5WSxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH1cblxuICAvKiogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBlbWl0IHdoZW4gdGhlIG92ZXJsYXkgaXMgc3VwcG9zZWQgdG8gYmUgY2xvc2VkLiAqL1xuICBwcml2YXRlIF9nZXRDbG9zZVN0cmVhbShcbiAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmXG4gICk6IE9ic2VydmFibGU8dm9pZCB8IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50PiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCksXG4gICAgICBvdmVybGF5UmVmLmRldGFjaG1lbnRzKCksXG4gICAgICBvdmVybGF5UmVmLmtleWRvd25FdmVudHMoKS5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gQ2xvc2luZyBvbiBhbHQgKyB1cCBpcyBvbmx5IHZhbGlkIHdoZW4gdGhlcmUncyBhbiBpbnB1dCBhc3NvY2lhdGVkIHdpdGggdGhlIHRpbWVwaWNrZXIuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID09PSBFU0NBUEUgJiYgIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkgfHxcbiAgICAgICAgICAgICh0aGlzLnRpbWVwaWNrZXJJbnB1dCAmJlxuICAgICAgICAgICAgICBoYXNNb2RpZmllcktleShldmVudCwgJ2FsdEtleScpICYmXG4gICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPT09IFVQX0FSUk9XKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
458
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0LXRpbWVwaWNrZXIvc3JjL2xpYi90aW1lcGlja2VyLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssRUFHTCxTQUFTLEVBRVQsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEVBSVosY0FBYyxFQUNkLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBRUwscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUNyQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxpQ0FBaUMsRUFFakMsYUFBYSxHQUdkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLGVBQWUsR0FHaEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEdBQ1QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUs5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQWtFbkU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQ3pDLElBQUksY0FBYyxDQUNo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O3NCQURSLEtBQUs7Z0JBU04sWUFBWTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUlYLFlBQVk7c0JBQXRDLE1BQU07dUJBQUMsUUFBUTtnQkFHVyxZQUFZO3NCQUF0QyxNQUFNO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbnB1dCxcbiAgQ29tcG9uZW50UmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBEaXJlY3RpdmUsXG4gIE5nWm9uZSxcbiAgSW5qZWN0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgT3B0aW9uYWwsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IF9nZXRGb2N1c2VkRWxlbWVudFBpZXJjZVNoYWRvd0RvbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge1xuICBCb29sZWFuSW5wdXQsXG4gIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSxcbiAgY29lcmNlTnVtYmVyUHJvcGVydHksXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWYsXG4gIFNjcm9sbFN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICBDb21wb25lbnRQb3J0YWwsXG4gIENvbXBvbmVudFR5cGUsXG4gIFRlbXBsYXRlUG9ydGFsLFxufSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIERPV05fQVJST1csXG4gIEVTQ0FQRSxcbiAgaGFzTW9kaWZpZXJLZXksXG4gIFBBR0VfRE9XTixcbiAgUEFHRV9VUCxcbiAgVVBfQVJST1csXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNYXRUaW1lcGlja2VyQ29udGVudCB9IGZyb20gJy4vdGltZXBpY2tlci1jb250ZW50JztcbmltcG9ydCB7IE1BVF9USU1FUElDS0VSX1NDUk9MTF9TVFJBVEVHWSB9IGZyb20gJy4vdGltZXBpY2tlci1zY3JvbGwtc3RyYXRlZ3knO1xuaW1wb3J0IHtcbiAgRXh0cmFjdFRpbWVUeXBlRnJvbVNlbGVjdGlvbixcbiAgTWF0VGltZVNlbGVjdGlvbk1vZGVsLFxufSBmcm9tICcuL3RpbWUtc2VsZWN0aW9uLW1vZGVsJztcbmltcG9ydCB7IE1BVF9ERUZBVUxUX0FDSVRPTlMgfSBmcm9tICcuL3RpbWVwaWNrZXItYWN0aW9ucy1kZWZhdWx0JztcbmltcG9ydCB7IFRpbWVwaWNrZXJPcmllbnRhdGlvbiB9IGZyb20gJy4vb3JpZW50YXRpb24nO1xuXG4vKiogUG9zc2libGUgb3B0aW9ucyBmb3IgdGhlIHRpbWVwaWNrZXIgdG8gb3Blbi4gKi9cbmV4cG9ydCB0eXBlIFRpbWVwaWNrZXJPcGVuQXMgPSAnZGlhbG9nJyB8ICdwb3B1cCc7XG5cbi8qKiBQb3NzaWJsZSBwb3NpdGlvbnMgZm9yIHRoZSB0aW1lcGlja2VyIGRyb3Bkb3duIGFsb25nIHRoZSBYIGF4aXMuICovXG5leHBvcnQgdHlwZSBUaW1lcGlja2VyRHJvcGRvd25Qb3NpdGlvblggPSAnc3RhcnQnIHwgJ2VuZCc7XG5cbi8qKiBQb3NzaWJsZSBwb3NpdGlvbnMgZm9yIHRoZSB0aW1lcGlja2VyIGRyb3Bkb3duIGFsb25nIHRoZSBZIGF4aXMuICovXG5leHBvcnQgdHlwZSBUaW1lcGlja2VyRHJvcGRvd25Qb3NpdGlvblkgPSAnYWJvdmUnIHwgJ2JlbG93JztcblxuLyoqIFBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoZSB0aW1lcGlja2VyIHRvIGRpc3BsYXkuICovXG5leHBvcnQgdHlwZSBUaW1lcGlja2VyTW9kZSA9ICdpbnB1dCcgfCAnZGlhbCc7XG5cbi8qKiBQb3NzaWJsZSBvcHRpb25zIGZvciB0aGUgdGltZXBpY2tlciBwZXJpb2QgZm9ybWF0LiAqL1xuZXhwb3J0IHR5cGUgVGltZXBpY2tlckZvcm1hdCA9ICcxMmgnIHwgJzI0aCc7XG5cbi8qKiBGb3JtIGNvbnRyb2wgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgdGltZXBpY2tlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0VGltZXBpY2tlckNvbnRyb2w8VD4ge1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgbWluOiBUIHwgbnVsbDtcbiAgbWF4OiBUIHwgbnVsbDtcbiAgc3RhdGVDaGFuZ2VzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBnZXRUaGVtZVBhbGV0dGUoKTogVGhlbWVQYWxldHRlO1xuICBnZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCk6IEVsZW1lbnRSZWY7XG4gIGdldE92ZXJsYXlMYWJlbElkKCk6IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKiBBIHRpbWVwaWNrZXIgdGhhdCBjYW4gYmUgYXR0YWNoZWQgdG8gYSB7QGxpbmsgTWF0VGltZXBpY2tlckNvbnRyb2x9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRUaW1lcGlja2VyUGFuZWw8XG4gIEMgZXh0ZW5kcyBNYXRUaW1lcGlja2VyQ29udHJvbDxUPixcbiAgUyxcbiAgVCA9IEV4dHJhY3RUaW1lVHlwZUZyb21TZWxlY3Rpb248Uz4sXG4+IHtcbiAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSB0aW1lcGlja2VyIGlzIG9wZW5lZC4gKi9cbiAgb3BlbmVkU3RyZWFtOiBFdmVudEVtaXR0ZXI8dm9pZD47XG4gIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuZXZlciB0aGUgdGltZXBpY2tlciBpcyBjbG9zZWQuICovXG4gIGNsb3NlZFN0cmVhbTogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICAvKiogRW1pdHMgd2hlbiB0aGUgdGltZXBpY2tlcidzIHN0YXRlIGNoYW5nZXMuICovXG4gIHN0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPjtcbiAgLyoqIFJlZ2lzdGVyIGFuIGlucHV0IHdpdGggdGhlIHRpbWVlcGlja2VyLiAqL1xuICByZWdpc3RlcklucHV0KGlucHV0OiBDKTogTWF0VGltZVNlbGVjdGlvbk1vZGVsPFMsIFQ+O1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGRlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIGZvcm0gZmllbGQgdGhhdCBjYW4gYmUgY29uZmlndXJlZFxuICogdXNpbmcgdGhlIGBNQVRfVElNRVBJQ0tFUl9ERUZBVUxUX09QVElPTlNgIGluamVjdGlvbiB0b2tlbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRUaW1lcGlja2VyRGVmYXVsdE9wdGlvbnMge1xuICAvKiogRGVmYXVsdCBjb2xvciBvZiB0aGUgdGltZXBpY2tlci4gKi9cbiAgY29sb3I/OiBUaGVtZVBhbGV0dGU7XG4gIC8qKiBEZWZhdWx0IHRpbWVwaWNrZXIgbW9kZS4gKi9cbiAgbW9kZTogVGltZXBpY2tlck1vZGU7XG4gIC8qKiBEZWZpbmVzIGhvdyB0aW1lcGlja2VyIHdpbGwgYmUgYXBwZWFyZWQuICovXG4gIG9wZW5BczogVGltZXBpY2tlck9wZW5BcztcbiAgLyoqIERlZmF1bHQgdGltZXBpY2tlciBmb3JtYXQuICovXG4gIGZvcm1hdDogVGltZXBpY2tlckZvcm1hdDtcbiAgLyoqIFNob3VsZCB0b2dnbGUgZmFjZSBidXR0b24gYmUgdmlzaWJsZS4gKi9cbiAgc2hvd1RvZ2dsZU1vZGVCdXR0b246IGJvb2xlYW47XG4gIC8qKiBTdGVwIGZvciBtaW51dGVzLiAqL1xuICBtaW51dGVJbnRlcnZhbDogbnVtYmVyO1xuICAvKiogT3JpZW50YXRpb24gZm9yIGRpYWwgbW9kZS4gKi9cbiAgb3JpZW50YXRpb246IFRpbWVwaWNrZXJPcmllbnRhdGlvbjtcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdGhlXG4gKiBkZWZhdWx0IG9wdGlvbnMgZm9yIGFsbCB0aW1lcGlja2VycyB3aXRoaW4gYW4gYXBwLlxuICovXG5leHBvcnQgY29uc3QgTUFUX1RJTUVQSUNLRVJfREVGQVVMVF9PUFRJT05TID1cbiAgbmV3IEluamVjdGlvblRva2VuPE1hdFRpbWVwaWNrZXJEZWZhdWx0T3B0aW9ucz4oXG4gICAgJ01BVF9USU1FUElDS0VSX0RFRkFVTFRfT1BUSU9OUycsXG4gICk7XG5cbi8qKiBEZWZhdWx0IG9wZW4gYXMgdXNlZCBieSB0aGUgdGltZXBpY2tlci4gKi9cbmNvbnN0IERFRkFVTFRfT1BFTl9BUzogVGltZXBpY2tlck9wZW5BcyA9ICdwb3B1cCc7XG5cbi8qKiBEZWZhdWx0IG1vZGUgdXNlZCBieSB0aGUgdGltZXBpY2tlci4gKi9cbmNvbnN0IERFRkFVTFRfTU9ERTogVGltZXBpY2tlck1vZGUgPSAnZGlhbCc7XG5cbi8qKiBEZWZhdWx0IGZvcm1hdCB1c2VkIGJ5IHRoZSB0aW1lcGlja2VyLiAqL1xuY29uc3QgREVGQVVMVF9GT1JNQVQ6IFRpbWVwaWNrZXJGb3JtYXQgPSAnMTJoJztcblxuLyoqIFVzZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgSUQgZm9yIGVhY2ggdGltZXBpY2tlciBpbnN0YW5jZS4gKi9cbmxldCB0aW1lcGlja2VyVWlkID0gMDtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWF0VGltZXBpY2tlckJhc2U8XG4gIEMgZXh0ZW5kcyBNYXRUaW1lcGlja2VyQ29udHJvbDxUPixcbiAgUyxcbiAgVCA9IEV4dHJhY3RUaW1lVHlwZUZyb21TZWxlY3Rpb248Uz4sXG4+IGltcGxlbWVudHMgT25DaGFuZ2VzXG57XG4gIC8qKiBXaGV0aGVyIHRoZSB0aW1lcGlja2VyIHBvcC11cCBzaG91bGQgYmUgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnRpbWVwaWNrZXJJbnB1dFxuICAgICAgPyB0aGlzLnRpbWVwaWNrZXJJbnB1dC5kaXNhYmxlZFxuICAgICAgOiAhIXRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHRpbWVwaWNrZXIgaXMgb3Blbi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG9wZW5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbmVkO1xuICB9XG4gIHNldCBvcGVuZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkgPyB0aGlzLm9wZW4oKSA6IHRoaXMuY2xvc2UoKTtcbiAgfVxuICBwcml2YXRlIF9vcGVuZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgdGltZXBpY2tlciBtb2RlIHdoaWNoIGRldGVybWluZXMgd2hhdCB0aGUgdGltZXBpY2tlciB3aWxsIGJlIG9wZW5lZCBhcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG9wZW5BcygpOiBUaW1lcGlja2VyT3BlbkFzIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbkFzIHx8IHRoaXMuX2RlZmF1bHRzPy5vcGVuQXMgfHwgREVGQVVMVF9PUEVOX0FTO1xuICB9XG4gIHNldCBvcGVuQXModmFsdWU6IFRpbWVwaWNrZXJPcGVuQXMpIHtcbiAgICB0aGlzLl9vcGVuQXMgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9vcGVuQXM6IFRpbWVwaWNrZXJPcGVuQXM7XG5cbiAgLyoqIENvbG9yIHBhbGV0dGUgdG8gdXNlIG9uIHRoZSB0aW1lcGlja2VyJ3MgY29udGVudC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGNvbG9yKCk6IFRoZW1lUGFsZXR0ZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX2NvbG9yIHx8XG4gICAgICB0aGlzLl9kZWZhdWx0cz8uY29sb3IgfHxcbiAgICAgICh0aGlzLnRpbWVwaWNrZXJJbnB1dFxuICAgICAgICA/IHRoaXMudGltZXBpY2tlcklucHV0LmdldFRoZW1lUGFsZXR0ZSgpXG4gICAgICAgIDogdW5kZWZpbmVkKVxuICAgICk7XG4gIH1cbiAgc2V0IGNvbG9yKHZhbHVlOiBUaGVtZVBhbGV0dGUpIHtcbiAgICB0aGlzLl9jb2xvciA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX2NvbG9yOiBUaGVtZVBhbGV0dGU7XG5cbiAgLyoqIFRpbWVwaWNrZXIgZGlzcGxheSBtb2RlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbW9kZSgpOiBUaW1lcGlja2VyTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGUgfHwgdGhpcy5fZGVmYXVsdHM/Lm1vZGUgfHwgREVGQVVMVF9NT0RFO1xuICB9XG4gIHNldCBtb2RlKHZhbHVlOiBUaW1lcGlja2VyTW9kZSkge1xuICAgIHRoaXMuX21vZGUgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9tb2RlOiBUaW1lcGlja2VyTW9kZTtcblxuICAvKiogVGltZXBpY2tlciBwZXJpb2QgZm9ybWF0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgZm9ybWF0KCk6IFRpbWVwaWNrZXJGb3JtYXQge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXQgfHwgdGhpcy5fZGVmYXVsdHM/LmZvcm1hdCB8fCBERUZBVUxUX0ZPUk1BVDtcbiAgfVxuICBzZXQgZm9ybWF0KHZhbHVlOiBUaW1lcGlja2VyRm9ybWF0KSB7XG4gICAgdGhpcy5fZm9ybWF0ID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfZm9ybWF0OiBUaW1lcGlja2VyRm9ybWF0O1xuXG4gIC8qKiBTaG93IG9yIGhpZGUgdG9nZ2xlIGJ1dHRvbiBiZXR3ZWVuIGRpYWwgYW5kIGlucHV0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2hvd1RvZ2dsZU1vZGVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dUb2dnbGVNb2RlQnV0dG9uO1xuICB9XG4gIHNldCBzaG93VG9nZ2xlTW9kZUJ1dHRvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dUb2dnbGVNb2RlQnV0dG9uID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfc2hvd1RvZ2dsZU1vZGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBTdGVwIGZvciBtaW51dGVzLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbWludXRlSW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWludXRlSW50ZXJ2YWwgfHwgdGhpcy5fZGVmYXVsdHM/Lm1pbnV0ZUludGVydmFsIHx8IDE7XG4gIH1cbiAgc2V0IG1pbnV0ZUludGVydmFsKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9taW51dGVJbnRlcnZhbCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9taW51dGVJbnRlcnZhbDogbnVtYmVyO1xuXG4gIC8qKiBPcmllbnRhdGlvbiBmb3IgZGlhbCBtb2RlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgb3JpZW50YXRpb24oKTogVGltZXBpY2tlck9yaWVudGF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fb3JpZW50YXRpb24gfHwgdGhpcy5fZGVmYXVsdHM/Lm9yaWVudGF0aW9uIHx8ICd2ZXJ0aWNhbCc7XG4gIH1cbiAgc2V0IG9yaWVudGF0aW9uKHZhbHVlOiBUaW1lcGlja2VyT3JpZW50YXRpb24pIHtcbiAgICB0aGlzLl9vcmllbnRhdGlvbiA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX29yaWVudGF0aW9uOiBUaW1lcGlja2VyT3JpZW50YXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRpbWVwaWNrZXIgVUkgaXMgaW4gdG91Y2ggbW9kZS4gSW4gdG91Y2ggbW9kZSBlbGVtZW50cyBhcmUgbGFyZ2VyIGZvciBiaWdnZXIgdG91Y2ggdGFyZ2V0cy5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBnZXQgdG91Y2hVaSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdG91Y2hVaTtcbiAgfVxuICBzZXQgdG91Y2hVaSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3RvdWNoVWkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLm9wZW5BcyA9ICdkaWFsb2cnO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF90b3VjaFVpOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFByZWZlcnJlZCBwb3NpdGlvbiBvZiB0aGUgdGltZXBpY2tlciBpbiB0aGUgWCBheGlzLiAqL1xuICBASW5wdXQoKVxuICB4UG9zaXRpb246IFRpbWVwaWNrZXJEcm9wZG93blBvc2l0aW9uWCA9ICdzdGFydCc7XG5cbiAgLyoqIFByZWZlcnJlZCBwb3NpdGlvbiBvZiB0aGUgdGltZXBpY2tlciBpbiB0aGUgWSBheGlzLiAqL1xuICBASW5wdXQoKVxuICB5UG9zaXRpb246IFRpbWVwaWNrZXJEcm9wZG93blBvc2l0aW9uWSA9ICdiZWxvdyc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzdG9yZSBmb2N1cyB0byB0aGUgcHJldmlvdXNseS1mb2N1c2VkIGVsZW1lbnQgd2hlbiB0aGUgdGltZXBpY2tlciBpcyBjbG9zZWQuXG4gICAqIE5vdGUgdGhhdCBhdXRvbWF0aWMgZm9jdXMgcmVzdG9yYXRpb24gaXMgYW4gYWNjZXNzaWJpbGl0eSBmZWF0dXJlIGFuZCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0XG4gICAqIHlvdSBwcm92aWRlIHlvdXIgb3duIGVxdWl2YWxlbnQsIGlmIHlvdSBkZWNpZGUgdG8gdHVybiBpdCBvZmYuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcmVzdG9yZUZvY3VzOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgdGltZXBpY2tlciBoYXMgYmVlbiBvcGVuZWQuICovXG4gIEBPdXRwdXQoJ29wZW5lZCcpIHJlYWRvbmx5IG9wZW5lZFN0cmVhbSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgdGltZXBpY2tlciBoYXMgYmVlbiBjbG9zZWQuICovXG4gIEBPdXRwdXQoJ2Nsb3NlZCcpIHJlYWRvbmx5IGNsb3NlZFN0cmVhbSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogVGhlIGlkIGZvciB0aGUgdGltZXBpY2tlci4gKi9cbiAgaWQ6IHN0cmluZyA9IGBtYXQtdGltZXBpY2tlci0ke3RpbWVwaWNrZXJVaWQrK31gO1xuXG4gIC8qKiBUaGUgaW5wdXQgZWxlbWVudCB0aGlzIHRpbWVwaWNrZXIgaXMgYXNzb2NpYXRlZCB3aXRoLiAqL1xuICB0aW1lcGlja2VySW5wdXQhOiBDO1xuXG4gIC8qKiBQb3J0YWwgd2l0aCBwcm9qZWN0ZWQgYWN0aW9uIGJ1dHRvbnMuICovXG4gIF9hY3Rpb25zUG9ydGFsOiBUZW1wbGF0ZVBvcnRhbCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB0aW1lcGlja2VyJ3Mgc3RhdGUgY2hhbmdlcy4gKi9cbiAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiogQSByZWZlcmVuY2UgdG8gdGhlIG92ZXJsYXkgaW50byB3aGljaCB3ZSd2ZSByZW5kZXJlZCB0aGUgdGltZXBpY2tlci4gKi9cbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGw7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIHRoZSBvdmVybGF5LiAqL1xuICBwcml2YXRlIF9jb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8TWF0VGltZXBpY2tlckNvbnRlbnQ8UywgVD4+IHwgbnVsbDtcblxuICAvKiogVW5pcXVlIGNsYXNzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYmFja2Ryb3Agc28gdGhhdCB0aGUgdGVzdCBoYXJuZXNzZXMgY2FuIGxvb2sgaXQgdXAuICovXG4gIHByaXZhdGUgX2JhY2tkcm9wSGFybmVzc0NsYXNzID0gYCR7dGhpcy5pZH0tYmFja2Ryb3BgO1xuXG4gIC8qKiBUaGUgZWxlbWVudCB0aGF0IHdhcyBmb2N1c2VkIGJlZm9yZSB0aGUgdGltZXBpY2tlciB3YXMgb3BlbmVkLiAqL1xuICBwcml2YXRlIF9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW46IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIC8qKiBTY3JvbGwgc3RyYXRlZ3kuICovXG4gIHByaXZhdGUgX3Njcm9sbFN0cmF0ZWd5OiAoKSA9PiBTY3JvbGxTdHJhdGVneTtcblxuICAvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSB0aW1lLiAqL1xuICBfZ2V0TWluVGltZSgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudGltZXBpY2tlcklucHV0ICYmIHRoaXMudGltZXBpY2tlcklucHV0Lm1pbjtcbiAgfVxuXG4gIC8qKiBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIHRpbWUuICovXG4gIF9nZXRNYXhUaW1lKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy50aW1lcGlja2VySW5wdXQgJiYgdGhpcy50aW1lcGlja2VySW5wdXQubWF4O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIEBJbmplY3QoTUFUX1RJTUVQSUNLRVJfU0NST0xMX1NUUkFURUdZKSBzY3JvbGxTdHJhdGVneTogYW55LFxuICAgIEBJbmplY3QoTUFUX0RFRkFVTFRfQUNJVE9OUylcbiAgICBwcml2YXRlIF9kZWZhdWx0QWN0aW9uc0NvbXBvbmVudDogQ29tcG9uZW50VHlwZTxhbnk+LFxuICAgIHByaXZhdGUgX21vZGVsOiBNYXRUaW1lU2VsZWN0aW9uTW9kZWw8UywgVD4sXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE1BVF9USU1FUElDS0VSX0RFRkFVTFRfT1BUSU9OUylcbiAgICBwcml2YXRlIF9kZWZhdWx0cz86IE1hdFRpbWVwaWNrZXJEZWZhdWx0T3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy5fc2Nyb2xsU3RyYXRlZ3kgPSBzY3JvbGxTdHJhdGVneTtcblxuICAgIGlmIChfZGVmYXVsdHMpIHtcbiAgICAgIHRoaXMuc2hvd1RvZ2dsZU1vZGVCdXR0b24gPVxuICAgICAgICBfZGVmYXVsdHMuc2hvd1RvZ2dsZU1vZGVCdXR0b24gIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gX2RlZmF1bHRzLnNob3dUb2dnbGVNb2RlQnV0dG9uXG4gICAgICAgICAgOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBwb3NpdGlvbkNoYW5nZSA9IGNoYW5nZXNbJ3hQb3NpdGlvbiddIHx8IGNoYW5nZXNbJ3lQb3NpdGlvbiddO1xuXG4gICAgaWYgKHBvc2l0aW9uQ2hhbmdlICYmICFwb3NpdGlvbkNoYW5nZS5maXJzdENoYW5nZSAmJiB0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5O1xuXG4gICAgICBpZiAocG9zaXRpb25TdHJhdGVneSBpbnN0YW5jZW9mIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSkge1xuICAgICAgICB0aGlzLl9zZXRDb25uZWN0ZWRQb3NpdGlvbnMocG9zaXRpb25TdHJhdGVneSk7XG5cbiAgICAgICAgaWYgKHRoaXMub3BlbmVkKSB7XG4gICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCh1bmRlZmluZWQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKiBPcGVucyB0aGUgdGltZXBpY2tlci4gKi9cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl9vcGVuZWQgfHxcbiAgICAgIHRoaXMuZGlzYWJsZWQgfHxcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZj8uaW5zdGFuY2UuX2lzQW5pbWF0aW5nXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRpbWVwaWNrZXJJbnB1dCkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICdBdHRlbXB0ZWQgdG8gb3BlbiBhbiBNYXRUaW1lcGlja2VyIHdpdGggbm8gYXNzb2NpYXRlZCBpbnB1dC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4gPSBfZ2V0Rm9jdXNlZEVsZW1lbnRQaWVyY2VTaGFkb3dEb20oKTtcbiAgICB0aGlzLl9vcGVuT3ZlcmxheSgpO1xuICAgIHRoaXMuX29wZW5lZCA9IHRydWU7XG4gICAgdGhpcy5vcGVuZWRTdHJlYW0uZW1pdCgpO1xuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgdGltZXBpY2tlci4gKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9vcGVuZWQgfHwgdGhpcy5fY29tcG9uZW50UmVmPy5pbnN0YW5jZS5faXNBbmltYXRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjYW5SZXN0b3JlRm9jdXMgPVxuICAgICAgdGhpcy5yZXN0b3JlRm9jdXMgJiZcbiAgICAgIHRoaXMuX2ZvY3VzZWRFbGVtZW50QmVmb3JlT3BlbiAmJlxuICAgICAgdHlwZW9mIHRoaXMuX2ZvY3VzZWRFbGVtZW50QmVmb3JlT3Blbi5mb2N1cyA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIGNvbnN0IGNvbXBsZXRlQ2xvc2UgPSAoKSA9PiB7XG4gICAgICAvLyBUaGUgYF9vcGVuZWRgIGNvdWxkJ3ZlIGJlZW4gcmVzZXQgYWxyZWFkeSBpZlxuICAgICAgLy8gd2UgZ290IHR3byBldmVudHMgaW4gcXVpY2sgc3VjY2Vzc2lvbi5cbiAgICAgIGlmICh0aGlzLl9vcGVuZWQpIHtcbiAgICAgICAgdGhpcy5fb3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2xvc2VkU3RyZWFtLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgeyBpbnN0YW5jZSwgbG9jYXRpb24gfSA9IHRoaXMuX2NvbXBvbmVudFJlZjtcbiAgICAgIGluc3RhbmNlLl9zdGFydEV4aXRBbmltYXRpb24oKTtcbiAgICAgIGluc3RhbmNlLl9hbmltYXRpb25Eb25lLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgLy8gU2luY2Ugd2UgcmVzdG9yZSBmb2N1cyBhZnRlciB0aGUgZXhpdCBhbmltYXRpb24sIHdlIGhhdmUgdG8gY2hlY2sgdGhhdFxuICAgICAgICAvLyB0aGUgdXNlciBkaWRuJ3QgbW92ZSBmb2N1cyB0aGVtc2VsdmVzIGluc2lkZSB0aGUgYGNsb3NlYCBoYW5kbGVyLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FuUmVzdG9yZUZvY3VzICYmXG4gICAgICAgICAgKCFhY3RpdmVFbGVtZW50IHx8XG4gICAgICAgICAgICBhY3RpdmVFbGVtZW50ID09PSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50IHx8XG4gICAgICAgICAgICBsb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGFjdGl2ZUVsZW1lbnQpKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4hLmZvY3VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4gPSBudWxsO1xuICAgICAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChjYW5SZXN0b3JlRm9jdXMpIHtcbiAgICAgICAgc2V0VGltZW91dChjb21wbGV0ZUNsb3NlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBsZXRlQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYW4gaW5wdXQgd2l0aCB0aGlzIHRpbWVwaWNrZXIuXG4gICAqIEBwYXJhbSBpbnB1dCBUaGUgdGltZXBpY2tlciBpbnB1dCB0byByZWdpc3RlciB3aXRoIHRoaXMgdGltZXBpY2tlci5cbiAgICogQHJldHVybnMgU2VsZWN0aW9uIG1vZGVsIHRoYXQgdGhlIGlucHV0IHNob3VsZCBob29rIGl0c2VsZiB1cCB0by5cbiAgICovXG4gIHJlZ2lzdGVySW5wdXQoaW5wdXQ6IEMpOiBNYXRUaW1lU2VsZWN0aW9uTW9kZWw8UywgVD4ge1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXJJbnB1dCkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICdBIE1hdFRpbWVwaWNrZXIgY2FuIG9ubHkgYmUgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xlIGlucHV0LicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudGltZXBpY2tlcklucHV0ID0gaW5wdXQ7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHBvcnRhbCBjb250YWluaW5nIGFjdGlvbiBidXR0b25zIHdpdGggdGhlIHRpbWVwaWNrZXIuXG4gICAqIEBwYXJhbSBwb3J0YWwgUG9ydGFsIHRvIGJlIHJlZ2lzdGVyZWQuXG4gICAqL1xuICByZWdpc3RlckFjdGlvbnMocG9ydGFsOiBUZW1wbGF0ZVBvcnRhbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hY3Rpb25zUG9ydGFsKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0EgTWF0VGltZXBpY2tlciBjYW4gb25seSBiZSBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgYWN0aW9ucyByb3cuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX2FjdGlvbnNQb3J0YWwgPSBwb3J0YWw7XG4gICAgdGhpcy5fY29tcG9uZW50UmVmPy5pbnN0YW5jZS5fYXNzaWduQWN0aW9ucyhwb3J0YWwsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBwb3J0YWwgY29udGFpbmluZyBhY3Rpb24gYnV0dG9ucyBmcm9tIHRoZSB0aW1lcGlja2VyLlxuICAgKiBAcGFyYW0gcG9ydGFsIFBvcnRhbCB0byBiZSByZW1vdmVkLlxuICAgKi9cbiAgcmVtb3ZlQWN0aW9ucyhwb3J0YWw6IFRlbXBsYXRlUG9ydGFsKTogdm9pZCB7XG4gICAgaWYgKHBvcnRhbCA9PT0gdGhpcy5fYWN0aW9uc1BvcnRhbCkge1xuICAgICAgdGhpcy5fYWN0aW9uc1BvcnRhbCA9IG51bGw7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWY/Lmluc3RhbmNlLl9hc3NpZ25BY3Rpb25zKG51bGwsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBsaWVzIHRoZSBjdXJyZW50IHBlbmRpbmcgc2VsZWN0aW9uIG9uIHRoZSBvdmVybGF5IHRvIHRoZSBtb2RlbC4gKi9cbiAgX2FwcGx5UGVuZGluZ1NlbGVjdGlvbigpIHtcbiAgICB0aGlzLl9jb21wb25lbnRSZWY/Lmluc3RhbmNlPy5fYXBwbHlQZW5kaW5nU2VsZWN0aW9uKCk7XG4gIH1cblxuICAvKiogRm9yd2FyZHMgcmVsZXZhbnQgdmFsdWVzIGZyb20gdGhlIHRpbWVwaWNrZXIgdG8gdGhlIHRpbWVwaWNrZXIgY29udGVudCBpbnNpZGUgdGhlIG92ZXJsYXkuICovXG4gIHByb3RlY3RlZCBfZm9yd2FyZENvbnRlbnRWYWx1ZXMoaW5zdGFuY2U6IE1hdFRpbWVwaWNrZXJDb250ZW50PFMsIFQ+KTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdFBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5fZGVmYXVsdEFjdGlvbnNDb21wb25lbnQpO1xuXG4gICAgaW5zdGFuY2UudGltZXBpY2tlciA9IHRoaXM7XG4gICAgaW5zdGFuY2UuY29sb3IgPSB0aGlzLmNvbG9yO1xuICAgIGluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGU7XG4gICAgaW5zdGFuY2UuaXNNZXJpZGllbSA9IHRoaXMuZm9ybWF0ID09PSAnMTJoJztcbiAgICBpbnN0YW5jZS5zaG93VG9nZ2xlTW9kZUJ1dHRvbiA9IHRoaXMuc2hvd1RvZ2dsZU1vZGVCdXR0b247XG4gICAgaW5zdGFuY2UubWludXRlSW50ZXJ2YWwgPSB0aGlzLm1pbnV0ZUludGVydmFsO1xuICAgIGluc3RhbmNlLm9yaWVudGF0aW9uID0gdGhpcy5vcmllbnRhdGlvbjtcbiAgICBpbnN0YW5jZS5fZGlhbG9nTGFiZWxJZCA9IHRoaXMudGltZXBpY2tlcklucHV0LmdldE92ZXJsYXlMYWJlbElkKCk7XG4gICAgaW5zdGFuY2UuX2Fzc2lnbkFjdGlvbnModGhpcy5fYWN0aW9uc1BvcnRhbCB8fCBkZWZhdWx0UG9ydGFsLCBmYWxzZSk7XG4gIH1cblxuICAvKiogT3BlbnMgdGhlIG92ZXJsYXkgd2l0aCB0aGUgdGltZXBpY2tlci4gKi9cbiAgcHJpdmF0ZSBfb3Blbk92ZXJsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcblxuICAgIGNvbnN0IGlzRGlhbG9nID0gdGhpcy5vcGVuQXMgPT09ICdkaWFsb2cnO1xuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWw8TWF0VGltZXBpY2tlckNvbnRlbnQ8UywgVD4+KFxuICAgICAgTWF0VGltZXBpY2tlckNvbnRlbnQsXG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLFxuICAgICk7XG5cbiAgICBjb25zdCBvdmVybGF5UmVmID0gKHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZShcbiAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneTogaXNEaWFsb2dcbiAgICAgICAgICA/IHRoaXMuX2dldERpYWxvZ1N0cmF0ZWd5KClcbiAgICAgICAgICA6IHRoaXMuX2dldERyb3Bkb3duU3RyYXRlZ3koKSxcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6IFtcbiAgICAgICAgICBpc0RpYWxvZ1xuICAgICAgICAgICAgPyAnY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcCdcbiAgICAgICAgICAgIDogJ21hdC1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgICAgICB0aGlzLl9iYWNrZHJvcEhhcm5lc3NDbGFzcyxcbiAgICAgICAgXSxcbiAgICAgICAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IGlzRGlhbG9nXG4gICAgICAgICAgPyB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKVxuICAgICAgICAgIDogdGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgcGFuZWxDbGFzczogYG1hdC10aW1lcGlja2VyLSR7dGhpcy5vcGVuQXN9YCxcbiAgICAgIH0pLFxuICAgICkpO1xuXG4gICAgdGhpcy5fZ2V0Q2xvc2VTdHJlYW0ob3ZlcmxheVJlZikuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgYHByZXZlbnREZWZhdWx0YCBjYWxsIGhhcHBlbnMgaW5zaWRlIHRoZSB0aW1lcGlja2VyIGFzIHdlbGwsIGhvd2V2ZXIgZm9jdXMgbW92ZXMgaW50b1xuICAgIC8vIGl0IGluc2lkZSBhIHRpbWVvdXQgd2hpY2ggY2FuIGdpdmUgYnJvd3NlcnMgYSBjaGFuY2UgdG8gZmlyZSBvZmYgYSBrZXlib2FyZCBldmVudCBpbi1iZXR3ZWVuXG4gICAgLy8gdGhhdCBjYW4gc2Nyb2xsIHRoZSBwYWdlLiBBbHdheXMgYmxvY2sgZGVmYXVsdCBhY3Rpb25zIG9mIGFycm93IGtleXMgZm9yIHRoZVxuICAgIC8vIGVudGlyZSBvdmVybGF5IHNvIHRoZSBwYWdlIGRvZXNuJ3QgZ2V0IHNjcm9sbGVkIGJ5IGFjY2lkZW50LlxuICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGtleUNvZGUgPT09IFVQX0FSUk9XIHx8XG4gICAgICAgIGtleUNvZGUgPT09IERPV05fQVJST1cgfHxcbiAgICAgICAga2V5Q29kZSA9PT0gUEFHRV9VUCB8fFxuICAgICAgICBrZXlDb2RlID09PSBQQUdFX0RPV05cbiAgICAgICkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fY29tcG9uZW50UmVmID0gb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcbiAgICB0aGlzLl9mb3J3YXJkQ29udGVudFZhbHVlcyh0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbiBvbmNlIHRoZSB0aW1lcGlja2VyIGhhcyByZW5kZXJlZC4gT25seSByZWxldmFudCBpbiBkcm9wZG93biBtb2RlLlxuICAgIGlmICghaXNEaWFsb2cpIHtcbiAgICAgIHRoaXMuX25nWm9uZS5vblN0YWJsZVxuICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IG92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERlc3Ryb3lzIHRoZSBjdXJyZW50IG92ZXJsYXkuICovXG4gIHByaXZhdGUgX2Rlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXRzIGEgcG9zaXRpb24gc3RyYXRlZ3kgdGhhdCB3aWxsIG9wZW4gdGhlIHRpbWVwaWNrZXIgYXMgYSBkcm9wZG93bi4gKi9cbiAgcHJpdmF0ZSBfZ2V0RGlhbG9nU3RyYXRlZ3koKSB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZ2xvYmFsKClcbiAgICAgIC5jZW50ZXJIb3Jpem9udGFsbHkoKVxuICAgICAgLmNlbnRlclZlcnRpY2FsbHkoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIGEgcG9zaXRpb24gc3RyYXRlZ3kgdGhhdCB3aWxsIG9wZW4gdGhlIHRpbWVwaWNrZXIgYXMgYSBkcm9wZG93bi4gKi9cbiAgcHJpdmF0ZSBfZ2V0RHJvcGRvd25TdHJhdGVneSgpIHtcbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnRpbWVwaWNrZXJJbnB1dC5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCkpXG4gICAgICAud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcubWF0LXRpbWVwaWNrZXItY29udGVudCcpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgIC53aXRoVmlld3BvcnRNYXJnaW4oOClcbiAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKTtcblxuICAgIHJldHVybiB0aGlzLl9zZXRDb25uZWN0ZWRQb3NpdGlvbnMoc3RyYXRlZ3kpO1xuICB9XG5cbiAgLyoqIFNldHMgdGhlIHBvc2l0aW9ucyBvZiB0aGUgdGltZXBpY2tlciBpbiBkcm9wZG93biBtb2RlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uICovXG4gIHByaXZhdGUgX3NldENvbm5lY3RlZFBvc2l0aW9ucyhcbiAgICBzdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICApOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGNvbnN0IHByaW1hcnlYID0gdGhpcy54UG9zaXRpb24gPT09ICdlbmQnID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgIGNvbnN0IHNlY29uZGFyeVggPSBwcmltYXJ5WCA9PT0gJ3N0YXJ0JyA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICBjb25zdCBwcmltYXJ5WSA9IHRoaXMueVBvc2l0aW9uID09PSAnYWJvdmUnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICBjb25zdCBzZWNvbmRhcnlZID0gcHJpbWFyeVkgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcblxuICAgIHJldHVybiBzdHJhdGVneS53aXRoUG9zaXRpb25zKFtcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogcHJpbWFyeVgsXG4gICAgICAgIG9yaWdpblk6IHNlY29uZGFyeVksXG4gICAgICAgIG92ZXJsYXlYOiBwcmltYXJ5WCxcbiAgICAgICAgb3ZlcmxheVk6IHByaW1hcnlZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogcHJpbWFyeVgsXG4gICAgICAgIG9yaWdpblk6IHByaW1hcnlZLFxuICAgICAgICBvdmVybGF5WDogcHJpbWFyeVgsXG4gICAgICAgIG92ZXJsYXlZOiBzZWNvbmRhcnlZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogc2Vjb25kYXJ5WCxcbiAgICAgICAgb3JpZ2luWTogc2Vjb25kYXJ5WSxcbiAgICAgICAgb3ZlcmxheVg6IHNlY29uZGFyeVgsXG4gICAgICAgIG92ZXJsYXlZOiBwcmltYXJ5WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHNlY29uZGFyeVgsXG4gICAgICAgIG9yaWdpblk6IHByaW1hcnlZLFxuICAgICAgICBvdmVybGF5WDogc2Vjb25kYXJ5WCxcbiAgICAgICAgb3ZlcmxheVk6IHNlY29uZGFyeVksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG5cbiAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IHdpbGwgZW1pdCB3aGVuIHRoZSBvdmVybGF5IGlzIHN1cHBvc2VkIHRvIGJlIGNsb3NlZC4gKi9cbiAgcHJpdmF0ZSBfZ2V0Q2xvc2VTdHJlYW0oXG4gICAgb3ZlcmxheVJlZjogT3ZlcmxheVJlZixcbiAgKTogT2JzZXJ2YWJsZTx2b2lkIHwgS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQ+IHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICBvdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKSxcbiAgICAgIG92ZXJsYXlSZWYuZGV0YWNobWVudHMoKSxcbiAgICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBDbG9zaW5nIG9uIGFsdCArIHVwIGlzIG9ubHkgdmFsaWQgd2hlbiB0aGVyZSdzIGFuIGlucHV0IGFzc29jaWF0ZWQgd2l0aCB0aGUgdGltZXBpY2tlci5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB8fFxuICAgICAgICAgICAgKHRoaXMudGltZXBpY2tlcklucHV0ICYmXG4gICAgICAgICAgICAgIGhhc01vZGlmaWVyS2V5KGV2ZW50LCAnYWx0S2V5JykgJiZcbiAgICAgICAgICAgICAgZXZlbnQua2V5Q29kZSA9PT0gVVBfQVJST1cpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|