@dereekb/dbx-form 9.24.18 → 9.24.19

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.
@@ -23,6 +23,7 @@ export class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
23
23
  this._valueSub = new SubscriptionObject();
24
24
  this._timezoneSub = new SubscriptionObject();
25
25
  this._minMaxDateRangeSub = new SubscriptionObject();
26
+ this._defaultWeekSub = new SubscriptionObject();
26
27
  this._filterSub = new SubscriptionObject();
27
28
  this._exclusionsSub = new SubscriptionObject();
28
29
  this._formControlObs = new BehaviorSubject(undefined);
@@ -54,6 +55,9 @@ export class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
54
55
  get showCustomize() {
55
56
  return !this.props.hideCustomize;
56
57
  }
58
+ get defaultScheduleDays() {
59
+ return this.props.defaultScheduleDays;
60
+ }
57
61
  get minMaxDateRange() {
58
62
  return this.props.minMaxDateRange;
59
63
  }
@@ -92,10 +96,13 @@ export class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
92
96
  this._valueSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateScheduleRangeValue$.subscribe((x) => {
93
97
  this.formControl.setValue(x);
94
98
  });
95
- const { timezone, minMaxDateRange, filter, exclusions } = this;
99
+ const { timezone, minMaxDateRange, filter, exclusions, defaultScheduleDays } = this;
96
100
  if (filter != null) {
97
101
  this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter));
98
102
  }
103
+ if (defaultScheduleDays != null) {
104
+ this._defaultWeekSub.subscription = this.dbxCalendarScheduleSelectionStore.setDefaultScheduleDays(asObservable(defaultScheduleDays));
105
+ }
99
106
  if (minMaxDateRange != null) {
100
107
  this._minMaxDateRangeSub.subscription = this.dbxCalendarScheduleSelectionStore.setMinMaxDateRange(asObservable(minMaxDateRange));
101
108
  }
@@ -151,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
151
158
  }], ctorParameters: function () { return [{ type: i1.CompactContextStore, decorators: [{
152
159
  type: Optional
153
160
  }] }, { type: i2.DbxCalendarScheduleSelectionStore }, { type: i0.NgZone }]; } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9maWVsZC9zY2hlZHVsZS9jYWxlbmRhci5zY2hlZHVsZS5maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFnQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuSCxPQUFPLEVBQUUsV0FBVyxFQUFxQixrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUE0Ryx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSyxPQUFPLEVBQWtDLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUgsT0FBTyxFQUFFLDBEQUEwRCxFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7Ozs7O0FBNEQ3SCxNQUFNLE9BQU8sOENBQWtKLFNBQVEsU0FBNkI7SUFzQmxNLFlBQWlDLE9BQTRCLEVBQVcsaUNBQW9FLEVBQVcsTUFBYztRQUNuSyxLQUFLLEVBQUUsQ0FBQztRQUR1QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUFXLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBckI3SixhQUFRLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BDLGNB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QztRQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7OzRJQXJKVSw4Q0FBOEM7Z0lBQTlDLDhDQUE4Qyx1Q0FGOUMsQ0FBQywwREFBMEQsRUFBRSxDQUFDLGlEQVIvRDs7Ozs7OztHQU9UOzRGQUdVLDhDQUE4QztrQkFYMUQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUU7Ozs7Ozs7R0FPVDtvQkFDRCxTQUFTLEVBQUUsQ0FBQywwREFBMEQsRUFBRSxDQUFDO2lCQUMxRTs7MEJBdUJjLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBhY3RDb250ZXh0U3RvcmUsIERieERpYWxvZ0NvbnRlbnRGb290ZXJDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgQXJyYXlPclZhbHVlLCBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIE9ic2VydmFibGVPclZhbHVlLCBTdWJzY3JpcHRpb25PYmplY3QsIGFzT2JzZXJ2YWJsZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGF0ZU9yRGF0ZVJhbmdlT3JEYXRlQmxvY2tJbmRleE9yRGF0ZUJsb2NrUmFuZ2UsIERhdGVSYW5nZSwgRGF0ZVNjaGVkdWxlRGF0ZUZpbHRlckNvbmZpZywgVGltZXpvbmVTdHJpbmcsIGlzU2FtZURhdGVTY2hlZHVsZVJhbmdlIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5zdG9yZSc7XG5pbXBvcnQgeyBwcm92aWRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlSWZQYXJlbnRJc1VuYXZhaWxhYmxlIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnN0b3JlLnByb3ZpZGUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVQb3B1cENvbnRlbnRDb25maWcgfSBmcm9tICcuLi8uLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4Rm9ybUNhbGVuZGFyRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZFByb3BzIGV4dGVuZHMgUGljazxGb3JtbHlGaWVsZFByb3BzLCAnbGFiZWwnIHwgJ2Rlc2NyaXB0aW9uJyB8ICdyZWFkb25seScgfCAncmVxdWlyZWQnPiwgUGljazxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsICdjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcicgfCAnaW5pdGlhbFNlbGVjdGlvblN0YXRlJz4sIFBhcnRpYWw8UGljazxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsICdjZWxsQ29udGVudEZhY3RvcnknPj4ge1xuICBhcHBlYXJhbmNlPzogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IGlucHV0dGluZyBjdXN0b20gdGV4dCBpbnRvIHRoZSBwaWNrZXIuXG4gICAqXG4gICAqIElmIGZhbHNlLCB3aGVuIHRoZSBpbnB1dCB0ZXh0IGlzIHBpY2tlZCB0aGUgZGF0ZSBwaWNrZXIgd2lsbCBvcGVuLlxuICAgKlxuICAgKiBJcyBmYWxzZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgYWxsb3dUZXh0SW5wdXQ/OiBib29sZWFuO1xuXG4gIGhpZGVDdXN0b21pemU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxsb3cgY3VzdG9taXppbmcgYmVmb3JlIHBpY2tpbmcgYSBkYXRlIHJhbmdlIHRvIGN1c3RvbWl6ZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBhbGxvd0N1c3RvbWl6ZVdpdGhvdXREYXRlUmFuZ2U/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaW1lem9uZSB0byB1c2UgZm9yIHRoZSBzdGFydCBkYXRlLlxuICAgKi9cbiAgdGltZXpvbmU/OiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxUaW1lem9uZVN0cmluZz4+O1xuICAvKipcbiAgICogT3B0aW9uYWwgbWluL21heCBkYXRlIHJhbmdlIHRvIGZpbHRlciBvbi4gV29ya3MgaW4gY29uanVjdGlvbiB3aXRoIHRoZSBmaWx0ZXIuXG4gICAqL1xuICBtaW5NYXhEYXRlUmFuZ2U/OiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+PjtcbiAgZmlsdGVyPzogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RGF0ZVNjaGVkdWxlRGF0ZUZpbHRlckNvbmZpZz4+O1xuICBleGNsdXNpb25zPzogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8QXJyYXlPclZhbHVlPERhdGVPckRhdGVSYW5nZU9yRGF0ZUJsb2NrSW5kZXhPckRhdGVCbG9ja1JhbmdlPj4+O1xuICAvKipcbiAgICogQ3VzdG9tIGNsb3NlIGRpYWxvZyBjb25maWcgZm9yIHRoZSBwb3B1cFxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZGlhbG9nQ29udGVudENvbmZpZyBpbnN0ZWFkLlxuICAgKi9cbiAgY2xvc2VEaWFsb2dDb25maWc/OiBNYXliZTxEYnhEaWFsb2dDb250ZW50Rm9vdGVyQ29uZmlnPjtcbiAgLyoqXG4gICAqIEN1c3RvbSBkaWFsb2cgY29udGVudCBjb25maWcgZm9yIHRoZSBwb3B1cFxuICAgKi9cbiAgZGlhbG9nQ29udGVudENvbmZpZz86IE1heWJlPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wdXBDb250ZW50Q29uZmlnPjtcbiAgLyoqXG4gICAqIEN1c3RvbSBkZXRhaWxzIGNvbmZpZyBmb3IgdGhlIGRhdGUgcmFuZ2VcbiAgICovXG4gIGN1c3RvbURldGFpbHNDb25maWc/OiBNYXliZTxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1maWVsZFwiPlxuICAgICAgPGRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1yYW5nZSBbb3BlblBpY2tlck9uVGV4dENsaWNrXT1cIm9wZW5QaWNrZXJPblRleHRDbGlja1wiIFtzaG93Q3VzdG9taXplXT1cInNob3dDdXN0b21pemVcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiaXNSZWFkb25seU9yRGlzYWJsZWRcIiBbbGFiZWxdPVwibGFiZWxcIiBbaGludF09XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICA8ZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLWRpYWxvZy1idXR0b24gY3VzdG9taXplQnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlQ3VzdG9taXplJCB8IGFzeW5jXCIgW2NvbnRlbnRDb25maWddPVwiZGlhbG9nQ29udGVudENvbmZpZ1wiIFtjbG9zZUNvbmZpZ109XCJjbG9zZURpYWxvZ0NvbmZpZ1wiPjwvZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLWRpYWxvZy1idXR0b24+XG4gICAgICAgIDxkYngtaW5qZWN0aW9uIFtjb25maWddPVwiY3VzdG9tRGV0YWlsc0NvbmZpZ1wiPjwvZGJ4LWluamVjdGlvbj5cbiAgICAgIDwvZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlPlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFtwcm92aWRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlSWZQYXJlbnRJc1VuYXZhaWxhYmxlKCldXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRDb21wb25lbnQ8VCBleHRlbmRzIERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRQcm9wcyA9IERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRQcm9wcz4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3luY1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfdmFsdWVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3RpbWV6b25lU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9taW5NYXhEYXRlUmFuZ2VTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2ZpbHRlclN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfZXhjbHVzaW9uc1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSB2YWx1ZSQgPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRpc2FibGVDdXN0b21pemUkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICBtYXAoKHgpID0+ICh0aGlzLmFsbG93Q3VzdG9taXplV2l0aG91dERhdGVSYW5nZSA/IGZhbHNlIDogIXgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcmVhZG9ubHkgY29tcGFjdDogQ29tcGFjdENvbnRleHRTdG9yZSwgcmVhZG9ubHkgZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlOiBEYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUsIHJlYWRvbmx5IG5nWm9uZTogTmdab25lKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBmb3JtR3JvdXBOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQua2V5IGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBmb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIGdldCBsYWJlbCgpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcz8ubGFiZWw7XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgaXNSZWFkb25seU9yRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBvcGVuUGlja2VyT25UZXh0Q2xpY2soKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWxsb3dUZXh0SW5wdXQgIT09IHRydWU7IC8vIE9wcG9zaXRlIG9mIGFsbG93VGV4dElucHV0XG4gIH1cblxuICBnZXQgYWxsb3dDdXN0b21pemVXaXRob3V0RGF0ZVJhbmdlKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmFsbG93Q3VzdG9taXplV2l0aG91dERhdGVSYW5nZSA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCBzaG93Q3VzdG9taXplKCkge1xuICAgIHJldHVybiAhdGhpcy5wcm9wcy5oaWRlQ3VzdG9taXplO1xuICB9XG5cbiAgZ2V0IG1pbk1heERhdGVSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5taW5NYXhEYXRlUmFuZ2U7XG4gIH1cblxuICBnZXQgZmlsdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmZpbHRlcjtcbiAgfVxuXG4gIGdldCBleGNsdXNpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmV4Y2x1c2lvbnM7XG4gIH1cblxuICBnZXQgdGltZXpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGltZXpvbmU7XG4gIH1cblxuICBnZXQgaW5pdGlhbFNlbGVjdGlvblN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmluaXRpYWxTZWxlY3Rpb25TdGF0ZTtcbiAgfVxuXG4gIGdldCBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcjtcbiAgfVxuXG4gIGdldCBjbG9zZURpYWxvZ0NvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jbG9zZURpYWxvZ0NvbmZpZztcbiAgfVxuXG4gIGdldCBkaWFsb2dDb250ZW50Q29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRpYWxvZ0NvbnRlbnRDb25maWc7XG4gIH1cblxuICBnZXQgY3VzdG9tRGV0YWlsc0NvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jdXN0b21EZXRhaWxzQ29uZmlnO1xuICB9XG5cbiAgZ2V0IGNlbGxDb250ZW50RmFjdG9yeSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jZWxsQ29udGVudEZhY3Rvcnk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgdGhpcy5fc3luY1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnZhbHVlJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVTY2hlZHVsZVJhbmdlKSkuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXREYXRlU2NoZWR1bGVSYW5nZVZhbHVlKHgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsdWVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuY3VycmVudERhdGVTY2hlZHVsZVJhbmdlVmFsdWUkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh4KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHsgdGltZXpvbmUsIG1pbk1heERhdGVSYW5nZSwgZmlsdGVyLCBleGNsdXNpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKGZpbHRlciAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9maWx0ZXJTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2V0RmlsdGVyKGFzT2JzZXJ2YWJsZShmaWx0ZXIpKSBhcyBTdWJzY3JpcHRpb247XG4gICAgfVxuXG4gICAgaWYgKG1pbk1heERhdGVSYW5nZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9taW5NYXhEYXRlUmFuZ2VTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2V0TWluTWF4RGF0ZVJhbmdlKGFzT2JzZXJ2YWJsZShtaW5NYXhEYXRlUmFuZ2UpKSBhcyBTdWJzY3JpcHRpb247XG4gICAgfVxuXG4gICAgaWYgKGV4Y2x1c2lvbnMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fZXhjbHVzaW9uc1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRFeGNsdXNpb25zKGFzT2JzZXJ2YWJsZShleGNsdXNpb25zKSkgYXMgU3Vic2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGlmICh0aW1lem9uZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRUaW1lem9uZShhc09ic2VydmFibGUodGhpcy50aW1lem9uZSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluaXRpYWxTZWxlY3Rpb25TdGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRJbml0aWFsU2VsZWN0aW9uU3RhdGUodGhpcy5pbml0aWFsU2VsZWN0aW9uU3RhdGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldENvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyKHRoaXMuY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNlbGxDb250ZW50RmFjdG9yeSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRDZWxsQ29udGVudEZhY3RvcnkodGhpcy5jZWxsQ29udGVudEZhY3RvcnkpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fc3luY1N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2ZpbHRlclN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdGltZXpvbmVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX21pbk1heERhdGVSYW5nZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZXhjbHVzaW9uc1N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9maWVsZC9zY2hlZHVsZS9jYWxlbmRhci5zY2hlZHVsZS5maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFnQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuSCxPQUFPLEVBQUUsV0FBVyxFQUFxQixrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFxTCx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzTyxPQUFPLEVBQWtDLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUgsT0FBTyxFQUFFLDBEQUEwRCxFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7Ozs7O0FBZ0U3SCxNQUFNLE9BQU8sOENBQWtKLFNBQVEsU0FBNkI7SUF1QmxNLFlBQWlDLE9BQTRCLEVBQVcsaUNBQW9FLEVBQVcsTUFBYztRQUNuSyxLQUFLLEVBQUUsQ0FBQztRQUR1QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUFXLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBdEI3SixhQUFRLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BDLGNB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Q0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUN2RjtJQUNILENBQUM7SUFFUSxXQUFXO1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7NElBOUpVLDhDQUE4QztnSUFBOUMsOENBQThDLHVDQUY5QyxDQUFDLDBEQUEwRCxFQUFFLENBQUMsaURBUi9EOzs7Ozs7O0dBT1Q7NEZBR1UsOENBQThDO2tCQVgxRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7OztHQU9UO29CQUNELFNBQVMsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLENBQUM7aUJBQzFFOzswQkF3QmMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcGFjdENvbnRleHRTdG9yZSwgRGJ4RGlhbG9nQ29udGVudEZvb3RlckNvbmZpZyB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBBcnJheU9yVmFsdWUsIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXJNYXliZSwgT2JzZXJ2YWJsZU9yVmFsdWUsIFN1YnNjcmlwdGlvbk9iamVjdCwgYXNPYnNlcnZhYmxlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBEYXRlT3JEYXRlUmFuZ2VPckRhdGVCbG9ja0luZGV4T3JEYXRlQmxvY2tSYW5nZSwgRGF0ZVJhbmdlLCBEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnLCBEYXRlU2NoZWR1bGVEYXlDb2RlLCBEYXRlU2NoZWR1bGVEYXlDb2Rlc0lucHV0LCBEYXRlU2NoZWR1bGVFbmNvZGVkV2VlaywgVGltZXpvbmVTdHJpbmcsIGlzU2FtZURhdGVTY2hlZHVsZVJhbmdlIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5zdG9yZSc7XG5pbXBvcnQgeyBwcm92aWRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlSWZQYXJlbnRJc1VuYXZhaWxhYmxlIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnN0b3JlLnByb3ZpZGUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVQb3B1cENvbnRlbnRDb25maWcgfSBmcm9tICcuLi8uLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4Rm9ybUNhbGVuZGFyRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZFByb3BzIGV4dGVuZHMgUGljazxGb3JtbHlGaWVsZFByb3BzLCAnbGFiZWwnIHwgJ2Rlc2NyaXB0aW9uJyB8ICdyZWFkb25seScgfCAncmVxdWlyZWQnPiwgUGljazxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsICdjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcicgfCAnaW5pdGlhbFNlbGVjdGlvblN0YXRlJz4sIFBhcnRpYWw8UGljazxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsICdjZWxsQ29udGVudEZhY3RvcnknPj4ge1xuICBhcHBlYXJhbmNlPzogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IGlucHV0dGluZyBjdXN0b20gdGV4dCBpbnRvIHRoZSBwaWNrZXIuXG4gICAqXG4gICAqIElmIGZhbHNlLCB3aGVuIHRoZSBpbnB1dCB0ZXh0IGlzIHBpY2tlZCB0aGUgZGF0ZSBwaWNrZXIgd2lsbCBvcGVuLlxuICAgKlxuICAgKiBJcyBmYWxzZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgYWxsb3dUZXh0SW5wdXQ/OiBib29sZWFuO1xuXG4gIGhpZGVDdXN0b21pemU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxsb3cgY3VzdG9taXppbmcgYmVmb3JlIHBpY2tpbmcgYSBkYXRlIHJhbmdlIHRvIGN1c3RvbWl6ZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBhbGxvd0N1c3RvbWl6ZVdpdGhvdXREYXRlUmFuZ2U/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaW1lem9uZSB0byB1c2UgZm9yIHRoZSBzdGFydCBkYXRlLlxuICAgKi9cbiAgdGltZXpvbmU/OiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxUaW1lem9uZVN0cmluZz4+O1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBEZWZhdWx0IHNjaGVkdWxlIGRheXMgdG8gYWxsb3cuXG4gICAqL1xuICBkZWZhdWx0U2NoZWR1bGVEYXlzPzogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8SXRlcmFibGU8RGF0ZVNjaGVkdWxlRGF5Q29kZT4+PjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1pbi9tYXggZGF0ZSByYW5nZSB0byBmaWx0ZXIgb24uIFdvcmtzIGluIGNvbmp1Y3Rpb24gd2l0aCB0aGUgZmlsdGVyLlxuICAgKi9cbiAgbWluTWF4RGF0ZVJhbmdlPzogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+Pj47XG4gIGZpbHRlcj86IE9ic2VydmFibGVPclZhbHVlPE1heWJlPERhdGVTY2hlZHVsZURhdGVGaWx0ZXJDb25maWc+PjtcbiAgZXhjbHVzaW9ucz86IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEFycmF5T3JWYWx1ZTxEYXRlT3JEYXRlUmFuZ2VPckRhdGVCbG9ja0luZGV4T3JEYXRlQmxvY2tSYW5nZT4+PjtcbiAgLyoqXG4gICAqIEN1c3RvbSBjbG9zZSBkaWFsb2cgY29uZmlnIGZvciB0aGUgcG9wdXBcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGRpYWxvZ0NvbnRlbnRDb25maWcgaW5zdGVhZC5cbiAgICovXG4gIGNsb3NlRGlhbG9nQ29uZmlnPzogTWF5YmU8RGJ4RGlhbG9nQ29udGVudEZvb3RlckNvbmZpZz47XG4gIC8qKlxuICAgKiBDdXN0b20gZGlhbG9nIGNvbnRlbnQgY29uZmlnIGZvciB0aGUgcG9wdXBcbiAgICovXG4gIGRpYWxvZ0NvbnRlbnRDb25maWc/OiBNYXliZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZVBvcHVwQ29udGVudENvbmZpZz47XG4gIC8qKlxuICAgKiBDdXN0b20gZGV0YWlscyBjb25maWcgZm9yIHRoZSBkYXRlIHJhbmdlXG4gICAqL1xuICBjdXN0b21EZXRhaWxzQ29uZmlnPzogTWF5YmU8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tZmllbGRcIj5cbiAgICAgIDxkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtcmFuZ2UgW29wZW5QaWNrZXJPblRleHRDbGlja109XCJvcGVuUGlja2VyT25UZXh0Q2xpY2tcIiBbc2hvd0N1c3RvbWl6ZV09XCJzaG93Q3VzdG9taXplXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlPckRpc2FibGVkXCIgW2xhYmVsXT1cImxhYmVsXCIgW2hpbnRdPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPGRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kaWFsb2ctYnV0dG9uIGN1c3RvbWl6ZUJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZUN1c3RvbWl6ZSQgfCBhc3luY1wiIFtjb250ZW50Q29uZmlnXT1cImRpYWxvZ0NvbnRlbnRDb25maWdcIiBbY2xvc2VDb25maWddPVwiY2xvc2VEaWFsb2dDb25maWdcIj48L2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kaWFsb2ctYnV0dG9uPlxuICAgICAgICA8ZGJ4LWluamVjdGlvbiBbY29uZmlnXT1cImN1c3RvbURldGFpbHNDb25maWdcIj48L2RieC1pbmplY3Rpb24+XG4gICAgICA8L2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1yYW5nZT5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZUNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZUlmUGFyZW50SXNVbmF2YWlsYWJsZSgpXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtQ2FsZW5kYXJEYXRlU2NoZWR1bGVSYW5nZUZpZWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBEYnhGb3JtQ2FsZW5kYXJEYXRlU2NoZWR1bGVSYW5nZUZpZWxkUHJvcHMgPSBEYnhGb3JtQ2FsZW5kYXJEYXRlU2NoZWR1bGVSYW5nZUZpZWxkUHJvcHM+IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxUPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3N5bmNTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3ZhbHVlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF90aW1lem9uZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfbWluTWF4RGF0ZVJhbmdlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9kZWZhdWx0V2Vla1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfZmlsdGVyU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9leGNsdXNpb25zU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZUN1c3RvbWl6ZSQgPSB0aGlzLnZhbHVlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKHRoaXMuYWxsb3dDdXN0b21pemVXaXRob3V0RGF0ZVJhbmdlID8gZmFsc2UgOiAheCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSByZWFkb25seSBjb21wYWN0OiBDb21wYWN0Q29udGV4dFN0b3JlLCByZWFkb25seSBkYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmU6IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSwgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5rZXkgYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm0gYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzPy5sYWJlbDtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBpc1JlYWRvbmx5T3JEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IG9wZW5QaWNrZXJPblRleHRDbGljaygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5hbGxvd1RleHRJbnB1dCAhPT0gdHJ1ZTsgLy8gT3Bwb3NpdGUgb2YgYWxsb3dUZXh0SW5wdXRcbiAgfVxuXG4gIGdldCBhbGxvd0N1c3RvbWl6ZVdpdGhvdXREYXRlUmFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWxsb3dDdXN0b21pemVXaXRob3V0RGF0ZVJhbmdlID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHNob3dDdXN0b21pemUoKSB7XG4gICAgcmV0dXJuICF0aGlzLnByb3BzLmhpZGVDdXN0b21pemU7XG4gIH1cblxuICBnZXQgZGVmYXVsdFNjaGVkdWxlRGF5cygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kZWZhdWx0U2NoZWR1bGVEYXlzO1xuICB9XG5cbiAgZ2V0IG1pbk1heERhdGVSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5taW5NYXhEYXRlUmFuZ2U7XG4gIH1cblxuICBnZXQgZmlsdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmZpbHRlcjtcbiAgfVxuXG4gIGdldCBleGNsdXNpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmV4Y2x1c2lvbnM7XG4gIH1cblxuICBnZXQgdGltZXpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGltZXpvbmU7XG4gIH1cblxuICBnZXQgaW5pdGlhbFNlbGVjdGlvblN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmluaXRpYWxTZWxlY3Rpb25TdGF0ZTtcbiAgfVxuXG4gIGdldCBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcjtcbiAgfVxuXG4gIGdldCBjbG9zZURpYWxvZ0NvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jbG9zZURpYWxvZ0NvbmZpZztcbiAgfVxuXG4gIGdldCBkaWFsb2dDb250ZW50Q29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRpYWxvZ0NvbnRlbnRDb25maWc7XG4gIH1cblxuICBnZXQgY3VzdG9tRGV0YWlsc0NvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jdXN0b21EZXRhaWxzQ29uZmlnO1xuICB9XG5cbiAgZ2V0IGNlbGxDb250ZW50RmFjdG9yeSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jZWxsQ29udGVudEZhY3Rvcnk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgdGhpcy5fc3luY1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnZhbHVlJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVTY2hlZHVsZVJhbmdlKSkuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXREYXRlU2NoZWR1bGVSYW5nZVZhbHVlKHgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsdWVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuY3VycmVudERhdGVTY2hlZHVsZVJhbmdlVmFsdWUkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh4KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHsgdGltZXpvbmUsIG1pbk1heERhdGVSYW5nZSwgZmlsdGVyLCBleGNsdXNpb25zLCBkZWZhdWx0U2NoZWR1bGVEYXlzIH0gPSB0aGlzO1xuXG4gICAgaWYgKGZpbHRlciAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9maWx0ZXJTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2V0RmlsdGVyKGFzT2JzZXJ2YWJsZShmaWx0ZXIpKSBhcyBTdWJzY3JpcHRpb247XG4gICAgfVxuXG4gICAgaWYgKGRlZmF1bHRTY2hlZHVsZURheXMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fZGVmYXVsdFdlZWtTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2V0RGVmYXVsdFNjaGVkdWxlRGF5cyhhc09ic2VydmFibGUoZGVmYXVsdFNjaGVkdWxlRGF5cykpIGFzIFN1YnNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBpZiAobWluTWF4RGF0ZVJhbmdlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX21pbk1heERhdGVSYW5nZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRNaW5NYXhEYXRlUmFuZ2UoYXNPYnNlcnZhYmxlKG1pbk1heERhdGVSYW5nZSkpIGFzIFN1YnNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoZXhjbHVzaW9ucyAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9leGNsdXNpb25zU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldEV4Y2x1c2lvbnMoYXNPYnNlcnZhYmxlKGV4Y2x1c2lvbnMpKSBhcyBTdWJzY3JpcHRpb247XG4gICAgfVxuXG4gICAgaWYgKHRpbWV6b25lICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldFRpbWV6b25lKGFzT2JzZXJ2YWJsZSh0aGlzLnRpbWV6b25lKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5pdGlhbFNlbGVjdGlvblN0YXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldEluaXRpYWxTZWxlY3Rpb25TdGF0ZSh0aGlzLmluaXRpYWxTZWxlY3Rpb25TdGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIgIT0gbnVsbCkge1xuICAgICAgdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2V0Q29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIodGhpcy5jb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2VsbENvbnRlbnRGYWN0b3J5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldENlbGxDb250ZW50RmFjdG9yeSh0aGlzLmNlbGxDb250ZW50RmFjdG9yeSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9zeW5jU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl92YWx1ZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZmlsdGVyU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl90aW1lem9uZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fbWluTWF4RGF0ZVJhbmdlU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9leGNsdXNpb25zU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { formlyField, propsAndConfigForFieldConfig } from '@dereekb/dbx-form';
