@rivet-health/design-system 28.2.3 → 28.2.5

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.
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, Input, Output, } from '@angular/core';
2
2
  import { timeDay, timeMonth, timeSunday, timeWeek, timeYear } from 'd3-time';
3
- import { BehaviorSubject, Subject, combineLatest, distinctUntilChanged, filter, map, merge, scan, shareReplay, skipUntil, startWith, withLatestFrom, } from 'rxjs';
3
+ import { BehaviorSubject, Subject, combineLatest, distinctUntilChanged, filter, map, merge, scan, shareReplay, skipUntil, startWith, } from 'rxjs';
4
4
  import { DatePipe } from '../../format/pipes/date.pipe';
5
5
  import { LocalStorage } from '../../util/local-storage';
6
6
  import { CalendarComponent } from '../calendar/calendar.component';
@@ -82,9 +82,13 @@ export class DateRangeComponent extends InputLabelComponent {
82
82
  return null;
83
83
  }));
84
84
  this.favoritePresetIds$ = new LocalStorage(this.STORAGE_KEY, []);
85
- this.favoritePresets$ = this.favoritePresetIds$.pipe(withLatestFrom(this.alternativePresetList$), map(([ids, alternativePresetList]) => {
85
+ this.favoritePresets$ = combineLatest([
86
+ this.favoritePresetIds$,
87
+ this.filteredPresetOptions$,
88
+ this.alternativePresetList$,
89
+ ]).pipe(map(([ids, presets, alternativePresetList]) => {
86
90
  const favoritePresets = ids
87
- .map(id => DateRangeComponent.Presets.find(preset => preset.id === id))
91
+ .map(id => presets.find(preset => preset.id === id))
88
92
  .filter((p) => p !== undefined);
89
93
  if (alternativePresetList.length == 0) {
90
94
  return favoritePresets;
@@ -455,4 +459,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
455
459
  },
456
460
  ];
457
461
  })(DateRangeComponent || (DateRangeComponent = {}));
458
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUNMLGVBQWUsRUFFZixPQUFPLEVBQ1AsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUMzRSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxDQUFDO0FBRXhDLDZFQUE2RTtBQUM3RSwyQkFBMkI7QUFDM0IsbUdBQW1HO0FBT25HLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxtQkFBbUI7SUFOM0Q7O1FBT1cs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e1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRpbWVEYXksIHRpbWVNb250aCwgdGltZVN1bmRheSwgdGltZVdlZWssIHRpbWVZZWFyIH0gZnJvbSAnZDMtdGltZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIHNjYW4sXG4gIHNoYXJlUmVwbGF5LFxuICBza2lwVW50aWwsXG4gIHN0YXJ0V2l0aCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9mb3JtYXQvcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gJy4uLy4uL3V0aWwvbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4uL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtbGFiZWwvaW5wdXQtbGFiZWwuY29tcG9uZW50JztcbmNvbnN0IHRpbWVRdWFydGVyID0gdGltZU1vbnRoLmV2ZXJ5KDMpITtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLlxuLy8gaHR0cHM6Ly93d3cubm90aW9uLnNvL3JpdmV0L1Jlc29sdmUtVE9ET3MtYWZ0ZXItQW5ndWxhci11cGdyYWRlLTFmMjY2N2ViMmEzMTgwYjc5ZjZhZDkyYTdlNTc2ZjA4XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtZGF0ZS1yYW5nZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VDb21wb25lbnQgZXh0ZW5kcyBJbnB1dExhYmVsQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgVE9EQVkgPSBuZXcgRGF0ZSgpO1xuICByZWFkb25seSBTVE9SQUdFX0tFWSA9ICdkYXRlLXJhbmdlLmRlZmF1bHQnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd1ByZXNldHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgQElucHV0KClcbiAgc2V0IHNob3dQcmVzZXRzKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dQcmVzZXRzJC5uZXh0KHYpO1xuICB9XG4gIGdldCBzaG93UHJlc2V0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93UHJlc2V0cyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IG1pbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNaW4pO1xuICBASW5wdXQoKVxuICBzZXQgbWluKHY6IERhdGUpIHtcbiAgICB0aGlzLm1pbiQubmV4dCh2KTtcbiAgfVxuICBnZXQgbWluKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLm1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IG1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNYXgpO1xuICBASW5wdXQoKVxuICBzZXQgbWF4KHY6IERhdGUpIHtcbiAgICB0aGlzLm1heCQubmV4dCh2KTtcbiAgfVxuICBnZXQgbWF4KCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLm1heCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8W0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy52YWx1ZSQubmV4dCh2KTtcbiAgfVxuICBnZXQgdmFsdWUoKTogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignU2VsZWN0IGRhdGUgcmFuZ2UuLi4nKTtcbiAgQElucHV0KClcbiAgc2V0IHBsYWNlaG9sZGVyKHY6IHN0cmluZykge1xuICAgIHRoaXMucGxhY2Vob2xkZXIkLm5leHQodik7XG4gIH1cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXIkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KHYpO1xuICB9XG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGFsdGVybmF0aXZlUHJlc2V0TGlzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRUeXBlW11cbiAgPihbXSk7XG4gIEBJbnB1dCgpXG4gIHNldCBhbHRlcm5hdGl2ZVByZXNldExpc3QodjogRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFR5cGVbXSkge1xuICAgIHRoaXMuYWx0ZXJuYXRpdmVQcmVzZXRMaXN0JC5uZXh0KHYpO1xuICB9XG4gIGdldCBhbHRlcm5hdGl2ZVByZXNldExpc3QoKTogRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFR5cGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuYWx0ZXJuYXRpdmVQcmVzZXRMaXN0JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgb3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICByZWFkb25seSB1c2VyU2VsZWN0ZWRQcmVzZXQkID1cbiAgICBuZXcgU3ViamVjdDxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0IHwgbnVsbD4oKTtcblxuICByZWFkb25seSB1c2VyU2VsZWN0ZWREYXRlJCA9IG5ldyBTdWJqZWN0PERhdGUgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkVmFsdWUkOiBPYnNlcnZhYmxlPERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQ+ID0gbWVyZ2UoXG4gICAgdGhpcy52YWx1ZSQsXG4gICAgdGhpcy51c2VyU2VsZWN0ZWREYXRlJC5waXBlKFxuICAgICAgc2NhbihcbiAgICAgICAgKHByZXZpb3VzOiBEYXRlIHwgW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkLCBkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgaWYgKHByZXZpb3VzIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgaWYgKGRhdGUudmFsdWVPZigpID49IHByZXZpb3VzLnZhbHVlT2YoKSkge1xuICAgICAgICAgICAgICBjb25zdCBwYWlyOiBbRGF0ZSwgRGF0ZV0gPSBbcHJldmlvdXMsIGRhdGVdO1xuICAgICAgICAgICAgICByZXR1cm4gcGFpcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICksXG4gICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICBmaWx0ZXIoKHByZXNldCk6IHByZXNldCBpcyBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0ID0+IHByZXNldCAhPT0gbnVsbCksXG4gICAgICBtYXAocHJlc2V0ID0+IHByZXNldC5kYXRlcyksXG4gICAgKSxcbiAgKS5waXBlKHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSkpO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkUHJlc2V0T3B0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLm1pbiQsXG4gICAgdGhpcy5tYXgkLFxuICAgIHRoaXMuYWx0ZXJuYXRpdmVQcmVzZXRMaXN0JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFttaW4sIG1heCwgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0XSkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uc0ZpbHRlcmVkT25NaW5NYXggPSBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0cy5maWx0ZXIoXG4gICAgICAgIHAgPT5cbiAgICAgICAgICBwLmRhdGVzWzBdLnZhbHVlT2YoKSA+PSBtaW4udmFsdWVPZigpICYmXG4gICAgICAgICAgcC5kYXRlc1sxXS52YWx1ZU9mKCkgPD0gbWF4LnZhbHVlT2YoKSxcbiAgICAgICk7XG4gICAgICBpZiAoYWx0ZXJuYXRpdmVQcmVzZXRMaXN0Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zRmlsdGVyZWRPbk1pbk1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNGaWx0ZXJlZE9uQWx0ZXJuYXRpdmVQcmVzZXRMaXN0ID1cbiAgICAgICAgICBvcHRpb25zRmlsdGVyZWRPbk1pbk1heC5maWx0ZXIocCA9PlxuICAgICAgICAgICAgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0LmluY2x1ZGVzKHAuaWQpLFxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiBvcHRpb25zRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdDtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkUHJlc2V0JDogT2JzZXJ2YWJsZTxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0IHwgbnVsbD4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlJCxcbiAgICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JC5waXBlKHN0YXJ0V2l0aChudWxsKSksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3NlbGVjdGVkVmFsdWUsIHVzZXJTZWxlY3RlZFByZXNldF0pID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkVmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0cy5maWx0ZXIoXG4gICAgICAgICAgICBwcmVzZXQgPT5cbiAgICAgICAgICAgICAgcHJlc2V0LmRhdGVzWzBdLnZhbHVlT2YoKSA9PT0gc2VsZWN0ZWRWYWx1ZVswXS52YWx1ZU9mKCkgJiZcbiAgICAgICAgICAgICAgcHJlc2V0LmRhdGVzWzFdLnZhbHVlT2YoKSA9PT0gc2VsZWN0ZWRWYWx1ZVsxXS52YWx1ZU9mKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIFNvbWUgZGF0ZSByYW5nZXMgbWF0Y2ggbXVsdGlwbGUgcHJlc2V0cywgZS5nLiBvbiBKYW4gMTl0aCwgYVxuICAgICAgICAgICAgLy8gc2VsZWN0ZWQgZGF0ZSByYW5nZSBvZiBKYW4gMS0xOSB3b3VsZCBjb3JyZXNwb25kIHRvIFwidGhpcyBtb250aFxuICAgICAgICAgICAgLy8gc28gZmFyLFwiIFwidGhpcyBxdWFydGVyIHNvIGZhcixcIiBhbmQgXCJ0aGlzIHllYXIgc28gZmFyLlwiIFdlJ2xsXG4gICAgICAgICAgICAvLyB1c2UgdGhlIHVzZXIncyBtb3N0IHJlY2VudCBtYW51YWwgc2VsZWN0aW9uIGFzIGEgdGllIGJyZWFrZXJcbiAgICAgICAgICAgIC8vIHdoZXJlIHBvc3NpYmxlLlxuICAgICAgICAgICAgY29uc3QgbW9zdFJlY2VudCA9IG9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgb3B0aW9uID0+IG9wdGlvbi5pZCA9PT0gdXNlclNlbGVjdGVkUHJlc2V0Py5pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobW9zdFJlY2VudCkgcmV0dXJuIG1vc3RSZWNlbnQ7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uc1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IGZhdm9yaXRlUHJlc2V0SWRzJCA9IG5ldyBMb2NhbFN0b3JhZ2U8c3RyaW5nW10+KFxuICAgIHRoaXMuU1RPUkFHRV9LRVksXG4gICAgW10sXG4gICk7XG5cbiAgc2V0RmF2b3JpdGUocHJlc2V0OiBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0LCBmYXZvcml0ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGlkcyA9IG5ldyBTZXQodGhpcy5mYXZvcml0ZVByZXNldElkcyQuZ2V0VmFsdWUoKSk7XG4gICAgaWYgKGZhdm9yaXRlKSB7XG4gICAgICBpZHMuYWRkKHByZXNldC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkcy5kZWxldGUocHJlc2V0LmlkKTtcbiAgICB9XG4gICAgdGhpcy5mYXZvcml0ZVByZXNldElkcyQubmV4dChbLi4uaWRzXSk7XG4gIH1cblxuICByZWFkb25seSBmYXZvcml0ZVByZXNldHMkOiBPYnNlcnZhYmxlPERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRbXT4gPVxuICAgIHRoaXMuZmF2b3JpdGVQcmVzZXRJZHMkLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmFsdGVybmF0aXZlUHJlc2V0TGlzdCQpLFxuICAgICAgbWFwKChbaWRzLCBhbHRlcm5hdGl2ZVByZXNldExpc3RdKSA9PiB7XG4gICAgICAgIGNvbnN0IGZhdm9yaXRlUHJlc2V0cyA9IGlkc1xuICAgICAgICAgIC5tYXAoaWQgPT5cbiAgICAgICAgICAgIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRzLmZpbmQocHJlc2V0ID0+IHByZXNldC5pZCA9PT0gaWQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuZmlsdGVyKChwKTogcCBpcyBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0ID0+IHAgIT09IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKGFsdGVybmF0aXZlUHJlc2V0TGlzdC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIHJldHVybiBmYXZvcml0ZVByZXNldHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZmF2b3JpdGVzRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdCA9XG4gICAgICAgICAgICBmYXZvcml0ZVByZXNldHMuZmlsdGVyKHAgPT5cbiAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0LmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIDxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZT5wLmlkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gZmF2b3JpdGVzRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdDtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICAgICk7XG5cbiAgcmVhZG9ubHkgdXNlckxlZnRBY3RpdmVZZWFyTW9udGgkID0gbmV3IFN1YmplY3Q8RGF0ZT4oKTtcbiAgcmVhZG9ubHkgdXNlclJpZ2h0QWN0aXZlWWVhck1vbnRoJCA9IG5ldyBTdWJqZWN0PERhdGU+KCk7XG5cbiAgcmVhZG9ubHkgbGVmdE1pbiQgPSB0aGlzLm1pbiQucGlwZShcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuICByZWFkb25seSBsZWZ0TWF4JCA9IHRoaXMubWF4JC5waXBlKFxuICAgIG1hcChtYXggPT4gdGltZURheS5vZmZzZXQodGltZU1vbnRoLmZsb29yKG1heCksIC0xKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcbiAgcmVhZG9ubHkgcmlnaHRNYXgkID0gdGhpcy5tYXgkLnBpcGUoXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBsZWZ0QWN0aXZlWWVhck1vbnRoJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubGVmdE1heCQsXG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLnVzZXJMZWZ0QWN0aXZlWWVhck1vbnRoJC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGltZU1vbnRoLmZsb29yKHRoaXMuVE9EQVkpKSxcbiAgICAgICksXG4gICAgICB0aGlzLnVzZXJTZWxlY3RlZFByZXNldCQucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChwcmVzZXQpOiBwcmVzZXQgaXMgRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCA9PiBwcmVzZXQgIT09IG51bGwsXG4gICAgICAgICksXG4gICAgICAgIG1hcChwcmVzZXQgPT4gdGltZU1vbnRoLmZsb29yKHByZXNldC5kYXRlc1swXSkpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodik6IHYgaXMgW0RhdGUsIERhdGVdID0+IHYgIT09IHVuZGVmaW5lZCksXG4gICAgICAgIG1hcCh2ID0+IHRpbWVNb250aC5mbG9vcih2WzBdKSksXG4gICAgICApLFxuICAgICksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbGVmdE1heCwgbGVmdF0pID0+IHtcbiAgICAgIGlmIChsZWZ0LnZhbHVlT2YoKSA+PSBsZWZ0TWF4LnZhbHVlT2YoKSkgcmV0dXJuIHRpbWVNb250aC5mbG9vcihsZWZ0TWF4KTtcbiAgICAgIGVsc2UgcmV0dXJuIGxlZnQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSByaWdodEFjdGl2ZVllYXJNb250aCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmxlZnRBY3RpdmVZZWFyTW9udGgkLFxuICAgIG1lcmdlKFxuICAgICAgdGhpcy51c2VyUmlnaHRBY3RpdmVZZWFyTW9udGgkLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aW1lTW9udGguY2VpbCh0aGlzLlRPREFZKSksXG4gICAgICApLFxuICAgICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAocHJlc2V0KTogcHJlc2V0IGlzIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgPT4gcHJlc2V0ICE9PSBudWxsLFxuICAgICAgICApLFxuICAgICAgICBtYXAocHJlc2V0ID0+IHRpbWVNb250aC5mbG9vcihwcmVzZXQuZGF0ZXNbMV0pKSxcbiAgICAgICksXG4gICAgICB0aGlzLnZhbHVlJC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHYpOiB2IGlzIFtEYXRlLCBEYXRlXSA9PiB2ICE9PSB1bmRlZmluZWQpLFxuICAgICAgICBtYXAodiA9PiB0aW1lTW9udGguZmxvb3IodlsxXSkpLFxuICAgICAgKSxcbiAgICApLFxuICAgIHRoaXMucmlnaHRNYXgkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2xlZnQsIHVzZXJSaWdodCwgcmlnaHRNYXgkXSkgPT4ge1xuICAgICAgaWYgKGxlZnQudmFsdWVPZigpID49IHVzZXJSaWdodC52YWx1ZU9mKCkpXG4gICAgICAgIHJldHVybiB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChsZWZ0LCAxKSk7XG4gICAgICBlbHNlIGlmICh1c2VyUmlnaHQudmFsdWVPZigpID49IHJpZ2h0TWF4JC52YWx1ZU9mKCkpXG4gICAgICAgIHJldHVybiB0aW1lTW9udGguZmxvb3IocmlnaHRNYXgkKTtcbiAgICAgIGVsc2UgcmV0dXJuIHVzZXJSaWdodDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHJpZ2h0TWluJCA9IHRoaXMubGVmdEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICBtYXAobGVmdCA9PiB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChsZWZ0LCAxKSkpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbGVmdE9taXRSYW5nZSQ6IE9ic2VydmFibGU8W0RhdGUsIERhdGVdPiA9XG4gICAgdGhpcy5yaWdodEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICAgIG1hcDxEYXRlLCBbRGF0ZSwgRGF0ZV0+KHJpZ2h0QWN0aXZlWWVhck1vbnRoID0+IHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0aW1lTW9udGguZmxvb3IocmlnaHRBY3RpdmVZZWFyTW9udGgpO1xuICAgICAgICBjb25zdCBsYXN0ID0gdGltZURheS5vZmZzZXQoXG4gICAgICAgICAgdGltZU1vbnRoLmZsb29yKHRpbWVNb250aC5vZmZzZXQocmlnaHRBY3RpdmVZZWFyTW9udGgsIDEpKSxcbiAgICAgICAgICAtMSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFtmaXJzdCwgbGFzdF07XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSB1c2VySW50ZXJhY3RlZCQgPSBtZXJnZShcbiAgICB0aGlzLnVzZXJTZWxlY3RlZERhdGUkLFxuICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JCxcbiAgKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IE9ic2VydmFibGU8W0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPiA9XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlJC5waXBlKFxuICAgICAgc2tpcFVudGlsKFxuICAgICAgICBtZXJnZShcbiAgICAgICAgICB0aGlzLnVzZXJJbnRlcmFjdGVkJCxcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLnBpcGUoZmlsdGVyKHYgPT4gdiAhPT0gdW5kZWZpbmVkKSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgZmlsdGVyKCh2KTogdiBpcyBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQgPT4gISh2IGluc3RhbmNlb2YgRGF0ZSkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgIChwcmV2aW91cywgY3VycmVudCkgPT5cbiAgICAgICAgICBwcmV2aW91cz8uWzBdLnZhbHVlT2YoKSA9PT0gY3VycmVudD8uWzBdLnZhbHVlT2YoKSAmJlxuICAgICAgICAgIHByZXZpb3VzPy5bMV0udmFsdWVPZigpID09PSBjdXJyZW50Py5bMV0udmFsdWVPZigpLFxuICAgICAgKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSBkaXNwbGF5VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gPVxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICByZXR1cm4gdi5tYXAoZGF0ZSA9PiBuZXcgRGF0ZVBpcGUoKS50cmFuc2Zvcm0oZGF0ZSkpLmpvaW4oJyDigJQgJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIERhdGVSYW5nZUNvbXBvbmVudCB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICBleHBvcnQgZW51bSBQcmVzZXRUeXBlIHtcbiAgICBUT0RBWSA9ICd0b2RheScsXG4gICAgWUVTVEVSREFZID0gJ3llc3RlcmRheScsXG4gICAgVE9NT1JST1cgPSAndG9tb3Jyb3cnLFxuICAgIFRISVNfV0VFSyA9ICd0aGlzX3dlZWsnLFxuICAgIFRISVNfV0VFS19TT19GQVIgPSAndGhpc193ZWVrX3NvX2ZhcicsXG4gICAgTEFTVF9XRUVLID0gJ2xhc3Rfd2VlaycsXG4gICAgTkVYVF9XRUVLID0gJ25leHRfd2VlaycsXG4gICAgVEhJU19NT05USCA9ICd0aGlzX21vbnRoJyxcbiAgICBUSElTX01PTlRIX1NPX0ZBUiA9ICd0aGlzX21vbnRoX3NvX2ZhcicsXG4gICAgTEFTVF9NT05USCA9ICdsYXN0X21vbnRoJyxcbiAgICBORVhUX01PTlRIID0gJ25leHRfbW9udGgnLFxuICAgIFRISVNfUVVBUlRFUiA9ICd0aGlzX3F1YXJ0ZXInLFxuICAgIFRISVNfUVVBUlRFUl9TT19GQVIgPSAndGhpc19xdWFydGVyX3NvX2ZhcicsXG4gICAgTEFTVF9RVUFSVEVSID0gJ2xhc3RfcXVhcnRlcicsXG4gICAgTkVYVF9RVUFSVEVSID0gJ25leHRfcXVhcnRlcicsXG4gICAgVEhJU19ZRUFSID0gJ3RoaXNfeWVhcicsXG4gICAgVEhJU19ZRUFSX1NPX0ZBUiA9ICd0aGlzX3llYXJfc29fZmFyJyxcbiAgICBMQVNUX1lFQVIgPSAnbGFzdF95ZWFyJyxcbiAgICBORVhUX1lFQVIgPSAnbmV4dF95ZWFyJyxcbiAgICBMQVNUXzdfREFZUyA9ICdsYXN0XzdfZGF5cycsXG4gICAgTEFTVF8xNF9EQVlTID0gJ2xhc3RfMTRfZGF5cycsXG4gICAgTEFTVF8zMF9EQVlTID0gJ2xhc3RfMzBfZGF5cycsXG4gICAgTEFTVF82MF9EQVlTID0gJ2xhc3RfNjBfZGF5cycsXG4gICAgTEFTVF85MF9EQVlTID0gJ2xhc3RfOTBfZGF5cycsXG4gICAgTEFTVF8xODBfREFZUyA9ICdsYXN0XzE4MF9kYXlzJyxcbiAgICBMQVNUXzM2NV9EQVlTID0gJ2xhc3RfMzY1X2RheXMnLFxuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHJlc2V0ID0ge1xuICAgIGlkOiBQcmVzZXRUeXBlO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc3VidGl0bGU6IHN0cmluZztcbiAgICBkYXRlczogW0RhdGUsIERhdGVdO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBQcmVzZXRzOiBQcmVzZXRbXSA9IFtcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5UT0RBWSxcbiAgICAgIHRpdGxlOiAnVG9kYXknLFxuICAgICAgc3VidGl0bGU6ICdUb2RheSBmcm9tIG1pZG5pZ2h0IHVudGlsIHRoZSBjdXJyZW50IHRpbWUnLFxuICAgICAgZGF0ZXM6IFt0aW1lRGF5KCksIHRpbWVEYXkoKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ZRVNURVJEQVksXG4gICAgICB0aXRsZTogJ1llc3RlcmRheScsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyAyNCBob3VyIGRheScsXG4gICAgICBkYXRlczogW3RpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgLTEpLCB0aW1lRGF5Lm9mZnNldCh0aW1lRGF5KCksIC0xKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5UT01PUlJPVyxcbiAgICAgIHRpdGxlOiAnVG9tb3Jyb3cnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCAyNCBob3VyIGRheScsXG4gICAgICBkYXRlczogW3RpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgMSksIHRpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgMSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19XRUVLLFxuICAgICAgdGl0bGU6ICdUaGlzIHdlZWsnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBjYWxlbmRhciB3ZWVrJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVTdW5kYXkuZmxvb3IodG9kYXkpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lU3VuZGF5LmNlaWwodG9kYXkpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19XRUVLX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyB3ZWVrIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHdlZWsgdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZVN1bmRheS5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfV0VFSyxcbiAgICAgIHRpdGxlOiAnTGFzdCB3ZWVrJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGNhbGVuZGFyIHdlZWsnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVTdW5kYXkub2Zmc2V0KHRpbWVXZWVrLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX1dFRUssXG4gICAgICB0aXRsZTogJ05leHQgd2VlaycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGNhbGVuZGFyIHdlZWsnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19NT05USCxcbiAgICAgIHRpdGxlOiAnVGhpcyBtb250aCcsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIG1vbnRoJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVNb250aC5mbG9vcih0b2RheSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5jZWlsKHRvZGF5KSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfTU9OVEhfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIG1vbnRoIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIG1vbnRoIHVwIHRvIG5vdycsXG4gICAgICBkYXRlczogW3RpbWVNb250aC5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfTU9OVEgsXG4gICAgICB0aXRsZTogJ0xhc3QgbW9udGgnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgY2FsZW5kYXIgbW9udGgnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5vZmZzZXQodGltZU1vbnRoLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX01PTlRILFxuICAgICAgdGl0bGU6ICdOZXh0IG1vbnRoJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIG5leHQgY2FsZW5kYXIgbW9udGgnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19RVUFSVEVSLFxuICAgICAgdGl0bGU6ICdUaGlzIHF1YXJ0ZXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBxdWFydGVyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVRdWFydGVyLmZsb29yKHRvZGF5KSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVF1YXJ0ZXIuY2VpbCh0b2RheSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1FVQVJURVJfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIHF1YXJ0ZXIgc28gZmFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgcXVhcnRlciB1cCB0byBub3cnLFxuICAgICAgZGF0ZXM6IFt0aW1lUXVhcnRlci5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfUVVBUlRFUixcbiAgICAgIHRpdGxlOiAnTGFzdCBxdWFydGVyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGZ1bGwgcXVhcnRlcicsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lUXVhcnRlci5vZmZzZXQodGltZVF1YXJ0ZXIuZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5jZWlsKHRvZGF5KSwgLTEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTkVYVF9RVUFSVEVSLFxuICAgICAgdGl0bGU6ICdOZXh0IHF1YXJ0ZXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCBmdWxsIHF1YXJ0ZXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVF1YXJ0ZXIub2Zmc2V0KHRpbWVRdWFydGVyLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1lFQVIsXG4gICAgICB0aXRsZTogJ1RoaXMgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHllYXInLFxuICAgICAgZGF0ZXM6IFt0aW1lWWVhci5mbG9vcih0b2RheSksIHRpbWVEYXkub2Zmc2V0KHRpbWVZZWFyLmNlaWwodG9kYXkpLCAtMSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19ZRUFSX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyB5ZWFyIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHllYXIgdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZVllYXIuZmxvb3IodG9kYXkpLCB0aW1lRGF5LmZsb29yKHRvZGF5KV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUX1lFQVIsXG4gICAgICB0aXRsZTogJ0xhc3QgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyBjYWxlbmRhciB5ZWFyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5mbG9vcih0b2RheSksIC0xKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX1lFQVIsXG4gICAgICB0aXRsZTogJ05leHQgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGNhbGVuZGFyIHllYXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzdfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA3IGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgNyBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtOCkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMTRfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAxNCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDE0IGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xNSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMzBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAzMCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDMwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0zMSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfNjBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA2MCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDYwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC02MSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfOTBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA5MCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDkwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC05MSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMTgwX0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgMTgwIGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgMTgwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xODEpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzM2NV9EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDM2NSBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDM2NSBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMzY2KSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG59XG4iLCI8cml2LWlucHV0LWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtoZWxwXT1cImhlbHBcIlxuICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbbGFiZWxBY3Rpb25UZXh0XT1cImxhYmVsQWN0aW9uVGV4dFwiXG4gIChsYWJlbEFjdGlvbik9XCJsYWJlbEFjdGlvbi5lbWl0KCRldmVudClcIlxuPlxuICA8YnV0dG9uXG4gICAgI3RyaWdnZXJcbiAgICBjbGFzcz1cInRyaWdnZXJcIlxuICAgIChjbGljayk9XCJvcGVuJC5uZXh0KHRydWUpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJkaXNwbGF5VmFsdWUkIHwgYXN5bmM7IGVsc2UgcGxhY2Vob2xkZXJWYWx1ZTsgbGV0IGRpc3BsYXlcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57eyBkaXNwbGF5IH19PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJWYWx1ZT5cbiAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciQgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvblwiPlxuICAgICAgPHJpdi1pY29uIFtuYW1lXT1cIidDYWxlbmRhcidcIiBbc2l6ZV09XCIxNlwiPjwvcml2LWljb24+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvcml2LWlucHV0LWxhYmVsPlxuXG48bmctdGVtcGxhdGVcbiAgI3NlbGZcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZlwiXG4gIGxldC1pbnB1dFZhbHVlXG4gIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogKHZhbHVlJCB8IGFzeW5jKSB9XCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wZW4kIHwgYXN5bmNcIj5cbiAgICA8cml2LWNhbGxvdXRcbiAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgW2FuY2hvcl09XCJ0cmlnZ2VyXCJcbiAgICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgW2FsbG93ZWRQb3NpdGlvbnNdPVwiW1xuICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAndG9wLWNlbnRlcicsXG4gICAgICAgICd0b3AtcmlnaHQnLFxuICAgICAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAnYm90dG9tLWxlZnQnXG4gICAgICBdXCJcbiAgICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInYm90dG9tLXJpZ2h0J1wiXG4gICAgICAoY2xvc2UpPVwib3BlbiQubmV4dChmYWxzZSk7IHVzZXJTZWxlY3RlZERhdGUkLm5leHQoaW5wdXRWYWx1ZSlcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UHJlc2V0c1wiIGNsYXNzPVwicHJlc2V0c1wiPlxuICAgICAgICAgIDxyaXYtc2ltcGxlLXNlbGVjdFxuICAgICAgICAgICAgW2xhYmVsXT1cIidEYXRlIHByZXNldHMnXCJcbiAgICAgICAgICAgIFtmaWx0ZXJhYmlsaXR5T3B0aW9uc109XCJ7IGVuYWJsZWQ6IHRydWUsIHBsYWNlaG9sZGVyOiAnU2VhcmNoLi4uJyB9XCJcbiAgICAgICAgICAgIFtvcHRpb25Hcm91cHNdPVwiXG4gICAgICAgICAgICAgIChmaWx0ZXJlZFByZXNldE9wdGlvbnMkIHwgYXN5bmMpID8/IFtdIHwgcml2T3B0aW9uR3JvdXBcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRPcHRpb25dPVwic2VsZWN0ZWRQcmVzZXQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgKHNlbGVjdGVkT3B0aW9uQ2hhbmdlKT1cInVzZXJTZWxlY3RlZFByZXNldCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI29wdGlvbiBsZXQtbm9kZT1cIm5vZGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgI3NlbGZcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxmXCJcbiAgICAgICAgICAgICAgICBsZXQtaXNGYXZvcml0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IChmYXZvcml0ZVByZXNldElkcyQgfCBhc3luYyk/LmluY2x1ZGVzKG5vZGUuaWQpXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJlc2V0XCIgW2NsYXNzLmZhdm9yaXRlXT1cImlzRmF2b3JpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIm5vZGUudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cIm5vZGUudGl0bGVIaWdobGlnaHRJbmRpY2VzIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJub2RlLnN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5kaWNlc109XCJub2RlLnN1YnRpdGxlSGlnaGxpZ2h0SW5kaWNlcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNldEZhdm9yaXRlKG5vZGUsICFpc0Zhdm9yaXRlKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJpc0Zhdm9yaXRlID8gJ0hlYXJ0QWN0aXZlJyA6ICdIZWFydCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICBbcml2VG9vbHRpcF09XCInTWFyayBhcyBmYXZvcml0ZSdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3Jpdi1zaW1wbGUtc2VsZWN0PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI3NlbGZcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGZcIlxuICAgICAgICAgICAgbGV0LWZhdm9yaXRlc1xuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBmYXZvcml0ZVByZXNldHMkIHwgYXN5bmMgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJpdi1pbnB1dC1sYWJlbCAqbmdJZj1cImZhdm9yaXRlcy5sZW5ndGhcIiBbbGFiZWxdPVwiJ0Zhdm9yaXRlcydcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNob3J0Y3V0c1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmYXZvcml0ZSBvZiBmYXZvcml0ZXNcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIihzZWxlY3RlZFByZXNldCQgfCBhc3luYyk/LmlkID09PSBmYXZvcml0ZS5pZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlclNlbGVjdGVkUHJlc2V0JC5uZXh0KGZhdm9yaXRlKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgZmF2b3JpdGUudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRGYXZvcml0ZShmYXZvcml0ZSwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JpdlRvb2x0aXBdPVwiJ1JlbW92ZSBmYXZvcml0ZSdcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1pY29uIFtuYW1lXT1cIidIZWFydEFjdGl2ZSdcIiBbc2l6ZV09XCIxNlwiPjwvcml2LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3Jpdi1pbnB1dC1sYWJlbD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJzXCI+XG4gICAgICAgICAgPHJpdi1jYWxlbmRhclxuICAgICAgICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgICAgICAgIFthY3RpdmVZZWFyTW9udGhdPVwiKGxlZnRBY3RpdmVZZWFyTW9udGgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIChhY3RpdmVZZWFyTW9udGhDaGFuZ2UpPVwidXNlckxlZnRBY3RpdmVZZWFyTW9udGgkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZGlzcGxheU1pbl09XCIobWluJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbZGlzcGxheU1heF09XCIobWF4JCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0YWJsZU1pbl09XCIobGVmdE1pbiQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVNYXhdPVwiKGxlZnRNYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtvbWl0UmFuZ2VdPVwiKGxlZnRPbWl0UmFuZ2UkIHwgYXN5bmMpIHx8IFtUT0RBWSwgVE9EQVldXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cIihzZWxlY3RlZFZhbHVlJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICAoZGF0ZVNlbGVjdCk9XCJ1c2VyU2VsZWN0ZWREYXRlJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgID48L3Jpdi1jYWxlbmRhcj5cbiAgICAgICAgICA8cml2LWNhbGVuZGFyXG4gICAgICAgICAgICBjbGFzcz1cInJpZ2h0XCJcbiAgICAgICAgICAgIFthY3RpdmVZZWFyTW9udGhdPVwiKHJpZ2h0QWN0aXZlWWVhck1vbnRoJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICAoYWN0aXZlWWVhck1vbnRoQ2hhbmdlKT1cInVzZXJSaWdodEFjdGl2ZVllYXJNb250aCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWluXT1cIihtaW4kIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWF4XT1cIihtYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlTWluXT1cIihyaWdodE1pbiQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVNYXhdPVwiKHJpZ2h0TWF4JCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCIoc2VsZWN0ZWRWYWx1ZSQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgKGRhdGVTZWxlY3QpPVwidXNlclNlbGVjdGVkRGF0ZSQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9yaXYtY2FsZW5kYXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxmb290ZXIgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVzZXJTZWxlY3RlZERhdGUkLm5leHQodW5kZWZpbmVkKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDbGVhclxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgICBbdmFyaWFudF09XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW4kLm5leHQoZmFsc2UpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIERvbmVcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L3Jpdi1jYWxsb3V0PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
462
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUNMLGVBQWUsRUFFZixPQUFPLEVBQ1AsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBQzNFLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUM7QUFFeEMsNkVBQTZFO0FBQzdFLDJCQUEyQjtBQUMzQixtR0FBbUc7QUFPbkcsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQU4zRDs7UUFPVyxVQUFLLEdBQUcs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Y2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRpbWVEYXksIHRpbWVNb250aCwgdGltZVN1bmRheSwgdGltZVdlZWssIHRpbWVZZWFyIH0gZnJvbSAnZDMtdGltZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIHNjYW4sXG4gIHNoYXJlUmVwbGF5LFxuICBza2lwVW50aWwsXG4gIHN0YXJ0V2l0aCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJy4uLy4uL2Zvcm1hdC9waXBlcy9kYXRlLnBpcGUnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlIH0gZnJvbSAnLi4vLi4vdXRpbC9sb2NhbC1zdG9yYWdlJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0TGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC1sYWJlbC9pbnB1dC1sYWJlbC5jb21wb25lbnQnO1xuY29uc3QgdGltZVF1YXJ0ZXIgPSB0aW1lTW9udGguZXZlcnkoMykhO1xuXG4vLyBUT0RPOiBvbmNlIHdlIHVwZ3JhZGUgdG8gQW5ndWxhciAxNiwgdGhpcyBjb21wb25lbnQgY2FuIGJlIGNsZWFuZWQgdXAgd2l0aFxuLy8gc2lnbmFscyBpbnN0ZWFkIG9mIFJ4SlMuXG4vLyBodHRwczovL3d3dy5ub3Rpb24uc28vcml2ZXQvUmVzb2x2ZS1UT0RPcy1hZnRlci1Bbmd1bGFyLXVwZ3JhZGUtMWYyNjY3ZWIyYTMxODBiNzlmNmFkOTJhN2U1NzZmMDhcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1kYXRlLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZUNvbXBvbmVudCBleHRlbmRzIElucHV0TGFiZWxDb21wb25lbnQge1xuICByZWFkb25seSBUT0RBWSA9IG5ldyBEYXRlKCk7XG4gIHJlYWRvbmx5IFNUT1JBR0VfS0VZID0gJ2RhdGUtcmFuZ2UuZGVmYXVsdCc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzaG93UHJlc2V0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBASW5wdXQoKVxuICBzZXQgc2hvd1ByZXNldHModjogYm9vbGVhbikge1xuICAgIHRoaXMuc2hvd1ByZXNldHMkLm5leHQodik7XG4gIH1cbiAgZ2V0IHNob3dQcmVzZXRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dQcmVzZXRzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgbWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4oQ2FsZW5kYXJDb21wb25lbnQuZGVmYXVsdE1pbik7XG4gIEBJbnB1dCgpXG4gIHNldCBtaW4odjogRGF0ZSkge1xuICAgIHRoaXMubWluJC5uZXh0KHYpO1xuICB9XG4gIGdldCBtaW4oKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMubWluJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgbWF4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4oQ2FsZW5kYXJDb21wb25lbnQuZGVmYXVsdE1heCk7XG4gIEBJbnB1dCgpXG4gIHNldCBtYXgodjogRGF0ZSkge1xuICAgIHRoaXMubWF4JC5uZXh0KHYpO1xuICB9XG4gIGdldCBtYXgoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMubWF4JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgdmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2OiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnZhbHVlJC5uZXh0KHYpO1xuICB9XG4gIGdldCB2YWx1ZSgpOiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnZhbHVlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdTZWxlY3QgZGF0ZSByYW5nZS4uLicpO1xuICBASW5wdXQoKVxuICBzZXQgcGxhY2Vob2xkZXIodjogc3RyaW5nKSB7XG4gICAgdGhpcy5wbGFjZWhvbGRlciQubmV4dCh2KTtcbiAgfVxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlciQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodjogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQodik7XG4gIH1cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFR5cGVbXVxuICA+KFtdKTtcbiAgQElucHV0KClcbiAgc2V0IGFsdGVybmF0aXZlUHJlc2V0TGlzdCh2OiBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZVtdKSB7XG4gICAgdGhpcy5hbHRlcm5hdGl2ZVByZXNldExpc3QkLm5leHQodik7XG4gIH1cbiAgZ2V0IGFsdGVybmF0aXZlUHJlc2V0TGlzdCgpOiBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy5hbHRlcm5hdGl2ZVByZXNldExpc3QkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBvcGVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHVzZXJTZWxlY3RlZFByZXNldCQgPVxuICAgIG5ldyBTdWJqZWN0PERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgfCBudWxsPigpO1xuXG4gIHJlYWRvbmx5IHVzZXJTZWxlY3RlZERhdGUkID0gbmV3IFN1YmplY3Q8RGF0ZSB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRWYWx1ZSQ6IE9ic2VydmFibGU8RGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZD4gPSBtZXJnZShcbiAgICB0aGlzLnZhbHVlJCxcbiAgICB0aGlzLnVzZXJTZWxlY3RlZERhdGUkLnBpcGUoXG4gICAgICBzY2FuKFxuICAgICAgICAocHJldmlvdXM6IERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQsIGRhdGU6IERhdGUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICBpZiAocHJldmlvdXMgaW5zdGFuY2VvZiBEYXRlICYmIGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZS52YWx1ZU9mKCkgPj0gcHJldmlvdXMudmFsdWVPZigpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhaXI6IFtEYXRlLCBEYXRlXSA9IFtwcmV2aW91cywgZGF0ZV07XG4gICAgICAgICAgICAgIHJldHVybiBwYWlyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKSxcbiAgICB0aGlzLnVzZXJTZWxlY3RlZFByZXNldCQucGlwZShcbiAgICAgIGZpbHRlcigocHJlc2V0KTogcHJlc2V0IGlzIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgPT4gcHJlc2V0ICE9PSBudWxsKSxcbiAgICAgIG1hcChwcmVzZXQgPT4gcHJlc2V0LmRhdGVzKSxcbiAgICApLFxuICApLnBpcGUoc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyZWRQcmVzZXRPcHRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubWluJCxcbiAgICB0aGlzLm1heCQsXG4gICAgdGhpcy5hbHRlcm5hdGl2ZVByZXNldExpc3QkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW21pbiwgbWF4LCBhbHRlcm5hdGl2ZVByZXNldExpc3RdKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zRmlsdGVyZWRPbk1pbk1heCA9IERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRzLmZpbHRlcihcbiAgICAgICAgcCA9PlxuICAgICAgICAgIHAuZGF0ZXNbMF0udmFsdWVPZigpID49IG1pbi52YWx1ZU9mKCkgJiZcbiAgICAgICAgICBwLmRhdGVzWzFdLnZhbHVlT2YoKSA8PSBtYXgudmFsdWVPZigpLFxuICAgICAgKTtcbiAgICAgIGlmIChhbHRlcm5hdGl2ZVByZXNldExpc3QubGVuZ3RoID09IDApIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnNGaWx0ZXJlZE9uTWluTWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0ZpbHRlcmVkT25BbHRlcm5hdGl2ZVByZXNldExpc3QgPVxuICAgICAgICAgIG9wdGlvbnNGaWx0ZXJlZE9uTWluTWF4LmZpbHRlcihwID0+XG4gICAgICAgICAgICBhbHRlcm5hdGl2ZVByZXNldExpc3QuaW5jbHVkZXMocC5pZCksXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnNGaWx0ZXJlZE9uQWx0ZXJuYXRpdmVQcmVzZXRMaXN0O1xuICAgICAgfVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRQcmVzZXQkOiBPYnNlcnZhYmxlPERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgfCBudWxsPiA9XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLFxuICAgICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoc3RhcnRXaXRoKG51bGwpKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbc2VsZWN0ZWRWYWx1ZSwgdXNlclNlbGVjdGVkUHJlc2V0XSkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRzLmZpbHRlcihcbiAgICAgICAgICAgIHByZXNldCA9PlxuICAgICAgICAgICAgICBwcmVzZXQuZGF0ZXNbMF0udmFsdWVPZigpID09PSBzZWxlY3RlZFZhbHVlWzBdLnZhbHVlT2YoKSAmJlxuICAgICAgICAgICAgICBwcmVzZXQuZGF0ZXNbMV0udmFsdWVPZigpID09PSBzZWxlY3RlZFZhbHVlWzFdLnZhbHVlT2YoKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gU29tZSBkYXRlIHJhbmdlcyBtYXRjaCBtdWx0aXBsZSBwcmVzZXRzLCBlLmcuIG9uIEphbiAxOXRoLCBhXG4gICAgICAgICAgICAvLyBzZWxlY3RlZCBkYXRlIHJhbmdlIG9mIEphbiAxLTE5IHdvdWxkIGNvcnJlc3BvbmQgdG8gXCJ0aGlzIG1vbnRoXG4gICAgICAgICAgICAvLyBzbyBmYXIsXCIgXCJ0aGlzIHF1YXJ0ZXIgc28gZmFyLFwiIGFuZCBcInRoaXMgeWVhciBzbyBmYXIuXCIgV2UnbGxcbiAgICAgICAgICAgIC8vIHVzZSB0aGUgdXNlcidzIG1vc3QgcmVjZW50IG1hbnVhbCBzZWxlY3Rpb24gYXMgYSB0aWUgYnJlYWtlclxuICAgICAgICAgICAgLy8gd2hlcmUgcG9zc2libGUuXG4gICAgICAgICAgICBjb25zdCBtb3N0UmVjZW50ID0gb3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICBvcHRpb24gPT4gb3B0aW9uLmlkID09PSB1c2VyU2VsZWN0ZWRQcmVzZXQ/LmlkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChtb3N0UmVjZW50KSByZXR1cm4gbW9zdFJlY2VudDtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgcmVhZG9ubHkgZmF2b3JpdGVQcmVzZXRJZHMkID0gbmV3IExvY2FsU3RvcmFnZTxzdHJpbmdbXT4oXG4gICAgdGhpcy5TVE9SQUdFX0tFWSxcbiAgICBbXSxcbiAgKTtcblxuICBzZXRGYXZvcml0ZShwcmVzZXQ6IERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQsIGZhdm9yaXRlOiBib29sZWFuKSB7XG4gICAgY29uc3QgaWRzID0gbmV3IFNldCh0aGlzLmZhdm9yaXRlUHJlc2V0SWRzJC5nZXRWYWx1ZSgpKTtcbiAgICBpZiAoZmF2b3JpdGUpIHtcbiAgICAgIGlkcy5hZGQocHJlc2V0LmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWRzLmRlbGV0ZShwcmVzZXQuaWQpO1xuICAgIH1cbiAgICB0aGlzLmZhdm9yaXRlUHJlc2V0SWRzJC5uZXh0KFsuLi5pZHNdKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGZhdm9yaXRlUHJlc2V0cyQ6IE9ic2VydmFibGU8RGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFtdPiA9XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZhdm9yaXRlUHJlc2V0SWRzJCxcbiAgICAgIHRoaXMuZmlsdGVyZWRQcmVzZXRPcHRpb25zJCxcbiAgICAgIHRoaXMuYWx0ZXJuYXRpdmVQcmVzZXRMaXN0JCxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbaWRzLCBwcmVzZXRzLCBhbHRlcm5hdGl2ZVByZXNldExpc3RdKSA9PiB7XG4gICAgICAgIGNvbnN0IGZhdm9yaXRlUHJlc2V0cyA9IGlkc1xuICAgICAgICAgIC5tYXAoaWQgPT4gcHJlc2V0cy5maW5kKHByZXNldCA9PiBwcmVzZXQuaWQgPT09IGlkKSlcbiAgICAgICAgICAuZmlsdGVyKChwKTogcCBpcyBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0ID0+IHAgIT09IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKGFsdGVybmF0aXZlUHJlc2V0TGlzdC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIHJldHVybiBmYXZvcml0ZVByZXNldHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZmF2b3JpdGVzRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdCA9XG4gICAgICAgICAgICBmYXZvcml0ZVByZXNldHMuZmlsdGVyKHAgPT5cbiAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0LmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIDxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZT5wLmlkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gZmF2b3JpdGVzRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdDtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICAgICk7XG5cbiAgcmVhZG9ubHkgdXNlckxlZnRBY3RpdmVZZWFyTW9udGgkID0gbmV3IFN1YmplY3Q8RGF0ZT4oKTtcbiAgcmVhZG9ubHkgdXNlclJpZ2h0QWN0aXZlWWVhck1vbnRoJCA9IG5ldyBTdWJqZWN0PERhdGU+KCk7XG5cbiAgcmVhZG9ubHkgbGVmdE1pbiQgPSB0aGlzLm1pbiQucGlwZShcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuICByZWFkb25seSBsZWZ0TWF4JCA9IHRoaXMubWF4JC5waXBlKFxuICAgIG1hcChtYXggPT4gdGltZURheS5vZmZzZXQodGltZU1vbnRoLmZsb29yKG1heCksIC0xKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcbiAgcmVhZG9ubHkgcmlnaHRNYXgkID0gdGhpcy5tYXgkLnBpcGUoXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBsZWZ0QWN0aXZlWWVhck1vbnRoJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubGVmdE1heCQsXG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLnVzZXJMZWZ0QWN0aXZlWWVhck1vbnRoJC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGltZU1vbnRoLmZsb29yKHRoaXMuVE9EQVkpKSxcbiAgICAgICksXG4gICAgICB0aGlzLnVzZXJTZWxlY3RlZFByZXNldCQucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChwcmVzZXQpOiBwcmVzZXQgaXMgRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCA9PiBwcmVzZXQgIT09IG51bGwsXG4gICAgICAgICksXG4gICAgICAgIG1hcChwcmVzZXQgPT4gdGltZU1vbnRoLmZsb29yKHByZXNldC5kYXRlc1swXSkpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodik6IHYgaXMgW0RhdGUsIERhdGVdID0+IHYgIT09IHVuZGVmaW5lZCksXG4gICAgICAgIG1hcCh2ID0+IHRpbWVNb250aC5mbG9vcih2WzBdKSksXG4gICAgICApLFxuICAgICksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbGVmdE1heCwgbGVmdF0pID0+IHtcbiAgICAgIGlmIChsZWZ0LnZhbHVlT2YoKSA+PSBsZWZ0TWF4LnZhbHVlT2YoKSkgcmV0dXJuIHRpbWVNb250aC5mbG9vcihsZWZ0TWF4KTtcbiAgICAgIGVsc2UgcmV0dXJuIGxlZnQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSByaWdodEFjdGl2ZVllYXJNb250aCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmxlZnRBY3RpdmVZZWFyTW9udGgkLFxuICAgIG1lcmdlKFxuICAgICAgdGhpcy51c2VyUmlnaHRBY3RpdmVZZWFyTW9udGgkLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aW1lTW9udGguY2VpbCh0aGlzLlRPREFZKSksXG4gICAgICApLFxuICAgICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAocHJlc2V0KTogcHJlc2V0IGlzIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgPT4gcHJlc2V0ICE9PSBudWxsLFxuICAgICAgICApLFxuICAgICAgICBtYXAocHJlc2V0ID0+IHRpbWVNb250aC5mbG9vcihwcmVzZXQuZGF0ZXNbMV0pKSxcbiAgICAgICksXG4gICAgICB0aGlzLnZhbHVlJC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHYpOiB2IGlzIFtEYXRlLCBEYXRlXSA9PiB2ICE9PSB1bmRlZmluZWQpLFxuICAgICAgICBtYXAodiA9PiB0aW1lTW9udGguZmxvb3IodlsxXSkpLFxuICAgICAgKSxcbiAgICApLFxuICAgIHRoaXMucmlnaHRNYXgkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2xlZnQsIHVzZXJSaWdodCwgcmlnaHRNYXgkXSkgPT4ge1xuICAgICAgaWYgKGxlZnQudmFsdWVPZigpID49IHVzZXJSaWdodC52YWx1ZU9mKCkpXG4gICAgICAgIHJldHVybiB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChsZWZ0LCAxKSk7XG4gICAgICBlbHNlIGlmICh1c2VyUmlnaHQudmFsdWVPZigpID49IHJpZ2h0TWF4JC52YWx1ZU9mKCkpXG4gICAgICAgIHJldHVybiB0aW1lTW9udGguZmxvb3IocmlnaHRNYXgkKTtcbiAgICAgIGVsc2UgcmV0dXJuIHVzZXJSaWdodDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHJpZ2h0TWluJCA9IHRoaXMubGVmdEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICBtYXAobGVmdCA9PiB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChsZWZ0LCAxKSkpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbGVmdE9taXRSYW5nZSQ6IE9ic2VydmFibGU8W0RhdGUsIERhdGVdPiA9XG4gICAgdGhpcy5yaWdodEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICAgIG1hcDxEYXRlLCBbRGF0ZSwgRGF0ZV0+KHJpZ2h0QWN0aXZlWWVhck1vbnRoID0+IHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0aW1lTW9udGguZmxvb3IocmlnaHRBY3RpdmVZZWFyTW9udGgpO1xuICAgICAgICBjb25zdCBsYXN0ID0gdGltZURheS5vZmZzZXQoXG4gICAgICAgICAgdGltZU1vbnRoLmZsb29yKHRpbWVNb250aC5vZmZzZXQocmlnaHRBY3RpdmVZZWFyTW9udGgsIDEpKSxcbiAgICAgICAgICAtMSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFtmaXJzdCwgbGFzdF07XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSB1c2VySW50ZXJhY3RlZCQgPSBtZXJnZShcbiAgICB0aGlzLnVzZXJTZWxlY3RlZERhdGUkLFxuICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JCxcbiAgKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IE9ic2VydmFibGU8W0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPiA9XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlJC5waXBlKFxuICAgICAgc2tpcFVudGlsKFxuICAgICAgICBtZXJnZShcbiAgICAgICAgICB0aGlzLnVzZXJJbnRlcmFjdGVkJCxcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLnBpcGUoZmlsdGVyKHYgPT4gdiAhPT0gdW5kZWZpbmVkKSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgZmlsdGVyKCh2KTogdiBpcyBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQgPT4gISh2IGluc3RhbmNlb2YgRGF0ZSkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgIChwcmV2aW91cywgY3VycmVudCkgPT5cbiAgICAgICAgICBwcmV2aW91cz8uWzBdLnZhbHVlT2YoKSA9PT0gY3VycmVudD8uWzBdLnZhbHVlT2YoKSAmJlxuICAgICAgICAgIHByZXZpb3VzPy5bMV0udmFsdWVPZigpID09PSBjdXJyZW50Py5bMV0udmFsdWVPZigpLFxuICAgICAgKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSBkaXNwbGF5VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gPVxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICByZXR1cm4gdi5tYXAoZGF0ZSA9PiBuZXcgRGF0ZVBpcGUoKS50cmFuc2Zvcm0oZGF0ZSkpLmpvaW4oJyDigJQgJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIERhdGVSYW5nZUNvbXBvbmVudCB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICBleHBvcnQgZW51bSBQcmVzZXRUeXBlIHtcbiAgICBUT0RBWSA9ICd0b2RheScsXG4gICAgWUVTVEVSREFZID0gJ3llc3RlcmRheScsXG4gICAgVE9NT1JST1cgPSAndG9tb3Jyb3cnLFxuICAgIFRISVNfV0VFSyA9ICd0aGlzX3dlZWsnLFxuICAgIFRISVNfV0VFS19TT19GQVIgPSAndGhpc193ZWVrX3NvX2ZhcicsXG4gICAgTEFTVF9XRUVLID0gJ2xhc3Rfd2VlaycsXG4gICAgTkVYVF9XRUVLID0gJ25leHRfd2VlaycsXG4gICAgVEhJU19NT05USCA9ICd0aGlzX21vbnRoJyxcbiAgICBUSElTX01PTlRIX1NPX0ZBUiA9ICd0aGlzX21vbnRoX3NvX2ZhcicsXG4gICAgTEFTVF9NT05USCA9ICdsYXN0X21vbnRoJyxcbiAgICBORVhUX01PTlRIID0gJ25leHRfbW9udGgnLFxuICAgIFRISVNfUVVBUlRFUiA9ICd0aGlzX3F1YXJ0ZXInLFxuICAgIFRISVNfUVVBUlRFUl9TT19GQVIgPSAndGhpc19xdWFydGVyX3NvX2ZhcicsXG4gICAgTEFTVF9RVUFSVEVSID0gJ2xhc3RfcXVhcnRlcicsXG4gICAgTkVYVF9RVUFSVEVSID0gJ25leHRfcXVhcnRlcicsXG4gICAgVEhJU19ZRUFSID0gJ3RoaXNfeWVhcicsXG4gICAgVEhJU19ZRUFSX1NPX0ZBUiA9ICd0aGlzX3llYXJfc29fZmFyJyxcbiAgICBMQVNUX1lFQVIgPSAnbGFzdF95ZWFyJyxcbiAgICBORVhUX1lFQVIgPSAnbmV4dF95ZWFyJyxcbiAgICBMQVNUXzdfREFZUyA9ICdsYXN0XzdfZGF5cycsXG4gICAgTEFTVF8xNF9EQVlTID0gJ2xhc3RfMTRfZGF5cycsXG4gICAgTEFTVF8zMF9EQVlTID0gJ2xhc3RfMzBfZGF5cycsXG4gICAgTEFTVF82MF9EQVlTID0gJ2xhc3RfNjBfZGF5cycsXG4gICAgTEFTVF85MF9EQVlTID0gJ2xhc3RfOTBfZGF5cycsXG4gICAgTEFTVF8xODBfREFZUyA9ICdsYXN0XzE4MF9kYXlzJyxcbiAgICBMQVNUXzM2NV9EQVlTID0gJ2xhc3RfMzY1X2RheXMnLFxuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHJlc2V0ID0ge1xuICAgIGlkOiBQcmVzZXRUeXBlO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc3VidGl0bGU6IHN0cmluZztcbiAgICBkYXRlczogW0RhdGUsIERhdGVdO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBQcmVzZXRzOiBQcmVzZXRbXSA9IFtcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5UT0RBWSxcbiAgICAgIHRpdGxlOiAnVG9kYXknLFxuICAgICAgc3VidGl0bGU6ICdUb2RheSBmcm9tIG1pZG5pZ2h0IHVudGlsIHRoZSBjdXJyZW50IHRpbWUnLFxuICAgICAgZGF0ZXM6IFt0aW1lRGF5KCksIHRpbWVEYXkoKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ZRVNURVJEQVksXG4gICAgICB0aXRsZTogJ1llc3RlcmRheScsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyAyNCBob3VyIGRheScsXG4gICAgICBkYXRlczogW3RpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgLTEpLCB0aW1lRGF5Lm9mZnNldCh0aW1lRGF5KCksIC0xKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5UT01PUlJPVyxcbiAgICAgIHRpdGxlOiAnVG9tb3Jyb3cnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCAyNCBob3VyIGRheScsXG4gICAgICBkYXRlczogW3RpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgMSksIHRpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgMSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19XRUVLLFxuICAgICAgdGl0bGU6ICdUaGlzIHdlZWsnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBjYWxlbmRhciB3ZWVrJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVTdW5kYXkuZmxvb3IodG9kYXkpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lU3VuZGF5LmNlaWwodG9kYXkpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19XRUVLX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyB3ZWVrIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHdlZWsgdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZVN1bmRheS5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfV0VFSyxcbiAgICAgIHRpdGxlOiAnTGFzdCB3ZWVrJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGNhbGVuZGFyIHdlZWsnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVTdW5kYXkub2Zmc2V0KHRpbWVXZWVrLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX1dFRUssXG4gICAgICB0aXRsZTogJ05leHQgd2VlaycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGNhbGVuZGFyIHdlZWsnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19NT05USCxcbiAgICAgIHRpdGxlOiAnVGhpcyBtb250aCcsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIG1vbnRoJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVNb250aC5mbG9vcih0b2RheSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5jZWlsKHRvZGF5KSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfTU9OVEhfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIG1vbnRoIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIG1vbnRoIHVwIHRvIG5vdycsXG4gICAgICBkYXRlczogW3RpbWVNb250aC5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfTU9OVEgsXG4gICAgICB0aXRsZTogJ0xhc3QgbW9udGgnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgY2FsZW5kYXIgbW9udGgnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5vZmZzZXQodGltZU1vbnRoLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX01PTlRILFxuICAgICAgdGl0bGU6ICdOZXh0IG1vbnRoJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIG5leHQgY2FsZW5kYXIgbW9udGgnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19RVUFSVEVSLFxuICAgICAgdGl0bGU6ICdUaGlzIHF1YXJ0ZXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBxdWFydGVyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVRdWFydGVyLmZsb29yKHRvZGF5KSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVF1YXJ0ZXIuY2VpbCh0b2RheSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1FVQVJURVJfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIHF1YXJ0ZXIgc28gZmFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgcXVhcnRlciB1cCB0byBub3cnLFxuICAgICAgZGF0ZXM6IFt0aW1lUXVhcnRlci5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfUVVBUlRFUixcbiAgICAgIHRpdGxlOiAnTGFzdCBxdWFydGVyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGZ1bGwgcXVhcnRlcicsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lUXVhcnRlci5vZmZzZXQodGltZVF1YXJ0ZXIuZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5jZWlsKHRvZGF5KSwgLTEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTkVYVF9RVUFSVEVSLFxuICAgICAgdGl0bGU6ICdOZXh0IHF1YXJ0ZXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCBmdWxsIHF1YXJ0ZXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVF1YXJ0ZXIub2Zmc2V0KHRpbWVRdWFydGVyLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1lFQVIsXG4gICAgICB0aXRsZTogJ1RoaXMgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHllYXInLFxuICAgICAgZGF0ZXM6IFt0aW1lWWVhci5mbG9vcih0b2RheSksIHRpbWVEYXkub2Zmc2V0KHRpbWVZZWFyLmNlaWwodG9kYXkpLCAtMSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19ZRUFSX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyB5ZWFyIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHllYXIgdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZVllYXIuZmxvb3IodG9kYXkpLCB0aW1lRGF5LmZsb29yKHRvZGF5KV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUX1lFQVIsXG4gICAgICB0aXRsZTogJ0xhc3QgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyBjYWxlbmRhciB5ZWFyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5mbG9vcih0b2RheSksIC0xKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX1lFQVIsXG4gICAgICB0aXRsZTogJ05leHQgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGNhbGVuZGFyIHllYXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzdfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA3IGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgNyBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtOCkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMTRfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAxNCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDE0IGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xNSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMzBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAzMCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDMwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0zMSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfNjBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA2MCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDYwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC02MSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfOTBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA5MCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDkwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC05MSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMTgwX0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgMTgwIGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgMTgwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xODEpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzM2NV9EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDM2NSBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDM2NSBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMzY2KSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG59XG4iLCI8cml2LWlucHV0LWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtoZWxwXT1cImhlbHBcIlxuICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbbGFiZWxBY3Rpb25UZXh0XT1cImxhYmVsQWN0aW9uVGV4dFwiXG4gIChsYWJlbEFjdGlvbik9XCJsYWJlbEFjdGlvbi5lbWl0KCRldmVudClcIlxuPlxuICA8YnV0dG9uXG4gICAgI3RyaWdnZXJcbiAgICBjbGFzcz1cInRyaWdnZXJcIlxuICAgIChjbGljayk9XCJvcGVuJC5uZXh0KHRydWUpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJkaXNwbGF5VmFsdWUkIHwgYXN5bmM7IGVsc2UgcGxhY2Vob2xkZXJWYWx1ZTsgbGV0IGRpc3BsYXlcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57eyBkaXNwbGF5IH19PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJWYWx1ZT5cbiAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciQgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvblwiPlxuICAgICAgPHJpdi1pY29uIFtuYW1lXT1cIidDYWxlbmRhcidcIiBbc2l6ZV09XCIxNlwiPjwvcml2LWljb24+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvcml2LWlucHV0LWxhYmVsPlxuXG48bmctdGVtcGxhdGVcbiAgI3NlbGZcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZlwiXG4gIGxldC1pbnB1dFZhbHVlXG4gIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogKHZhbHVlJCB8IGFzeW5jKSB9XCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wZW4kIHwgYXN5bmNcIj5cbiAgICA8cml2LWNhbGxvdXRcbiAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgW2FuY2hvcl09XCJ0cmlnZ2VyXCJcbiAgICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgW2FsbG93ZWRQb3NpdGlvbnNdPVwiW1xuICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAndG9wLWNlbnRlcicsXG4gICAgICAgICd0b3AtcmlnaHQnLFxuICAgICAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAnYm90dG9tLWxlZnQnXG4gICAgICBdXCJcbiAgICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInYm90dG9tLXJpZ2h0J1wiXG4gICAgICAoY2xvc2UpPVwib3BlbiQubmV4dChmYWxzZSk7IHVzZXJTZWxlY3RlZERhdGUkLm5leHQoaW5wdXRWYWx1ZSlcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UHJlc2V0c1wiIGNsYXNzPVwicHJlc2V0c1wiPlxuICAgICAgICAgIDxyaXYtc2ltcGxlLXNlbGVjdFxuICAgICAgICAgICAgW2xhYmVsXT1cIidEYXRlIHByZXNldHMnXCJcbiAgICAgICAgICAgIFtmaWx0ZXJhYmlsaXR5T3B0aW9uc109XCJ7IGVuYWJsZWQ6IHRydWUsIHBsYWNlaG9sZGVyOiAnU2VhcmNoLi4uJyB9XCJcbiAgICAgICAgICAgIFtvcHRpb25Hcm91cHNdPVwiXG4gICAgICAgICAgICAgIChmaWx0ZXJlZFByZXNldE9wdGlvbnMkIHwgYXN5bmMpID8/IFtdIHwgcml2T3B0aW9uR3JvdXBcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRPcHRpb25dPVwic2VsZWN0ZWRQcmVzZXQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgKHNlbGVjdGVkT3B0aW9uQ2hhbmdlKT1cInVzZXJTZWxlY3RlZFByZXNldCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI29wdGlvbiBsZXQtbm9kZT1cIm5vZGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgI3NlbGZcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxmXCJcbiAgICAgICAgICAgICAgICBsZXQtaXNGYXZvcml0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IChmYXZvcml0ZVByZXNldElkcyQgfCBhc3luYyk/LmluY2x1ZGVzKG5vZGUuaWQpXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJlc2V0XCIgW2NsYXNzLmZhdm9yaXRlXT1cImlzRmF2b3JpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIm5vZGUudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cIm5vZGUudGl0bGVIaWdobGlnaHRJbmRpY2VzIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJub2RlLnN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5kaWNlc109XCJub2RlLnN1YnRpdGxlSGlnaGxpZ2h0SW5kaWNlcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNldEZhdm9yaXRlKG5vZGUsICFpc0Zhdm9yaXRlKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJpc0Zhdm9yaXRlID8gJ0hlYXJ0QWN0aXZlJyA6ICdIZWFydCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICBbcml2VG9vbHRpcF09XCInTWFyayBhcyBmYXZvcml0ZSdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3Jpdi1zaW1wbGUtc2VsZWN0PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI3NlbGZcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGZcIlxuICAgICAgICAgICAgbGV0LWZhdm9yaXRlc1xuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBmYXZvcml0ZVByZXNldHMkIHwgYXN5bmMgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJpdi1pbnB1dC1sYWJlbCAqbmdJZj1cImZhdm9yaXRlcy5sZW5ndGhcIiBbbGFiZWxdPVwiJ0Zhdm9yaXRlcydcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNob3J0Y3V0c1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmYXZvcml0ZSBvZiBmYXZvcml0ZXNcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIihzZWxlY3RlZFByZXNldCQgfCBhc3luYyk/LmlkID09PSBmYXZvcml0ZS5pZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlclNlbGVjdGVkUHJlc2V0JC5uZXh0KGZhdm9yaXRlKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgZmF2b3JpdGUudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRGYXZvcml0ZShmYXZvcml0ZSwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JpdlRvb2x0aXBdPVwiJ1JlbW92ZSBmYXZvcml0ZSdcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1pY29uIFtuYW1lXT1cIidIZWFydEFjdGl2ZSdcIiBbc2l6ZV09XCIxNlwiPjwvcml2LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3Jpdi1pbnB1dC1sYWJlbD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJzXCI+XG4gICAgICAgICAgPHJpdi1jYWxlbmRhclxuICAgICAgICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgICAgICAgIFthY3RpdmVZZWFyTW9udGhdPVwiKGxlZnRBY3RpdmVZZWFyTW9udGgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIChhY3RpdmVZZWFyTW9udGhDaGFuZ2UpPVwidXNlckxlZnRBY3RpdmVZZWFyTW9udGgkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZGlzcGxheU1pbl09XCIobWluJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbZGlzcGxheU1heF09XCIobWF4JCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0YWJsZU1pbl09XCIobGVmdE1pbiQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVNYXhdPVwiKGxlZnRNYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtvbWl0UmFuZ2VdPVwiKGxlZnRPbWl0UmFuZ2UkIHwgYXN5bmMpIHx8IFtUT0RBWSwgVE9EQVldXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cIihzZWxlY3RlZFZhbHVlJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICAoZGF0ZVNlbGVjdCk9XCJ1c2VyU2VsZWN0ZWREYXRlJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgID48L3Jpdi1jYWxlbmRhcj5cbiAgICAgICAgICA8cml2LWNhbGVuZGFyXG4gICAgICAgICAgICBjbGFzcz1cInJpZ2h0XCJcbiAgICAgICAgICAgIFthY3RpdmVZZWFyTW9udGhdPVwiKHJpZ2h0QWN0aXZlWWVhck1vbnRoJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICAoYWN0aXZlWWVhck1vbnRoQ2hhbmdlKT1cInVzZXJSaWdodEFjdGl2ZVllYXJNb250aCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWluXT1cIihtaW4kIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWF4XT1cIihtYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlTWluXT1cIihyaWdodE1pbiQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVNYXhdPVwiKHJpZ2h0TWF4JCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCIoc2VsZWN0ZWRWYWx1ZSQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgKGRhdGVTZWxlY3QpPVwidXNlclNlbGVjdGVkRGF0ZSQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9yaXYtY2FsZW5kYXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxmb290ZXIgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVzZXJTZWxlY3RlZERhdGUkLm5leHQodW5kZWZpbmVkKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDbGVhclxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgICBbdmFyaWFudF09XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW4kLm5leHQoZmFsc2UpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIERvbmVcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L3Jpdi1jYWxsb3V0PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -7,8 +7,9 @@ import * as i3 from "../../../visualization/highlight/highlight.component";
7
7
  import * as i4 from "../../../icon/icon.component";
8
8
  import * as i5 from "../../../input/search/search.component";
9
9
  import * as i6 from "../../../overlay/modal/side-sheet/side-sheet.component";
10
- import * as i7 from "../../../format/truncate/truncate.component";
11
- import * as i8 from "../view-menu/view-menu.component";
10
+ import * as i7 from "../../../overlay/callout/tooltip/tooltip.directive";
11
+ import * as i8 from "../../../format/truncate/truncate.component";
12
+ import * as i9 from "../view-menu/view-menu.component";
12
13
  export class AllViewsModalComponent {
13
14
  constructor() {
14
15
  this.topOffset = 0;
@@ -28,10 +29,10 @@ export class AllViewsModalComponent {
28
29
  }
29
30
  }
30
31
  AllViewsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AllViewsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- AllViewsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AllViewsModalComponent, selector: "riv-all-views-modal", inputs: { manager: "manager", topOffset: "topOffset" }, outputs: { close: "close" }, ngImport: i0, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n [name]=\"\n view.system ? 'Lock' : view.enabled ? 'Eye' : 'EyeOff'\n \"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-section{display:flex;flex-direction:column}.permission-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--size-xsmall);border:none;background:none;cursor:pointer;gap:var(--size-small);border-radius:var(--border-radius-medium);transition:background-color var(--short-transition)}.permission-header:disabled{cursor:default;color:var(--type-light-disabled)}.permission-header:hover:not(:disabled){background-color:var(--surface-light-1)}.permission-header:active:not(:disabled){background-color:var(--surface-light-2)}.permission-header-content{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-content{padding-left:var(--size-small);padding-top:var(--size-small)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding:var(--size-xsmall) var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-title{text-align:left;flex-grow:1;font:var(--input-medium)}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i3.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i4.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i5.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "component", type: i6.SideSheetComponent, selector: "riv-side-sheet", inputs: ["topOffset", "width", "obscure"], outputs: ["close"] }, { kind: "component", type: i7.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i8.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
+ AllViewsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AllViewsModalComponent, selector: "riv-all-views-modal", inputs: { manager: "manager", topOffset: "topOffset" }, outputs: { close: "close" }, ngImport: i0, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled && !view.system\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n *ngIf=\"view.enabled\"\n [name]=\"view.system ? 'Lock' : 'Eye'\"\n [rivTooltip]=\"view.system ? '' : 'Hide tab'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon\n *ngIf=\"!view.enabled\"\n [name]=\"'EyeOff'\"\n [rivTooltip]=\"'Show tab'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-section{display:flex;flex-direction:column}.permission-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--size-xsmall);border:none;background:none;cursor:pointer;gap:var(--size-small);border-radius:var(--border-radius-medium);transition:background-color var(--short-transition)}.permission-header:disabled{cursor:default;color:var(--type-light-disabled)}.permission-header:hover:not(:disabled){background-color:var(--surface-light-1)}.permission-header:active:not(:disabled){background-color:var(--surface-light-2)}.permission-header-content{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-content{padding-left:var(--size-small);padding-top:var(--size-small)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding:var(--size-xsmall) var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-title{text-align:left;flex-grow:1;font:var(--input-medium)}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i3.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i4.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i5.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "component", type: i6.SideSheetComponent, selector: "riv-side-sheet", inputs: ["topOffset", "width", "obscure"], outputs: ["close"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipCloseDelay"] }, { kind: "component", type: i8.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i9.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AllViewsModalComponent, decorators: [{
33
34
  type: Component,
34
- args: [{ selector: 'riv-all-views-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n [name]=\"\n view.system ? 'Lock' : view.enabled ? 'Eye' : 'EyeOff'\n \"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-section{display:flex;flex-direction:column}.permission-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--size-xsmall);border:none;background:none;cursor:pointer;gap:var(--size-small);border-radius:var(--border-radius-medium);transition:background-color var(--short-transition)}.permission-header:disabled{cursor:default;color:var(--type-light-disabled)}.permission-header:hover:not(:disabled){background-color:var(--surface-light-1)}.permission-header:active:not(:disabled){background-color:var(--surface-light-2)}.permission-header-content{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-content{padding-left:var(--size-small);padding-top:var(--size-small)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding:var(--size-xsmall) var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-title{text-align:left;flex-grow:1;font:var(--input-medium)}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"] }]
35
+ args: [{ selector: 'riv-all-views-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled && !view.system\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n *ngIf=\"view.enabled\"\n [name]=\"view.system ? 'Lock' : 'Eye'\"\n [rivTooltip]=\"view.system ? '' : 'Hide tab'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon\n *ngIf=\"!view.enabled\"\n [name]=\"'EyeOff'\"\n [rivTooltip]=\"'Show tab'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-section{display:flex;flex-direction:column}.permission-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--size-xsmall);border:none;background:none;cursor:pointer;gap:var(--size-small);border-radius:var(--border-radius-medium);transition:background-color var(--short-transition)}.permission-header:disabled{cursor:default;color:var(--type-light-disabled)}.permission-header:hover:not(:disabled){background-color:var(--surface-light-1)}.permission-header:active:not(:disabled){background-color:var(--surface-light-2)}.permission-header-content{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-content{padding-left:var(--size-small);padding-top:var(--size-small)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding:var(--size-xsmall) var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-title{text-align:left;flex-grow:1;font:var(--input-medium)}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"] }]
35
36
  }], propDecorators: { manager: [{
36
37
  type: Input
37
38
  }], topOffset: [{
@@ -39,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
39
40
  }], close: [{
40
41
  type: Output
41
42
  }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLXZpZXdzLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL25hdmlnYXRpb24vdmlld3MvYWxsLXZpZXdzLW1vZGFsL2FsbC12aWV3cy1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL2FsbC12aWV3cy1tb2RhbC9hbGwtdmlld3MtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7OztBQVFwQyxNQUFNLE9BQU8sc0JBQXNCO0lBTm5DO1FBY0UsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUd0QixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVdqQyx1QkFBa0IsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUM7UUFDakQsNkJBQXdCLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixDQUFDO0tBSzlEO0lBZkMsYUFBYSxDQUFDLFVBQW1DO1FBQy9DLE9BQU8sQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7WUFDMUIsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixVQUFVO1lBQ1YsSUFBSTtTQUNMLENBQUMsQ0FBQztJQUNQLENBQUM7SUFLRCxTQUFTLENBQUMsQ0FBUyxFQUFFLElBQTZCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOzttSEEzQlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsZ0pDZm5DLDQ5SkErSUE7MkZEaElhLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTs4QkFPL0MsT0FBTztzQkFETixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixLQUFLO3NCQURKLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUml2Vmlld3MgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1hbGwtdmlld3MtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxsLXZpZXdzLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxsLXZpZXdzLW1vZGFsLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFsbFZpZXdzTW9kYWxDb21wb25lbnQ8XG4gIFUgZXh0ZW5kcyBSaXZWaWV3cy5Vc2VyLFxuICBWIGV4dGVuZHMgUml2Vmlld3MuVmlldzxVPixcbj4ge1xuICBASW5wdXQoKVxuICBtYW5hZ2VyPzogUml2Vmlld3MuTWFuYWdlcjxVLCBWPjtcblxuICBASW5wdXQoKVxuICB0b3BPZmZzZXQ6IG51bWJlciA9IDA7XG5cbiAgQE91dHB1dCgpXG4gIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldE9wZW5DaGFuZ2UocGVybWlzc2lvbjogUml2Vmlld3MuVmlld1Blcm1pc3Npb24pOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZCB7XG4gICAgcmV0dXJuIChvcGVuOiBib29sZWFuKSA9PlxuICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgdHlwZTogJ3NldEFsbFZpZXdzVG9nZ2xlJyxcbiAgICAgICAgcGVybWlzc2lvbixcbiAgICAgICAgb3BlbixcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0UGVybWlzc2lvblRpdGxlID0gUml2Vmlld3MuZ2V0UGVybWlzc2lvblRpdGxlO1xuICBnZXRQZXJtaXNzaW9uRGVzY3JpcHRpb24gPSBSaXZWaWV3cy5nZXRQZXJtaXNzaW9uRGVzY3JpcHRpb247XG5cbiAgdHJhY2tCeUlkKF86IG51bWJlciwgdmlldzogUml2Vmlld3MuRnVsbFZpZXc8VSwgVj4pOiBWWydpZCddIHtcbiAgICByZXR1cm4gdmlldy5pZDtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hbmFnZXI/LnN0YXRlIHwgYXN5bmM7IGxldCBzXCI+XG4gIDxyaXYtc2lkZS1zaGVldCBbdG9wT2Zmc2V0XT1cInRvcE9mZnNldFwiIChjbG9zZSk9XCJjbG9zZS5lbWl0KClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPGhlYWRlcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPkFsbCB2aWV3czwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICAgIFtpY29uXT1cIidYJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cImNsb3NlLmVtaXQoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8cml2LXNlYXJjaFxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeScsXG4gICAgICAgICAgICBxdWVyeTogJGV2ZW50XG4gICAgICAgICAgfSlcbiAgICAgICAgXCJcbiAgICAgICAgW3ZhbHVlXT1cInMuYWxsLnNlYXJjaFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcbiAgICAgID48L3Jpdi1zZWFyY2g+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3c1wiPlxuICAgICAgICA8IS0tIFZpZXcgc2VjdGlvbnMgYnkgcGVybWlzc2lvbiB0eXBlIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJzLmFsbC5wcml2YXRlVmlld3MubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicGVybWlzc2lvblNlY3Rpb25cIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICBwZXJtaXNzaW9uOiAncHJpdmF0ZScsXG4gICAgICAgICAgICBvcGVuOiBzLmFsbC5wcml2YXRlT3BlbixcbiAgICAgICAgICAgIG9wZW5DaGFuZ2U6IGdldE9wZW5DaGFuZ2UoJ3ByaXZhdGUnKSxcbiAgICAgICAgICAgIHZpZXdzOiBzLmFsbC5wcml2YXRlVmlld3MsXG4gICAgICAgICAgICB0aXRsZTogZ2V0UGVybWlzc2lvblRpdGxlKCdwcml2YXRlJyksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uKCdwcml2YXRlJylcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJzLmFsbC5zaGFyZWRWaWV3cy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwZXJtaXNzaW9uU2VjdGlvblwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgIHBlcm1pc3Npb246ICdzaGFyZWQnLFxuICAgICAgICAgICAgb3Blbjogcy5hbGwuc2hhcmVkT3BlbixcbiAgICAgICAgICAgIG9wZW5DaGFuZ2U6IGdldE9wZW5DaGFuZ2UoJ3NoYXJlZCcpLFxuICAgICAgICAgICAgdmlld3M6IHMuYWxsLnNoYXJlZFZpZXdzLFxuICAgICAgICAgICAgdGl0bGU6IGdldFBlcm1pc3Npb25UaXRsZSgnc2hhcmVkJyksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uKCdzaGFyZWQnKVxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cInMuYWxsLnB1YmxpY1ZpZXdzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBlcm1pc3Npb25TZWN0aW9uXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgcGVybWlzc2lvbjogJ3B1YmxpYycsXG4gICAgICAgICAgICBvcGVuOiBzLmFsbC5wdWJsaWNPcGVuLFxuICAgICAgICAgICAgb3BlbkNoYW5nZTogZ2V0T3BlbkNoYW5nZSgncHVibGljJyksXG4gICAgICAgICAgICB2aWV3czogcy5hbGwucHVibGljVmlld3MsXG4gICAgICAgICAgICB0aXRsZTogZ2V0UGVybWlzc2lvblRpdGxlKCdwdWJsaWMnKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXRQZXJtaXNzaW9uRGVzY3JpcHRpb24oJ3B1YmxpYycpXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFBlcm1pc3Npb24gc2VjdGlvbiAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI3Blcm1pc3Npb25TZWN0aW9uXG4gICAgICAgICAgbGV0LXBlcm1pc3Npb249XCJwZXJtaXNzaW9uXCJcbiAgICAgICAgICBsZXQtb3Blbj1cIm9wZW5cIlxuICAgICAgICAgIGxldC1vcGVuQ2hhbmdlPVwib3BlbkNoYW5nZVwiXG4gICAgICAgICAgbGV0LXZpZXdzPVwidmlld3NcIlxuICAgICAgICAgIGxldC10aXRsZT1cInRpdGxlXCJcbiAgICAgICAgICBsZXQtZGVzY3JpcHRpb249XCJkZXNjcmlwdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybWlzc2lvbi1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwicGVybWlzc2lvbi1oZWFkZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNoYW5nZSghb3BlbilcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISFzLmFsbC5zZWFyY2hcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybWlzc2lvbi1oZWFkZXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInBlcm1pc3Npb24tdGl0bGVcIj57eyB0aXRsZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtaXNzaW9uLWRlc2NyaXB0aW9uXCI+e3sgZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgICAgICBbbmFtZV09XCJvcGVuID8gJ0NoZXZyb25VcCcgOiAnQ2hldnJvbkRvd24nXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtaXNzaW9uLWNvbnRlbnRcIiAqbmdJZj1cIm9wZW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZXdzLWxpc3RcIiAqbmdJZj1cInZpZXdzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmlldyBvZiB2aWV3czsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmlldy1pdGVtXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NldEFjdGl2ZVZpZXcnLFxuICAgICAgICAgICAgICAgICAgICAgIGlkOiB2aWV3LmlkXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjbG9zZS5lbWl0KClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZXctdGl0bGVcIiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJ2aWV3LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5kaWNlc109XCJ2aWV3LnRpdGxlSGlnaGxpZ2h0SW5kaWNlcyA/PyBbXVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9yaXYtaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8cml2LXZpZXctbWVudVxuICAgICAgICAgICAgICAgICAgICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgICAgICAgICAgIFttZW51Q29udGV4dF09XCInYWxsLXZpZXdzJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9yaXYtdmlldy1tZW51PlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVuYWJsZS12aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVuYWJsZWRdPVwidmlldy5lbmFibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXRFbmFibGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB2aWV3LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogIXZpZXcuZW5hYmxlZFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5zeXN0ZW0gPyAnTG9jaycgOiB2aWV3LmVuYWJsZWQgPyAnRXllJyA6ICdFeWVPZmYnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9yaXYtc2lkZS1zaGVldD5cbjwvbmctY29udGFpbmVyPlxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLXZpZXdzLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL25hdmlnYXRpb24vdmlld3MvYWxsLXZpZXdzLW1vZGFsL2FsbC12aWV3cy1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL2FsbC12aWV3cy1tb2RhbC9hbGwtdmlld3MtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7QUFRcEMsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQWNFLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFHdEIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFXakMsdUJBQWtCLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1FBQ2pELDZCQUF3QixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQztLQUs5RDtJQWZDLGFBQWEsQ0FBQyxVQUFtQztRQUMvQyxPQUFPLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO1lBQzFCLElBQUksRUFBRSxtQkFBbUI7WUFDekIsVUFBVTtZQUNWLElBQUk7U0FDTCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBS0QsU0FBUyxDQUFDLENBQVMsRUFBRSxJQUE2QjtRQUNoRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7bUhBM0JVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLGdKQ2ZuQyx1d0tBcUpBOzJGRHRJYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07OEJBTy9DLE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sS0FBSztzQkFESixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJpdlZpZXdzIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtYWxsLXZpZXdzLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsbC12aWV3cy1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsbC12aWV3cy1tb2RhbC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBbGxWaWV3c01vZGFsQ29tcG9uZW50PFxuICBVIGV4dGVuZHMgUml2Vmlld3MuVXNlcixcbiAgViBleHRlbmRzIFJpdlZpZXdzLlZpZXc8VT4sXG4+IHtcbiAgQElucHV0KClcbiAgbWFuYWdlcj86IFJpdlZpZXdzLk1hbmFnZXI8VSwgVj47XG5cbiAgQElucHV0KClcbiAgdG9wT2Zmc2V0OiBudW1iZXIgPSAwO1xuXG4gIEBPdXRwdXQoKVxuICBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXRPcGVuQ2hhbmdlKHBlcm1pc3Npb246IFJpdlZpZXdzLlZpZXdQZXJtaXNzaW9uKTogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQge1xuICAgIHJldHVybiAob3BlbjogYm9vbGVhbikgPT5cbiAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgIHR5cGU6ICdzZXRBbGxWaWV3c1RvZ2dsZScsXG4gICAgICAgIHBlcm1pc3Npb24sXG4gICAgICAgIG9wZW4sXG4gICAgICB9KTtcbiAgfVxuXG4gIGdldFBlcm1pc3Npb25UaXRsZSA9IFJpdlZpZXdzLmdldFBlcm1pc3Npb25UaXRsZTtcbiAgZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uID0gUml2Vmlld3MuZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uO1xuXG4gIHRyYWNrQnlJZChfOiBudW1iZXIsIHZpZXc6IFJpdlZpZXdzLkZ1bGxWaWV3PFUsIFY+KTogVlsnaWQnXSB7XG4gICAgcmV0dXJuIHZpZXcuaWQ7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJtYW5hZ2VyPy5zdGF0ZSB8IGFzeW5jOyBsZXQgc1wiPlxuICA8cml2LXNpZGUtc2hlZXQgW3RvcE9mZnNldF09XCJ0b3BPZmZzZXRcIiAoY2xvc2UpPVwiY2xvc2UuZW1pdCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgIDxoZWFkZXI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5BbGwgdmlld3M8L3NwYW4+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICByaXZCdXR0b25cbiAgICAgICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgICAgICBbaWNvbl09XCInWCdcIlxuICAgICAgICAgIChjbGljayk9XCJjbG9zZS5lbWl0KClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgPHJpdi1zZWFyY2hcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIlxuICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgdHlwZTogJ3NldEFsbFZpZXdzU2VhcmNoUXVlcnknLFxuICAgICAgICAgICAgcXVlcnk6ICRldmVudFxuICAgICAgICAgIH0pXG4gICAgICAgIFwiXG4gICAgICAgIFt2YWx1ZV09XCJzLmFsbC5zZWFyY2hcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXG4gICAgICA+PC9yaXYtc2VhcmNoPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidmlld3NcIj5cbiAgICAgICAgPCEtLSBWaWV3IHNlY3Rpb25zIGJ5IHBlcm1pc3Npb24gdHlwZSAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwicy5hbGwucHJpdmF0ZVZpZXdzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBlcm1pc3Npb25TZWN0aW9uXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgcGVybWlzc2lvbjogJ3ByaXZhdGUnLFxuICAgICAgICAgICAgb3Blbjogcy5hbGwucHJpdmF0ZU9wZW4sXG4gICAgICAgICAgICBvcGVuQ2hhbmdlOiBnZXRPcGVuQ2hhbmdlKCdwcml2YXRlJyksXG4gICAgICAgICAgICB2aWV3czogcy5hbGwucHJpdmF0ZVZpZXdzLFxuICAgICAgICAgICAgdGl0bGU6IGdldFBlcm1pc3Npb25UaXRsZSgncHJpdmF0ZScpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbigncHJpdmF0ZScpXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwicy5hbGwuc2hhcmVkVmlld3MubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicGVybWlzc2lvblNlY3Rpb25cIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICBwZXJtaXNzaW9uOiAnc2hhcmVkJyxcbiAgICAgICAgICAgIG9wZW46IHMuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICBvcGVuQ2hhbmdlOiBnZXRPcGVuQ2hhbmdlKCdzaGFyZWQnKSxcbiAgICAgICAgICAgIHZpZXdzOiBzLmFsbC5zaGFyZWRWaWV3cyxcbiAgICAgICAgICAgIHRpdGxlOiBnZXRQZXJtaXNzaW9uVGl0bGUoJ3NoYXJlZCcpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbignc2hhcmVkJylcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJzLmFsbC5wdWJsaWNWaWV3cy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwZXJtaXNzaW9uU2VjdGlvblwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgIHBlcm1pc3Npb246ICdwdWJsaWMnLFxuICAgICAgICAgICAgb3Blbjogcy5hbGwucHVibGljT3BlbixcbiAgICAgICAgICAgIG9wZW5DaGFuZ2U6IGdldE9wZW5DaGFuZ2UoJ3B1YmxpYycpLFxuICAgICAgICAgICAgdmlld3M6IHMuYWxsLnB1YmxpY1ZpZXdzLFxuICAgICAgICAgICAgdGl0bGU6IGdldFBlcm1pc3Npb25UaXRsZSgncHVibGljJyksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uKCdwdWJsaWMnKVxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBQZXJtaXNzaW9uIHNlY3Rpb24gLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICNwZXJtaXNzaW9uU2VjdGlvblxuICAgICAgICAgIGxldC1wZXJtaXNzaW9uPVwicGVybWlzc2lvblwiXG4gICAgICAgICAgbGV0LW9wZW49XCJvcGVuXCJcbiAgICAgICAgICBsZXQtb3BlbkNoYW5nZT1cIm9wZW5DaGFuZ2VcIlxuICAgICAgICAgIGxldC12aWV3cz1cInZpZXdzXCJcbiAgICAgICAgICBsZXQtdGl0bGU9XCJ0aXRsZVwiXG4gICAgICAgICAgbGV0LWRlc2NyaXB0aW9uPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb24tc2VjdGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cInBlcm1pc3Npb24taGVhZGVyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGFuZ2UoIW9wZW4pXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEhcy5hbGwuc2VhcmNoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb24taGVhZGVyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJwZXJtaXNzaW9uLXRpdGxlXCI+e3sgdGl0bGUgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybWlzc2lvbi1kZXNjcmlwdGlvblwiPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICAgICAgW25hbWVdPVwib3BlbiA/ICdDaGV2cm9uVXAnIDogJ0NoZXZyb25Eb3duJ1wiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiMjBcIlxuICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybWlzc2lvbi1jb250ZW50XCIgKm5nSWY9XCJvcGVuXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3cy1saXN0XCIgKm5nSWY9XCJ2aWV3cy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZpZXcgb2Ygdmlld3M7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZpZXctaXRlbVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXRBY3RpdmVWaWV3JyxcbiAgICAgICAgICAgICAgICAgICAgICBpZDogdmlldy5pZFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY2xvc2UuZW1pdCgpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3LXRpdGxlXCIgcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxyaXYtaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwidmlldy50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2luZGljZXNdPVwidmlldy50aXRsZUhpZ2hsaWdodEluZGljZXMgPz8gW11cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHJpdi12aWV3LW1lbnVcbiAgICAgICAgICAgICAgICAgICAgW21hbmFnZXJdPVwibWFuYWdlclwiXG4gICAgICAgICAgICAgICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICAgICAgICAgICAgICBbbWVudUNvbnRleHRdPVwiJ2FsbC12aWV3cydcIlxuICAgICAgICAgICAgICAgICAgPjwvcml2LXZpZXctbWVudT5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlbmFibGUtdmlld1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbmFibGVkXT1cInZpZXcuZW5hYmxlZCAmJiAhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NldEVuYWJsZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHZpZXcuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhdmlldy5lbmFibGVkXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3LmVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInZpZXcuc3lzdGVtID8gJ0xvY2snIDogJ0V5ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyaXZUb29sdGlwXT1cInZpZXcuc3lzdGVtID8gJycgOiAnSGlkZSB0YWInXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiF2aWV3LmVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidFeWVPZmYnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcml2VG9vbHRpcF09XCInU2hvdyB0YWInXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9yaXYtc2lkZS1zaGVldD5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -3,7 +3,7 @@ import * as i1 from '@angular/common';
3
3
  import { DOCUMENT, DatePipe as DatePipe$1, DecimalPipe, CurrencyPipe, PercentPipe, CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
5
  import { Injectable, Inject, Pipe, Directive, Input, EventEmitter, Output, Component, ChangeDetectionStrategy, ViewChild, HostListener, ViewContainerRef, Self, HostBinding, Optional, ContentChild, ElementRef, ContentChildren, TemplateRef, NgModule } from '@angular/core';
6
- import { BehaviorSubject, Subject, merge, scan, startWith, connectable, map, ReplaySubject, filter, distinctUntilChanged, combineLatest, shareReplay, withLatestFrom, skipUntil, mergeScan, from, fromEvent, tap, switchMap, takeUntil, concatWith, of } from 'rxjs';
6
+ import { BehaviorSubject, Subject, merge, scan, startWith, connectable, map, ReplaySubject, filter, distinctUntilChanged, combineLatest, shareReplay, skipUntil, mergeScan, from, fromEvent, tap, switchMap, takeUntil, concatWith, of } from 'rxjs';
7
7
  import { timeYears, timeYear, timeMonths, timeMonth, timeDays, timeDay, timeSunday, timeWeek, utcYear, utcMonth, utcWeek, utcDay } from 'd3-time';
8
8
  import { timeFormat, utcFormat } from 'd3-time-format';
9
9
  import { defaultsDeep, sortBy, flattenDeep, debounce, isEqual, cloneDeep, orderBy, range, difference, union } from 'lodash';
@@ -3010,9 +3010,13 @@ class DateRangeComponent extends InputLabelComponent {
3010
3010
  return null;
3011
3011
  }));
3012
3012
  this.favoritePresetIds$ = new LocalStorage(this.STORAGE_KEY, []);
3013
- this.favoritePresets$ = this.favoritePresetIds$.pipe(withLatestFrom(this.alternativePresetList$), map(([ids, alternativePresetList]) => {
3013
+ this.favoritePresets$ = combineLatest([
3014
+ this.favoritePresetIds$,
3015
+ this.filteredPresetOptions$,
3016
+ this.alternativePresetList$,
3017
+ ]).pipe(map(([ids, presets, alternativePresetList]) => {
3014
3018
  const favoritePresets = ids
3015
- .map(id => DateRangeComponent.Presets.find(preset => preset.id === id))
3019
+ .map(id => presets.find(preset => preset.id === id))
3016
3020
  .filter((p) => p !== undefined);
3017
3021
  if (alternativePresetList.length == 0) {
3018
3022
  return favoritePresets;
@@ -4217,10 +4221,10 @@ class AllViewsModalComponent {
4217
4221
  }
4218
4222
  }
4219
4223
  AllViewsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AllViewsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4220
- AllViewsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AllViewsModalComponent, selector: "riv-all-views-modal", inputs: { manager: "manager", topOffset: "topOffset" }, outputs: { close: "close" }, ngImport: i0, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n [name]=\"\n view.system ? 'Lock' : view.enabled ? 'Eye' : 'EyeOff'\n \"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-section{display:flex;flex-direction:column}.permission-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--size-xsmall);border:none;background:none;cursor:pointer;gap:var(--size-small);border-radius:var(--border-radius-medium);transition:background-color var(--short-transition)}.permission-header:disabled{cursor:default;color:var(--type-light-disabled)}.permission-header:hover:not(:disabled){background-color:var(--surface-light-1)}.permission-header:active:not(:disabled){background-color:var(--surface-light-2)}.permission-header-content{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-content{padding-left:var(--size-small);padding-top:var(--size-small)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding:var(--size-xsmall) var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-title{text-align:left;flex-grow:1;font:var(--input-medium)}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "component", type: SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "component", type: SideSheetComponent, selector: "riv-side-sheet", inputs: ["topOffset", "width", "obscure"], outputs: ["close"] }, { kind: "component", type: TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4224
+ AllViewsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AllViewsModalComponent, selector: "riv-all-views-modal", inputs: { manager: "manager", topOffset: "topOffset" }, outputs: { close: "close" }, ngImport: i0, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled && !view.system\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n *ngIf=\"view.enabled\"\n [name]=\"view.system ? 'Lock' : 'Eye'\"\n [rivTooltip]=\"view.system ? '' : 'Hide tab'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon\n *ngIf=\"!view.enabled\"\n [name]=\"'EyeOff'\"\n [rivTooltip]=\"'Show tab'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-section{display:flex;flex-direction:column}.permission-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--size-xsmall);border:none;background:none;cursor:pointer;gap:var(--size-small);border-radius:var(--border-radius-medium);transition:background-color var(--short-transition)}.permission-header:disabled{cursor:default;color:var(--type-light-disabled)}.permission-header:hover:not(:disabled){background-color:var(--surface-light-1)}.permission-header:active:not(:disabled){background-color:var(--surface-light-2)}.permission-header-content{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-content{padding-left:var(--size-small);padding-top:var(--size-small)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding:var(--size-xsmall) var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-title{text-align:left;flex-grow:1;font:var(--input-medium)}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "component", type: SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "component", type: SideSheetComponent, selector: "riv-side-sheet", inputs: ["topOffset", "width", "obscure"], outputs: ["close"] }, { kind: "directive", type: TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipCloseDelay"] }, { kind: "component", type: TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4221
4225
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AllViewsModalComponent, decorators: [{
4222
4226
  type: Component,
4223
- args: [{ selector: 'riv-all-views-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n [name]=\"\n view.system ? 'Lock' : view.enabled ? 'Eye' : 'EyeOff'\n \"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-section{display:flex;flex-direction:column}.permission-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--size-xsmall);border:none;background:none;cursor:pointer;gap:var(--size-small);border-radius:var(--border-radius-medium);transition:background-color var(--short-transition)}.permission-header:disabled{cursor:default;color:var(--type-light-disabled)}.permission-header:hover:not(:disabled){background-color:var(--surface-light-1)}.permission-header:active:not(:disabled){background-color:var(--surface-light-2)}.permission-header-content{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-content{padding-left:var(--size-small);padding-top:var(--size-small)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding:var(--size-xsmall) var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-title{text-align:left;flex-grow:1;font:var(--input-medium)}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"] }]
4227
+ args: [{ selector: 'riv-all-views-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled && !view.system\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n *ngIf=\"view.enabled\"\n [name]=\"view.system ? 'Lock' : 'Eye'\"\n [rivTooltip]=\"view.system ? '' : 'Hide tab'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon\n *ngIf=\"!view.enabled\"\n [name]=\"'EyeOff'\"\n [rivTooltip]=\"'Show tab'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-section{display:flex;flex-direction:column}.permission-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--size-xsmall);border:none;background:none;cursor:pointer;gap:var(--size-small);border-radius:var(--border-radius-medium);transition:background-color var(--short-transition)}.permission-header:disabled{cursor:default;color:var(--type-light-disabled)}.permission-header:hover:not(:disabled){background-color:var(--surface-light-1)}.permission-header:active:not(:disabled){background-color:var(--surface-light-2)}.permission-header-content{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-content{padding-left:var(--size-small);padding-top:var(--size-small)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding:var(--size-xsmall) var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-title{text-align:left;flex-grow:1;font:var(--input-medium)}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"] }]
4224
4228
  }], propDecorators: { manager: [{
4225
4229
  type: Input
4226
4230
  }], topOffset: [{