@dereekb/dbx-form 9.20.15 → 9.20.17

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.
@@ -430,4 +430,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
430
430
  type: Component,
431
431
  args: [{ template: "<div class=\"dbx-datetime-field\" fxLayout=\"row wrap\" fxLayout.xs=\"column wrap\" fxLayoutAlign=\"space-evenly stretch\">\n <!-- Date -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"dateOnly ? '100' : '50'\" *ngIf=\"showDateInput\">\n <ng-container *ngTemplateOutlet=\"dateInputTemplate\"></ng-container>\n </div>\n <!-- Time -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"showDateInput ? '50' : '100'\">\n <ng-container *ngIf=\"showTimeInput$ | async\">\n <ng-container *ngTemplateOutlet=\"timeMenuAndInputTemplate\"></ng-container>\n </ng-container>\n <div class=\"add-time-button-wrapper\" *ngIf=\"showAddTime$ | async\">\n <button mat-button class=\"add-time-button\" ngClass.lt-sm=\"add-time-button-full\" (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n </div>\n <div *ngIf=\"!hideDateHint\" class=\"dbx-datetime-row dbx-datetime-hint-row\" fxFlex=\"100\">\n <div class=\"dbx-hint\" [ngSwitch]=\"fullDay$ | async\">\n <small *ngSwitchCase=\"true\">\n <b class=\"dbx-ok\">{{ allDayLabel }}</b>\n {{ displayValue$ | async | date: 'fullDate' }} ({{ displayValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"value$ | async\">\n <b class=\"dbx-ok\">{{ atTimeLabel }}</b>\n {{ displayValue$ | async | date: 'medium' }} ({{ displayValue$ | async | timeDistance }})\n </ng-container>\n </small>\n </div>\n </div>\n</div>\n\n<!-- Date Input Template -->\n<ng-template #dateInputTemplate>\n <button *ngIf=\"!hideDatePicker\" mat-icon-button (click)=\"picker.open()\" [disabled]=\"disabled\">\n <mat-icon>calendar_today</mat-icon>\n </button>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>{{ dateLabel }}</mat-label>\n <input #dateInput matInput [min]=\"dateInputMin$ | async\" [max]=\"dateInputMax$ | async\" [matDatepicker]=\"picker\" [matDatepickerFilter]=\"(pickerFilter$ | async) || defaultPickerFilter\" (dateChange)=\"datePicked($event)\" [value]=\"dateValue$ | async\" (keydown)=\"keydownOnDateInput($event)\" />\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <button mat-icon-button [matMenuTriggerFor]=\"timemenu\" aria-label=\"opens the time menu\" [disabled]=\"disabled\">\n <mat-icon>timer</mat-icon>\n </button>\n <mat-menu #timemenu=\"matMenu\">\n <ng-container *ngIf=\"timeMode === 'optional'\">\n <button mat-menu-item (click)=\"removeTime()\">\n <span>Remove Time</span>\n </button>\n <mat-divider></mat-divider>\n </ng-container>\n <button mat-menu-item (click)=\"setLogicalTime('now')\">\n <span>Now</span>\n </button>\n <button mat-menu-item (click)=\"setTime('12:00AM')\">\n <span>Midnight</span>\n </button>\n <button mat-menu-item (click)=\"setTime('6:00AM')\">\n <span>6:00AM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('8:00AM')\">\n <span>8:00AM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('10:00AM')\">\n <span>10:00AM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('12:00PM')\">\n <span>Noon</span>\n </button>\n <button mat-menu-item (click)=\"setTime('2:00PM')\">\n <span>2:00PM</span>\n </button>\n <button mat-menu-item (click)=\"setTime('5:00PM')\">\n <span>5:00PM</span>\n </button>\n </mat-menu>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>{{ timeLabel }}</mat-label>\n <input #timeInput matInput [formControl]=\"timeInputCtrl\" (focus)=\"focusTime()\" (focusout)=\"focusOutTime()\" (keydown)=\"keydownOnTimeInput($event)\" />\n </mat-form-field>\n</ng-template>\n" }]