2
2
  export function dateScheduleRangeField(config = {}) {
3
- const { key = 'schedule', appearance, hideCustomize, allowTextInput, filter, timezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, minMaxDateRange, cellContentFactory, dialogContentConfig, closeDialogConfig, customDetailsConfig } = config;
3
+ const { key = 'schedule', appearance, hideCustomize, allowTextInput, filter, timezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, defaultScheduleDays, minMaxDateRange, cellContentFactory, dialogContentConfig, closeDialogConfig, customDetailsConfig } = config;
4
4
  const fieldConfig = {
5
5
  ...formlyField({
6
6
  key,
@@ -11,6 +11,7 @@ export function dateScheduleRangeField(config = {}) {
11
11
  appearance,
12
12
  hideCustomize,
13
13
  timezone,
14
+ defaultScheduleDays,
14
15
  minMaxDateRange,
15
16
  filter,
16
17
  exclusions,
@@ -25,4 +26,4 @@ export function dateScheduleRangeField(config = {}) {
25
26
  };
26
27
  return fieldConfig;
27
28
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9jYWxlbmRhci9zcmMvbGliL2ZpZWxkL3NjaGVkdWxlL2NhbGVuZGFyLnNjaGVkdWxlLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUMsV0FBVyxFQUFzQiw0QkFBNEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTXZJLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxTQUF1QyxFQUFFO0lBQzlFLE1BQU0sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsc0NBQXNDLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM5USxNQUFNLFdBQVcsR0FBc0I7UUFDckMsR0FBRyxXQUFXLENBQUM7WUFDYixHQUFHO1lBQ0gsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtnQkFDdEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksVUFBVTtnQkFDakMsY0FBYztnQkFDZCxVQUFVO2dCQUNWLGFBQWE7Z0JBQ2IsUUFBUTtnQkFDUixlQUFlO2dCQUNmLE1BQU07Z0JBQ04sVUFBVTtnQkFDVixtQkFBbUI7Z0JBQ25CLGlCQUFpQjtnQkFDakIsc0NBQXNDO2dCQUN0QyxxQkFBcUI7Z0JBQ3JCLGtCQUFrQjtnQkFDbEIsbUJBQW1CO2FBQ3BCLENBQUM7U0FDSCxDQUFDO0tBQ0gsQ0FBQztJQUVGLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIExhYmVsZWRGaWVsZENvbmZpZywgcHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyB9IGZyb20gJ0BkZXJlZWtiL2RieC1mb3JtJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBEYnhGb3JtQ2FsZW5kYXJEYXRlU2NoZWR1bGVSYW5nZUZpZWxkUHJvcHMgfSBmcm9tICcuL2NhbGVuZGFyLnNjaGVkdWxlLmZpZWxkLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZENvbmZpZyBleHRlbmRzIE9taXQ8TGFiZWxlZEZpZWxkQ29uZmlnLCAna2V5JyB8ICdwbGFjZWhvbGRlcic+LCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBQYXJ0aWFsPEZpZWxkQ29uZmlnPiwgRGJ4Rm9ybUNhbGVuZGFyRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZFByb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlU2NoZWR1bGVSYW5nZUZpZWxkKGNvbmZpZzogRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSA9ICdzY2hlZHVsZScsIGFwcGVhcmFuY2UsIGhpZGVDdXN0b21pemUsIGFsbG93VGV4dElucHV0LCBmaWx0ZXIsIHRpbWV6b25lLCBpbml0aWFsU2VsZWN0aW9uU3RhdGUsIGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyLCBleGNsdXNpb25zLCBtaW5NYXhEYXRlUmFuZ2UsIGNlbGxDb250ZW50RmFjdG9yeSwgZGlhbG9nQ29udGVudENvbmZpZywgY2xvc2VEaWFsb2dDb25maWcsIGN1c3RvbURldGFpbHNDb25maWcgfSA9IGNvbmZpZztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgIC4uLmZvcm1seUZpZWxkKHtcbiAgICAgIGtleSxcbiAgICAgIHR5cGU6ICdkYXRlLXNjaGVkdWxlLXJhbmdlJyxcbiAgICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAgIGxhYmVsOiBjb25maWcubGFiZWwgPz8gJ1NjaGVkdWxlJyxcbiAgICAgICAgYWxsb3dUZXh0SW5wdXQsXG4gICAgICAgIGFwcGVhcmFuY2UsXG4gICAgICAgIGhpZGVDdXN0b21pemUsXG4gICAgICAgIHRpbWV6b25lLFxuICAgICAgICBtaW5NYXhEYXRlUmFuZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgZXhjbHVzaW9ucyxcbiAgICAgICAgZGlhbG9nQ29udGVudENvbmZpZyxcbiAgICAgICAgY2xvc2VEaWFsb2dDb25maWcsXG4gICAgICAgIGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyLFxuICAgICAgICBpbml0aWFsU2VsZWN0aW9uU3RhdGUsXG4gICAgICAgIGNlbGxDb250ZW50RmFjdG9yeSxcbiAgICAgICAgY3VzdG9tRGV0YWlsc0NvbmZpZ1xuICAgICAgfSlcbiAgICB9KVxuICB9O1xuXG4gIHJldHVybiBmaWVsZENvbmZpZztcbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9jYWxlbmRhci9zcmMvbGliL2ZpZWxkL3NjaGVkdWxlL2NhbGVuZGFyLnNjaGVkdWxlLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUMsV0FBVyxFQUFzQiw0QkFBNEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTXZJLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxTQUF1QyxFQUFFO0lBQzlFLE1BQU0sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsc0NBQXNDLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNuUyxNQUFNLFdBQVcsR0FBc0I7UUFDckMsR0FBRyxXQUFXLENBQUM7WUFDYixHQUFHO1lBQ0gsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtnQkFDdEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksVUFBVTtnQkFDakMsY0FBYztnQkFDZCxVQUFVO2dCQUNWLGFBQWE7Z0JBQ2IsUUFBUTtnQkFDUixtQkFBbUI7Z0JBQ25CLGVBQWU7Z0JBQ2YsTUFBTTtnQkFDTixVQUFVO2dCQUNWLG1CQUFtQjtnQkFDbkIsaUJBQWlCO2dCQUNqQixzQ0FBc0M7Z0JBQ3RDLHFCQUFxQjtnQkFDckIsa0JBQWtCO2dCQUNsQixtQkFBbUI7YUFDcEIsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0lBRUYsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaXB0aW9uRmllbGRDb25maWcsIEZpZWxkQ29uZmlnLCBmb3JtbHlGaWVsZCwgTGFiZWxlZEZpZWxkQ29uZmlnLCBwcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWZvcm0nO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRQcm9wcyB9IGZyb20gJy4vY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlU2NoZWR1bGVSYW5nZUZpZWxkQ29uZmlnIGV4dGVuZHMgT21pdDxMYWJlbGVkRmllbGRDb25maWcsICdrZXknIHwgJ3BsYWNlaG9sZGVyJz4sIERlc2NyaXB0aW9uRmllbGRDb25maWcsIFBhcnRpYWw8RmllbGRDb25maWc+LCBEYnhGb3JtQ2FsZW5kYXJEYXRlU2NoZWR1bGVSYW5nZUZpZWxkUHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVTY2hlZHVsZVJhbmdlRmllbGQoY29uZmlnOiBEYXRlU2NoZWR1bGVSYW5nZUZpZWxkQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5ID0gJ3NjaGVkdWxlJywgYXBwZWFyYW5jZSwgaGlkZUN1c3RvbWl6ZSwgYWxsb3dUZXh0SW5wdXQsIGZpbHRlciwgdGltZXpvbmUsIGluaXRpYWxTZWxlY3Rpb25TdGF0ZSwgY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIsIGV4Y2x1c2lvbnMsIGRlZmF1bHRTY2hlZHVsZURheXMsIG1pbk1heERhdGVSYW5nZSwgY2VsbENvbnRlbnRGYWN0b3J5LCBkaWFsb2dDb250ZW50Q29uZmlnLCBjbG9zZURpYWxvZ0NvbmZpZywgY3VzdG9tRGV0YWlsc0NvbmZpZyB9ID0gY29uZmlnO1xuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgLi4uZm9ybWx5RmllbGQoe1xuICAgICAga2V5LFxuICAgICAgdHlwZTogJ2RhdGUtc2NoZWR1bGUtcmFuZ2UnLFxuICAgICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgICAgbGFiZWw6IGNvbmZpZy5sYWJlbCA/PyAnU2NoZWR1bGUnLFxuICAgICAgICBhbGxvd1RleHRJbnB1dCxcbiAgICAgICAgYXBwZWFyYW5jZSxcbiAgICAgICAgaGlkZUN1c3RvbWl6ZSxcbiAgICAgICAgdGltZXpvbmUsXG4gICAgICAgIGRlZmF1bHRTY2hlZHVsZURheXMsXG4gICAgICAgIG1pbk1heERhdGVSYW5nZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBleGNsdXNpb25zLFxuICAgICAgICBkaWFsb2dDb250ZW50Q29uZmlnLFxuICAgICAgICBjbG9zZURpYWxvZ0NvbmZpZyxcbiAgICAgICAgY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIsXG4gICAgICAgIGluaXRpYWxTZWxlY3Rpb25TdGF0ZSxcbiAgICAgICAgY2VsbENvbnRlbnRGYWN0b3J5LFxuICAgICAgICBjdXN0b21EZXRhaWxzQ29uZmlnXG4gICAgICB9KVxuICAgIH0pXG4gIH07XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuIl19
@@ -433,9 +433,9 @@ export class DbxDateTimeFieldComponent extends FieldType {
433
433
  }
434
434
  }
435
435
  DbxDateTimeFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxDateTimeFieldComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DbxDateTimeFieldMenuPresetsService }], target: i0.ɵɵFactoryTarget.Component });
436
- DbxDateTimeFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxDateTimeFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, 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 <!-- Additional spacing -->\n <dbx-button-spacer *ngIf=\"!dateOnly\"></dbx-button-spacer>\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 *ngIf=\"showAddTime$ | async\" class=\"add-time-button-wrapper\">\n <button mat-button class=\"dbx-button-spacer 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' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"displayValue$ | async\">\n <b class=\"dbx-ok\">{{ atTimeLabel }}</b>\n {{ displayValue$ | async | date: 'medium' }} {{ timezoneAbbreviation$ | async }} ({{ 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 class=\"dbx-button-spacer\" *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\" [ngClass]=\"{ 'dbx-datetime-row-field-full-width': hideDatePicker }\">\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 <span matSuffix *ngIf=\"!(showTimeInput$ | async)\">\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <button class=\"dbx-button-spacer\" 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 <ng-container *ngFor=\"let preset of presets$ | async\">\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n </ng-container>\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 <span matSuffix>\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Timezone Suffix -->\n<ng-template #timezoneSuffixTemplate>\n <span *ngIf=\"showTimezone\" class=\"dbx-datetime-timezone dbx-faint\">{{ timezoneAbbreviation$ | async }}</span>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i7.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i9.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i12.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i12.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i12.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i13.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i14.DateDistancePipe, name: "dateDistance" }, { kind: "pipe", type: i14.TimeDistancePipe, name: "timeDistance" }, { kind: "pipe", type: i14.GetValuePipe, name: "getValue" }] });
436
+ DbxDateTimeFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxDateTimeFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, 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 <!-- Additional spacing -->\n <dbx-button-spacer *ngIf=\"!dateOnly\"></dbx-button-spacer>\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 *ngIf=\"showAddTime$ | async\" class=\"add-time-button-wrapper\">\n <button mat-button class=\"mat-datepicker-button-highlight dbx-button-spacer 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' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"displayValue$ | async\">\n <b class=\"dbx-ok\">{{ atTimeLabel }}</b>\n {{ displayValue$ | async | date: 'medium' }} {{ timezoneAbbreviation$ | async }} ({{ 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 class=\"mat-datepicker-button-highlight dbx-button-spacer\" *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\" [ngClass]=\"{ 'dbx-datetime-row-field-full-width': hideDatePicker }\">\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 <span matSuffix *ngIf=\"!(showTimeInput$ | async)\">\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <button class=\"mat-datepicker-button-highlight dbx-button-spacer\" 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 <ng-container *ngFor=\"let preset of presets$ | async\">\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n </ng-container>\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 <span matSuffix>\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Timezone Suffix -->\n<ng-template #timezoneSuffixTemplate>\n <span *ngIf=\"showTimezone\" class=\"dbx-datetime-timezone dbx-faint\">{{ timezoneAbbreviation$ | async }}</span>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i7.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i9.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i12.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i12.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i12.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i13.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i14.DateDistancePipe, name: "dateDistance" }, { kind: "pipe", type: i14.TimeDistancePipe, name: "timeDistance" }, { kind: "pipe", type: i14.GetValuePipe, name: "getValue" }] });
437
437
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxDateTimeFieldComponent, decorators: [{
438
438
  type: Component,
439
- 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 <!-- Additional spacing -->\n <dbx-button-spacer *ngIf=\"!dateOnly\"></dbx-button-spacer>\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 *ngIf=\"showAddTime$ | async\" class=\"add-time-button-wrapper\">\n <button mat-button class=\"dbx-button-spacer 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' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"displayValue$ | async\">\n <b class=\"dbx-ok\">{{ atTimeLabel }}</b>\n {{ displayValue$ | async | date: 'medium' }} {{ timezoneAbbreviation$ | async }} ({{ 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 class=\"dbx-button-spacer\" *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\" [ngClass]=\"{ 'dbx-datetime-row-field-full-width': hideDatePicker }\">\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 <span matSuffix *ngIf=\"!(showTimeInput$ | async)\">\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <button class=\"dbx-button-spacer\" 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 <ng-container *ngFor=\"let preset of presets$ | async\">\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n </ng-container>\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 <span matSuffix>\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Timezone Suffix -->\n<ng-template #timezoneSuffixTemplate>\n <span *ngIf=\"showTimezone\" class=\"dbx-datetime-timezone dbx-faint\">{{ timezoneAbbreviation$ | async }}</span>\n</ng-template>\n" }]
439
+ 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 <!-- Additional spacing -->\n <dbx-button-spacer *ngIf=\"!dateOnly\"></dbx-button-spacer>\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 *ngIf=\"showAddTime$ | async\" class=\"add-time-button-wrapper\">\n <button mat-button class=\"mat-datepicker-button-highlight dbx-button-spacer 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' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"displayValue$ | async\">\n <b class=\"dbx-ok\">{{ atTimeLabel }}</b>\n {{ displayValue$ | async | date: 'medium' }} {{ timezoneAbbreviation$ | async }} ({{ 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 class=\"mat-datepicker-button-highlight dbx-button-spacer\" *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\" [ngClass]=\"{ 'dbx-datetime-row-field-full-width': hideDatePicker }\">\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 <span matSuffix *ngIf=\"!(showTimeInput$ | async)\">\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <button class=\"mat-datepicker-button-highlight dbx-button-spacer\" 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 <ng-container *ngFor=\"let preset of presets$ | async\">\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n </ng-container>\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 <span matSuffix>\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Timezone Suffix -->\n<ng-template #timezoneSuffixTemplate>\n <span *ngIf=\"showTimezone\" class=\"dbx-datetime-timezone dbx-faint\">{{ timezoneAbbreviation$ | async }}</span>\n</ng-template>\n" }]
440
440
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DbxDateTimeFieldMenuPresetsService }]; } });
441
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9kYXRldGltZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEQsT0FBTyxFQUFFLGlCQUFpQixFQUErRCxNQUFNLGVBQWUsQ0FBQztBQUNwTCxPQUFPLEVBQUUsbUJBQW1CLEVBQXdCLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSw4QkFBOEIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBQzdYLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqTyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQW1CLFdBQVcsRUFBRSxVQUFVLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFF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RUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxhQUFhO0lBQ2YsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pELENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt1SEE3aEJVLHlCQUF5QjsyR0FBekIseUJBQXlCLDJFQ3RMdEMsMitIQStFQTs0RkR1R2EseUJBQXlCO2tCQUhyQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmUsIFJlYWRhYmxlVGltZVN0cmluZywgQXJyYXlPclZhbHVlLCBJU084NjAxRGF0ZVN0cmluZywgYXNBcnJheSwgZmlsdGVyTWF5YmVWYWx1ZXMsIERlY2lzaW9uRnVuY3Rpb24sIE1pbGxpc2Vjb25kcywgVGltZXpvbmVTdHJpbmcsIExvZ2ljYWxEYXRlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBkYXRlRnJvbUxvZ2ljYWxEYXRlLCBEYXRlVGltZU1pbnV0ZUNvbmZpZywgRGF0ZVRpbWVNaW51dGVJbnN0YW5jZSwgZ3Vlc3NDdXJyZW50VGltZXpvbmUsIHJlYWRhYmxlVGltZVN0cmluZ1RvRGF0ZSwgdG9Mb2NhbFJlYWRhYmxlVGltZVN0cmluZywgdXRjRGF5Rm9yRGF0ZSwgc2FmZVRvSnNEYXRlLCBmaW5kTWluRGF0ZSwgZmluZE1heERhdGUsIGRhdGVUaW1lTWludXRlRGVjaXNpb25GdW5jdGlvbiwgaXNTYW1lRGF0ZUhvdXJzQW5kTWludXRlcywgZ2V0VGltZXpvbmVBYmJyZXZpYXRpb24sIGlzU2FtZURhdGVEYXksIGRhdGVUaW1lem9uZVV0Y05vcm1hbCwgRGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2UgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgc2hhcmVSZXBsYXksIG1hcCwgc3RhcnRXaXRoLCB0YXAsIGZpcnN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZGVib3VuY2VUaW1lLCB0aHJvdHRsZVRpbWUsIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgU3ViamVjdCwgbWVyZ2UsIGludGVydmFsLCBvZiwgY29tYmluZUxhdGVzdFdpdGgsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGFkZE1pbnV0ZXMsIHN0YXJ0T2ZEYXksIGFkZERheXMgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBhc09ic2VydmFibGVGcm9tR2V0dGVyLCBmaWx0ZXJNYXliZSwgT2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXIsIHNraXBGaXJzdE1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIHN3aXRjaE1hcE1heWJlRGVmYXVsdCwgc3dpdGNoTWFwTWF5YmVPYnMgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IERhdGVUaW1lUHJlc2V0LCBEYXRlVGltZVByZXNldENvbmZpZ3VyYXRpb24sIGRhdGVUaW1lUHJlc2V0IH0gZnJvbSAnLi9kYXRldGltZSc7XG5pbXBvcnQgeyBEYnhEYXRlVGltZUZpZWxkTWVudVByZXNldHNTZXJ2aWNlIH0gZnJvbSAnLi9kYXRldGltZS5maWVsZC5zZXJ2aWNlJztcbmltcG9ydCB7IERieERhdGVUaW1lVmFsdWVNb2RlLCBkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnksIGRieERhdGVUaW1lSXNTYW1lRGF0ZVRpbWVGaWVsZFZhbHVlLCBkYnhEYXRlVGltZU91dHB1dFZhbHVlRmFjdG9yeSB9IGZyb20gJy4vZGF0ZS52YWx1ZSc7XG5cbmV4cG9ydCBlbnVtIERieERhdGVUaW1lRmllbGRUaW1lTW9kZSB7XG4gIC8qKlxuICAgKiBUaW1lIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICAvKipcbiAgICogVGltZSBpcyBvcHRpb25hbC5cbiAgICovXG4gIE9QVElPTkFMID0gJ29wdGlvbmFsJyxcbiAgLyoqXG4gICAqIFRpbWUgaXMgcGVybWVuYW50bHkgb2ZmLlxuICAgKi9cbiAgTk9ORSA9ICdub25lJ1xufVxuXG5leHBvcnQgdHlwZSBEYnhEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24gPSBPbWl0PERhdGVUaW1lTWludXRlQ29uZmlnLCAnZGF0ZSc+O1xuXG5leHBvcnQgdHlwZSBEYnhEYXRlVGltZUZpZWxkU3luY1R5cGUgPSAnYmVmb3JlJyB8ICdhZnRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RGF0ZVRpbWVGaWVsZFN5bmNGaWVsZCB7XG4gIC8qKlxuICAgKiBGaWVsZCBrZXkvcGF0aCB0byBzeW5jIHdpdGgvYWdhaW5zdC5cbiAgICovXG4gIHN5bmNXaXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3cgdG8gc3luYyBhZ2FpbnN0IHRoZSBvdGhlciBmaWVsZC5cbiAgICovXG4gIHN5bmNUeXBlOiBEYnhEYXRlVGltZUZpZWxkU3luY1R5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzIGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBDdXN0b20gZGF0ZSBsYWJlbC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gRGF0ZVxuICAgKi9cbiAgZGF0ZUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gdGltZSBsYWJlbC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gVGltZVxuICAgKi9cbiAgdGltZUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMYWJlbCB0byB1c2UgZm9yIHRoZSBkYXRlIGhpbnQgZm9yIFwiQWxsIERheVwiLiBEZWZhdWx0cyB0byBcIkFsbCBEYXlcIi5cbiAgICovXG4gIGFsbERheUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMYWJlbCB0byB1c2UgZm9yIHRoZSBkYXRlIGhpbnQgZm9yIFwiQXRcIi4gRGVmYXVsdHMgdG8gXCJBdFwiLlxuICAgKi9cbiAgYXRUaW1lTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG1vZGUuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIERBVEVcbiAgICovXG4gIHZhbHVlTW9kZT86IERieERhdGVUaW1lVmFsdWVNb2RlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZGF0ZSBpcyBoaWRkZW4sIGFuZCBhdXRvbWF0aWNhbGx5IHVzZXMgdG9kYXkvaW5wdXQgZGF0ZS5cbiAgICovXG4gIHRpbWVPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHRpbWUgY2FuIGJlIGFkZGVkL3JlbW92ZWQgb3B0aW9uYWxseS5cbiAgICpcbiAgICogVGhpcyBpcyBpZ25vcmVkIGlmIHRpbWVPbmx5IGlzIHNwZWNpZmllZC5cbiAgICovXG4gIHRpbWVNb2RlPzogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlO1xuXG4gIC8qKlxuICAgKiBPdGhlciBmb3JtIGNvbnRyb2wgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB3aGV0aGVyIG9yIG5vdCBpdCBpcyBhIGZ1bGwgZGF5LlxuICAgKlxuICAgKiBUaGlzIGZpZWxkIGlzIG9ubHkgdXNlZCBpZiB0aW1lIGlzIG9wdGlvbmFsLlxuICAgKlxuICAgKiBXaGVuIHRpbWUgaXMgb2ZmLCB0aGUgZmllbGQgaXMgc2V0IHRvIHRydWUuXG4gICAqL1xuICBmdWxsRGF5RmllbGROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBwYXNzIHRoZSBkYXRlIHZhbHVlIGFzIGEgVVRDIGRhdGUsIG9yIGEgZGF0ZSBpbiB0aGUgY3VycmVudCB0aW1lem9uZS5cbiAgICovXG4gIGZ1bGxEYXlJblVUQz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IG90IGhpZGUgdGhlIGRhdGUgaGludCBpbmZvIGNvbnRlbnQuXG4gICAqXG4gICAqIEZhbHNlIGJ5IGRlZmF1bHRcbiAgICovXG4gIGhpZGVEYXRlSGludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGhpZGUgdGhlIGRhdGUvY2FsZW5kYXIgcGlja2VyLlxuICAgKi9cbiAgaGlkZURhdGVQaWNrZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcGlja2VyIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHBpY2tlckNvbmZpZz86IE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj47XG5cbiAgLyoqXG4gICAqIFVzZWQgZm9yIHN5bmNpbmcgd2l0aCBvbmUgb3IgbW9yZSBmaWVsZHMgd2l0aCBhIERhdGUgdmFsdWUuXG4gICAqL1xuICBnZXRTeW5jRmllbGRzT2JzPzogKCkgPT4gT2JzZXJ2YWJsZTxBcnJheU9yVmFsdWU8RGJ4RGF0ZVRpbWVGaWVsZFN5bmNGaWVsZD4+O1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBpbnB1dCB0aW1lem9uZSB0byBkZWZhdWx0IHRvLlxuICAgKlxuICAgKiBJZ25vcmVkIGlmIGZ1bGxEYXlJblVUQyBpcyB0cnVlLlxuICAgKi9cbiAgdGltZXpvbmU/OiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZUdldHRlcjxNYXliZTxUaW1lem9uZVN0cmluZz4+PjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZGlzcGxheSB0aGUgdGltZXpvbmUuIFRydWUgYnkgZGVmYXVsdC5cbiAgICovXG4gIHNob3dUaW1lem9uZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBwcmVzZXRzIHRvIHNob3cgaW4gdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgcHJlc2V0cz86IE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERhdGVUaW1lUHJlc2V0Q29uZmlndXJhdGlvbltdPjtcblxuICAvLyBNQVJLOiBDb21wYXRcbiAgLyoqXG4gICAqIFVzZWQgZm9yIHJldHVybmluZyB0aGUgY29uZmlndXJhdGlvbiBvYnNlcnZhYmxlLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgcGlja2VyQ29uZmlnIGluc3RlYWQuXG4gICAqL1xuICBnZXRDb25maWdPYnM/OiBPYnNlcnZhYmxlT3JWYWx1ZUdldHRlcjxEYnhEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGQgZXh0ZW5kcyBQaWNrPERieERhdGVUaW1lRmllbGRTeW5jRmllbGQsICdzeW5jVHlwZSc+IHtcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sPE1heWJlPERhdGUgfCBJU084NjAxRGF0ZVN0cmluZz4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3luY0NvbmZpZ1ZhbHVlT2JzKHBhcnNlQ29uZmlnc09iczogT2JzZXJ2YWJsZTxEYnhEYXRlVGltZUZpZWxkU3luY1BhcnNlZEZpZWxkW10+LCB0eXBlOiBEYnhEYXRlVGltZUZpZWxkU3luY1R5cGUpOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiB7XG4gIHJldHVybiBwYXJzZUNvbmZpZ3NPYnMucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHguZmluZCgoeSkgPT4geS5zeW5jVHlwZSA9PT0gdHlwZSk7XG4gICAgICBsZXQgcmVzdWx0OiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPjtcblxuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICBjb25zdCB7IGNvbnRyb2wgfSA9IGNvbmZpZztcbiAgICAgICAgcmVzdWx0ID0gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoY29udHJvbC52YWx1ZSksXG4gICAgICAgICAgbWFwKCh4KSA9PiBzYWZlVG9Kc0RhdGUoeCkgPz8gbnVsbClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IG9mKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbn1cblxuY29uc3QgVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRTogTWlsbGlzZWNvbmRzID0gMTA7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhEYXRlVGltZUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxEYnhEYXRlVGltZUZpZWxkUHJvcHM+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF92YWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9jb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8RGJ4RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgX3N5bmNDb25maWdPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8QXJyYXlPclZhbHVlPERieERhdGVUaW1lRmllbGRTeW5jRmllbGQ+Pj4+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFRpbWV6b25lID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPE1heWJlPFRpbWV6b25lU3RyaW5nPj4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9wcmVzZXRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPERhdGVUaW1lUHJlc2V0Q29uZmlndXJhdGlvbltdPj4ob2YoW10pKTtcblxuICBwcml2YXRlIF9mdWxsRGF5SW5wdXRDdHJsPzogRm9ybUNvbnRyb2w7XG4gIHByaXZhdGUgX2Z1bGxEYXlDb250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w8Ym9vbGVhbj4+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmdWxsRGF5Q29udHJvbCQgPSB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX29mZnNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbDxNYXliZTxEYXRlPj4+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX3VwZGF0ZVRpbWUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHRpbWV6b25lJDogT2JzZXJ2YWJsZTxNYXliZTxUaW1lem9uZVN0cmluZz4+ID0gdGhpcy5fZGVmYXVsdFRpbWV6b25lLnBpcGUoc3dpdGNoTWFwTWF5YmVEZWZhdWx0KCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnBpcGUoXG4gICAgbWFwKChkZWZhdWx0VGltZXpvbmUpID0+IHtcbiAgICAgIHJldHVybiBkZWZhdWx0VGltZXpvbmUgPz8gZ3Vlc3NDdXJyZW50VGltZXpvbmUoKTtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZXpvbmVJbnN0YW5jZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2U+PiA9IHRoaXMudGltZXpvbmUkLnBpcGUoXG4gICAgbWFwKCh0aW1lem9uZSkgPT4gKHRpbWV6b25lID8gZGF0ZVRpbWV6b25lVXRjTm9ybWFsKHsgdGltZXpvbmUgfSkgOiB1bmRlZmluZWQpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHZhbHVlSW5TeXN0ZW1UaW1lem9uZSQgPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIG1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGg8TWF5YmU8RGF0ZT4+KGNvbnRyb2wudmFsdWUpLCBzaGFyZVJlcGxheSgxKSkpLFxuICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMudGltZXpvbmVJbnN0YW5jZSQpLFxuICAgIHN3aXRjaE1hcCgoW3gsIHRpbWV6b25lSW5zdGFuY2VdKSA9PiB7XG4gICAgICByZXR1cm4geC5waXBlKG1hcChkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUsIHRpbWV6b25lSW5zdGFuY2UpKSk7XG4gICAgfSksXG4gICAgdGhyb3R0bGVUaW1lKDIwLCB1bmRlZmluZWQsIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0pLCAvLyB0aHJvdHRsZSBpbmNvbWluZyB2YWx1ZXMgYW5kIHRpbWV6b25lIGNoYW5nZXNcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlSG91cnNBbmRNaW51dGVzKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHRyaWdnZXIvZGlzcGxheSB2aXN1YWwgdXBkYXRlcyAoc3BlY2lmaWNhbGx5IG9uIHRpbWVEaXN0YW5jZSwgZXRjLikuXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5VmFsdWUkID0gaW50ZXJ2YWwoMTAgKiAxMDAwKS5waXBlKFxuICAgIHN0YXJ0V2l0aCgwKSxcbiAgICBtYXAoKCkgPT4gbmV3IERhdGUoKS5nZXRNaW51dGVzKCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgdGFwKCgpID0+IHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCkpLFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnZhbHVlSW5TeXN0ZW1UaW1lem9uZSQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZVN0cmluZyQ6IE9ic2VydmFibGU8UmVhZGFibGVUaW1lU3RyaW5nIHwgJyc+ID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAoeCA/IHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcoeCkgOiAnJykpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlSW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKCksIHtcbiAgICB2YWxpZGF0b3JzOiBbXVxuICB9KTtcblxuICByZWFkb25seSB0aW1lSW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucGF0dGVybigvXihub3cpJHxeKFswLTldfCgwWzAtOV0pfCgxWzAtOV0pfCgyWzAtM10pKSg6KT8oWzAtNV1bMC05XSk/KFxccyk/KFthcEFQXVtNbV0pPyhcXFxccykqJC8pXVxuICB9KTtcblxuICBnZXQgZGF0ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGF0ZUxhYmVsID8/ICdEYXRlJztcbiAgfVxuXG4gIGdldCB0aW1lTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50aW1lTGFiZWwgPz8gJ1RpbWUnO1xuICB9XG5cbiAgZ2V0IGFsbERheUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWxsRGF5TGFiZWwgPz8gJ0FsbCBEYXknO1xuICB9XG5cbiAgZ2V0IGF0VGltZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYXRUaW1lTGFiZWwgPz8gJ0F0JztcbiAgfVxuXG4gIGdldCBkYXRlT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50aW1lTW9kZSA9PT0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU7XG4gIH1cblxuICBnZXQgZGF0ZVRpbWVGaWVsZCgpOiBEYnhEYXRlVGltZUZpZWxkUHJvcHMge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzO1xuICB9XG5cbiAgZ2V0IHRpbWVPbmx5KCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRlVGltZUZpZWxkLnRpbWVPbmx5O1xuICB9XG5cbiAgZ2V0IHNob3dEYXRlSW5wdXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnRpbWVPbmx5O1xuICB9XG5cbiAgZ2V0IHZhbHVlTW9kZSgpOiBEYnhEYXRlVGltZVZhbHVlTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMudmFsdWVNb2RlID8/IERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEU7XG4gIH1cblxuICBnZXQgdGltZU1vZGUoKTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlIHtcbiAgICBjb25zdCBkYXRlVmFsdWVzT25seSA9IHRoaXMudmFsdWVNb2RlID09PSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVlfU1RSSU5HO1xuXG4gICAgaWYgKGRhdGVWYWx1ZXNPbmx5KSB7XG4gICAgICByZXR1cm4gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRpbWVPbmx5ID8gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEIDogdGhpcy5kYXRlVGltZUZpZWxkLnRpbWVNb2RlID8/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRDtcbiAgICB9XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuZGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgaGlkZURhdGVIaW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmhpZGVEYXRlSGludCA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCBoaWRlRGF0ZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5oaWRlRGF0ZVBpY2tlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCB0aW1lem9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy50aW1lem9uZTtcbiAgfVxuXG4gIGdldCBzaG93VGltZXpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd1RpbWV6b25lID8/IHRydWU7XG4gIH1cblxuICBnZXQgcHJlc2V0cygpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5wcmVzZXRzO1xuICB9XG5cbiAgcmVhZG9ubHkgZnVsbERheSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZ1bGxEYXlDb250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2hvd1RpbWVJbnB1dCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZ1bGxEYXkkLnBpcGUobWFwKCh4KSA9PiAheCAmJiB0aGlzLnRpbWVNb2RlICE9PSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORSkpO1xuXG4gIHJlYWRvbmx5IHNob3dBZGRUaW1lJCA9IHRoaXMuc2hvd1RpbWVJbnB1dCQucGlwZShcbiAgICBtYXAoKHgpID0+ICF4ICYmIHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5PUFRJT05BTCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlJCA9IHRoaXMuZGF0ZUlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5kYXRlSW5wdXRDdHJsLnZhbHVlKSwgZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHRpbWV6b25lQWJicmV2aWF0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF0ZSQsIHRoaXMudGltZXpvbmUkXSkucGlwZShcbiAgICBtYXAoKFtkYXRlLCB0aW1lem9uZV0pID0+IGdldFRpbWV6b25lQWJicmV2aWF0aW9uKHRpbWV6b25lLCBkYXRlKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVWYWx1ZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZT4+ID0gbWVyZ2UodGhpcy5kYXRlJCwgdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkLnBpcGUoc2tpcEZpcnN0TWF5YmUoKSkpLnBpcGUoXG4gICAgbWFwKCh4OiBNYXliZTxEYXRlPikgPT4gKHggPyBzdGFydE9mRGF5KHgpIDogbnVsbCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPE1heWJlPERhdGU+Pihpc1NhbWVEYXRlRGF5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHRpbWVJbnB1dCQ6IE9ic2VydmFibGU8UmVhZGFibGVUaW1lU3RyaW5nPiA9IHRoaXMuX3VwZGF0ZVRpbWUucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoNSksXG4gICAgbWFwKCgpID0+IHRoaXMudGltZUlucHV0Q3RybC52YWx1ZSB8fCAnJyksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIHJlYWRvbmx5IHN5bmNDb25maWdPYnMkID0gdGhpcy5fc3luY0NvbmZpZ09icy5waXBlKHN3aXRjaE1hcE1heWJlRGVmYXVsdCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgcGFyc2VkU3luY0NvbmZpZ3MkOiBPYnNlcnZhYmxlPERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGRbXT4gPSB0aGlzLnN5bmNDb25maWdPYnMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBsZXQgcGFyc2VkOiBEYnhEYXRlVGltZUZpZWxkU3luY1BhcnNlZEZpZWxkW107XG5cbiAgICAgIGlmICh4KSB7XG4gICAgICAgIHBhcnNlZCA9IGZpbHRlck1heWJlVmFsdWVzKFxuICAgICAgICAgIGFzQXJyYXkoeCkubWFwKCh5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh5LnN5bmNXaXRoKTtcblxuICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLFxuICAgICAgICAgICAgICAgIC4uLnlcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZCA9IFtdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyc2VkO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc3luY0NvbmZpZ0JlZm9yZVZhbHVlJDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSBzeW5jQ29uZmlnVmFsdWVPYnModGhpcy5wYXJzZWRTeW5jQ29uZmlncyQsICdiZWZvcmUnKTtcbiAgcmVhZG9ubHkgc3luY0NvbmZpZ0FmdGVyVmFsdWUkOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHN5bmNDb25maWdWYWx1ZU9icyh0aGlzLnBhcnNlZFN5bmNDb25maWdzJCwgJ2FmdGVyJyk7XG5cbiAgLy8gVE9ETzogR2V0IG1pbi9tYXggdXNpbmcgdGhlIERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiB0b29cblxuICByZWFkb25seSBkYXRlSW5wdXRNaW4kOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHRoaXMuc3luY0NvbmZpZ0JlZm9yZVZhbHVlJDtcbiAgcmVhZG9ubHkgZGF0ZUlucHV0TWF4JDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSB0aGlzLnN5bmNDb25maWdBZnRlclZhbHVlJDtcblxuICByZWFkb25seSByYXdEYXRlVGltZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5kYXRlVmFsdWUkLCB0aGlzLnRpbWVJbnB1dCQucGlwZShzdGFydFdpdGgobnVsbCkpLCB0aGlzLmZ1bGxEYXkkXSkucGlwZShcbiAgICBtYXAoKFtkYXRlLCB0aW1lU3RyaW5nLCBmdWxsRGF5XSkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTWF5YmU8RGF0ZT47XG5cbiAgICAgIGlmICghZGF0ZSAmJiB0aGlzLnRpbWVPbmx5KSB7XG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0ZSkge1xuICAgICAgICBpZiAoZnVsbERheSkge1xuICAgICAgICAgIGlmICh0aGlzLmRhdGVUaW1lRmllbGQuZnVsbERheUluVVRDKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB1dGNEYXlGb3JEYXRlKGRhdGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBzdGFydE9mRGF5KGRhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aW1lU3RyaW5nKSB7XG4gICAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICAgIHJlYWRhYmxlVGltZVN0cmluZ1RvRGF0ZSh0aW1lU3RyaW5nLCB7XG4gICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgIHVzZVN5c3RlbVRpbWV6b25lOiB0cnVlXG4gICAgICAgICAgICB9KSA/PyBkYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGRhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlSG91cnNBbmRNaW51dGVzKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9jb25maWcucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSksIHRoaXMuZGF0ZUlucHV0TWluJCwgdGhpcy5kYXRlSW5wdXRNYXgkXSkucGlwZShcbiAgICBtYXAoKFt4LCBkYXRlSW5wdXRNaW4sIGRhdGVJbnB1dE1heF0pID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IE1heWJlPERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj4gPSB4O1xuXG4gICAgICBpZiAoZGF0ZUlucHV0TWluICE9IG51bGwgfHwgZGF0ZUlucHV0TWF4ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgeyBtaW46IGxpbWl0TWluLCBtYXg6IGxpbWl0TWF4IH0gPSB4Py5saW1pdHMgPz8ge307XG4gICAgICAgIGNvbnN0IG1pbiA9IGZpbmRNaW5EYXRlKFtkYXRlSW5wdXRNaW4sIGRhdGVGcm9tTG9naWNhbERhdGUobGltaXRNaW4pXSk7XG4gICAgICAgIGNvbnN0IG1heCA9IGZpbmRNYXhEYXRlKFtkYXRlSW5wdXRNYXgsIGRhdGVGcm9tTG9naWNhbERhdGUobGltaXRNYXgpXSk7XG5cbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgIC4uLngsXG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAuLi54Py5saW1pdHMsXG4gICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICBtYXhcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBpY2tlckZpbHRlciQ6IE9ic2VydmFibGU8RGVjaXNpb25GdW5jdGlvbjxEYXRlIHwgbnVsbD4+ID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGlmICh4KSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGRhdGVUaW1lTWludXRlRGVjaXNpb25GdW5jdGlvbih4KTtcbiAgICAgICAgcmV0dXJuICh4OiBEYXRlIHwgbnVsbCkgPT4gKHggIT0gbnVsbCA/IGZpbHRlcih4KSA6IHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHRydWU7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkZWZhdWx0UGlja2VyRmlsdGVyOiBEZWNpc2lvbkZ1bmN0aW9uPERhdGUgfCBudWxsPiA9ICgpID0+IHRydWU7XG5cbiAgcmVhZG9ubHkgdGltZU91dHB1dCQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5yYXdEYXRlVGltZSQsIHRoaXMuX29mZnNldCwgdGhpcy5jb25maWckXSkucGlwZShcbiAgICB0aHJvdHRsZVRpbWUoVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudFswXSA9PT0gbmV4dFswXSAmJiBuZXh0WzFdID09PSAwKSxcbiAgICB0YXAoKFssIHN0ZXBzT2Zmc2V0XSkgPT4gKHN0ZXBzT2Zmc2V0ID8gdGhpcy5fb2Zmc2V0Lm5leHQoMCkgOiAwKSksXG4gICAgbWFwKChbZGF0ZSwgc3RlcHNPZmZzZXQsIGNvbmZpZ10pID0+IHtcbiAgICAgIGlmIChkYXRlICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRGF0ZVRpbWVNaW51dGVJbnN0YW5jZSh7XG4gICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgcm91bmREb3duVG9NaW51dGU6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGF0ZSA9IGluc3RhbmNlLmxpbWl0KGRhdGUpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gc3RlcHNPZmZzZXQgKiA1O1xuICAgICAgICBkYXRlID0gYWRkTWludXRlcyhkYXRlLCBtaW51dGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lRGF0ZUhvdXJzQW5kTWludXRlcyksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBwcmVzZXRzJDogT2JzZXJ2YWJsZTxEYXRlVGltZVByZXNldFtdPiA9IHRoaXMuX3ByZXNldHMucGlwZShcbiAgICBzd2l0Y2hNYXBNYXliZU9icygpLFxuICAgIG1hcCgoeDogRGF0ZVRpbWVQcmVzZXRDb25maWd1cmF0aW9uW10pID0+IHgubWFwKGRhdGVUaW1lUHJlc2V0KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWFkb25seSBkYnhEYXRlVGltZUZpZWxkQ29uZmlnU2VydmljZTogRGJ4RGF0ZVRpbWVGaWVsZE1lbnVQcmVzZXRzU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgY29uc3QgaW5wdXRQaWNrZXJDb25maWcgPSB0aGlzLmRhdGVUaW1lRmllbGQuZ2V0Q29uZmlnT2JzIHx8IHRoaXMuZGF0ZVRpbWVGaWVsZC5waWNrZXJDb25maWc7XG4gICAgdGhpcy5fY29uZmlnLm5leHQoaW5wdXRQaWNrZXJDb25maWcgPyBhc09ic2VydmFibGVGcm9tR2V0dGVyKGlucHV0UGlja2VyQ29uZmlnKSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5fc3luY0NvbmZpZ09icy5uZXh0KHRoaXMuZGF0ZVRpbWVGaWVsZC5nZXRTeW5jRmllbGRzT2JzPy4oKSk7XG5cbiAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkXG4gICAgICAucGlwZShcbiAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy50aW1lem9uZUluc3RhbmNlJC5waXBlKG1hcCgodGltZXpvbmVJbnN0YW5jZSkgPT4gZGJ4RGF0ZVRpbWVPdXRwdXRWYWx1ZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUsIHRpbWV6b25lSW5zdGFuY2UpKSkpLFxuICAgICAgICB0aHJvdHRsZVRpbWUoVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChbY3VycmVudFZhbHVlLCB2YWx1ZUZhY3RvcnldKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudGltZU91dHB1dCQucGlwZShcbiAgICAgICAgICAgIHRocm90dGxlVGltZShUSU1FX09VVFBVVF9USFJPVFRMRV9USU1FICogMiwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICAgICAgICAgIHNraXBGaXJzdE1heWJlKCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlSG91cnNBbmRNaW51dGVzKSxcbiAgICAgICAgICAgIG1hcCgoeCkgPT4gdmFsdWVGYWN0b3J5KHgpKSxcbiAgICAgICAgICAgIGZpbHRlcigoeCkgPT4gIWRieERhdGVUaW1lSXNTYW1lRGF0ZVRpbWVGaWVsZFZhbHVlKHgsIGN1cnJlbnRWYWx1ZSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl92YWx1ZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVTdHJpbmckLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgLy8gU2tpcCBldmVudHMgd2hlcmUgdGhlIHRpbWVJbnB1dCB2YWx1ZSBpcyBjbGVhcmVkLlxuICAgICAgaWYgKCF0aGlzLnRpbWVJbnB1dEN0cmwudmFsdWUgJiYgeCA9PT0gJzEyOjAwQU0nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRUaW1lKHgpO1xuICAgIH0pO1xuXG4gICAgLy8gU2V0IGRlZmF1bHQgdGltZXpvbmUgaWYgcHJvdmlkZWQuXG4gICAgaWYgKHRoaXMudGltZXpvbmUgJiYgIXRoaXMuZGF0ZVRpbWVGaWVsZC5mdWxsRGF5SW5VVEMpIHtcbiAgICAgIHRoaXMuX2RlZmF1bHRUaW1lem9uZS5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy50aW1lem9uZSkpO1xuICAgIH1cblxuICAgIC8vIFdhdGNoIGZvciBkaXNhYmxlZCBjaGFuZ2VzIHNvIHdlIGNhbiBwcm9wb2dhdGUgdGhlbSBwcm9wZXJseS5cbiAgICB0aGlzLmZvcm1Db250cm9sLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSgoZGlzYWJsZWQpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmRhdGVJbnB1dEN0cmwuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMudGltZUlucHV0Q3RybC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0ZUlucHV0Q3RybC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLnRpbWVJbnB1dEN0cmwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGlzRnVsbERheUZpZWxkID0gdGhpcy5kYXRlVGltZUZpZWxkLmZ1bGxEYXlGaWVsZE5hbWU7XG4gICAgbGV0IGZ1bGxEYXlGaWVsZEN0cmw6IE1heWJlPEFic3RyYWN0Q29udHJvbD47XG5cbiAgICBpZiAoaXNGdWxsRGF5RmllbGQpIHtcbiAgICAgIGZ1bGxEYXlGaWVsZEN0cmwgPSB0aGlzLmZvcm0uZ2V0KGlzRnVsbERheUZpZWxkKTtcbiAgICB9XG5cbiAgICBpZiAoIWZ1bGxEYXlGaWVsZEN0cmwpIHtcbiAgICAgIGNvbnN0IGlzRnVsbERheSA9IHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FO1xuICAgICAgdGhpcy5fZnVsbERheUlucHV0Q3RybCA9IG5ldyBGb3JtQ29udHJvbChpc0Z1bGxEYXkpO1xuXG4gICAgICAvLyBTZXQgdGhlIGNvbnRyb2wgaW4gdGhlIGZvcm0gdG9vIGlmIHRoZSBuYW1lIGlzIGRlZmluZWQuXG4gICAgICBpZiAoaXNGdWxsRGF5RmllbGQpIHtcbiAgICAgICAgKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2woaXNGdWxsRGF5RmllbGQsIHRoaXMuX2Z1bGxEYXlJbnB1dEN0cmwpO1xuICAgICAgfVxuXG4gICAgICBmdWxsRGF5RmllbGRDdHJsID0gdGhpcy5fZnVsbERheUlucHV0Q3RybDtcbiAgICB9XG5cbiAgICB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5uZXh0KGZ1bGxEYXlGaWVsZEN0cmwpO1xuXG4gICAgc3dpdGNoICh0aGlzLnRpbWVNb2RlKSB7XG4gICAgICBjYXNlIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5PUFRJT05BTDpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FOlxuICAgICAgICB0aGlzLnJlbW92ZVRpbWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRDpcbiAgICAgICAgdGhpcy5hZGRUaW1lKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByZXNldHMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fcHJlc2V0cy5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy5wcmVzZXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ByZXNldHMubmV4dCh0aGlzLmRieERhdGVUaW1lRmllbGRDb25maWdTZXJ2aWNlLmNvbmZpZ3VyYXRpb25zJCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9zdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX3ZhbHVlU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9jb25maWcuY29tcGxldGUoKTtcbiAgICB0aGlzLl9kZWZhdWx0VGltZXpvbmUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9wcmVzZXRzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZnVsbERheUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9vZmZzZXQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zeW5jQ29uZmlnT2JzLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzZWxlY3RQcmVzZXQocHJlc2V0OiBEYXRlVGltZVByZXNldCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gcHJlc2V0LnZhbHVlKCk7XG5cbiAgICBpZiAodmFsdWUubG9naWNhbERhdGUpIHtcbiAgICAgIHRoaXMuc2V0TG9naWNhbFRpbWUodmFsdWUubG9naWNhbERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUudGltZVN0cmluZykge1xuICAgICAgdGhpcy5zZXRUaW1lKHZhbHVlLnRpbWVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIGRhdGVQaWNrZWQoZXZlbnQ6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PERhdGU+KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IGV2ZW50LnZhbHVlO1xuXG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIHRoaXMuc2V0RGF0ZUlucHV0VmFsdWUoZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TG9naWNhbFRpbWUodGltZTogTG9naWNhbERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gZGF0ZUZyb21Mb2dpY2FsRGF0ZSh0aW1lKTtcblxuICAgIGlmIChkYXRlKSB7XG4gICAgICB0aGlzLnNldFRpbWVGcm9tRGF0ZShkYXRlKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRlSW5wdXRWYWx1ZShkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5kYXRlSW5wdXRDdHJsLnNldFZhbHVlKGRhdGUpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAgc2V0VGltZUZyb21EYXRlKHRpbWVEYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgdGltZVN0cmluZyA9IHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcodGltZURhdGUpO1xuICAgIHRoaXMuc2V0VGltZSh0aW1lU3RyaW5nKTtcbiAgfVxuXG4gIHNldFRpbWUodGltZTogUmVhZGFibGVUaW1lU3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50aW1lSW5wdXRDdHJsLnNldFZhbHVlKHRpbWUpO1xuICAgIHRoaXMuX29mZnNldC5uZXh0KDApO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAga2V5ZG93bk9uRGF0ZUlucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRpcmVjdGlvbiA9IDA7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgIGRpcmVjdGlvbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgZGlyZWN0aW9uID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBvZmZzZXQgPSAxO1xuXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDM2NTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgIG9mZnNldCA9IDMwO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDc7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gMCkge1xuICAgICAgdGhpcy5kYXRlJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdEYXRlID0gYWRkRGF5cyhkYXRlLCBvZmZzZXQgKiBkaXJlY3Rpb24pO1xuICAgICAgICB0aGlzLnNldERhdGVJbnB1dFZhbHVlKG5ld0RhdGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAga2V5ZG93bk9uVGltZUlucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRpcmVjdGlvbiA9IDA7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgIGRpcmVjdGlvbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgZGlyZWN0aW9uID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBvZmZzZXQgPSAxO1xuXG4gICAgaWYgKGV2ZW50LmFsdEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gMzAwO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICBvZmZzZXQgPSA2MDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBvZmZzZXQgPSA1O1xuICAgIH1cblxuICAgIGlmIChkaXJlY3Rpb24gIT09IDApIHtcbiAgICAgIHRoaXMuX29mZnNldC5uZXh0KHRoaXMuX29mZnNldC52YWx1ZSArIG9mZnNldCAqIGRpcmVjdGlvbik7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c1RpbWUoKTogdm9pZCB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgZm9jdXNPdXRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAgYWRkVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZ1bGxEYXkoZmFsc2UpO1xuICB9XG5cbiAgcmVtb3ZlVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZ1bGxEYXkodHJ1ZSk7XG4gIH1cblxuICBzZXRGdWxsRGF5KGZ1bGxEYXk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZ1bGxEYXlDb250cm9sJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgeC5zZXRWYWx1ZShmdWxsRGF5KTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBNQVJLOiBDb21wYXRcbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiBpbnN0ZWFkLlxuICovXG5leHBvcnQgdHlwZSBEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24gPSBEYnhEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb247XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLWZpZWxkXCIgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0LnhzPVwiY29sdW1uIHdyYXBcIiBmeExheW91dEFsaWduPVwic3BhY2UtZXZlbmx5IHN0cmV0Y2hcIj5cbiAgPCEtLSBEYXRlIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwiZGF0ZU9ubHkgPyAnMTAwJyA6ICc1MCdcIiAqbmdJZj1cInNob3dEYXRlSW5wdXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZUlucHV0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIEFkZGl0aW9uYWwgc3BhY2luZyAtLT5cbiAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXIgKm5nSWY9XCIhZGF0ZU9ubHlcIj48L2RieC1idXR0b24tc3BhY2VyPlxuICA8L2Rpdj5cbiAgPCEtLSBUaW1lIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwic2hvd0RhdGVJbnB1dCA/ICc1MCcgOiAnMTAwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGltZUlucHV0JCB8IGFzeW5jXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZU1lbnVBbmRJbnB1dFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cInNob3dBZGRUaW1lJCB8IGFzeW5jXCIgY2xhc3M9XCJhZGQtdGltZS1idXR0b24td3JhcHBlclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwiZGJ4LWJ1dHRvbi1zcGFjZXIgYWRkLXRpbWUtYnV0dG9uXCIgbmdDbGFzcy5sdC1zbT1cImFkZC10aW1lLWJ1dHRvbi1mdWxsXCIgKGNsaWNrKT1cImFkZFRpbWUoKVwiPlxuICAgICAgICA8bWF0LWljb24+dGltZXI8L21hdC1pY29uPlxuICAgICAgICBBZGQgVGltZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWhpZGVEYXRlSGludFwiIGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvdyBkYngtZGF0ZXRpbWUtaGludC1yb3dcIiBmeEZsZXg9XCIxMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWhpbnRcIiBbbmdTd2l0Y2hdPVwiZnVsbERheSQgfCBhc3luY1wiPlxuICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgIDxiIGNsYXNzPVwiZGJ4LW9rXCI+e3sgYWxsRGF5TGFiZWwgfX08L2I+XG4gICAgICAgIHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IGRhdGU6ICdmdWxsRGF0ZScgfX0ge3sgdGltZXpvbmVBYmJyZXZpYXRpb24kIHwgYXN5bmMgfX0gKHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IGRhdGVEaXN0YW5jZSB9fSlcbiAgICAgIDwvc21hbGw+XG4gICAgICA8c21hbGwgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VmFsdWUkIHwgYXN5bmNcIj5cbiAgICAgICAgICA8YiBjbGFzcz1cImRieC1va1wiPnt7IGF0VGltZUxhYmVsIH19PC9iPlxuICAgICAgICAgIHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IGRhdGU6ICdtZWRpdW0nIH19IHt7IHRpbWV6b25lQWJicmV2aWF0aW9uJCB8IGFzeW5jIH19ICh7eyBkaXNwbGF5VmFsdWUkIHwgYXN5bmMgfCB0aW1lRGlzdGFuY2UgfX0pXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBEYXRlIElucHV0IFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNkYXRlSW5wdXRUZW1wbGF0ZT5cbiAgPGJ1dHRvbiBjbGFzcz1cImRieC1idXR0b24tc3BhY2VyXCIgKm5nSWY9XCIhaGlkZURhdGVQaWNrZXJcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8bWF0LWljb24+Y2FsZW5kYXJfdG9kYXk8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvdy1maWVsZFwiIFtuZ0NsYXNzXT1cInsgJ2RieC1kYXRldGltZS1yb3ctZmllbGQtZnVsbC13aWR0aCc6IGhpZGVEYXRlUGlja2VyIH1cIj5cbiAgICA8bWF0LWxhYmVsPnt7IGRhdGVMYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjZGF0ZUlucHV0IG1hdElucHV0IFttaW5dPVwiZGF0ZUlucHV0TWluJCB8IGFzeW5jXCIgW21heF09XCJkYXRlSW5wdXRNYXgkIHwgYXN5bmNcIiBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCIocGlja2VyRmlsdGVyJCB8IGFzeW5jKSB8fCBkZWZhdWx0UGlja2VyRmlsdGVyXCIgKGRhdGVDaGFuZ2UpPVwiZGF0ZVBpY2tlZCgkZXZlbnQpXCIgW3ZhbHVlXT1cImRhdGVWYWx1ZSQgfCBhc3luY1wiIChrZXlkb3duKT1cImtleWRvd25PbkRhdGVJbnB1dCgkZXZlbnQpXCIgLz5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuICAgIDxzcGFuIG1hdFN1ZmZpeCAqbmdJZj1cIiEoc2hvd1RpbWVJbnB1dCQgfCBhc3luYylcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aW1lem9uZVN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9zcGFuPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBUaW1lIE1lbnUvSW5wdXQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI3RpbWVNZW51QW5kSW5wdXRUZW1wbGF0ZT5cbiAgPGJ1dHRvbiBjbGFzcz1cImRieC1idXR0b24tc3BhY2VyXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJ0aW1lbWVudVwiIGFyaWEtbGFiZWw9XCJvcGVucyB0aGUgdGltZSBtZW51XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC1pY29uPnRpbWVyPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtbWVudSAjdGltZW1lbnU9XCJtYXRNZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRpbWVNb2RlID09PSAnb3B0aW9uYWwnXCI+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInJlbW92ZVRpbWUoKVwiPlxuICAgICAgICA8c3Bhbj5SZW1vdmUgVGltZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJlc2V0IG9mIHByZXNldHMkIHwgYXN5bmNcIj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2VsZWN0UHJlc2V0KHByZXNldClcIj57eyBwcmVzZXQubGFiZWwgfCBnZXRWYWx1ZSB9fTwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L21hdC1tZW51PlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93LWZpZWxkXCI+XG4gICAgPG1hdC1sYWJlbD57eyB0aW1lTGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgI3RpbWVJbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGltZUlucHV0Q3RybFwiIChmb2N1cyk9XCJmb2N1c1RpbWUoKVwiIChmb2N1c291dCk9XCJmb2N1c091dFRpbWUoKVwiIChrZXlkb3duKT1cImtleWRvd25PblRpbWVJbnB1dCgkZXZlbnQpXCIgLz5cbiAgICA8c3BhbiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZXpvbmVTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvc3Bhbj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGltZXpvbmUgU3VmZml4IC0tPlxuPG5nLXRlbXBsYXRlICN0aW1lem9uZVN1ZmZpeFRlbXBsYXRlPlxuICA8c3BhbiAqbmdJZj1cInNob3dUaW1lem9uZVwiIGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXRpbWV6b25lIGRieC1mYWludFwiPnt7IHRpbWV6b25lQWJicmV2aWF0aW9uJCB8IGFzeW5jIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
441
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9kYXRldGltZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEQsT0FBTyxFQUFFLGlCQUFpQixFQUErRCxNQUFNLGVBQWUsQ0FBQztBQUNwTCxPQUFPLEVBQUUsbUJBQW1CLEVBQXdCLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSw4QkFBOEIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBQzdYLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqTyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQW1CLFdBQVcsRUFBRSxVQUFVLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFF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RUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxhQUFhO0lBQ2YsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pELENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt1SEE3aEJVLHlCQUF5QjsyR0FBekIseUJBQXlCLDJFQ3RMdEMsMmtJQStFQTs0RkR1R2EseUJBQXlCO2tCQUhyQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmUsIFJlYWRhYmxlVGltZVN0cmluZywgQXJyYXlPclZhbHVlLCBJU084NjAxRGF0ZVN0cmluZywgYXNBcnJheSwgZmlsdGVyTWF5YmVWYWx1ZXMsIERlY2lzaW9uRnVuY3Rpb24sIE1pbGxpc2Vjb25kcywgVGltZXpvbmVTdHJpbmcsIExvZ2ljYWxEYXRlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBkYXRlRnJvbUxvZ2ljYWxEYXRlLCBEYXRlVGltZU1pbnV0ZUNvbmZpZywgRGF0ZVRpbWVNaW51dGVJbnN0YW5jZSwgZ3Vlc3NDdXJyZW50VGltZXpvbmUsIHJlYWRhYmxlVGltZVN0cmluZ1RvRGF0ZSwgdG9Mb2NhbFJlYWRhYmxlVGltZVN0cmluZywgdXRjRGF5Rm9yRGF0ZSwgc2FmZVRvSnNEYXRlLCBmaW5kTWluRGF0ZSwgZmluZE1heERhdGUsIGRhdGVUaW1lTWludXRlRGVjaXNpb25GdW5jdGlvbiwgaXNTYW1lRGF0ZUhvdXJzQW5kTWludXRlcywgZ2V0VGltZXpvbmVBYmJyZXZpYXRpb24sIGlzU2FtZURhdGVEYXksIGRhdGVUaW1lem9uZVV0Y05vcm1hbCwgRGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2UgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgc2hhcmVSZXBsYXksIG1hcCwgc3RhcnRXaXRoLCB0YXAsIGZpcnN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZGVib3VuY2VUaW1lLCB0aHJvdHRsZVRpbWUsIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgU3ViamVjdCwgbWVyZ2UsIGludGVydmFsLCBvZiwgY29tYmluZUxhdGVzdFdpdGgsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGFkZE1pbnV0ZXMsIHN0YXJ0T2ZEYXksIGFkZERheXMgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBhc09ic2VydmFibGVGcm9tR2V0dGVyLCBmaWx0ZXJNYXliZSwgT2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXIsIHNraXBGaXJzdE1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIHN3aXRjaE1hcE1heWJlRGVmYXVsdCwgc3dpdGNoTWFwTWF5YmVPYnMgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IERhdGVUaW1lUHJlc2V0LCBEYXRlVGltZVByZXNldENvbmZpZ3VyYXRpb24sIGRhdGVUaW1lUHJlc2V0IH0gZnJvbSAnLi9kYXRldGltZSc7XG5pbXBvcnQgeyBEYnhEYXRlVGltZUZpZWxkTWVudVByZXNldHNTZXJ2aWNlIH0gZnJvbSAnLi9kYXRldGltZS5maWVsZC5zZXJ2aWNlJztcbmltcG9ydCB7IERieERhdGVUaW1lVmFsdWVNb2RlLCBkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnksIGRieERhdGVUaW1lSXNTYW1lRGF0ZVRpbWVGaWVsZFZhbHVlLCBkYnhEYXRlVGltZU91dHB1dFZhbHVlRmFjdG9yeSB9IGZyb20gJy4vZGF0ZS52YWx1ZSc7XG5cbmV4cG9ydCBlbnVtIERieERhdGVUaW1lRmllbGRUaW1lTW9kZSB7XG4gIC8qKlxuICAgKiBUaW1lIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICAvKipcbiAgICogVGltZSBpcyBvcHRpb25hbC5cbiAgICovXG4gIE9QVElPTkFMID0gJ29wdGlvbmFsJyxcbiAgLyoqXG4gICAqIFRpbWUgaXMgcGVybWVuYW50bHkgb2ZmLlxuICAgKi9cbiAgTk9ORSA9ICdub25lJ1xufVxuXG5leHBvcnQgdHlwZSBEYnhEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24gPSBPbWl0PERhdGVUaW1lTWludXRlQ29uZmlnLCAnZGF0ZSc+O1xuXG5leHBvcnQgdHlwZSBEYnhEYXRlVGltZUZpZWxkU3luY1R5cGUgPSAnYmVmb3JlJyB8ICdhZnRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RGF0ZVRpbWVGaWVsZFN5bmNGaWVsZCB7XG4gIC8qKlxuICAgKiBGaWVsZCBrZXkvcGF0aCB0byBzeW5jIHdpdGgvYWdhaW5zdC5cbiAgICovXG4gIHN5bmNXaXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3cgdG8gc3luYyBhZ2FpbnN0IHRoZSBvdGhlciBmaWVsZC5cbiAgICovXG4gIHN5bmNUeXBlOiBEYnhEYXRlVGltZUZpZWxkU3luY1R5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzIGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBDdXN0b20gZGF0ZSBsYWJlbC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gRGF0ZVxuICAgKi9cbiAgZGF0ZUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gdGltZSBsYWJlbC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gVGltZVxuICAgKi9cbiAgdGltZUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMYWJlbCB0byB1c2UgZm9yIHRoZSBkYXRlIGhpbnQgZm9yIFwiQWxsIERheVwiLiBEZWZhdWx0cyB0byBcIkFsbCBEYXlcIi5cbiAgICovXG4gIGFsbERheUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMYWJlbCB0byB1c2UgZm9yIHRoZSBkYXRlIGhpbnQgZm9yIFwiQXRcIi4gRGVmYXVsdHMgdG8gXCJBdFwiLlxuICAgKi9cbiAgYXRUaW1lTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG1vZGUuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIERBVEVcbiAgICovXG4gIHZhbHVlTW9kZT86IERieERhdGVUaW1lVmFsdWVNb2RlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZGF0ZSBpcyBoaWRkZW4sIGFuZCBhdXRvbWF0aWNhbGx5IHVzZXMgdG9kYXkvaW5wdXQgZGF0ZS5cbiAgICovXG4gIHRpbWVPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHRpbWUgY2FuIGJlIGFkZGVkL3JlbW92ZWQgb3B0aW9uYWxseS5cbiAgICpcbiAgICogVGhpcyBpcyBpZ25vcmVkIGlmIHRpbWVPbmx5IGlzIHNwZWNpZmllZC5cbiAgICovXG4gIHRpbWVNb2RlPzogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlO1xuXG4gIC8qKlxuICAgKiBPdGhlciBmb3JtIGNvbnRyb2wgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB3aGV0aGVyIG9yIG5vdCBpdCBpcyBhIGZ1bGwgZGF5LlxuICAgKlxuICAgKiBUaGlzIGZpZWxkIGlzIG9ubHkgdXNlZCBpZiB0aW1lIGlzIG9wdGlvbmFsLlxuICAgKlxuICAgKiBXaGVuIHRpbWUgaXMgb2ZmLCB0aGUgZmllbGQgaXMgc2V0IHRvIHRydWUuXG4gICAqL1xuICBmdWxsRGF5RmllbGROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBwYXNzIHRoZSBkYXRlIHZhbHVlIGFzIGEgVVRDIGRhdGUsIG9yIGEgZGF0ZSBpbiB0aGUgY3VycmVudCB0aW1lem9uZS5cbiAgICovXG4gIGZ1bGxEYXlJblVUQz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IG90IGhpZGUgdGhlIGRhdGUgaGludCBpbmZvIGNvbnRlbnQuXG4gICAqXG4gICAqIEZhbHNlIGJ5IGRlZmF1bHRcbiAgICovXG4gIGhpZGVEYXRlSGludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGhpZGUgdGhlIGRhdGUvY2FsZW5kYXIgcGlja2VyLlxuICAgKi9cbiAgaGlkZURhdGVQaWNrZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcGlja2VyIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHBpY2tlckNvbmZpZz86IE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj47XG5cbiAgLyoqXG4gICAqIFVzZWQgZm9yIHN5bmNpbmcgd2l0aCBvbmUgb3IgbW9yZSBmaWVsZHMgd2l0aCBhIERhdGUgdmFsdWUuXG4gICAqL1xuICBnZXRTeW5jRmllbGRzT2JzPzogKCkgPT4gT2JzZXJ2YWJsZTxBcnJheU9yVmFsdWU8RGJ4RGF0ZVRpbWVGaWVsZFN5bmNGaWVsZD4+O1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBpbnB1dCB0aW1lem9uZSB0byBkZWZhdWx0IHRvLlxuICAgKlxuICAgKiBJZ25vcmVkIGlmIGZ1bGxEYXlJblVUQyBpcyB0cnVlLlxuICAgKi9cbiAgdGltZXpvbmU/OiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZUdldHRlcjxNYXliZTxUaW1lem9uZVN0cmluZz4+PjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZGlzcGxheSB0aGUgdGltZXpvbmUuIFRydWUgYnkgZGVmYXVsdC5cbiAgICovXG4gIHNob3dUaW1lem9uZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBwcmVzZXRzIHRvIHNob3cgaW4gdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgcHJlc2V0cz86IE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERhdGVUaW1lUHJlc2V0Q29uZmlndXJhdGlvbltdPjtcblxuICAvLyBNQVJLOiBDb21wYXRcbiAgLyoqXG4gICAqIFVzZWQgZm9yIHJldHVybmluZyB0aGUgY29uZmlndXJhdGlvbiBvYnNlcnZhYmxlLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgcGlja2VyQ29uZmlnIGluc3RlYWQuXG4gICAqL1xuICBnZXRDb25maWdPYnM/OiBPYnNlcnZhYmxlT3JWYWx1ZUdldHRlcjxEYnhEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGQgZXh0ZW5kcyBQaWNrPERieERhdGVUaW1lRmllbGRTeW5jRmllbGQsICdzeW5jVHlwZSc+IHtcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sPE1heWJlPERhdGUgfCBJU084NjAxRGF0ZVN0cmluZz4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3luY0NvbmZpZ1ZhbHVlT2JzKHBhcnNlQ29uZmlnc09iczogT2JzZXJ2YWJsZTxEYnhEYXRlVGltZUZpZWxkU3luY1BhcnNlZEZpZWxkW10+LCB0eXBlOiBEYnhEYXRlVGltZUZpZWxkU3luY1R5cGUpOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiB7XG4gIHJldHVybiBwYXJzZUNvbmZpZ3NPYnMucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHguZmluZCgoeSkgPT4geS5zeW5jVHlwZSA9PT0gdHlwZSk7XG4gICAgICBsZXQgcmVzdWx0OiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPjtcblxuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICBjb25zdCB7IGNvbnRyb2wgfSA9IGNvbmZpZztcbiAgICAgICAgcmVzdWx0ID0gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoY29udHJvbC52YWx1ZSksXG4gICAgICAgICAgbWFwKCh4KSA9PiBzYWZlVG9Kc0RhdGUoeCkgPz8gbnVsbClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IG9mKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbn1cblxuY29uc3QgVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRTogTWlsbGlzZWNvbmRzID0gMTA7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhEYXRlVGltZUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxEYnhEYXRlVGltZUZpZWxkUHJvcHM+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF92YWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9jb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8RGJ4RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgX3N5bmNDb25maWdPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8QXJyYXlPclZhbHVlPERieERhdGVUaW1lRmllbGRTeW5jRmllbGQ+Pj4+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFRpbWV6b25lID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPE1heWJlPFRpbWV6b25lU3RyaW5nPj4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9wcmVzZXRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPERhdGVUaW1lUHJlc2V0Q29uZmlndXJhdGlvbltdPj4ob2YoW10pKTtcblxuICBwcml2YXRlIF9mdWxsRGF5SW5wdXRDdHJsPzogRm9ybUNvbnRyb2w7XG4gIHByaXZhdGUgX2Z1bGxEYXlDb250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w8Ym9vbGVhbj4+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmdWxsRGF5Q29udHJvbCQgPSB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX29mZnNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbDxNYXliZTxEYXRlPj4+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX3VwZGF0ZVRpbWUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHRpbWV6b25lJDogT2JzZXJ2YWJsZTxNYXliZTxUaW1lem9uZVN0cmluZz4+ID0gdGhpcy5fZGVmYXVsdFRpbWV6b25lLnBpcGUoc3dpdGNoTWFwTWF5YmVEZWZhdWx0KCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnBpcGUoXG4gICAgbWFwKChkZWZhdWx0VGltZXpvbmUpID0+IHtcbiAgICAgIHJldHVybiBkZWZhdWx0VGltZXpvbmUgPz8gZ3Vlc3NDdXJyZW50VGltZXpvbmUoKTtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZXpvbmVJbnN0YW5jZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2U+PiA9IHRoaXMudGltZXpvbmUkLnBpcGUoXG4gICAgbWFwKCh0aW1lem9uZSkgPT4gKHRpbWV6b25lID8gZGF0ZVRpbWV6b25lVXRjTm9ybWFsKHsgdGltZXpvbmUgfSkgOiB1bmRlZmluZWQpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHZhbHVlSW5TeXN0ZW1UaW1lem9uZSQgPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIG1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGg8TWF5YmU8RGF0ZT4+KGNvbnRyb2wudmFsdWUpLCBzaGFyZVJlcGxheSgxKSkpLFxuICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMudGltZXpvbmVJbnN0YW5jZSQpLFxuICAgIHN3aXRjaE1hcCgoW3gsIHRpbWV6b25lSW5zdGFuY2VdKSA9PiB7XG4gICAgICByZXR1cm4geC5waXBlKG1hcChkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUsIHRpbWV6b25lSW5zdGFuY2UpKSk7XG4gICAgfSksXG4gICAgdGhyb3R0bGVUaW1lKDIwLCB1bmRlZmluZWQsIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0pLCAvLyB0aHJvdHRsZSBpbmNvbWluZyB2YWx1ZXMgYW5kIHRpbWV6b25lIGNoYW5nZXNcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlSG91cnNBbmRNaW51dGVzKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHRyaWdnZXIvZGlzcGxheSB2aXN1YWwgdXBkYXRlcyAoc3BlY2lmaWNhbGx5IG9uIHRpbWVEaXN0YW5jZSwgZXRjLikuXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5VmFsdWUkID0gaW50ZXJ2YWwoMTAgKiAxMDAwKS5waXBlKFxuICAgIHN0YXJ0V2l0aCgwKSxcbiAgICBtYXAoKCkgPT4gbmV3IERhdGUoKS5nZXRNaW51dGVzKCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgdGFwKCgpID0+IHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCkpLFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnZhbHVlSW5TeXN0ZW1UaW1lem9uZSQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZVN0cmluZyQ6IE9ic2VydmFibGU8UmVhZGFibGVUaW1lU3RyaW5nIHwgJyc+ID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAoeCA/IHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcoeCkgOiAnJykpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlSW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKCksIHtcbiAgICB2YWxpZGF0b3JzOiBbXVxuICB9KTtcblxuICByZWFkb25seSB0aW1lSW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucGF0dGVybigvXihub3cpJHxeKFswLTldfCgwWzAtOV0pfCgxWzAtOV0pfCgyWzAtM10pKSg6KT8oWzAtNV1bMC05XSk/KFxccyk/KFthcEFQXVtNbV0pPyhcXFxccykqJC8pXVxuICB9KTtcblxuICBnZXQgZGF0ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGF0ZUxhYmVsID8/ICdEYXRlJztcbiAgfVxuXG4gIGdldCB0aW1lTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50aW1lTGFiZWwgPz8gJ1RpbWUnO1xuICB9XG5cbiAgZ2V0IGFsbERheUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWxsRGF5TGFiZWwgPz8gJ0FsbCBEYXknO1xuICB9XG5cbiAgZ2V0IGF0VGltZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYXRUaW1lTGFiZWwgPz8gJ0F0JztcbiAgfVxuXG4gIGdldCBkYXRlT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50aW1lTW9kZSA9PT0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU7XG4gIH1cblxuICBnZXQgZGF0ZVRpbWVGaWVsZCgpOiBEYnhEYXRlVGltZUZpZWxkUHJvcHMge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzO1xuICB9XG5cbiAgZ2V0IHRpbWVPbmx5KCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRlVGltZUZpZWxkLnRpbWVPbmx5O1xuICB9XG5cbiAgZ2V0IHNob3dEYXRlSW5wdXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnRpbWVPbmx5O1xuICB9XG5cbiAgZ2V0IHZhbHVlTW9kZSgpOiBEYnhEYXRlVGltZVZhbHVlTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMudmFsdWVNb2RlID8/IERieERhdGVUaW1lVmFsdWVNb2RlLkRBVEU7XG4gIH1cblxuICBnZXQgdGltZU1vZGUoKTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlIHtcbiAgICBjb25zdCBkYXRlVmFsdWVzT25seSA9IHRoaXMudmFsdWVNb2RlID09PSBEYnhEYXRlVGltZVZhbHVlTW9kZS5EQVlfU1RSSU5HO1xuXG4gICAgaWYgKGRhdGVWYWx1ZXNPbmx5KSB7XG4gICAgICByZXR1cm4gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRpbWVPbmx5ID8gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEIDogdGhpcy5kYXRlVGltZUZpZWxkLnRpbWVNb2RlID8/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRDtcbiAgICB9XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuZGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgaGlkZURhdGVIaW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmhpZGVEYXRlSGludCA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCBoaWRlRGF0ZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5oaWRlRGF0ZVBpY2tlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCB0aW1lem9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy50aW1lem9uZTtcbiAgfVxuXG4gIGdldCBzaG93VGltZXpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd1RpbWV6b25lID8/IHRydWU7XG4gIH1cblxuICBnZXQgcHJlc2V0cygpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5wcmVzZXRzO1xuICB9XG5cbiAgcmVhZG9ubHkgZnVsbERheSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZ1bGxEYXlDb250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2hvd1RpbWVJbnB1dCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZ1bGxEYXkkLnBpcGUobWFwKCh4KSA9PiAheCAmJiB0aGlzLnRpbWVNb2RlICE9PSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORSkpO1xuXG4gIHJlYWRvbmx5IHNob3dBZGRUaW1lJCA9IHRoaXMuc2hvd1RpbWVJbnB1dCQucGlwZShcbiAgICBtYXAoKHgpID0+ICF4ICYmIHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5PUFRJT05BTCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlJCA9IHRoaXMuZGF0ZUlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5kYXRlSW5wdXRDdHJsLnZhbHVlKSwgZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHRpbWV6b25lQWJicmV2aWF0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF0ZSQsIHRoaXMudGltZXpvbmUkXSkucGlwZShcbiAgICBtYXAoKFtkYXRlLCB0aW1lem9uZV0pID0+IGdldFRpbWV6b25lQWJicmV2aWF0aW9uKHRpbWV6b25lLCBkYXRlKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVWYWx1ZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZT4+ID0gbWVyZ2UodGhpcy5kYXRlJCwgdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkLnBpcGUoc2tpcEZpcnN0TWF5YmUoKSkpLnBpcGUoXG4gICAgbWFwKCh4OiBNYXliZTxEYXRlPikgPT4gKHggPyBzdGFydE9mRGF5KHgpIDogbnVsbCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPE1heWJlPERhdGU+Pihpc1NhbWVEYXRlRGF5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHRpbWVJbnB1dCQ6IE9ic2VydmFibGU8UmVhZGFibGVUaW1lU3RyaW5nPiA9IHRoaXMuX3VwZGF0ZVRpbWUucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoNSksXG4gICAgbWFwKCgpID0+IHRoaXMudGltZUlucHV0Q3RybC52YWx1ZSB8fCAnJyksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIHJlYWRvbmx5IHN5bmNDb25maWdPYnMkID0gdGhpcy5fc3luY0NvbmZpZ09icy5waXBlKHN3aXRjaE1hcE1heWJlRGVmYXVsdCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgcGFyc2VkU3luY0NvbmZpZ3MkOiBPYnNlcnZhYmxlPERieERhdGVUaW1lRmllbGRTeW5jUGFyc2VkRmllbGRbXT4gPSB0aGlzLnN5bmNDb25maWdPYnMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBsZXQgcGFyc2VkOiBEYnhEYXRlVGltZUZpZWxkU3luY1BhcnNlZEZpZWxkW107XG5cbiAgICAgIGlmICh4KSB7XG4gICAgICAgIHBhcnNlZCA9IGZpbHRlck1heWJlVmFsdWVzKFxuICAgICAgICAgIGFzQXJyYXkoeCkubWFwKCh5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh5LnN5bmNXaXRoKTtcblxuICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLFxuICAgICAgICAgICAgICAgIC4uLnlcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZCA9IFtdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyc2VkO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc3luY0NvbmZpZ0JlZm9yZVZhbHVlJDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSBzeW5jQ29uZmlnVmFsdWVPYnModGhpcy5wYXJzZWRTeW5jQ29uZmlncyQsICdiZWZvcmUnKTtcbiAgcmVhZG9ubHkgc3luY0NvbmZpZ0FmdGVyVmFsdWUkOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHN5bmNDb25maWdWYWx1ZU9icyh0aGlzLnBhcnNlZFN5bmNDb25maWdzJCwgJ2FmdGVyJyk7XG5cbiAgLy8gVE9ETzogR2V0IG1pbi9tYXggdXNpbmcgdGhlIERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiB0b29cblxuICByZWFkb25seSBkYXRlSW5wdXRNaW4kOiBPYnNlcnZhYmxlPERhdGUgfCBudWxsPiA9IHRoaXMuc3luY0NvbmZpZ0JlZm9yZVZhbHVlJDtcbiAgcmVhZG9ubHkgZGF0ZUlucHV0TWF4JDogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4gPSB0aGlzLnN5bmNDb25maWdBZnRlclZhbHVlJDtcblxuICByZWFkb25seSByYXdEYXRlVGltZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5kYXRlVmFsdWUkLCB0aGlzLnRpbWVJbnB1dCQucGlwZShzdGFydFdpdGgobnVsbCkpLCB0aGlzLmZ1bGxEYXkkXSkucGlwZShcbiAgICBtYXAoKFtkYXRlLCB0aW1lU3RyaW5nLCBmdWxsRGF5XSkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTWF5YmU8RGF0ZT47XG5cbiAgICAgIGlmICghZGF0ZSAmJiB0aGlzLnRpbWVPbmx5KSB7XG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0ZSkge1xuICAgICAgICBpZiAoZnVsbERheSkge1xuICAgICAgICAgIGlmICh0aGlzLmRhdGVUaW1lRmllbGQuZnVsbERheUluVVRDKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB1dGNEYXlGb3JEYXRlKGRhdGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBzdGFydE9mRGF5KGRhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aW1lU3RyaW5nKSB7XG4gICAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICAgIHJlYWRhYmxlVGltZVN0cmluZ1RvRGF0ZSh0aW1lU3RyaW5nLCB7XG4gICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgIHVzZVN5c3RlbVRpbWV6b25lOiB0cnVlXG4gICAgICAgICAgICB9KSA/PyBkYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGRhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlSG91cnNBbmRNaW51dGVzKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9jb25maWcucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSksIHRoaXMuZGF0ZUlucHV0TWluJCwgdGhpcy5kYXRlSW5wdXRNYXgkXSkucGlwZShcbiAgICBtYXAoKFt4LCBkYXRlSW5wdXRNaW4sIGRhdGVJbnB1dE1heF0pID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IE1heWJlPERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj4gPSB4O1xuXG4gICAgICBpZiAoZGF0ZUlucHV0TWluICE9IG51bGwgfHwgZGF0ZUlucHV0TWF4ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgeyBtaW46IGxpbWl0TWluLCBtYXg6IGxpbWl0TWF4IH0gPSB4Py5saW1pdHMgPz8ge307XG4gICAgICAgIGNvbnN0IG1pbiA9IGZpbmRNaW5EYXRlKFtkYXRlSW5wdXRNaW4sIGRhdGVGcm9tTG9naWNhbERhdGUobGltaXRNaW4pXSk7XG4gICAgICAgIGNvbnN0IG1heCA9IGZpbmRNYXhEYXRlKFtkYXRlSW5wdXRNYXgsIGRhdGVGcm9tTG9naWNhbERhdGUobGltaXRNYXgpXSk7XG5cbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgIC4uLngsXG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAuLi54Py5saW1pdHMsXG4gICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICBtYXhcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBpY2tlckZpbHRlciQ6IE9ic2VydmFibGU8RGVjaXNpb25GdW5jdGlvbjxEYXRlIHwgbnVsbD4+ID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGlmICh4KSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGRhdGVUaW1lTWludXRlRGVjaXNpb25GdW5jdGlvbih4KTtcbiAgICAgICAgcmV0dXJuICh4OiBEYXRlIHwgbnVsbCkgPT4gKHggIT0gbnVsbCA/IGZpbHRlcih4KSA6IHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHRydWU7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkZWZhdWx0UGlja2VyRmlsdGVyOiBEZWNpc2lvbkZ1bmN0aW9uPERhdGUgfCBudWxsPiA9ICgpID0+IHRydWU7XG5cbiAgcmVhZG9ubHkgdGltZU91dHB1dCQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5yYXdEYXRlVGltZSQsIHRoaXMuX29mZnNldCwgdGhpcy5jb25maWckXSkucGlwZShcbiAgICB0aHJvdHRsZVRpbWUoVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudFswXSA9PT0gbmV4dFswXSAmJiBuZXh0WzFdID09PSAwKSxcbiAgICB0YXAoKFssIHN0ZXBzT2Zmc2V0XSkgPT4gKHN0ZXBzT2Zmc2V0ID8gdGhpcy5fb2Zmc2V0Lm5leHQoMCkgOiAwKSksXG4gICAgbWFwKChbZGF0ZSwgc3RlcHNPZmZzZXQsIGNvbmZpZ10pID0+IHtcbiAgICAgIGlmIChkYXRlICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRGF0ZVRpbWVNaW51dGVJbnN0YW5jZSh7XG4gICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgcm91bmREb3duVG9NaW51dGU6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGF0ZSA9IGluc3RhbmNlLmxpbWl0KGRhdGUpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gc3RlcHNPZmZzZXQgKiA1O1xuICAgICAgICBkYXRlID0gYWRkTWludXRlcyhkYXRlLCBtaW51dGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lRGF0ZUhvdXJzQW5kTWludXRlcyksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBwcmVzZXRzJDogT2JzZXJ2YWJsZTxEYXRlVGltZVByZXNldFtdPiA9IHRoaXMuX3ByZXNldHMucGlwZShcbiAgICBzd2l0Y2hNYXBNYXliZU9icygpLFxuICAgIG1hcCgoeDogRGF0ZVRpbWVQcmVzZXRDb25maWd1cmF0aW9uW10pID0+IHgubWFwKGRhdGVUaW1lUHJlc2V0KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWFkb25seSBkYnhEYXRlVGltZUZpZWxkQ29uZmlnU2VydmljZTogRGJ4RGF0ZVRpbWVGaWVsZE1lbnVQcmVzZXRzU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgY29uc3QgaW5wdXRQaWNrZXJDb25maWcgPSB0aGlzLmRhdGVUaW1lRmllbGQuZ2V0Q29uZmlnT2JzIHx8IHRoaXMuZGF0ZVRpbWVGaWVsZC5waWNrZXJDb25maWc7XG4gICAgdGhpcy5fY29uZmlnLm5leHQoaW5wdXRQaWNrZXJDb25maWcgPyBhc09ic2VydmFibGVGcm9tR2V0dGVyKGlucHV0UGlja2VyQ29uZmlnKSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5fc3luY0NvbmZpZ09icy5uZXh0KHRoaXMuZGF0ZVRpbWVGaWVsZC5nZXRTeW5jRmllbGRzT2JzPy4oKSk7XG5cbiAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkXG4gICAgICAucGlwZShcbiAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy50aW1lem9uZUluc3RhbmNlJC5waXBlKG1hcCgodGltZXpvbmVJbnN0YW5jZSkgPT4gZGJ4RGF0ZVRpbWVPdXRwdXRWYWx1ZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUsIHRpbWV6b25lSW5zdGFuY2UpKSkpLFxuICAgICAgICB0aHJvdHRsZVRpbWUoVElNRV9PVVRQVVRfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChbY3VycmVudFZhbHVlLCB2YWx1ZUZhY3RvcnldKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudGltZU91dHB1dCQucGlwZShcbiAgICAgICAgICAgIHRocm90dGxlVGltZShUSU1FX09VVFBVVF9USFJPVFRMRV9USU1FICogMiwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICAgICAgICAgIHNraXBGaXJzdE1heWJlKCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlSG91cnNBbmRNaW51dGVzKSxcbiAgICAgICAgICAgIG1hcCgoeCkgPT4gdmFsdWVGYWN0b3J5KHgpKSxcbiAgICAgICAgICAgIGZpbHRlcigoeCkgPT4gIWRieERhdGVUaW1lSXNTYW1lRGF0ZVRpbWVGaWVsZFZhbHVlKHgsIGN1cnJlbnRWYWx1ZSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl92YWx1ZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVTdHJpbmckLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgLy8gU2tpcCBldmVudHMgd2hlcmUgdGhlIHRpbWVJbnB1dCB2YWx1ZSBpcyBjbGVhcmVkLlxuICAgICAgaWYgKCF0aGlzLnRpbWVJbnB1dEN0cmwudmFsdWUgJiYgeCA9PT0gJzEyOjAwQU0nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRUaW1lKHgpO1xuICAgIH0pO1xuXG4gICAgLy8gU2V0IGRlZmF1bHQgdGltZXpvbmUgaWYgcHJvdmlkZWQuXG4gICAgaWYgKHRoaXMudGltZXpvbmUgJiYgIXRoaXMuZGF0ZVRpbWVGaWVsZC5mdWxsRGF5SW5VVEMpIHtcbiAgICAgIHRoaXMuX2RlZmF1bHRUaW1lem9uZS5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy50aW1lem9uZSkpO1xuICAgIH1cblxuICAgIC8vIFdhdGNoIGZvciBkaXNhYmxlZCBjaGFuZ2VzIHNvIHdlIGNhbiBwcm9wb2dhdGUgdGhlbSBwcm9wZXJseS5cbiAgICB0aGlzLmZvcm1Db250cm9sLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSgoZGlzYWJsZWQpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmRhdGVJbnB1dEN0cmwuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMudGltZUlucHV0Q3RybC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0ZUlucHV0Q3RybC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLnRpbWVJbnB1dEN0cmwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGlzRnVsbERheUZpZWxkID0gdGhpcy5kYXRlVGltZUZpZWxkLmZ1bGxEYXlGaWVsZE5hbWU7XG4gICAgbGV0IGZ1bGxEYXlGaWVsZEN0cmw6IE1heWJlPEFic3RyYWN0Q29udHJvbD47XG5cbiAgICBpZiAoaXNGdWxsRGF5RmllbGQpIHtcbiAgICAgIGZ1bGxEYXlGaWVsZEN0cmwgPSB0aGlzLmZvcm0uZ2V0KGlzRnVsbERheUZpZWxkKTtcbiAgICB9XG5cbiAgICBpZiAoIWZ1bGxEYXlGaWVsZEN0cmwpIHtcbiAgICAgIGNvbnN0IGlzRnVsbERheSA9IHRoaXMudGltZU1vZGUgPT09IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FO1xuICAgICAgdGhpcy5fZnVsbERheUlucHV0Q3RybCA9IG5ldyBGb3JtQ29udHJvbChpc0Z1bGxEYXkpO1xuXG4gICAgICAvLyBTZXQgdGhlIGNvbnRyb2wgaW4gdGhlIGZvcm0gdG9vIGlmIHRoZSBuYW1lIGlzIGRlZmluZWQuXG4gICAgICBpZiAoaXNGdWxsRGF5RmllbGQpIHtcbiAgICAgICAgKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2woaXNGdWxsRGF5RmllbGQsIHRoaXMuX2Z1bGxEYXlJbnB1dEN0cmwpO1xuICAgICAgfVxuXG4gICAgICBmdWxsRGF5RmllbGRDdHJsID0gdGhpcy5fZnVsbERheUlucHV0Q3RybDtcbiAgICB9XG5cbiAgICB0aGlzLl9mdWxsRGF5Q29udHJvbE9icy5uZXh0KGZ1bGxEYXlGaWVsZEN0cmwpO1xuXG4gICAgc3dpdGNoICh0aGlzLnRpbWVNb2RlKSB7XG4gICAgICBjYXNlIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5PUFRJT05BTDpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FOlxuICAgICAgICB0aGlzLnJlbW92ZVRpbWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRDpcbiAgICAgICAgdGhpcy5hZGRUaW1lKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByZXNldHMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fcHJlc2V0cy5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy5wcmVzZXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ByZXNldHMubmV4dCh0aGlzLmRieERhdGVUaW1lRmllbGRDb25maWdTZXJ2aWNlLmNvbmZpZ3VyYXRpb25zJCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9zdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX3ZhbHVlU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9jb25maWcuY29tcGxldGUoKTtcbiAgICB0aGlzLl9kZWZhdWx0VGltZXpvbmUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9wcmVzZXRzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZnVsbERheUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9vZmZzZXQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zeW5jQ29uZmlnT2JzLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzZWxlY3RQcmVzZXQocHJlc2V0OiBEYXRlVGltZVByZXNldCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gcHJlc2V0LnZhbHVlKCk7XG5cbiAgICBpZiAodmFsdWUubG9naWNhbERhdGUpIHtcbiAgICAgIHRoaXMuc2V0TG9naWNhbFRpbWUodmFsdWUubG9naWNhbERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUudGltZVN0cmluZykge1xuICAgICAgdGhpcy5zZXRUaW1lKHZhbHVlLnRpbWVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIGRhdGVQaWNrZWQoZXZlbnQ6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PERhdGU+KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IGV2ZW50LnZhbHVlO1xuXG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIHRoaXMuc2V0RGF0ZUlucHV0VmFsdWUoZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TG9naWNhbFRpbWUodGltZTogTG9naWNhbERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gZGF0ZUZyb21Mb2dpY2FsRGF0ZSh0aW1lKTtcblxuICAgIGlmIChkYXRlKSB7XG4gICAgICB0aGlzLnNldFRpbWVGcm9tRGF0ZShkYXRlKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRlSW5wdXRWYWx1ZShkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5kYXRlSW5wdXRDdHJsLnNldFZhbHVlKGRhdGUpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAgc2V0VGltZUZyb21EYXRlKHRpbWVEYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgdGltZVN0cmluZyA9IHRvTG9jYWxSZWFkYWJsZVRpbWVTdHJpbmcodGltZURhdGUpO1xuICAgIHRoaXMuc2V0VGltZSh0aW1lU3RyaW5nKTtcbiAgfVxuXG4gIHNldFRpbWUodGltZTogUmVhZGFibGVUaW1lU3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50aW1lSW5wdXRDdHJsLnNldFZhbHVlKHRpbWUpO1xuICAgIHRoaXMuX29mZnNldC5uZXh0KDApO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAga2V5ZG93bk9uRGF0ZUlucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRpcmVjdGlvbiA9IDA7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgIGRpcmVjdGlvbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgZGlyZWN0aW9uID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBvZmZzZXQgPSAxO1xuXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDM2NTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgIG9mZnNldCA9IDMwO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIG9mZnNldCA9IDc7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gMCkge1xuICAgICAgdGhpcy5kYXRlJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdEYXRlID0gYWRkRGF5cyhkYXRlLCBvZmZzZXQgKiBkaXJlY3Rpb24pO1xuICAgICAgICB0aGlzLnNldERhdGVJbnB1dFZhbHVlKG5ld0RhdGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAga2V5ZG93bk9uVGltZUlucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRpcmVjdGlvbiA9IDA7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgIGRpcmVjdGlvbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgZGlyZWN0aW9uID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBvZmZzZXQgPSAxO1xuXG4gICAgaWYgKGV2ZW50LmFsdEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgb2Zmc2V0ID0gMzAwO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICBvZmZzZXQgPSA2MDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBvZmZzZXQgPSA1O1xuICAgIH1cblxuICAgIGlmIChkaXJlY3Rpb24gIT09IDApIHtcbiAgICAgIHRoaXMuX29mZnNldC5uZXh0KHRoaXMuX29mZnNldC52YWx1ZSArIG9mZnNldCAqIGRpcmVjdGlvbik7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c1RpbWUoKTogdm9pZCB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgZm9jdXNPdXRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVRpbWUubmV4dCgpO1xuICB9XG5cbiAgYWRkVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZ1bGxEYXkoZmFsc2UpO1xuICB9XG5cbiAgcmVtb3ZlVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZ1bGxEYXkodHJ1ZSk7XG4gIH1cblxuICBzZXRGdWxsRGF5KGZ1bGxEYXk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZ1bGxEYXlDb250cm9sJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgeC5zZXRWYWx1ZShmdWxsRGF5KTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBNQVJLOiBDb21wYXRcbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiBpbnN0ZWFkLlxuICovXG5leHBvcnQgdHlwZSBEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24gPSBEYnhEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb247XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLWZpZWxkXCIgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0LnhzPVwiY29sdW1uIHdyYXBcIiBmeExheW91dEFsaWduPVwic3BhY2UtZXZlbmx5IHN0cmV0Y2hcIj5cbiAgPCEtLSBEYXRlIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwiZGF0ZU9ubHkgPyAnMTAwJyA6ICc1MCdcIiAqbmdJZj1cInNob3dEYXRlSW5wdXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZUlucHV0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIEFkZGl0aW9uYWwgc3BhY2luZyAtLT5cbiAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXIgKm5nSWY9XCIhZGF0ZU9ubHlcIj48L2RieC1idXR0b24tc3BhY2VyPlxuICA8L2Rpdj5cbiAgPCEtLSBUaW1lIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXJvd1wiIGZ4RmxleC5sdC1zbT1cIjEwMFwiIFtmeEZsZXhdPVwic2hvd0RhdGVJbnB1dCA/ICc1MCcgOiAnMTAwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGltZUlucHV0JCB8IGFzeW5jXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZU1lbnVBbmRJbnB1dFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cInNob3dBZGRUaW1lJCB8IGFzeW5jXCIgY2xhc3M9XCJhZGQtdGltZS1idXR0b24td3JhcHBlclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwibWF0LWRhdGVwaWNrZXItYnV0dG9uLWhpZ2hsaWdodCBkYngtYnV0dG9uLXNwYWNlciBhZGQtdGltZS1idXR0b25cIiBuZ0NsYXNzLmx0LXNtPVwiYWRkLXRpbWUtYnV0dG9uLWZ1bGxcIiAoY2xpY2spPVwiYWRkVGltZSgpXCI+XG4gICAgICAgIDxtYXQtaWNvbj50aW1lcjwvbWF0LWljb24+XG4gICAgICAgIEFkZCBUaW1lXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhaGlkZURhdGVIaW50XCIgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93IGRieC1kYXRldGltZS1oaW50LXJvd1wiIGZ4RmxleD1cIjEwMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYngtaGludFwiIFtuZ1N3aXRjaF09XCJmdWxsRGF5JCB8IGFzeW5jXCI+XG4gICAgICA8c21hbGwgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cbiAgICAgICAgPGIgY2xhc3M9XCJkYngtb2tcIj57eyBhbGxEYXlMYWJlbCB9fTwvYj5cbiAgICAgICAge3sgZGlzcGxheVZhbHVlJCB8IGFzeW5jIHwgZGF0ZTogJ2Z1bGxEYXRlJyB9fSB7eyB0aW1lem9uZUFiYnJldmlhdGlvbiQgfCBhc3luYyB9fSAoe3sgZGlzcGxheVZhbHVlJCB8IGFzeW5jIHwgZGF0ZURpc3RhbmNlIH19KVxuICAgICAgPC9zbWFsbD5cbiAgICAgIDxzbWFsbCAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlWYWx1ZSQgfCBhc3luY1wiPlxuICAgICAgICAgIDxiIGNsYXNzPVwiZGJ4LW9rXCI+e3sgYXRUaW1lTGFiZWwgfX08L2I+XG4gICAgICAgICAge3sgZGlzcGxheVZhbHVlJCB8IGFzeW5jIHwgZGF0ZTogJ21lZGl1bScgfX0ge3sgdGltZXpvbmVBYmJyZXZpYXRpb24kIHwgYXN5bmMgfX0gKHt7IGRpc3BsYXlWYWx1ZSQgfCBhc3luYyB8IHRpbWVEaXN0YW5jZSB9fSlcbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIERhdGUgSW5wdXQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2RhdGVJbnB1dFRlbXBsYXRlPlxuICA8YnV0dG9uIGNsYXNzPVwibWF0LWRhdGVwaWNrZXItYnV0dG9uLWhpZ2hsaWdodCBkYngtYnV0dG9uLXNwYWNlclwiICpuZ0lmPVwiIWhpZGVEYXRlUGlja2VyXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwaWNrZXIub3BlbigpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC1pY29uPmNhbGVuZGFyX3RvZGF5PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1kYXRldGltZS1yb3ctZmllbGRcIiBbbmdDbGFzc109XCJ7ICdkYngtZGF0ZXRpbWUtcm93LWZpZWxkLWZ1bGwtd2lkdGgnOiBoaWRlRGF0ZVBpY2tlciB9XCI+XG4gICAgPG1hdC1sYWJlbD57eyBkYXRlTGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgI2RhdGVJbnB1dCBtYXRJbnB1dCBbbWluXT1cImRhdGVJbnB1dE1pbiQgfCBhc3luY1wiIFttYXhdPVwiZGF0ZUlucHV0TWF4JCB8IGFzeW5jXCIgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiKHBpY2tlckZpbHRlciQgfCBhc3luYykgfHwgZGVmYXVsdFBpY2tlckZpbHRlclwiIChkYXRlQ2hhbmdlKT1cImRhdGVQaWNrZWQoJGV2ZW50KVwiIFt2YWx1ZV09XCJkYXRlVmFsdWUkIHwgYXN5bmNcIiAoa2V5ZG93bik9XCJrZXlkb3duT25EYXRlSW5wdXQoJGV2ZW50KVwiIC8+XG4gICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8c3BhbiBtYXRTdWZmaXggKm5nSWY9XCIhKHNob3dUaW1lSW5wdXQkIHwgYXN5bmMpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZXpvbmVTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvc3Bhbj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGltZSBNZW51L0lucHV0IFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICN0aW1lTWVudUFuZElucHV0VGVtcGxhdGU+XG4gIDxidXR0b24gY2xhc3M9XCJtYXQtZGF0ZXBpY2tlci1idXR0b24taGlnaGxpZ2h0IGRieC1idXR0b24tc3BhY2VyXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJ0aW1lbWVudVwiIGFyaWEtbGFiZWw9XCJvcGVucyB0aGUgdGltZSBtZW51XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC1pY29uPnRpbWVyPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtbWVudSAjdGltZW1lbnU9XCJtYXRNZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRpbWVNb2RlID09PSAnb3B0aW9uYWwnXCI+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInJlbW92ZVRpbWUoKVwiPlxuICAgICAgICA8c3Bhbj5SZW1vdmUgVGltZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJlc2V0IG9mIHByZXNldHMkIHwgYXN5bmNcIj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2VsZWN0UHJlc2V0KHByZXNldClcIj57eyBwcmVzZXQubGFiZWwgfCBnZXRWYWx1ZSB9fTwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L21hdC1tZW51PlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtZGF0ZXRpbWUtcm93LWZpZWxkXCI+XG4gICAgPG1hdC1sYWJlbD57eyB0aW1lTGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgI3RpbWVJbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGltZUlucHV0Q3RybFwiIChmb2N1cyk9XCJmb2N1c1RpbWUoKVwiIChmb2N1c291dCk9XCJmb2N1c091dFRpbWUoKVwiIChrZXlkb3duKT1cImtleWRvd25PblRpbWVJbnB1dCgkZXZlbnQpXCIgLz5cbiAgICA8c3BhbiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZXpvbmVTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvc3Bhbj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGltZXpvbmUgU3VmZml4IC0tPlxuPG5nLXRlbXBsYXRlICN0aW1lem9uZVN1ZmZpeFRlbXBsYXRlPlxuICA8c3BhbiAqbmdJZj1cInNob3dUaW1lem9uZVwiIGNsYXNzPVwiZGJ4LWRhdGV0aW1lLXRpbWV6b25lIGRieC1mYWludFwiPnt7IHRpbWV6b25lQWJicmV2aWF0aW9uJCB8IGFzeW5jIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==