432
432
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
433
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9kYXRldGltZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFrQyxNQUFNLGVBQWUsQ0FBQztBQUNuTSxPQUFPLEVBQXdCLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDalcsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdE0sT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFtQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFz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RUFBRTtZQUN6QixNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ1o7UUFFRCxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLGFBQWE7SUFDZixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQXhjVSx5QkFBeUI7MkdBQXpCLHlCQUF5QiwyRUMzTXRDLGkwSEF1RkE7NEZEb0hhLHlCQUF5QjtrQkFIckMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2ljYWxEYXRlU3RyaW5nQ29kZSwgTWF5YmUsIFJlYWRhYmxlVGltZVN0cmluZywgQXJyYXlPclZhbHVlLCBJU084NjAxRGF0ZVN0cmluZywgYXNBcnJheSwgZmlsdGVyTWF5YmVWYWx1ZXMsIGRhdGVGcm9tTG9naWNhbERhdGUsIERlY2lzaW9uRnVuY3Rpb24sIHJhbmRvbU51bWJlciB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGF0ZVRpbWVNaW51dGVDb25maWcsIERhdGVUaW1lTWludXRlSW5zdGFuY2UsIGZvcm1hdFRvSVNPODYwMURheVN0cmluZywgZ3Vlc3NDdXJyZW50VGltZXpvbmUsIHJlYWRhYmxlVGltZVN0cmluZ1RvRGF0ZSwgdG9Mb2NhbFJlYWRhYmxlVGltZVN0cmluZywgdG9SZWFkYWJsZVRpbWVTdHJpbmcsIHV0Y0RheUZvckRhdGUsIGZvcm1hdFRvSVNPODYwMURhdGVTdHJpbmcsIHRvSnNEYXRlLCBwYXJzZUlTTzg2MDFEYXlTdHJpbmdUb0RhdGUsIHNhZmVUb0pzRGF0ZSwgZmluZE1pbkRhdGUsIGZpbmRNYXhEYXRlLCBkYXRlVGltZU1pbnV0ZURlY2lzaW9uRnVuY3Rpb24gfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgc2hhcmVSZXBsYXksIG1hcCwgc3RhcnRXaXRoLCB0YXAsIGZpcnN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZGVib3VuY2VUaW1lLCB0aHJvdHRsZVRpbWUsIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgU3ViamVjdCwgbWVyZ2UsIGludGVydmFsLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGFkZE1pbnV0ZXMsIGlzU2FtZURheSwgaXNTYW1lTWludXRlLCBzdGFydE9mRGF5LCBhZGREYXlzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIHNraXBGaXJzdE1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIHN3aXRjaE1hcE1heWJlRGVmYXVsdCwgdGFwTG9nIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5cbmV4cG9ydCBlbnVtIERieERhdGVUaW1lRmllbGRUaW1lTW9kZSB7XG4gIC8qKlxuICAgKiBUaW1lIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICAvKipcbiAgICogVGltZSBpcyBvcHRpb25hbC5cbiAgICovXG4gIE9QVElPTkFMID0gJ29wdGlvbmFsJyxcbiAgLyoqXG4gICAqIFRpbWUgaXMgcGVybWVuYW50bHkgb2ZmLlxuICAgKi9cbiAgTk9ORSA9ICdub25lJ1xufVxuXG5leHBvcnQgZW51bSBEYnhEYXRlVGltZVZhbHVlTW9kZSB7XG4gIC8qKlxuICAgKiBWYWx1ZSBpcyByZXR1cm5lZC9wYXJzZWQgYXMgYSBEYXRlLlxuICAgKi9cbiAgREFURSA9IDAsXG4gIC8qKlxuICAgKiBWYWx1ZSBpcyByZXR1cm5lZC9wYXJzZWQgYXMgYW4gSVNPODYwMURhdGVTdHJpbmdcbiAgICovXG4gIERBVEVfU1RSSU5HID0gMSxcbiAgLyoqXG4gICAqIFZhbHVlIGlzIHJldHVybmVkL3BhcnNlZCBhcyBhbiBJU084NjAxRGF5U3RyaW5nLCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0aW1lem9uZS5cbiAgICovXG4gIERBWV9TVFJJTkcgPSAyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnkobW9kZTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUpOiAoZGF0ZTogTWF5YmU8RGF0ZSB8IHN0cmluZz4pID0+IE1heWJlPERhdGU+IHtcbiAgbGV0IGZhY3Rvcnk6IChkYXRlOiBNYXliZTxEYXRlIHwgc3RyaW5nPikgPT4gTWF5YmU8RGF0ZT47XG5cbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVlfU1RSSU5HOlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAodHlwZW9mIHggPT09ICdzdHJpbmcnID8gcGFyc2VJU084NjAxRGF5U3RyaW5nVG9EYXRlKHgpIDogeCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEVfU1RSSU5HOlxuICAgIGNhc2UgRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFURTpcbiAgICBkZWZhdWx0OlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAoeCAhPSBudWxsID8gdG9Kc0RhdGUoeCkgOiB4KTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhEYXRlVGltZU91dHB1dFZhbHVlRmFjdG9yeShtb2RlOiBEYnhEYXRlVGltZVZhbHVlTW9kZSk6IChkYXRlOiBNYXliZTxEYXRlPikgPT4gTWF5YmU8RGF0ZSB8IHN0cmluZz4ge1xuICBsZXQgZmFjdG9yeTogKGRhdGU6IE1heWJlPERhdGU+KSA9PiBNYXliZTxEYXRlIHwgc3RyaW5nPjtcblxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEVfU1RSSU5HOlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAoeCAhPSBudWxsID8gZm9ybWF0VG9JU084NjAxRGF0ZVN0cmluZyh4KSA6IHgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVlfU1RSSU5HOlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiAoeCAhPSBudWxsID8gZm9ybWF0VG9JU084NjAxRGF5U3RyaW5nKHgpIDogeCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEU6XG4gICAgZGVmYXVsdDpcbiAgICAgIGZhY3RvcnkgPSAoeCkgPT4geDtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbmV4cG9ydCB0eXBlIERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiA9IE9taXQ8RGF0ZVRpbWVNaW51dGVDb25maWcsICdkYXRlJz47XG5cbmV4cG9ydCB0eXBlIERieERhdGVUaW1lRmllbGRTeW5jVHlwZSA9ICdiZWZvcmUnIHwgJ2FmdGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhEYXRlVGltZUZpZWxkU3luY0ZpZWxkIHtcbiAgLyoqXG4gICAqIEZpZWxkIGtleS9wYXRoIHRvIHN5bmMgd2l0aC9hZ2FpbnN0LlxuICAgKi9cbiAgc3luY1dpdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIEhvdyB0byBzeW5jIGFnYWluc3QgdGhlIG90aGVyIGZpZWxkLlxuICAgKi9cbiAgc3luY1R5cGU6IERieERhdGVUaW1lRmllbGRTeW5jVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhEYXRlVGltZUZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRlIGxhYmVsLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBEYXRlXG4gICAqL1xuICBkYXRlTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSB0aW1lIGxhYmVsLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBUaW1lXG4gICAqL1xuICB0aW1lTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhYmVsIHRvIHVzZSBmb3IgdGhlIGRhdGUgaGludCBmb3IgXCJBbGwgRGF5XCIuIERlZmF1bHRzIHRvIFwiQWxsIERheVwiLlxuICAgKi9cbiAgYWxsRGF5TGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhYmVsIHRvIHVzZSBmb3IgdGhlIGRhdGUgaGludCBmb3IgXCJBdFwiLiBEZWZhdWx0cyB0byBcIkF0XCIuXG4gICAqL1xuICBhdFRpbWVMYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogVmFsdWUgbW9kZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gREFURVxuICAgKi9cbiAgdmFsdWVNb2RlPzogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBkYXRlIGlzIGhpZGRlbiwgYW5kIGF1dG9tYXRpY2FsbHkgdXNlcyB0b2RheS9pbnB1dCBkYXRlLlxuICAgKi9cbiAgdGltZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGltZSBjYW4gYmUgYWRkZWQvcmVtb3ZlZCBvcHRpb25hbGx5LlxuICAgKlxuICAgKiBUaGlzIGlzIGlnbm9yZWQgaWYgdGltZU9ubHkgaXMgc3BlY2lmaWVkLlxuICAgKi9cbiAgdGltZU1vZGU/OiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGU7XG5cbiAgLyoqXG4gICAqIE90aGVyIGZvcm0gY29udHJvbCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHdoZXRoZXIgb3Igbm90IGl0IGlzIGEgZnVsbCBkYXkuXG4gICAqXG4gICAqIFRoaXMgZmllbGQgaXMgb25seSB1c2VkIGlmIHRpbWUgaXMgb3B0aW9uYWwuXG4gICAqXG4gICAqIFdoZW4gdGltZSBpcyBvZmYsIHRoZSBmaWVsZCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGZ1bGxEYXlGaWVsZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHBhc3MgdGhlIGRhdGUgdmFsdWUgYXMgYSBVVEMgZGF0ZSwgb3IgYSBkYXRlIGluIHRoZSBjdXJyZW50IHRpbWV6b25lLlxuICAgKi9cbiAgZnVsbERheUluVVRDPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3Qgb3QgaGlkZSB0aGUgZGF0ZSBoaW50IGluZm8gY29udGVudC5cbiAgICpcbiAgICogRmFsc2UgYnkgIGRlZmF1bHRcbiAgICovXG4gIGhpZGVEYXRlSGludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGhpZGUgdGhlIGRhdGUvY2FsZW5kYXIgcGlja2VyLlxuICAgKi9cbiAgaGlkZURhdGVQaWNrZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciByZXR1cm5pbmcgdGhlIGNvbmZpZ3VyYXRpb24gb2JzZXJ2YWJsZS5cbiAgICovXG4gIGdldENvbmZpZ09icz86ICgpID0+IE9ic2VydmFibGU8RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPjtcblxuICAvKipcbiAgICogVXNlZCBmb3Igc3luY2luZyB3aXRoIG9uZSBvciBtb3JlIGZpZWxkcyB3aXRoIGEgRGF0ZSB2YWx1ZS5cbiAgICovXG4gIGdldFN5bmNGaWVsZHNPYnM/OiAoKSA9PiBPYnNlcnZhYmxlPEFycmF5T3JWYWx1ZTxEYnhEYXRlVGltZUZpZWxkU3luY0ZpZWxkPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RGF0ZVRpbWVGaWVsZFN5bmNQYXJzZWRGaWVsZCBleHRlbmRzIFBpY2s8RGJ4RGF0ZVRpbWVGaWVsZFN5bmNGaWVsZCwgJ3N5bmNUeXBlJz4ge1xuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8TWF5YmU8RGF0ZSB8IElTTzg2MDFEYXRlU3RyaW5nPj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jQ29uZmlnVmFsdWVPYnMocGFyc2VDb25maWdzT2JzOiBPYnNlcnZhYmxlPERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGRbXT4sIHR5cGU6IERieERhdGVUaW1lRmllbGRTeW5jVHlwZSk6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+IHtcbiAgcmV0dXJuIHBhcnNlQ29uZmlnc09icy5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0geC5maW5kKCh5KSA9PiB5LnN5bmNUeXBlID09PSB0eXBlKTtcbiAgICAgIGxldCByZXN1bHQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+O1xuXG4gICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgIGNvbnN0IHsgY29udHJvbCB9ID0gY29uZmlnO1xuICAgICAgICByZXN1bHQgPSBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSxcbiAgICAgICAgICBtYXAoKHgpID0+IHNhZmVUb0pzRGF0ZSh4KSA/PyBudWxsKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gb2YobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdkYXRldGltZS5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RGF0ZVRpbWVGaWVsZENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8RGJ4RGF0ZVRpbWVGaWVsZFByb3BzPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfdmFsdWVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfZnVsbERheUlucHV0Q3RybD86IEZvcm1Db250cm9sO1xuICBwcml2YXRlIF9mdWxsRGF5Q29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZnVsbERheUNvbnRyb2wkID0gdGhpcy5fZnVsbERheUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICBwcml2YXRlIF9vZmZzZXQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX3VwZGF0ZVRpbWUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSwgbWFwKGRieERhdGVUaW1lSW5wdXRWYWx1ZVBhcnNlRmFjdG9yeSh0aGlzLnZhbHVlTW9kZSkpKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IChhICE9IG51bGwgJiYgYiAhPSBudWxsID8gaXNTYW1lTWludXRlKGEsIGIpIDogYSA9PT0gYikpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gdHJpZ2dlci9kaXNwbGF5IHZpc3VhbCB1cGRhdGVzIChzcGVjaWZpY2FsbHkgb24gdGltZURpc3RhbmNlLCBldGMuKS5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZSQgPSBpbnRlcnZhbCgxMCAqIDEwMDApLnBpcGUoXG4gICAgc3RhcnRXaXRoKDApLFxuICAgIG1hcCgoKSA9PiBuZXcgRGF0ZSgpLmdldE1pbnV0ZXMoKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICB0YXAoKCkgPT4gdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKSksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudmFsdWUkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHRpbWVTdHJpbmckOiBPYnNlcnZhYmxlPFJlYWRhYmxlVGltZVN0cmluZz4gPSB0aGlzLnZhbHVlJC5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBjb25zdCB0aW1lem9uZSA9IGd1ZXNzQ3VycmVudFRpbWV6b25lKCk7XG4gICAgICBjb25zdCB0aW1lU3RyaW5nID0gdG9SZWFkYWJsZVRpbWVTdHJpbmcoeCwgdGltZXpvbmUpO1xuICAgICAgcmV0dXJuIHRpbWVTdHJpbmc7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlSW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKCksIHtcbiAgICB2YWxpZGF0b3JzOiBbXVxuICB9KTtcblxuICByZWFkb25seSB0aW1lSW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucGF0dGVybigvXihub3cpJHxeKFswLTldfCgwWzAtOV0pfCgxWzAtOV0pfCgyWzAtM10pKSg6KT8oWzAtNV1bMC05XSk/KFxccyk/KFthcEFQXVtNbV0pPyhcXFxccykqJC8pXVxuICB9KTtcblxuICBwcml2YXRlIF9jb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgX3N5bmNDb25maWdPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8QXJyYXlPclZhbHVlPERieERhdGVUaW1lRmllbGRTeW5jRmllbGQ+Pj4+KHVuZGVmaW5lZCk7XG5cbiAgZ2V0IGRhdGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRhdGVMYWJlbCA/PyAnRGF0ZSc7XG4gIH1cblxuICBnZXQgdGltZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGltZUxhYmVsID8/ICdUaW1lJztcbiAgfVxuXG4gIGdldCBhbGxEYXlMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmFsbERheUxhYmVsID8/ICdBbGwgRGF5JztcbiAgfVxuXG4gIGdldCBhdFRpbWVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmF0VGltZUxhYmVsID8/ICdBdCc7XG4gIH1cblxuICBnZXQgZGF0ZU9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FO1xuICB9XG5cbiAgZ2V0IGRhdGVUaW1lRmllbGQoKTogRGJ4RGF0ZVRpbWVGaWVsZFByb3BzIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcztcbiAgfVxuXG4gIGdldCB0aW1lT25seSgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRpbWVGaWVsZC50aW1lT25seTtcbiAgfVxuXG4gIGdldCBzaG93RGF0ZUlucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy50aW1lT25seTtcbiAgfVxuXG4gIGdldCB2YWx1ZU1vZGUoKTogRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnZhbHVlTW9kZSA/PyBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVRFO1xuICB9XG5cbiAgZ2V0IHRpbWVNb2RlKCk6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZSB7XG4gICAgY29uc3QgZGF0ZVZhbHVlc09ubHkgPSB0aGlzLnZhbHVlTW9kZSA9PT0gRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFZX1NUUklORztcblxuICAgIGlmIChkYXRlVmFsdWVzT25seSkge1xuICAgICAgcmV0dXJuIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy50aW1lT25seSA/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCA6IHRoaXMuZGF0ZVRpbWVGaWVsZC50aW1lTW9kZSA/PyBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGhpZGVEYXRlSGludCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5oaWRlRGF0ZUhpbnQgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgaGlkZURhdGVQaWNrZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuaGlkZURhdGVQaWNrZXIgPz8gZmFsc2U7XG4gIH1cblxuICByZWFkb25seSBmdWxsRGF5JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZnVsbERheUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzaG93VGltZUlucHV0JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZnVsbERheSQucGlwZShtYXAoKHgpID0+ICF4ICYmIHRoaXMudGltZU1vZGUgIT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FKSk7XG5cbiAgcmVhZG9ubHkgc2hvd0FkZFRpbWUkID0gdGhpcy5zaG93VGltZUlucHV0JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gIXggJiYgdGhpcy50aW1lTW9kZSA9PT0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk9QVElPTkFMKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGUkID0gdGhpcy5kYXRlSW5wdXRDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmRhdGVJbnB1dEN0cmwudmFsdWUpLCBmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgZGF0ZVZhbHVlJDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSBtZXJnZSh0aGlzLmRhdGUkLCB0aGlzLnZhbHVlJC5waXBlKHNraXBGaXJzdE1heWJlKCkpKS5waXBlKFxuICAgIG1hcCgoeDogTWF5YmU8RGF0ZT4pID0+ICh4ID8gc3RhcnRPZkRheSh4KSA6IG51bGwpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYSAhPSBudWxsICYmIGIgIT0gbnVsbCAmJiBpc1NhbWVEYXkoYSwgYikpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZUlucHV0JDogT2JzZXJ2YWJsZTxSZWFkYWJsZVRpbWVTdHJpbmc+ID0gdGhpcy5fdXBkYXRlVGltZS5waXBlKFxuICAgIGRlYm91bmNlVGltZSg1KSxcbiAgICBtYXAoKCkgPT4gdGhpcy50aW1lSW5wdXRDdHJsLnZhbHVlIHx8ICcnKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICk7XG5cbiAgcmVhZG9ubHkgc3luY0NvbmZpZ09icyQgPSB0aGlzLl9zeW5jQ29uZmlnT2JzLnBpcGUoc3dpdGNoTWFwTWF5YmVEZWZhdWx0KCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBwYXJzZWRTeW5jQ29uZmlncyQ6IE9ic2VydmFibGU8RGJ4RGF0ZVRpbWVGaWVsZFN5bmNQYXJzZWRGaWVsZFtdPiA9IHRoaXMuc3luY0NvbmZpZ09icyQucGlwZShcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGxldCBwYXJzZWQ6IERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGRbXTtcblxuICAgICAgaWYgKHgpIHtcbiAgICAgICAgcGFyc2VkID0gZmlsdGVyTWF5YmVWYWx1ZXMoXG4gICAgICAgICAgYXNBcnJheSh4KS5tYXAoKHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KHkuc3luY1dpdGgpO1xuXG4gICAgICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICAgICAgLi4ueVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkID0gW107XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzeW5jQ29uZmlnQmVmb3JlVmFsdWUkOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHN5bmNDb25maWdWYWx1ZU9icyh0aGlzLnBhcnNlZFN5bmNDb25maWdzJCwgJ2JlZm9yZScpO1xuICByZWFkb25seSBzeW5jQ29uZmlnQWZ0ZXJWYWx1ZSQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+ID0gc3luY0NvbmZpZ1ZhbHVlT2JzKHRoaXMucGFyc2VkU3luY0NvbmZpZ3MkLCAnYWZ0ZXInKTtcblxuICAvLyBUT0RPOiBHZXQgbWluL21heCB1c2luZyB0aGUgRGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uIHRvb1xuXG4gIHJlYWRvbmx5IGRhdGVJbnB1dE1pbiQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+ID0gdGhpcy5zeW5jQ29uZmlnQmVmb3JlVmFsdWUkO1xuICByZWFkb25seSBkYXRlSW5wdXRNYXgkOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHRoaXMuc3luY0NvbmZpZ0FmdGVyVmFsdWUkO1xuXG4gIHJlYWRvbmx5IHJhd0RhdGVUaW1lJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGVWYWx1ZSQsIHRoaXMudGltZUlucHV0JC5waXBlKHN0YXJ0V2l0aChudWxsKSksIHRoaXMuZnVsbERheSRdKS5waXBlKFxuICAgIG1hcCgoW2RhdGUsIHRpbWVTdHJpbmcsIGZ1bGxEYXldKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBNYXliZTxEYXRlPjtcblxuICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgaWYgKGZ1bGxEYXkpIHtcbiAgICAgICAgICBpZiAodGhpcy5kYXRlVGltZUZpZWxkLmZ1bGxEYXlJblVUQykge1xuICAgICAgICAgICAgcmVzdWx0ID0gdXRjRGF5Rm9yRGF0ZShkYXRlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gc3RhcnRPZkRheShkYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGltZVN0cmluZykge1xuICAgICAgICAgIHJlc3VsdCA9XG4gICAgICAgICAgICByZWFkYWJsZVRpbWVTdHJpbmdUb0RhdGUodGltZVN0cmluZywge1xuICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICB1c2VTeXN0ZW1UaW1lem9uZTogdHJ1ZVxuICAgICAgICAgICAgfSkgPz8gZGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBkYXRlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQ8TWF5YmU8RGF0ZT4+KChhLCBiKSA9PiBhICE9IG51bGwgJiYgYiAhPSBudWxsICYmIGlzU2FtZU1pbnV0ZShhLCBiKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjb25maWckID0gY29tYmluZUxhdGVzdChbdGhpcy5fY29uZmlnLnBpcGUoc3dpdGNoTWFwTWF5YmVEZWZhdWx0KCksIHNoYXJlUmVwbGF5KDEpKSwgdGhpcy5kYXRlSW5wdXRNaW4kLCB0aGlzLmRhdGVJbnB1dE1heCRdKS5waXBlKFxuICAgIG1hcCgoW3gsIGRhdGVJbnB1dE1pbiwgZGF0ZUlucHV0TWF4XSkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTWF5YmU8RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPiA9IHg7XG5cbiAgICAgIGlmIChkYXRlSW5wdXRNaW4gIT0gbnVsbCB8fCBkYXRlSW5wdXRNYXggIT0gbnVsbCkge1xuICAgICAgICBjb25zdCB7IG1pbjogbGltaXRNaW4sIG1heDogbGltaXRNYXggfSA9IHg/LmxpbWl0cyA/PyB7fTtcbiAgICAgICAgY29uc3QgbWluID0gZmluZE1pbkRhdGUoW2RhdGVJbnB1dE1pbiwgbGltaXRNaW5dKTtcbiAgICAgICAgY29uc3QgbWF4ID0gZmluZE1heERhdGUoW2RhdGVJbnB1dE1heCwgbGltaXRNYXhdKTtcblxuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgLi4ueCxcbiAgICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICAgIC4uLng/LmxpbWl0cyxcbiAgICAgICAgICAgIG1pbixcbiAgICAgICAgICAgIG1heFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcGlja2VyRmlsdGVyJDogT2JzZXJ2YWJsZTxEZWNpc2lvbkZ1bmN0aW9uPERhdGUgfCBudWxsPj4gPSB0aGlzLmNvbmZpZyQucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgaWYgKHgpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gZGF0ZVRpbWVNaW51dGVEZWNpc2lvbkZ1bmN0aW9uKHgpO1xuICAgICAgICByZXR1cm4gKHg6IERhdGUgfCBudWxsKSA9PiAoeCAhPSBudWxsID8gZmlsdGVyKHgpIDogdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKCkgPT4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRlZmF1bHRQaWNrZXJGaWx0ZXI6IERlY2lzaW9uRnVuY3Rpb248RGF0ZSB8IG51bGw+ID0gKCkgPT4gdHJ1ZTtcblxuICByZWFkb25seSB0aW1lT3V0cHV0JDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJhd0RhdGVUaW1lJCwgdGhpcy5fb2Zmc2V0LCB0aGlzLmNvbmZpZyRdKS5waXBlKFxuICAgIHRocm90dGxlVGltZSg0MCwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudFswXSA9PT0gbmV4dFswXSAmJiBuZXh0WzFdID09PSAwKSxcbiAgICB0YXAoKFssIHN0ZXBzT2Zmc2V0XSkgPT4gKHN0ZXBzT2Zmc2V0ID8gdGhpcy5fb2Zmc2V0Lm5leHQoMCkgOiAwKSksXG4gICAgbWFwKChbZGF0ZSwgc3RlcHNPZmZzZXQsIGNvbmZpZ10pID0+IHtcbiAgICAgIGlmIChkYXRlICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRGF0ZVRpbWVNaW51dGVJbnN0YW5jZSh7XG4gICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgcm91bmREb3duVG9NaW51dGU6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGF0ZSA9IGluc3RhbmNlLmxpbWl0KGRhdGUpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gc3RlcHNPZmZzZXQgKiA1O1xuICAgICAgICBkYXRlID0gYWRkTWludXRlcyhkYXRlLCBtaW51dGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGEgIT0gbnVsbCAmJiBiICE9IG51bGwgJiYgaXNTYW1lTWludXRlKGEsIGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG4gICAgdGhpcy5fY29uZmlnLm5leHQodGhpcy5kYXRlVGltZUZpZWxkLmdldENvbmZpZ09icz8uKCkpO1xuICAgIHRoaXMuX3N5bmNDb25maWdPYnMubmV4dCh0aGlzLmRhdGVUaW1lRmllbGQuZ2V0U3luY0ZpZWxkc09icz8uKCkpO1xuXG4gICAgY29uc3QgdmFsdWVGYWN0b3J5ID0gZGJ4RGF0ZVRpbWVPdXRwdXRWYWx1ZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUpO1xuXG4gICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudGltZU91dHB1dCQucGlwZShza2lwRmlyc3RNYXliZSgpKS5zdWJzY3JpYmUoKGRhdGVWYWx1ZSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZUZhY3RvcnkoZGF0ZVZhbHVlKTtcblxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbHVlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudGltZVN0cmluZyQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAvLyBTa2lwIGV2ZW50cyB3aGVyZSB0aGUgdGltZUlucHV0IHZhbHVlIGlzIGNsZWFyZWQuXG4gICAgICBpZiAoIXRoaXMudGltZUlucHV0Q3RybC52YWx1ZSAmJiB4ID09PSAnMTI6MDBBTScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFRpbWUoeCk7XG4gICAgfSk7XG5cbiAgICAvLyBXYXRjaCBmb3IgZGlzYWJsZWQgY2hhbmdlcyBzbyB3ZSBjYW4gcHJvcG9nYXRlIHRoZW0gcHJvcGVybHkuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoKGRpc2FibGVkKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5kYXRlSW5wdXRDdHJsLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLnRpbWVJbnB1dEN0cmwuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGVJbnB1dEN0cmwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy50aW1lSW5wdXRDdHJsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBpc0Z1bGxEYXlGaWVsZCA9IHRoaXMuZGF0ZVRpbWVGaWVsZC5mdWxsRGF5RmllbGROYW1lO1xuICAgIGxldCBmdWxsRGF5RmllbGRDdHJsOiBNYXliZTxBYnN0cmFjdENvbnRyb2w+O1xuXG4gICAgaWYgKGlzRnVsbERheUZpZWxkKSB7XG4gICAgICBmdWxsRGF5RmllbGRDdHJsID0gdGhpcy5mb3JtLmdldChpc0Z1bGxEYXlGaWVsZCk7XG4gICAgfVxuXG4gICAgaWYgKCFmdWxsRGF5RmllbGRDdHJsKSB7XG4gICAgICBjb25zdCBpc0Z1bGxEYXkgPSB0aGlzLnRpbWVNb2RlID09PSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORTtcbiAgICAgIHRoaXMuX2Z1bGxEYXlJbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2woaXNGdWxsRGF5KTtcblxuICAgICAgLy8gU2V0IHRoZSBjb250cm9sIGluIHRoZSBmb3JtIHRvbyBpZiB0aGUgbmFtZSBpcyBkZWZpbmVkLlxuICAgICAgaWYgKGlzRnVsbERheUZpZWxkKSB7XG4gICAgICAgICh0aGlzLmZvcm0gYXMgRm9ybUdyb3VwKS5hZGRDb250cm9sKGlzRnVsbERheUZpZWxkLCB0aGlzLl9mdWxsRGF5SW5wdXRDdHJsKTtcbiAgICAgIH1cblxuICAgICAgZnVsbERheUZpZWxkQ3RybCA9IHRoaXMuX2Z1bGxEYXlJbnB1dEN0cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fZnVsbERheUNvbnRyb2xPYnMubmV4dChmdWxsRGF5RmllbGRDdHJsKTtcblxuICAgIHN3aXRjaCAodGhpcy50aW1lTW9kZSkge1xuICAgICAgY2FzZSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuT1BUSU9OQUw6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORTpcbiAgICAgICAgdGhpcy5yZW1vdmVUaW1lKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQ6XG4gICAgICAgIHRoaXMuYWRkVGltZSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2Z1bGxEYXlDb250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fb2Zmc2V0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jb25maWcuY29tcGxldGUoKTtcbiAgICB0aGlzLl91cGRhdGVUaW1lLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc3luY0NvbmZpZ09icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgZGF0ZVBpY2tlZChldmVudDogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gZXZlbnQudmFsdWU7XG5cbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy5zZXREYXRlSW5wdXRWYWx1ZShkYXRlKTtcbiAgICB9XG4gIH1cblxuICBzZXRMb2dpY2FsVGltZSh0aW1lOiBMb2dpY2FsRGF0ZVN0cmluZ0NvZGUpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gZGF0ZUZyb21Mb2dpY2FsRGF0ZSh0aW1lKTtcblxuICAgIGlmIChkYXRlKSB7XG4gICAgICBjb25zdCB0aW1lU3RyaW5nID0gdG9Mb2NhbFJlYWRhYmxlVGltZVN0cmluZyhkYXRlKTtcbiAgICAgIHRoaXMuc2V0VGltZSh0aW1lU3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRlSW5wdXRWYWx1ZShkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5kYXRlSW5wdXRDdHJsLnNldFZhbHVlKGRhdGUpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAgc2V0VGltZSh0aW1lOiBSZWFkYWJsZVRpbWVTdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnB1dEN0cmwuc2V0VmFsdWUodGltZSk7XG4gICAgdGhpcy5fb2Zmc2V0Lm5leHQoMCk7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gIH1cblxuICBrZXlkb3duT25EYXRlSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZGlyZWN0aW9uID0gMDtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgZGlyZWN0aW9uID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICBkaXJlY3Rpb24gPSAtMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbGV0IG9mZnNldCA9IDE7XG5cbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gMzY1O1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgb2Zmc2V0ID0gMzA7XG4gICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gNztcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAwKSB7XG4gICAgICB0aGlzLmRhdGUkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChkYXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0RhdGUgPSBhZGREYXlzKGRhdGUsIG9mZnNldCAqIGRpcmVjdGlvbik7XG4gICAgICAgIHRoaXMuc2V0RGF0ZUlucHV0VmFsdWUobmV3RGF0ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBrZXlkb3duT25UaW1lSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZGlyZWN0aW9uID0gMDtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgZGlyZWN0aW9uID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICBkaXJlY3Rpb24gPSAtMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbGV0IG9mZnNldCA9IDE7XG5cbiAgICBpZiAoZXZlbnQuYWx0S2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBvZmZzZXQgPSAzMDA7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDYwO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gMCkge1xuICAgICAgdGhpcy5fb2Zmc2V0Lm5leHQodGhpcy5fb2Zmc2V0LnZhbHVlICsgb2Zmc2V0ICogZGlyZWN0aW9uKTtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzVGltZSgpOiB2b2lkIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gIH1cblxuICBmb2N1c091dFRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gIH1cblxuICBhZGRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RnVsbERheShmYWxzZSk7XG4gIH1cblxuICByZW1vdmVUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RnVsbERheSh0cnVlKTtcbiAgfVxuXG4gIHNldEZ1bGxEYXkoZnVsbERheTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZnVsbERheUNvbnRyb2wkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICB4LnNldFZhbHVlKGZ1bGxEYXkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLWZpZWxkXCIgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0LnhzPVwiY29sdW1uIHdyYXBcIiBmeExheW91dEFsaWduPVwic3BhY2UtZXZlbmx5IHN0cmV0Y2hcIj5cbiAgPCEtLSBEYXRlIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwiZGF0ZU9ubHkgPyAnMTAwJyA6ICc1MCdcIiAqbmdJZj1cInNob3dEYXRlSW5wdXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZUlucHV0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDwhLS0gVGltZSAtLT5cbiAgPGRpdiBjbGFzcz1cImRieC1kYXRldGltZS1yb3dcIiBmeEZsZXgubHQtc209XCIxMDBcIiBbZnhGbGV4XT1cInNob3dEYXRlSW5wdXQgPyAnNTAnIDogJzEwMCdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RpbWVJbnB1dCQgfCBhc3luY1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpbWVNZW51QW5kSW5wdXRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJhZGQtdGltZS1idXR0b24td3JhcHBlclwiICpuZ0lmPVwic2hvd0FkZFRpbWUkIHwgYXN5bmNcIj5cbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cImFkZC10aW1lLWJ1dHRvblwiIG5nQ2xhc3MubHQtc209XCJhZGQtdGltZS1idXR0b24tZnVsbFwiIChjbGljayk9XCJhZGRUaW1lKClcIj5cbiAgICAgICAgPG1hdC1pY29uPnRpbWVyPC9tYXQtaWNvbj5cbiAgICAgICAgQWRkIFRpbWVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlRGF0ZUhpbnRcIiBjbGFzcz1cImRieC1kYXRldGltZS1yb3cgZGJ4LWRhdGV0aW1lLWhpbnQtcm93XCIgZnhGbGV4PVwiMTAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImRieC1oaW50XCIgW25nU3dpdGNoXT1cImZ1bGxEYXkkIHwgYXN5bmNcIj5cbiAgICAgIDxzbWFsbCAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICA8YiBjbGFzcz1cImRieC1va1wiPnt7IGFsbERheUxhYmVsIH19PC9iPlxuICAgICAgICB7eyBkaXNwbGF5VmFsdWUkIHwgYXN5bmMgfCBkYXRlOiAnZnVsbERhdGUnIH19ICh7eyBkaXNwbGF5VmFsdWUkIHwgYXN5bmMgfCBkYXRlRGlzdGFuY2UgfX0pXG4gICAgICA8L3NtYWxsPlxuICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWUkIHwgYXN5bmNcIj5cbiAgICAgICAgICA8YiBjbGFzcz1cImRieC1va1wiPnt7IGF0VGltZUxhYmVsIH19PC9iPlxuICAgICAgICAgIHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IGRhdGU6ICdtZWRpdW0nIH19ICh7eyBkaXNwbGF5VmFsdWUkIHwgYXN5bmMgfCB0aW1lRGlzdGFuY2UgfX0pXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBEYXRlIElucHV0IFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNkYXRlSW5wdXRUZW1wbGF0ZT5cbiAgPGJ1dHRvbiAqbmdJZj1cIiFoaWRlRGF0ZVBpY2tlclwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicGlja2VyLm9wZW4oKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxtYXQtaWNvbj5jYWxlbmRhcl90b2RheTwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93LWZpZWxkXCI+XG4gICAgPG1hdC1sYWJlbD57eyBkYXRlTGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgI2RhdGVJbnB1dCBtYXRJbnB1dCBbbWluXT1cImRhdGVJbnB1dE1pbiQgfCBhc3luY1wiIFttYXhdPVwiZGF0ZUlucHV0TWF4JCB8IGFzeW5jXCIgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiKHBpY2tlckZpbHRlciQgfCBhc3luYykgfHwgZGVmYXVsdFBpY2tlckZpbHRlclwiIChkYXRlQ2hhbmdlKT1cImRhdGVQaWNrZWQoJGV2ZW50KVwiIFt2YWx1ZV09XCJkYXRlVmFsdWUkIHwgYXN5bmNcIiAoa2V5ZG93bik9XCJrZXlkb3duT25EYXRlSW5wdXQoJGV2ZW50KVwiIC8+XG4gICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGltZSBNZW51L0lucHV0IFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICN0aW1lTWVudUFuZElucHV0VGVtcGxhdGU+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJ0aW1lbWVudVwiIGFyaWEtbGFiZWw9XCJvcGVucyB0aGUgdGltZSBtZW51XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC1pY29uPnRpbWVyPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtbWVudSAjdGltZW1lbnU9XCJtYXRNZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRpbWVNb2RlID09PSAnb3B0aW9uYWwnXCI+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInJlbW92ZVRpbWUoKVwiPlxuICAgICAgICA8c3Bhbj5SZW1vdmUgVGltZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRMb2dpY2FsVGltZSgnbm93JylcIj5cbiAgICAgIDxzcGFuPk5vdzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzEyOjAwQU0nKVwiPlxuICAgICAgPHNwYW4+TWlkbmlnaHQ8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCc2OjAwQU0nKVwiPlxuICAgICAgPHNwYW4+NjowMEFNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnODowMEFNJylcIj5cbiAgICAgIDxzcGFuPjg6MDBBTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzEwOjAwQU0nKVwiPlxuICAgICAgPHNwYW4+MTA6MDBBTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzEyOjAwUE0nKVwiPlxuICAgICAgPHNwYW4+Tm9vbjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzI6MDBQTScpXCI+XG4gICAgICA8c3Bhbj4yOjAwUE08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCc1OjAwUE0nKVwiPlxuICAgICAgPHNwYW4+NTowMFBNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L21hdC1tZW51PlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93LWZpZWxkXCI+XG4gICAgPG1hdC1sYWJlbD57eyB0aW1lTGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgI3RpbWVJbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGltZUlucHV0Q3RybFwiIChmb2N1cyk9XCJmb2N1c1RpbWUoKVwiIChmb2N1c291dCk9XCJmb2N1c091dFRpbWUoKVwiIChrZXlkb3duKT1cImtleWRvd25PblRpbWVJbnB1dCgkZXZlbnQpXCIgLz5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9kYXRldGltZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNyTCxPQUFPLEVBQXdCLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDalcsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdE0sT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFtQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFz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RUFBRTtZQUN6QixNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ1o7UUFFRCxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLGFBQWE7SUFDZixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQXhjVSx5QkFBeUI7MkdBQXpCLHlCQUF5QiwyRUMzTXRDLGkwSEF1RkE7NEZEb0hhLHlCQUF5QjtrQkFIckMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2ljYWxEYXRlU3RyaW5nQ29kZSwgTWF5YmUsIFJlYWRhYmxlVGltZVN0cmluZywgQXJyYXlPclZhbHVlLCBJU084NjAxRGF0ZVN0cmluZywgYXNBcnJheSwgZmlsdGVyTWF5YmVWYWx1ZXMsIGRhdGVGcm9tTG9naWNhbERhdGUsIERlY2lzaW9uRnVuY3Rpb24gfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERhdGVUaW1lTWludXRlQ29uZmlnLCBEYXRlVGltZU1pbnV0ZUluc3RhbmNlLCBmb3JtYXRUb0lTTzg2MDFEYXlTdHJpbmcsIGd1ZXNzQ3VycmVudFRpbWV6b25lLCByZWFkYWJsZVRpbWVTdHJpbmdUb0RhdGUsIHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcsIHRvUmVhZGFibGVUaW1lU3RyaW5nLCB1dGNEYXlGb3JEYXRlLCBmb3JtYXRUb0lTTzg2MDFEYXRlU3RyaW5nLCB0b0pzRGF0ZSwgcGFyc2VJU084NjAxRGF5U3RyaW5nVG9EYXRlLCBzYWZlVG9Kc0RhdGUsIGZpbmRNaW5EYXRlLCBmaW5kTWF4RGF0ZSwgZGF0ZVRpbWVNaW51dGVEZWNpc2lvbkZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBtYXAsIHN0YXJ0V2l0aCwgdGFwLCBmaXJzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSwgdGhyb3R0bGVUaW1lLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIG1lcmdlLCBpbnRlcnZhbCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcsIEZvcm1seUZpZWxkUHJvcHMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBhZGRNaW51dGVzLCBpc1NhbWVEYXksIGlzU2FtZU1pbnV0ZSwgc3RhcnRPZkRheSwgYWRkRGF5cyB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBza2lwRmlyc3RNYXliZSwgU3Vic2NyaXB0aW9uT2JqZWN0LCBzd2l0Y2hNYXBNYXliZURlZmF1bHQgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcblxuZXhwb3J0IGVudW0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlIHtcbiAgLyoqXG4gICAqIFRpbWUgaXMgcmVxdWlyZWQuXG4gICAqL1xuICBSRVFVSVJFRCA9ICdyZXF1aXJlZCcsXG4gIC8qKlxuICAgKiBUaW1lIGlzIG9wdGlvbmFsLlxuICAgKi9cbiAgT1BUSU9OQUwgPSAnb3B0aW9uYWwnLFxuICAvKipcbiAgICogVGltZSBpcyBwZXJtZW5hbnRseSBvZmYuXG4gICAqL1xuICBOT05FID0gJ25vbmUnXG59XG5cbmV4cG9ydCBlbnVtIERieERhdGVUaW1lVmFsdWVNb2RlIHtcbiAgLyoqXG4gICAqIFZhbHVlIGlzIHJldHVybmVkL3BhcnNlZCBhcyBhIERhdGUuXG4gICAqL1xuICBEQVRFID0gMCxcbiAgLyoqXG4gICAqIFZhbHVlIGlzIHJldHVybmVkL3BhcnNlZCBhcyBhbiBJU084NjAxRGF0ZVN0cmluZ1xuICAgKi9cbiAgREFURV9TVFJJTkcgPSAxLFxuICAvKipcbiAgICogVmFsdWUgaXMgcmV0dXJuZWQvcGFyc2VkIGFzIGFuIElTTzg2MDFEYXlTdHJpbmcsIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHRpbWV6b25lLlxuICAgKi9cbiAgREFZX1NUUklORyA9IDJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieERhdGVUaW1lSW5wdXRWYWx1ZVBhcnNlRmFjdG9yeShtb2RlOiBEYnhEYXRlVGltZVZhbHVlTW9kZSk6IChkYXRlOiBNYXliZTxEYXRlIHwgc3RyaW5nPikgPT4gTWF5YmU8RGF0ZT4ge1xuICBsZXQgZmFjdG9yeTogKGRhdGU6IE1heWJlPERhdGUgfCBzdHJpbmc+KSA9PiBNYXliZTxEYXRlPjtcblxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBWV9TVFJJTkc6XG4gICAgICBmYWN0b3J5ID0gKHgpID0+ICh0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyBwYXJzZUlTTzg2MDFEYXlTdHJpbmdUb0RhdGUoeCkgOiB4KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFURV9TVFJJTkc6XG4gICAgY2FzZSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVRFOlxuICAgIGRlZmF1bHQ6XG4gICAgICBmYWN0b3J5ID0gKHgpID0+ICh4ICE9IG51bGwgPyB0b0pzRGF0ZSh4KSA6IHgpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gZmFjdG9yeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieERhdGVUaW1lT3V0cHV0VmFsdWVGYWN0b3J5KG1vZGU6IERieERhdGVUaW1lVmFsdWVNb2RlKTogKGRhdGU6IE1heWJlPERhdGU+KSA9PiBNYXliZTxEYXRlIHwgc3RyaW5nPiB7XG4gIGxldCBmYWN0b3J5OiAoZGF0ZTogTWF5YmU8RGF0ZT4pID0+IE1heWJlPERhdGUgfCBzdHJpbmc+O1xuXG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFURV9TVFJJTkc6XG4gICAgICBmYWN0b3J5ID0gKHgpID0+ICh4ICE9IG51bGwgPyBmb3JtYXRUb0lTTzg2MDFEYXRlU3RyaW5nKHgpIDogeCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERieERhdGVUaW1lVmFsdWVNb2RlLkRBWV9TVFJJTkc6XG4gICAgICBmYWN0b3J5ID0gKHgpID0+ICh4ICE9IG51bGwgPyBmb3JtYXRUb0lTTzg2MDFEYXlTdHJpbmcoeCkgOiB4KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFURTpcbiAgICBkZWZhdWx0OlxuICAgICAgZmFjdG9yeSA9ICh4KSA9PiB4O1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gZmFjdG9yeTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uID0gT21pdDxEYXRlVGltZU1pbnV0ZUNvbmZpZywgJ2RhdGUnPjtcblxuZXhwb3J0IHR5cGUgRGJ4RGF0ZVRpbWVGaWVsZFN5bmNUeXBlID0gJ2JlZm9yZScgfCAnYWZ0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieERhdGVUaW1lRmllbGRTeW5jRmllbGQge1xuICAvKipcbiAgICogRmllbGQga2V5L3BhdGggdG8gc3luYyB3aXRoL2FnYWluc3QuXG4gICAqL1xuICBzeW5jV2l0aDogc3RyaW5nO1xuICAvKipcbiAgICogSG93IHRvIHN5bmMgYWdhaW5zdCB0aGUgb3RoZXIgZmllbGQuXG4gICAqL1xuICBzeW5jVHlwZTogRGJ4RGF0ZVRpbWVGaWVsZFN5bmNUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieERhdGVUaW1lRmllbGRQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMge1xuICAvKipcbiAgICogQ3VzdG9tIGRhdGUgbGFiZWwuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIERhdGVcbiAgICovXG4gIGRhdGVMYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIHRpbWUgbGFiZWwuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIFRpbWVcbiAgICovXG4gIHRpbWVMYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogTGFiZWwgdG8gdXNlIGZvciB0aGUgZGF0ZSBoaW50IGZvciBcIkFsbCBEYXlcIi4gRGVmYXVsdHMgdG8gXCJBbGwgRGF5XCIuXG4gICAqL1xuICBhbGxEYXlMYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogTGFiZWwgdG8gdXNlIGZvciB0aGUgZGF0ZSBoaW50IGZvciBcIkF0XCIuIERlZmF1bHRzIHRvIFwiQXRcIi5cbiAgICovXG4gIGF0VGltZUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBtb2RlLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBEQVRFXG4gICAqL1xuICB2YWx1ZU1vZGU/OiBEYnhEYXRlVGltZVZhbHVlTW9kZTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGRhdGUgaXMgaGlkZGVuLCBhbmQgYXV0b21hdGljYWxseSB1c2VzIHRvZGF5L2lucHV0IGRhdGUuXG4gICAqL1xuICB0aW1lT25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSB0aW1lIGNhbiBiZSBhZGRlZC9yZW1vdmVkIG9wdGlvbmFsbHkuXG4gICAqXG4gICAqIFRoaXMgaXMgaWdub3JlZCBpZiB0aW1lT25seSBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICB0aW1lTW9kZT86IERieERhdGVUaW1lRmllbGRUaW1lTW9kZTtcblxuICAvKipcbiAgICogT3RoZXIgZm9ybSBjb250cm9sIGZvciBlbmFibGluZy9kaXNhYmxpbmcgd2hldGhlciBvciBub3QgaXQgaXMgYSBmdWxsIGRheS5cbiAgICpcbiAgICogVGhpcyBmaWVsZCBpcyBvbmx5IHVzZWQgaWYgdGltZSBpcyBvcHRpb25hbC5cbiAgICpcbiAgICogV2hlbiB0aW1lIGlzIG9mZiwgdGhlIGZpZWxkIGlzIHNldCB0byB0cnVlLlxuICAgKi9cbiAgZnVsbERheUZpZWxkTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gcGFzcyB0aGUgZGF0ZSB2YWx1ZSBhcyBhIFVUQyBkYXRlLCBvciBhIGRhdGUgaW4gdGhlIGN1cnJlbnQgdGltZXpvbmUuXG4gICAqL1xuICBmdWxsRGF5SW5VVEM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCBvdCBoaWRlIHRoZSBkYXRlIGhpbnQgaW5mbyBjb250ZW50LlxuICAgKlxuICAgKiBGYWxzZSBieSAgZGVmYXVsdFxuICAgKi9cbiAgaGlkZURhdGVIaW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gaGlkZSB0aGUgZGF0ZS9jYWxlbmRhciBwaWNrZXIuXG4gICAqL1xuICBoaWRlRGF0ZVBpY2tlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVzZWQgZm9yIHJldHVybmluZyB0aGUgY29uZmlndXJhdGlvbiBvYnNlcnZhYmxlLlxuICAgKi9cbiAgZ2V0Q29uZmlnT2JzPzogKCkgPT4gT2JzZXJ2YWJsZTxEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24+O1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBzeW5jaW5nIHdpdGggb25lIG9yIG1vcmUgZmllbGRzIHdpdGggYSBEYXRlIHZhbHVlLlxuICAgKi9cbiAgZ2V0U3luY0ZpZWxkc09icz86ICgpID0+IE9ic2VydmFibGU8QXJyYXlPclZhbHVlPERieERhdGVUaW1lRmllbGRTeW5jRmllbGQ+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhEYXRlVGltZUZpZWxkU3luY1BhcnNlZEZpZWxkIGV4dGVuZHMgUGljazxEYnhEYXRlVGltZUZpZWxkU3luY0ZpZWxkLCAnc3luY1R5cGUnPiB7XG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxNYXliZTxEYXRlIHwgSVNPODYwMURhdGVTdHJpbmc+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN5bmNDb25maWdWYWx1ZU9icyhwYXJzZUNvbmZpZ3NPYnM6IE9ic2VydmFibGU8RGJ4RGF0ZVRpbWVGaWVsZFN5bmNQYXJzZWRGaWVsZFtdPiwgdHlwZTogRGJ4RGF0ZVRpbWVGaWVsZFN5bmNUeXBlKTogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4ge1xuICByZXR1cm4gcGFyc2VDb25maWdzT2JzLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSB4LmZpbmQoKHkpID0+IHkuc3luY1R5cGUgPT09IHR5cGUpO1xuICAgICAgbGV0IHJlc3VsdDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD47XG5cbiAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgY29uc3QgeyBjb250cm9sIH0gPSBjb25maWc7XG4gICAgICAgIHJlc3VsdCA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpLFxuICAgICAgICAgIG1hcCgoeCkgPT4gc2FmZVRvSnNEYXRlKHgpID8/IG51bGwpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBvZihudWxsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhEYXRlVGltZUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxEYnhEYXRlVGltZUZpZWxkUHJvcHM+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF92YWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9mdWxsRGF5SW5wdXRDdHJsPzogRm9ybUNvbnRyb2w7XG4gIHByaXZhdGUgX2Z1bGxEYXlDb250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmdWxsRGF5Q29udHJvbCQgPSB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX29mZnNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVGltZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgdmFsdWUkID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpLCBtYXAoZGJ4RGF0ZVRpbWVJbnB1dFZhbHVlUGFyc2VGYWN0b3J5KHRoaXMudmFsdWVNb2RlKSkpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gKGEgIT0gbnVsbCAmJiBiICE9IG51bGwgPyBpc1NhbWVNaW51dGUoYSwgYikgOiBhID09PSBiKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogVXNlZCB0byB0cmlnZ2VyL2Rpc3BsYXkgdmlzdWFsIHVwZGF0ZXMgKHNwZWNpZmljYWxseSBvbiB0aW1lRGlzdGFuY2UsIGV0Yy4pLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlJCA9IGludGVydmFsKDEwICogMTAwMCkucGlwZShcbiAgICBzdGFydFdpdGgoMCksXG4gICAgbWFwKCgpID0+IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHRhcCgoKSA9PiB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy52YWx1ZSQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZVN0cmluZyQ6IE9ic2VydmFibGU8UmVhZGFibGVUaW1lU3RyaW5nPiA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgZmlsdGVyTWF5YmUoKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWV6b25lID0gZ3Vlc3NDdXJyZW50VGltZXpvbmUoKTtcbiAgICAgIGNvbnN0IHRpbWVTdHJpbmcgPSB0b1JlYWRhYmxlVGltZVN0cmluZyh4LCB0aW1lem9uZSk7XG4gICAgICByZXR1cm4gdGltZVN0cmluZztcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVJbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2wobmV3IERhdGUoKSwge1xuICAgIHZhbGlkYXRvcnM6IFtdXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHRpbWVJbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2woJycsIHtcbiAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKG5vdykkfF4oWzAtOV18KDBbMC05XSl8KDFbMC05XSl8KDJbMC0zXSkpKDopPyhbMC01XVswLTldKT8oXFxzKT8oW2FwQVBdW01tXSk/KFxcXFxzKSokLyldXG4gIH0pO1xuXG4gIHByaXZhdGUgX2NvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24+Pj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfc3luY0NvbmZpZ09icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxBcnJheU9yVmFsdWU8RGJ4RGF0ZVRpbWVGaWVsZFN5bmNGaWVsZD4+Pj4odW5kZWZpbmVkKTtcblxuICBnZXQgZGF0ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGF0ZUxhYmVsID8/ICdEYXRlJztcbiAgfVxuXG4gIGdldCB0aW1lTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50aW1lTGFiZWwgPz8gJ1RpbWUnO1xuICB9XG5cbiAgZ2V0IGFsbERheUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWxsRGF5TGFiZWwgPz8gJ0FsbCBEYXknO1xuICB9XG5cbiAgZ2V0IGF0VGltZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYXRUaW1lTGFiZWwgPz8gJ0F0JztcbiAgfVxuXG4gIGdldCBkYXRlT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50aW1lTW9kZSA9PT0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU7XG4gIH1cblxuICBnZXQgZGF0ZVRpbWVGaWVsZCgpOiBEYnhEYXRlVGltZUZpZWxkUHJvcHMge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzO1xuICB9XG5cbiAgZ2V0IHRpbWVPbmx5KCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRlVGltZUZpZWxkLnRpbWVPbmx5O1xuICB9XG5cbiAgZ2V0IHNob3dEYXRlSW5wdXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnRpbWVPbmx5O1xuICB9XG5cbiAgZ2V0IHZhbHVlTW9kZSgpOiBEYnhEYXRlVGltZVZhbHVlTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMudmFsdWVNb2RlID8/IERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEU7XG4gIH1cblxuICBnZXQgdGltZU1vZGUoKTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlIHtcbiAgICBjb25zdCBkYXRlVmFsdWVzT25seSA9IHRoaXMudmFsdWVNb2RlID09PSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVlfU1RSSU5HO1xuXG4gICAgaWYgKGRhdGVWYWx1ZXNPbmx5KSB7XG4gICAgICByZXR1cm4gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRpbWVPbmx5ID8gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEIDogdGhpcy5kYXRlVGltZUZpZWxkLnRpbWVNb2RlID8/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRDtcbiAgICB9XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuZGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgaGlkZURhdGVIaW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmhpZGVEYXRlSGludCA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCBoaWRlRGF0ZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5oaWRlRGF0ZVBpY2tlciA/PyBmYWxzZTtcbiAgfVxuXG4gIHJlYWRvbmx5IGZ1bGxEYXkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5mdWxsRGF5Q29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNob3dUaW1lSW5wdXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5mdWxsRGF5JC5waXBlKG1hcCgoeCkgPT4gIXggJiYgdGhpcy50aW1lTW9kZSAhPT0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUpKTtcblxuICByZWFkb25seSBzaG93QWRkVGltZSQgPSB0aGlzLnNob3dUaW1lSW5wdXQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAheCAmJiB0aGlzLnRpbWVNb2RlID09PSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuT1BUSU9OQUwpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0ZSQgPSB0aGlzLmRhdGVJbnB1dEN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZGF0ZUlucHV0Q3RybC52YWx1ZSksIGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkYXRlVmFsdWUkOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IG1lcmdlKHRoaXMuZGF0ZSQsIHRoaXMudmFsdWUkLnBpcGUoc2tpcEZpcnN0TWF5YmUoKSkpLnBpcGUoXG4gICAgbWFwKCh4OiBNYXliZTxEYXRlPikgPT4gKHggPyBzdGFydE9mRGF5KHgpIDogbnVsbCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBhICE9IG51bGwgJiYgYiAhPSBudWxsICYmIGlzU2FtZURheShhLCBiKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB0aW1lSW5wdXQkOiBPYnNlcnZhYmxlPFJlYWRhYmxlVGltZVN0cmluZz4gPSB0aGlzLl91cGRhdGVUaW1lLnBpcGUoXG4gICAgZGVib3VuY2VUaW1lKDUpLFxuICAgIG1hcCgoKSA9PiB0aGlzLnRpbWVJbnB1dEN0cmwudmFsdWUgfHwgJycpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgKTtcblxuICByZWFkb25seSBzeW5jQ29uZmlnT2JzJCA9IHRoaXMuX3N5bmNDb25maWdPYnMucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHBhcnNlZFN5bmNDb25maWdzJDogT2JzZXJ2YWJsZTxEYnhEYXRlVGltZUZpZWxkU3luY1BhcnNlZEZpZWxkW10+ID0gdGhpcy5zeW5jQ29uZmlnT2JzJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IHBhcnNlZDogRGJ4RGF0ZVRpbWVGaWVsZFN5bmNQYXJzZWRGaWVsZFtdO1xuXG4gICAgICBpZiAoeCkge1xuICAgICAgICBwYXJzZWQgPSBmaWx0ZXJNYXliZVZhbHVlcyhcbiAgICAgICAgICBhc0FycmF5KHgpLm1hcCgoeSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoeS5zeW5jV2l0aCk7XG5cbiAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29udHJvbCxcbiAgICAgICAgICAgICAgICAuLi55XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWQgPSBbXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHN5bmNDb25maWdCZWZvcmVWYWx1ZSQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+ID0gc3luY0NvbmZpZ1ZhbHVlT2JzKHRoaXMucGFyc2VkU3luY0NvbmZpZ3MkLCAnYmVmb3JlJyk7XG4gIHJlYWRvbmx5IHN5bmNDb25maWdBZnRlclZhbHVlJDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSBzeW5jQ29uZmlnVmFsdWVPYnModGhpcy5wYXJzZWRTeW5jQ29uZmlncyQsICdhZnRlcicpO1xuXG4gIC8vIFRPRE86IEdldCBtaW4vbWF4IHVzaW5nIHRoZSBEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24gdG9vXG5cbiAgcmVhZG9ubHkgZGF0ZUlucHV0TWluJDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSB0aGlzLnN5bmNDb25maWdCZWZvcmVWYWx1ZSQ7XG4gIHJlYWRvbmx5IGRhdGVJbnB1dE1heCQ6IE9ic2VydmFibGU8RGF0ZSB8IG51bGw+ID0gdGhpcy5zeW5jQ29uZmlnQWZ0ZXJWYWx1ZSQ7XG5cbiAgcmVhZG9ubHkgcmF3RGF0ZVRpbWUkOiBPYnNlcnZhYmxlPE1heWJlPERhdGU+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF0ZVZhbHVlJCwgdGhpcy50aW1lSW5wdXQkLnBpcGUoc3RhcnRXaXRoKG51bGwpKSwgdGhpcy5mdWxsRGF5JF0pLnBpcGUoXG4gICAgbWFwKChbZGF0ZSwgdGltZVN0cmluZywgZnVsbERheV0pID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IE1heWJlPERhdGU+O1xuXG4gICAgICBpZiAoZGF0ZSkge1xuICAgICAgICBpZiAoZnVsbERheSkge1xuICAgICAgICAgIGlmICh0aGlzLmRhdGVUaW1lRmllbGQuZnVsbERheUluVVRDKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB1dGNEYXlGb3JEYXRlKGRhdGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBzdGFydE9mRGF5KGRhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aW1lU3RyaW5nKSB7XG4gICAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICAgIHJlYWRhYmxlVGltZVN0cmluZ1RvRGF0ZSh0aW1lU3RyaW5nLCB7XG4gICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgIHVzZVN5c3RlbVRpbWV6b25lOiB0cnVlXG4gICAgICAgICAgICB9KSA/PyBkYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGRhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxNYXliZTxEYXRlPj4oKGEsIGIpID0+IGEgIT0gbnVsbCAmJiBiICE9IG51bGwgJiYgaXNTYW1lTWludXRlKGEsIGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9jb25maWcucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSwgc2hhcmVSZXBsYXkoMSkpLCB0aGlzLmRhdGVJbnB1dE1pbiQsIHRoaXMuZGF0ZUlucHV0TWF4JF0pLnBpcGUoXG4gICAgbWFwKChbeCwgZGF0ZUlucHV0TWluLCBkYXRlSW5wdXRNYXhdKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBNYXliZTxEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24+ID0geDtcblxuICAgICAgaWYgKGRhdGVJbnB1dE1pbiAhPSBudWxsIHx8IGRhdGVJbnB1dE1heCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHsgbWluOiBsaW1pdE1pbiwgbWF4OiBsaW1pdE1heCB9ID0geD8ubGltaXRzID8/IHt9O1xuICAgICAgICBjb25zdCBtaW4gPSBmaW5kTWluRGF0ZShbZGF0ZUlucHV0TWluLCBsaW1pdE1pbl0pO1xuICAgICAgICBjb25zdCBtYXggPSBmaW5kTWF4RGF0ZShbZGF0ZUlucHV0TWF4LCBsaW1pdE1heF0pO1xuXG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgLi4ueD8ubGltaXRzLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBwaWNrZXJGaWx0ZXIkOiBPYnNlcnZhYmxlPERlY2lzaW9uRnVuY3Rpb248RGF0ZSB8IG51bGw+PiA9IHRoaXMuY29uZmlnJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBpZiAoeCkge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBkYXRlVGltZU1pbnV0ZURlY2lzaW9uRnVuY3Rpb24oeCk7XG4gICAgICAgIHJldHVybiAoeDogRGF0ZSB8IG51bGwpID0+ICh4ICE9IG51bGwgPyBmaWx0ZXIoeCkgOiB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB0cnVlO1xuICAgICAgfVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGVmYXVsdFBpY2tlckZpbHRlcjogRGVjaXNpb25GdW5jdGlvbjxEYXRlIHwgbnVsbD4gPSAoKSA9PiB0cnVlO1xuXG4gIHJlYWRvbmx5IHRpbWVPdXRwdXQkOiBPYnNlcnZhYmxlPE1heWJlPERhdGU+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucmF3RGF0ZVRpbWUkLCB0aGlzLl9vZmZzZXQsIHRoaXMuY29uZmlnJF0pLnBpcGUoXG4gICAgdGhyb3R0bGVUaW1lKDQwLCB1bmRlZmluZWQsIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50WzBdID09PSBuZXh0WzBdICYmIG5leHRbMV0gPT09IDApLFxuICAgIHRhcCgoWywgc3RlcHNPZmZzZXRdKSA9PiAoc3RlcHNPZmZzZXQgPyB0aGlzLl9vZmZzZXQubmV4dCgwKSA6IDApKSxcbiAgICBtYXAoKFtkYXRlLCBzdGVwc09mZnNldCwgY29uZmlnXSkgPT4ge1xuICAgICAgaWYgKGRhdGUgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBEYXRlVGltZU1pbnV0ZUluc3RhbmNlKHtcbiAgICAgICAgICBkYXRlLFxuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICByb3VuZERvd25Ub01pbnV0ZTogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBkYXRlID0gaW5zdGFuY2UubGltaXQoZGF0ZSk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBzdGVwc09mZnNldCAqIDU7XG4gICAgICAgIGRhdGUgPSBhZGRNaW51dGVzKGRhdGUsIG1pbnV0ZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYSAhPSBudWxsICYmIGIgIT0gbnVsbCAmJiBpc1NhbWVNaW51dGUoYSwgYikpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMubmV4dCh0aGlzLmZvcm1Db250cm9sKTtcbiAgICB0aGlzLl9jb25maWcubmV4dCh0aGlzLmRhdGVUaW1lRmllbGQuZ2V0Q29uZmlnT2JzPy4oKSk7XG4gICAgdGhpcy5fc3luY0NvbmZpZ09icy5uZXh0KHRoaXMuZGF0ZVRpbWVGaWVsZC5nZXRTeW5jRmllbGRzT2JzPy4oKSk7XG5cbiAgICBjb25zdCB2YWx1ZUZhY3RvcnkgPSBkYnhEYXRlVGltZU91dHB1dFZhbHVlRmFjdG9yeSh0aGlzLnZhbHVlTW9kZSk7XG5cbiAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdGhpcy50aW1lT3V0cHV0JC5waXBlKHNraXBGaXJzdE1heWJlKCkpLnN1YnNjcmliZSgoZGF0ZVZhbHVlKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlRmFjdG9yeShkYXRlVmFsdWUpO1xuXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsdWVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy50aW1lU3RyaW5nJC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIC8vIFNraXAgZXZlbnRzIHdoZXJlIHRoZSB0aW1lSW5wdXQgdmFsdWUgaXMgY2xlYXJlZC5cbiAgICAgIGlmICghdGhpcy50aW1lSW5wdXRDdHJsLnZhbHVlICYmIHggPT09ICcxMjowMEFNJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0VGltZSh4KTtcbiAgICB9KTtcblxuICAgIC8vIFdhdGNoIGZvciBkaXNhYmxlZCBjaGFuZ2VzIHNvIHdlIGNhbiBwcm9wb2dhdGUgdGhlbSBwcm9wZXJseS5cbiAgICB0aGlzLmZvcm1Db250cm9sLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSgoZGlzYWJsZWQpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmRhdGVJbnB1dEN0cmwuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMudGltZUlucHV0Q3RybC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0ZUlucHV0Q3RybC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLnRpbWVJbnB1dEN0cmwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGlzRnVsbERheUZpZWxkID0gdGhpcy5kYXRlVGltZUZpZWxkLmZ1bGxEYXlGaWVsZE5hbWU7XG4gICAgbGV0IGZ1bGxEYXlGaWVsZEN0cmw6IE1heWJlPEFic3RyYWN0Q29udHJvbD47XG5cbiAgICBpZiAoaXNGdWxsRGF5RmllbGQpIHtcbiAgICAgIGZ1bGxEYXlGaWVsZEN0cmwgPSB0aGlzLmZvcm0uZ2V0KGlzRnVsbERheUZpZWxkKTtcbiAgICB9XG5cbiAgICBpZiAoIWZ1bGxEYXlGaWVsZEN0cmwpIHtcbiAgICAgIGNvbnN0IGlzRnVsbERheSA9IHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FO1xuICAgICAgdGhpcy5fZnVsbERheUlucHV0Q3RybCA9IG5ldyBGb3JtQ29udHJvbChpc0Z1bGxEYXkpO1xuXG4gICAgICAvLyBTZXQgdGhlIGNvbnRyb2wgaW4gdGhlIGZvcm0gdG9vIGlmIHRoZSBuYW1lIGlzIGRlZmluZWQuXG4gICAgICBpZiAoaXNGdWxsRGF5RmllbGQpIHtcbiAgICAgICAgKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2woaXNGdWxsRGF5RmllbGQsIHRoaXMuX2Z1bGxEYXlJbnB1dEN0cmwpO1xuICAgICAgfVxuXG4gICAgICBmdWxsRGF5RmllbGRDdHJsID0gdGhpcy5fZnVsbERheUlucHV0Q3RybDtcbiAgICB9XG5cbiAgICB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5uZXh0KGZ1bGxEYXlGaWVsZEN0cmwpO1xuXG4gICAgc3dpdGNoICh0aGlzLnRpbWVNb2RlKSB7XG4gICAgICBjYXNlIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5PUFRJT05BTDpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FOlxuICAgICAgICB0aGlzLnJlbW92ZVRpbWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRDpcbiAgICAgICAgdGhpcy5hZGRUaW1lKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fZnVsbERheUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9vZmZzZXQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NvbmZpZy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zeW5jQ29uZmlnT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl92YWx1ZVN1Yi5kZXN0cm95KCk7XG4gIH1cblxuICBkYXRlUGlja2VkKGV2ZW50OiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxEYXRlPik6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBldmVudC52YWx1ZTtcblxuICAgIGlmIChkYXRlKSB7XG4gICAgICB0aGlzLnNldERhdGVJbnB1dFZhbHVlKGRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHNldExvZ2ljYWxUaW1lKHRpbWU6IExvZ2ljYWxEYXRlU3RyaW5nQ29kZSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBkYXRlRnJvbUxvZ2ljYWxEYXRlKHRpbWUpO1xuXG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIGNvbnN0IHRpbWVTdHJpbmcgPSB0b0xvY2FsUmVhZGFibGVUaW1lU3RyaW5nKGRhdGUpO1xuICAgICAgdGhpcy5zZXRUaW1lKHRpbWVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHNldERhdGVJbnB1dFZhbHVlKGRhdGU6IERhdGUpIHtcbiAgICB0aGlzLmRhdGVJbnB1dEN0cmwuc2V0VmFsdWUoZGF0ZSk7XG4gICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gIH1cblxuICBzZXRUaW1lKHRpbWU6IFJlYWRhYmxlVGltZVN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudGltZUlucHV0Q3RybC5zZXRWYWx1ZSh0aW1lKTtcbiAgICB0aGlzLl9vZmZzZXQubmV4dCgwKTtcbiAgICB0aGlzLl91cGRhdGVUaW1lLm5leHQoKTtcbiAgfVxuXG4gIGtleWRvd25PbkRhdGVJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGxldCBkaXJlY3Rpb24gPSAwO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXk/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICBkaXJlY3Rpb24gPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fycm93ZG93bic6XG4gICAgICAgIGRpcmVjdGlvbiA9IC0xO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBsZXQgb2Zmc2V0ID0gMTtcblxuICAgIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBvZmZzZXQgPSAzNjU7XG4gICAgfSBlbHNlIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICBvZmZzZXQgPSAzMDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBvZmZzZXQgPSA3O1xuICAgIH1cblxuICAgIGlmIChkaXJlY3Rpb24gIT09IDApIHtcbiAgICAgIHRoaXMuZGF0ZSQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGRhdGUpID0+IHtcbiAgICAgICAgY29uc3QgbmV3RGF0ZSA9IGFkZERheXMoZGF0ZSwgb2Zmc2V0ICogZGlyZWN0aW9uKTtcbiAgICAgICAgdGhpcy5zZXREYXRlSW5wdXRWYWx1ZShuZXdEYXRlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGtleWRvd25PblRpbWVJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGxldCBkaXJlY3Rpb24gPSAwO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXk/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICBkaXJlY3Rpb24gPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fycm93ZG93bic6XG4gICAgICAgIGRpcmVjdGlvbiA9IC0xO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBsZXQgb2Zmc2V0ID0gMTtcblxuICAgIGlmIChldmVudC5hbHRLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDMwMDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgb2Zmc2V0ID0gNjA7XG4gICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gNTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAwKSB7XG4gICAgICB0aGlzLl9vZmZzZXQubmV4dCh0aGlzLl9vZmZzZXQudmFsdWUgKyBvZmZzZXQgKiBkaXJlY3Rpb24pO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNUaW1lKCk6IHZvaWQge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuXG4gIGZvY3VzT3V0VGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVUaW1lLm5leHQoKTtcbiAgfVxuXG4gIGFkZFRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGdWxsRGF5KGZhbHNlKTtcbiAgfVxuXG4gIHJlbW92ZVRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGdWxsRGF5KHRydWUpO1xuICB9XG5cbiAgc2V0RnVsbERheShmdWxsRGF5OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5mdWxsRGF5Q29udHJvbCQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHguc2V0VmFsdWUoZnVsbERheSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtZGF0ZXRpbWUtZmllbGRcIiBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXQueHM9XCJjb2x1bW4gd3JhcFwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1ldmVubHkgc3RyZXRjaFwiPlxuICA8IS0tIERhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93XCIgZnhGbGV4Lmx0LXNtPVwiMTAwXCIgW2Z4RmxleF09XCJkYXRlT25seSA/ICcxMDAnIDogJzUwJ1wiICpuZ0lmPVwic2hvd0RhdGVJbnB1dFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlSW5wdXRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPCEtLSBUaW1lIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwic2hvd0RhdGVJbnB1dCA/ICc1MCcgOiAnMTAwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGltZUlucHV0JCB8IGFzeW5jXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZU1lbnVBbmRJbnB1dFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImFkZC10aW1lLWJ1dHRvbi13cmFwcGVyXCIgKm5nSWY9XCJzaG93QWRkVGltZSQgfCBhc3luY1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwiYWRkLXRpbWUtYnV0dG9uXCIgbmdDbGFzcy5sdC1zbT1cImFkZC10aW1lLWJ1dHRvbi1mdWxsXCIgKGNsaWNrKT1cImFkZFRpbWUoKVwiPlxuICAgICAgICA8bWF0LWljb24+dGltZXI8L21hdC1pY29uPlxuICAgICAgICBBZGQgVGltZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWhpZGVEYXRlSGludFwiIGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvdyBkYngtZGF0ZXRpbWUtaGludC1yb3dcIiBmeEZsZXg9XCIxMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWhpbnRcIiBbbmdTd2l0Y2hdPVwiZnVsbERheSQgfCBhc3luY1wiPlxuICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgIDxiIGNsYXNzPVwiZGJ4LW9rXCI+e3sgYWxsRGF5TGFiZWwgfX08L2I+XG4gICAgICAgIHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IGRhdGU6ICdmdWxsRGF0ZScgfX0gKHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IGRhdGVEaXN0YW5jZSB9fSlcbiAgICAgIDwvc21hbGw+XG4gICAgICA8c21hbGwgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWx1ZSQgfCBhc3luY1wiPlxuICAgICAgICAgIDxiIGNsYXNzPVwiZGJ4LW9rXCI+e3sgYXRUaW1lTGFiZWwgfX08L2I+XG4gICAgICAgICAge3sgZGlzcGxheVZhbHVlJCB8IGFzeW5jIHwgZGF0ZTogJ21lZGl1bScgfX0gKHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IHRpbWVEaXN0YW5jZSB9fSlcbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIERhdGUgSW5wdXQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2RhdGVJbnB1dFRlbXBsYXRlPlxuICA8YnV0dG9uICpuZ0lmPVwiIWhpZGVEYXRlUGlja2VyXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwaWNrZXIub3BlbigpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC1pY29uPmNhbGVuZGFyX3RvZGF5PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1kYXRldGltZS1yb3ctZmllbGRcIj5cbiAgICA8bWF0LWxhYmVsPnt7IGRhdGVMYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjZGF0ZUlucHV0IG1hdElucHV0IFttaW5dPVwiZGF0ZUlucHV0TWluJCB8IGFzeW5jXCIgW21heF09XCJkYXRlSW5wdXRNYXgkIHwgYXN5bmNcIiBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCIocGlja2VyRmlsdGVyJCB8IGFzeW5jKSB8fCBkZWZhdWx0UGlja2VyRmlsdGVyXCIgKGRhdGVDaGFuZ2UpPVwiZGF0ZVBpY2tlZCgkZXZlbnQpXCIgW3ZhbHVlXT1cImRhdGVWYWx1ZSQgfCBhc3luY1wiIChrZXlkb3duKT1cImtleWRvd25PbkRhdGVJbnB1dCgkZXZlbnQpXCIgLz5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBUaW1lIE1lbnUvSW5wdXQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI3RpbWVNZW51QW5kSW5wdXRUZW1wbGF0ZT5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRpbWVtZW51XCIgYXJpYS1sYWJlbD1cIm9wZW5zIHRoZSB0aW1lIG1lbnVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8bWF0LWljb24+dGltZXI8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPG1hdC1tZW51ICN0aW1lbWVudT1cIm1hdE1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGltZU1vZGUgPT09ICdvcHRpb25hbCdcIj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicmVtb3ZlVGltZSgpXCI+XG4gICAgICAgIDxzcGFuPlJlbW92ZSBUaW1lPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldExvZ2ljYWxUaW1lKCdub3cnKVwiPlxuICAgICAgPHNwYW4+Tm93PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnMTI6MDBBTScpXCI+XG4gICAgICA8c3Bhbj5NaWRuaWdodDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzY6MDBBTScpXCI+XG4gICAgICA8c3Bhbj42OjAwQU08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRUaW1lKCc4OjAwQU0nKVwiPlxuICAgICAgPHNwYW4+ODowMEFNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnMTA6MDBBTScpXCI+XG4gICAgICA8c3Bhbj4xMDowMEFNPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnMTI6MDBQTScpXCI+XG4gICAgICA8c3Bhbj5Ob29uPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0VGltZSgnMjowMFBNJylcIj5cbiAgICAgIDxzcGFuPjI6MDBQTTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldFRpbWUoJzU6MDBQTScpXCI+XG4gICAgICA8c3Bhbj41OjAwUE08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbWF0LW1lbnU+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1kYXRldGltZS1yb3ctZmllbGRcIj5cbiAgICA8bWF0LWxhYmVsPnt7IHRpbWVMYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjdGltZUlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0aW1lSW5wdXRDdHJsXCIgKGZvY3VzKT1cImZvY3VzVGltZSgpXCIgKGZvY3Vzb3V0KT1cImZvY3VzT3V0VGltZSgpXCIgKGtleWRvd24pPVwia2V5ZG93bk9uVGltZUlucHV0KCRldmVudClcIiAvPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==