@theseam/ui-common 0.4.4 → 0.4.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.
Files changed (55) hide show
  1. package/datatable/models/preferences-accessor.d.ts +3 -15
  2. package/datatable/models/preferences.d.ts +2 -1
  3. package/datatable/services/datatable-preferences.service.d.ts +11 -14
  4. package/datatable/tokens/datatable-preferences-accessor.d.ts +2 -2
  5. package/esm2020/datatable/datatable/datatable.component.mjs +3 -3
  6. package/esm2020/datatable/models/preferences-accessor.mjs +1 -1
  7. package/esm2020/datatable/models/preferences.mjs +1 -1
  8. package/esm2020/datatable/services/datatable-preferences.service.mjs +34 -106
  9. package/esm2020/datatable/tokens/datatable-preferences-accessor.mjs +1 -1
  10. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.service.mjs +9 -3
  11. package/esm2020/services/preferences/preferences-accessor.mjs +2 -0
  12. package/esm2020/services/preferences/preferences-manager.service.mjs +69 -0
  13. package/esm2020/services/preferences/preferences-record.mjs +74 -0
  14. package/esm2020/services/preferences/preferences.models.mjs +2 -0
  15. package/esm2020/services/public-api.mjs +5 -1
  16. package/esm2020/story-helpers/public-api.mjs +2 -1
  17. package/esm2020/story-helpers/story-preferences-accessor.service.mjs +34 -0
  18. package/esm2020/widget/preferences/widget-preferences.models.mjs +5 -0
  19. package/esm2020/widget/preferences/widget-preferences.service.mjs +78 -0
  20. package/esm2020/widget/preferences/widget-preferences.token.mjs +3 -0
  21. package/esm2020/widget/widget/widget.component.mjs +68 -31
  22. package/esm2020/widget/widget-token.mjs +2 -1
  23. package/fesm2015/theseam-ui-common-datatable.mjs +45 -116
  24. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  25. package/fesm2015/theseam-ui-common-framework.mjs +9 -3
  26. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  27. package/fesm2015/theseam-ui-common-services.mjs +144 -8
  28. package/fesm2015/theseam-ui-common-services.mjs.map +1 -1
  29. package/fesm2015/theseam-ui-common-story-helpers.mjs +32 -1
  30. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  31. package/fesm2015/theseam-ui-common-widget.mjs +152 -36
  32. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  33. package/fesm2020/theseam-ui-common-datatable.mjs +45 -116
  34. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  35. package/fesm2020/theseam-ui-common-framework.mjs +8 -3
  36. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  37. package/fesm2020/theseam-ui-common-services.mjs +144 -8
  38. package/fesm2020/theseam-ui-common-services.mjs.map +1 -1
  39. package/fesm2020/theseam-ui-common-story-helpers.mjs +32 -1
  40. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  41. package/fesm2020/theseam-ui-common-widget.mjs +148 -36
  42. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  43. package/package.json +1 -1
  44. package/services/preferences/preferences-accessor.d.ts +15 -0
  45. package/services/preferences/preferences-manager.service.d.ts +15 -0
  46. package/services/preferences/preferences-record.d.ts +28 -0
  47. package/services/preferences/preferences.models.d.ts +3 -0
  48. package/services/public-api.d.ts +4 -0
  49. package/story-helpers/public-api.d.ts +1 -0
  50. package/story-helpers/story-preferences-accessor.service.d.ts +19 -0
  51. package/widget/preferences/widget-preferences.models.d.ts +8 -0
  52. package/widget/preferences/widget-preferences.service.d.ts +21 -0
  53. package/widget/preferences/widget-preferences.token.d.ts +3 -0
  54. package/widget/widget/widget.component.d.ts +10 -2
  55. package/widget/widget-token.d.ts +1 -0
@@ -1,107 +1,45 @@
1
- import { Inject, Injectable, isDevMode, Optional } from '@angular/core';
2
- import { of, Subject } from 'rxjs';
3
- import { map, shareReplay, startWith, switchMap, take, tap } from 'rxjs/operators';
4
- import { notNullOrUndefined } from '@theseam/ui-common/utils';
5
- import { EMPTY_DATATABLE_PREFERENCES } from '../models/preferences';
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import { map, switchMap, take, tap } from 'rxjs/operators';
4
+ import { CURRENT_DATATABLE_PREFERENCES_VERSION, EMPTY_DATATABLE_PREFERENCES } from '../models/preferences';
6
5
  import { THESEAM_DATATABLE_PREFERENCES_ACCESSOR } from '../tokens/datatable-preferences-accessor';
7
6
  import * as i0 from "@angular/core";
8
- // TODO: Add per key status
7
+ import * as i1 from "@theseam/ui-common/services";
9
8
  export class DatatablePreferencesService {
10
- get pending() { return this._pending; }
11
- get loaded() { return this._loaded; }
12
- constructor(_prefsAccessor) {
9
+ constructor(_preferencesManager, _prefsAccessor) {
10
+ this._preferencesManager = _preferencesManager;
13
11
  this._prefsAccessor = _prefsAccessor;
14
- this._tablePrefsMap = new Map();
12
+ // TODO: Remove the need for this internal pending flag. I only kept it for
13
+ // backwards compatibility, until better tests are added to make sure if isn't
14
+ // neccessary anymore.
15
+ /**
16
+ * Used to prevent multiple updates from happening at the same time, but it is not per key.
17
+ */
15
18
  this._pending = false;
16
- this._loaded = false;
17
19
  }
18
- preferences(preferenceKey) {
19
- let prefs = this._tablePrefsMap.get(preferenceKey);
20
- if (!prefs) {
21
- const refreshSubject = new Subject();
22
- prefs = {
23
- observable: this._createObservable(refreshSubject, preferenceKey),
24
- refresh: refreshSubject
25
- };
26
- this._tablePrefsMap.set(preferenceKey, prefs);
20
+ isPending(preferenceKey) {
21
+ return this._pending || this._preferencesManager.isPending(preferenceKey);
22
+ }
23
+ isLoaded(preferenceKey) {
24
+ if (this._pending) {
25
+ return false;
27
26
  }
28
- return prefs.observable;
27
+ return this._preferencesManager.isLoaded(preferenceKey);
29
28
  }
30
- _createObservable(refreshSubject, prefKey) {
29
+ preferences(preferenceKey) {
31
30
  if (!this._prefsAccessor) {
32
- return of(EMPTY_DATATABLE_PREFERENCES);
31
+ return of(JSON.parse(JSON.stringify(EMPTY_DATATABLE_PREFERENCES)));
33
32
  }
34
- const accessor = (key) => this._prefsAccessor ? this._prefsAccessor.get(key) : of(JSON.stringify(EMPTY_DATATABLE_PREFERENCES));
35
- return refreshSubject.pipe(startWith(undefined), switchMap(() => accessor(prefKey).pipe(map(v => {
36
- if (!v) {
37
- return null;
38
- }
39
- // TODO: Add a schema validator and migration tool to avoid parsing issues.
40
- try {
41
- // return JSON.parse(v) as TheSeamDatatablePreferences
42
- return this._descerializePreferences(v);
33
+ return this._preferencesManager.preferences(preferenceKey, this._prefsAccessor, EMPTY_DATATABLE_PREFERENCES).pipe(map(prefs => {
34
+ if (this._isValidDatatablePreferences(prefs)) {
35
+ return prefs;
43
36
  }
44
- catch (error) {
45
- if (isDevMode()) {
46
- // eslint-disable-next-line no-console
47
- console.error(error);
48
- }
49
- return null;
50
- }
51
- }), map(v => notNullOrUndefined(v) ? v : EMPTY_DATATABLE_PREFERENCES),
52
- // tap(v => console.log('preferences$', v)),
53
- tap(() => {
54
- this._pending = false;
55
- this._loaded = true;
56
- }))), shareReplay({ bufferSize: 1, refCount: true }));
37
+ throw Error(`Preferences for key '${preferenceKey}' is not a valid datatable preferences.`);
38
+ }));
57
39
  }
58
40
  refresh(preferenceKey) {
59
- const prefs = this._tablePrefsMap.get(preferenceKey);
60
- if (prefs) {
61
- this._pending = true;
62
- prefs.refresh.next();
63
- }
41
+ this._preferencesManager.refresh(preferenceKey);
64
42
  }
65
- // TODO: Improve this updating to be more generic, so we can quickly add
66
- // edits for different preference schema's.
67
- //
68
- // TODO: Decide if a send queue/merging of pending queue is needed to avoid
69
- // out of order updates. This shouldn't be an issue, with how fast preferences
70
- // will most likely be changing, but it could happen in situations, such as
71
- // network issues.
72
- // public setColumnPreference(preferenceKey: string, column: TheSeamDatatablePreferencesColumn): void {
73
- // if (!this._prefsAccessor) {
74
- // return
75
- // }
76
- // this._pending = true
77
- // this.preferences(preferenceKey).pipe(
78
- // map(prefs => {
79
- // // Making the preferences immutable may not be necessary, but for now
80
- // // this obj->str->obj will work as a naive clone.
81
- // const columns = JSON.parse(JSON.stringify(prefs.columns || []))
82
- // const _colPref = columns.find((c: any) => c.prop === column.prop)
83
- // // console.log('has', _colPref)
84
- // if (_colPref) {
85
- // // console.log('hasProperty(column, "width"))', hasProperty(column, 'width'))
86
- // if (hasProperty(column, 'width')) { _colPref.width = column.width }
87
- // if (hasProperty(column, 'canAutoResize')) { _colPref.canAutoResize = column.canAutoResize }
88
- // if (hasProperty(column, 'hidden')) { _colPref.hidden = column.hidden }
89
- // } else {
90
- // columns.push({ ...column })
91
- // }
92
- // const newPrefs: TheSeamDatatablePreferences = { ...prefs, columns }
93
- // return newPrefs
94
- // }),
95
- // // tap(v => console.log('newPrefs', v)),
96
- // take(1),
97
- // switchMap(newPrefs => this._prefsAccessor
98
- // ? this._prefsAccessor.update(preferenceKey, JSON.stringify(newPrefs))
99
- // : of(newPrefs)
100
- // ),
101
- // tap(() => this.refresh(preferenceKey))
102
- // )
103
- // .subscribe()
104
- // }
105
43
  setAlterations(preferenceKey, alterations) {
106
44
  if (!this._prefsAccessor) {
107
45
  return;
@@ -127,6 +65,7 @@ export class DatatablePreferencesService {
127
65
  ...EMPTY_DATATABLE_PREFERENCES,
128
66
  alterations
129
67
  };
68
+ this._pending = false;
130
69
  return newPrefs;
131
70
  }),
132
71
  // tap(v => console.log('newPrefs', v)),
@@ -135,32 +74,21 @@ export class DatatablePreferencesService {
135
74
  : of(newPrefs)), tap(() => this.refresh(preferenceKey)))
136
75
  .subscribe();
137
76
  }
138
- // public withColumnPreferences<T>(preferenceKey: string, columns: T[]): Observable<T[]> {
139
- // return this.preferences(preferenceKey).pipe(
140
- // startWith(EMPTY_DATATABLE_PREFERENCES),
141
- // map(preferences => preferences && preferences.columns
142
- // ? withStoredColumnInfo(columns, preferences.columns) as T[]
143
- // : columns
144
- // )
145
- // )
146
- // }
147
- _descerializePreferences(serialized) {
148
- const prefs = JSON.parse(serialized);
149
- // TODO: Implement migration
150
- return prefs;
77
+ _isValidDatatablePreferences(prefs) {
78
+ return prefs.version === CURRENT_DATATABLE_PREFERENCES_VERSION;
151
79
  }
152
80
  }
153
- DatatablePreferencesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatablePreferencesService, deps: [{ token: THESEAM_DATATABLE_PREFERENCES_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
81
+ DatatablePreferencesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatablePreferencesService, deps: [{ token: i1.TheSeamPreferencesManagerService }, { token: THESEAM_DATATABLE_PREFERENCES_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
154
82
  DatatablePreferencesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatablePreferencesService, providedIn: 'root' });
155
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatablePreferencesService, decorators: [{
156
84
  type: Injectable,
157
85
  args: [{
158
86
  providedIn: 'root'
159
87
  }]
160
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
88
+ }], ctorParameters: function () { return [{ type: i1.TheSeamPreferencesManagerService }, { type: undefined, decorators: [{
161
89
  type: Optional
162
90
  }, {
163
91
  type: Inject,
164
92
  args: [THESEAM_DATATABLE_PREFERENCES_ACCESSOR]
165
93
  }] }]; } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLXByZWZlcmVuY2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL3NlcnZpY2VzL2RhdGF0YWJsZS1wcmVmZXJlbmNlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdkUsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFbEYsT0FBTyxFQUFlLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDMUUsT0FBTyxFQUFFLDJCQUEyQixFQUFrRSxNQUFNLHVCQUF1QixDQUFBO0FBRW5JLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDBDQUEwQyxDQUFBOztBQVNqRywyQkFBMkI7QUFLM0IsTUFBTSxPQUFPLDJCQUEyQjtJQU10QyxJQUFXLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFDO0lBQzdDLElBQVcsTUFBTSxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUM7SUFFM0MsWUFDc0UsY0FBb0Q7UUFBcEQsbUJBQWMsR0FBZCxjQUFjLENBQXNDO1FBUnpHLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQTBDLENBQUE7UUFDM0UsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFBO0lBT25CLENBQUM7SUFFRSxXQUFXLENBQUMsYUFBcUI7UUFDdEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FB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Q0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUNmLEVBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FDdkM7YUFDQSxTQUFTLEVBQUUsQ0FBQTtJQUNoQixDQUFDO0lBRUQsMEZBQTBGO0lBQzFGLGlEQUFpRDtJQUNqRCw4Q0FBOEM7SUFDOUMsNERBQTREO0lBQzVELG9FQUFvRTtJQUNwRSxrQkFBa0I7SUFDbEIsUUFBUTtJQUNSLE1BQU07SUFDTixJQUFJO0lBRUksd0JBQXdCLENBQUMsVUFBa0I7UUFDakQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUVwQyw0QkFBNEI7UUFFNUIsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDOzt3SEE1S1UsMkJBQTJCLGtCQVVoQixzQ0FBc0M7NEhBVmpELDJCQUEyQixjQUYxQixNQUFNOzJGQUVQLDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVdJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBpc0Rldk1vZGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgaGFzUHJvcGVydHksIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcbmltcG9ydCB7IEVNUFRZX0RBVEFUQUJMRV9QUkVGRVJFTkNFUywgVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzLCBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXNDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvcHJlZmVyZW5jZXMnXG5pbXBvcnQgdHlwZSB7IFRoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlc0FjY2Vzc29yIH0gZnJvbSAnLi4vbW9kZWxzL3ByZWZlcmVuY2VzLWFjY2Vzc29yJ1xuaW1wb3J0IHsgVEhFU0VBTV9EQVRBVEFCTEVfUFJFRkVSRU5DRVNfQUNDRVNTT1IgfSBmcm9tICcuLi90b2tlbnMvZGF0YXRhYmxlLXByZWZlcmVuY2VzLWFjY2Vzc29yJ1xuaW1wb3J0IHsgd2l0aFN0b3JlZENvbHVtbkluZm8gfSBmcm9tICcuLi91dGlscy93aXRoLXN0b3JlZC1jb2x1bW4taW5mbydcbmltcG9ydCB7IENvbHVtbnNBbHRlcmF0aW9uU3RhdGUgfSBmcm9tICcuLi9tb2RlbHMvY29sdW1ucy1hbHRlcmF0aW9uJ1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhdGFibGVQcmVmZXJlbmNlc01hcFJlY29yZCB7XG4gIG9ic2VydmFibGU6IE9ic2VydmFibGU8VGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzPlxuICByZWZyZXNoOiBTdWJqZWN0PHZvaWQ+XG59XG5cbi8vIFRPRE86IEFkZCBwZXIga2V5IHN0YXR1c1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhdGFibGVQcmVmZXJlbmNlc1NlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlUHJlZnNNYXAgPSBuZXcgTWFwPHN0cmluZywgSURhdGF0YWJsZVByZWZlcmVuY2VzTWFwUmVjb3JkPigpXG4gIHByaXZhdGUgX3BlbmRpbmcgPSBmYWxzZVxuICBwcml2YXRlIF9sb2FkZWQgPSBmYWxzZVxuXG4gIHB1YmxpYyBnZXQgcGVuZGluZygpIHsgcmV0dXJuIHRoaXMuX3BlbmRpbmcgfVxuICBwdWJsaWMgZ2V0IGxvYWRlZCgpIHsgcmV0dXJuIHRoaXMuX2xvYWRlZCB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVTRUFNX0RBVEFUQUJMRV9QUkVGRVJFTkNFU19BQ0NFU1NPUikgcHJpdmF0ZSBfcHJlZnNBY2Nlc3Nvcj86IFRoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlc0FjY2Vzc29yXG4gICkgeyB9XG5cbiAgcHVibGljIHByZWZlcmVuY2VzKHByZWZlcmVuY2VLZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzPiB7XG4gICAgbGV0IHByZWZzID0gdGhpcy5fdGFibGVQcmVmc01hcC5nZXQocHJlZmVyZW5jZUtleSlcbiAgICBpZiAoIXByZWZzKSB7XG4gICAgICBjb25zdCByZWZyZXNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcbiAgICAgIHByZWZzID0ge1xuICAgICAgICBvYnNlcnZhYmxlOiB0aGlzLl9jcmVhdGVPYnNlcnZhYmxlKHJlZnJlc2hTdWJqZWN0LCBwcmVmZXJlbmNlS2V5KSxcbiAgICAgICAgcmVmcmVzaDogcmVmcmVzaFN1YmplY3RcbiAgICAgIH1cbiAgICAgIHRoaXMuX3RhYmxlUHJlZnNNYXAuc2V0KHByZWZlcmVuY2VLZXksIHByZWZzKVxuICAgIH1cbiAgICByZXR1cm4gcHJlZnMub2JzZXJ2YWJsZVxuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlT2JzZXJ2YWJsZShyZWZyZXNoU3ViamVjdDogU3ViamVjdDx2b2lkPiwgcHJlZktleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXM+IHtcbiAgICBpZiAoIXRoaXMuX3ByZWZzQWNjZXNzb3IpIHtcbiAgICAgIHJldHVybiBvZihFTVBUWV9EQVRBVEFCTEVfUFJFRkVSRU5DRVMpXG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXNzb3IgPSAoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4gPT5cbiAgICAgIHRoaXMuX3ByZWZzQWNjZXNzb3IgPyB0aGlzLl9wcmVmc0FjY2Vzc29yLmdldChrZXkpIDogb2YoSlNPTi5zdHJpbmdpZnkoRU1QVFlfREFUQVRBQkxFX1BSRUZFUkVOQ0VTKSlcblxuICAgIHJldHVybiByZWZyZXNoU3ViamVjdC5waXBlKFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gYWNjZXNzb3IocHJlZktleSkucGlwZShcbiAgICAgICAgbWFwKHYgPT4ge1xuICAgICAgICAgIGlmICghdikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBUT0RPOiBBZGQgYSBzY2hlbWEgdmFsaWRhdG9yIGFuZCBtaWdyYXRpb24gdG9vbCB0byBhdm9pZCBwYXJzaW5nIGlzc3Vlcy5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gcmV0dXJuIEpTT04ucGFyc2UodikgYXMgVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVzY2VyaWFsaXplUHJlZmVyZW5jZXModilcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG1hcCh2ID0+IG5vdE51bGxPclVuZGVmaW5lZCh2KSA/IHYgOiBFTVBUWV9EQVRBVEFCTEVfUFJFRkVSRU5DRVMpLFxuICAgICAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygncHJlZmVyZW5jZXMkJywgdikpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlbmRpbmcgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWVcbiAgICAgICAgfSlcbiAgICAgICkpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApXG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaChwcmVmZXJlbmNlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVmcyA9IHRoaXMuX3RhYmxlUHJlZnNNYXAuZ2V0KHByZWZlcmVuY2VLZXkpXG4gICAgaWYgKHByZWZzKSB7XG4gICAgICB0aGlzLl9wZW5kaW5nID0gdHJ1ZVxuICAgICAgcHJlZnMucmVmcmVzaC5uZXh0KClcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiBJbXByb3ZlIHRoaXMgdXBkYXRpbmcgdG8gYmUgbW9yZSBnZW5lcmljLCBzbyB3ZSBjYW4gcXVpY2tseSBhZGRcbiAgLy8gZWRpdHMgZm9yIGRpZmZlcmVudCBwcmVmZXJlbmNlIHNjaGVtYSdzLlxuICAvL1xuICAvLyBUT0RPOiBEZWNpZGUgaWYgYSBzZW5kIHF1ZXVlL21lcmdpbmcgb2YgcGVuZGluZyBxdWV1ZSBpcyBuZWVkZWQgdG8gYXZvaWRcbiAgLy8gb3V0IG9mIG9yZGVyIHVwZGF0ZXMuIFRoaXMgc2hvdWxkbid0IGJlIGFuIGlzc3VlLCB3aXRoIGhvdyBmYXN0IHByZWZlcmVuY2VzXG4gIC8vIHdpbGwgbW9zdCBsaWtlbHkgYmUgY2hhbmdpbmcsIGJ1dCBpdCBjb3VsZCBoYXBwZW4gaW4gc2l0dWF0aW9ucywgc3VjaCBhc1xuICAvLyBuZXR3b3JrIGlzc3Vlcy5cbiAgLy8gcHVibGljIHNldENvbHVtblByZWZlcmVuY2UocHJlZmVyZW5jZUtleTogc3RyaW5nLCBjb2x1bW46IFRoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlc0NvbHVtbik6IHZvaWQge1xuICAvLyAgIGlmICghdGhpcy5fcHJlZnNBY2Nlc3Nvcikge1xuICAvLyAgICAgcmV0dXJuXG4gIC8vICAgfVxuXG4gIC8vICAgdGhpcy5fcGVuZGluZyA9IHRydWVcbiAgLy8gICB0aGlzLnByZWZlcmVuY2VzKHByZWZlcmVuY2VLZXkpLnBpcGUoXG4gIC8vICAgICBtYXAocHJlZnMgPT4ge1xuICAvLyAgICAgICAvLyBNYWtpbmcgdGhlIHByZWZlcmVuY2VzIGltbXV0YWJsZSBtYXkgbm90IGJlIG5lY2Vzc2FyeSwgYnV0IGZvciBub3dcbiAgLy8gICAgICAgLy8gdGhpcyBvYmotPnN0ci0+b2JqIHdpbGwgd29yayBhcyBhIG5haXZlIGNsb25lLlxuICAvLyAgICAgICBjb25zdCBjb2x1bW5zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcmVmcy5jb2x1bW5zIHx8IFtdKSlcbiAgLy8gICAgICAgY29uc3QgX2NvbFByZWYgPSBjb2x1bW5zLmZpbmQoKGM6IGFueSkgPT4gYy5wcm9wID09PSBjb2x1bW4ucHJvcClcbiAgLy8gICAgICAgLy8gY29uc29sZS5sb2coJ2hhcycsIF9jb2xQcmVmKVxuICAvLyAgICAgICBpZiAoX2NvbFByZWYpIHtcbiAgLy8gICAgICAgICAvLyBjb25zb2xlLmxvZygnaGFzUHJvcGVydHkoY29sdW1uLCBcIndpZHRoXCIpKScsIGhhc1Byb3BlcnR5KGNvbHVtbiwgJ3dpZHRoJykpXG4gIC8vICAgICAgICAgaWYgKGhhc1Byb3BlcnR5KGNvbHVtbiwgJ3dpZHRoJykpIHsgX2NvbFByZWYud2lkdGggPSBjb2x1bW4ud2lkdGggfVxuICAvLyAgICAgICAgIGlmIChoYXNQcm9wZXJ0eShjb2x1bW4sICdjYW5BdXRvUmVzaXplJykpIHsgX2NvbFByZWYuY2FuQXV0b1Jlc2l6ZSA9IGNvbHVtbi5jYW5BdXRvUmVzaXplIH1cbiAgLy8gICAgICAgICBpZiAoaGFzUHJvcGVydHkoY29sdW1uLCAnaGlkZGVuJykpIHsgX2NvbFByZWYuaGlkZGVuID0gY29sdW1uLmhpZGRlbiB9XG4gIC8vICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgY29sdW1ucy5wdXNoKHsgLi4uY29sdW1uIH0pXG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY29uc3QgbmV3UHJlZnM6IFRoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlcyA9IHsgLi4ucHJlZnMsIGNvbHVtbnMgfVxuICAvLyAgICAgICByZXR1cm4gbmV3UHJlZnNcbiAgLy8gICAgIH0pLFxuICAvLyAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ25ld1ByZWZzJywgdikpLFxuICAvLyAgICAgdGFrZSgxKSxcbiAgLy8gICAgIHN3aXRjaE1hcChuZXdQcmVmcyA9PiB0aGlzLl9wcmVmc0FjY2Vzc29yXG4gIC8vICAgICAgID8gdGhpcy5fcHJlZnNBY2Nlc3Nvci51cGRhdGUocHJlZmVyZW5jZUtleSwgSlNPTi5zdHJpbmdpZnkobmV3UHJlZnMpKVxuICAvLyAgICAgICA6IG9mKG5ld1ByZWZzKVxuICAvLyAgICAgKSxcbiAgLy8gICAgIHRhcCgoKSA9PiB0aGlzLnJlZnJlc2gocHJlZmVyZW5jZUtleSkpXG4gIC8vICAgKVxuICAvLyAgIC5zdWJzY3JpYmUoKVxuICAvLyB9XG5cbiAgcHVibGljIHNldEFsdGVyYXRpb25zKHByZWZlcmVuY2VLZXk6IHN0cmluZywgYWx0ZXJhdGlvbnM6IENvbHVtbnNBbHRlcmF0aW9uU3RhdGVbXSk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLl9wcmVmc0FjY2Vzc29yKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZW5kaW5nID0gdHJ1ZVxuICAgICAgdGhpcy5wcmVmZXJlbmNlcyhwcmVmZXJlbmNlS2V5KS5waXBlKFxuICAgICAgICBtYXAocHJlZnMgPT4ge1xuICAgICAgICAgIC8vIE1ha2luZyB0aGUgcHJlZmVyZW5jZXMgaW1tdXRhYmxlIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBidXQgZm9yIG5vd1xuICAgICAgICAgIC8vIHRoaXMgb2JqLT5zdHItPm9iaiB3aWxsIHdvcmsgYXMgYSBuYWl2ZSBjbG9uZS5cbiAgICAgICAgICAvLyBjb25zdCBjb2x1bW5zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcmVmcy5jb2x1bW5zIHx8IFtdKSlcbiAgICAgICAgICAvLyBjb25zdCBfY29sUHJlZiA9IGNvbHVtbnMuZmluZCgoYzogYW55KSA9PiBjLnByb3AgPT09IGNvbHVtbi5wcm9wKVxuICAgICAgICAgIC8vIC8vIGNvbnNvbGUubG9nKCdoYXMnLCBfY29sUHJlZilcbiAgICAgICAgICAvLyBpZiAoX2NvbFByZWYpIHtcbiAgICAgICAgICAvLyAgIC8vIGNvbnNvbGUubG9nKCdoYXNQcm9wZXJ0eShjb2x1bW4sIFwid2lkdGhcIikpJywgaGFzUHJvcGVydHkoY29sdW1uLCAnd2lkdGgnKSlcbiAgICAgICAgICAvLyAgIGlmIChoYXNQcm9wZXJ0eShjb2x1bW4sICd3aWR0aCcpKSB7IF9jb2xQcmVmLndpZHRoID0gY29sdW1uLndpZHRoIH1cbiAgICAgICAgICAvLyAgIGlmIChoYXNQcm9wZXJ0eShjb2x1bW4sICdjYW5BdXRvUmVzaXplJykpIHsgX2NvbFByZWYuY2FuQXV0b1Jlc2l6ZSA9IGNvbHVtbi5jYW5BdXRvUmVzaXplIH1cbiAgICAgICAgICAvLyAgIGlmIChoYXNQcm9wZXJ0eShjb2x1bW4sICdoaWRkZW4nKSkgeyBfY29sUHJlZi5oaWRkZW4gPSBjb2x1bW4uaGlkZGVuIH1cbiAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgIC8vICAgY29sdW1ucy5wdXNoKHsgLi4uY29sdW1uIH0pXG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIC8vIGNvbnN0IG5ld1ByZWZzOiBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXMgPSB7IC4uLnByZWZzLCBjb2x1bW5zIH1cbiAgICAgICAgICAvLyByZXR1cm4gbmV3UHJlZnNcblxuICAgICAgICAgIGNvbnN0IG5ld1ByZWZzOiBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXMgPSB7XG4gICAgICAgICAgICAuLi5FTVBUWV9EQVRBVEFCTEVfUFJFRkVSRU5DRVMsXG4gICAgICAgICAgICBhbHRlcmF0aW9uc1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3UHJlZnNcbiAgICAgICAgfSksXG4gICAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCduZXdQcmVmcycsIHYpKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKG5ld1ByZWZzID0+IHRoaXMuX3ByZWZzQWNjZXNzb3JcbiAgICAgICAgICA/IHRoaXMuX3ByZWZzQWNjZXNzb3IudXBkYXRlKHByZWZlcmVuY2VLZXksIEpTT04uc3RyaW5naWZ5KG5ld1ByZWZzKSlcbiAgICAgICAgICA6IG9mKG5ld1ByZWZzKVxuICAgICAgICApLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5yZWZyZXNoKHByZWZlcmVuY2VLZXkpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpXG4gIH1cblxuICAvLyBwdWJsaWMgd2l0aENvbHVtblByZWZlcmVuY2VzPFQ+KHByZWZlcmVuY2VLZXk6IHN0cmluZywgY29sdW1uczogVFtdKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgLy8gICByZXR1cm4gdGhpcy5wcmVmZXJlbmNlcyhwcmVmZXJlbmNlS2V5KS5waXBlKFxuICAvLyAgICAgc3RhcnRXaXRoKEVNUFRZX0RBVEFUQUJMRV9QUkVGRVJFTkNFUyksXG4gIC8vICAgICBtYXAocHJlZmVyZW5jZXMgPT4gcHJlZmVyZW5jZXMgJiYgcHJlZmVyZW5jZXMuY29sdW1uc1xuICAvLyAgICAgICA/IHdpdGhTdG9yZWRDb2x1bW5JbmZvKGNvbHVtbnMsIHByZWZlcmVuY2VzLmNvbHVtbnMpIGFzIFRbXVxuICAvLyAgICAgICA6IGNvbHVtbnNcbiAgLy8gICAgIClcbiAgLy8gICApXG4gIC8vIH1cblxuICBwcml2YXRlIF9kZXNjZXJpYWxpemVQcmVmZXJlbmNlcyhzZXJpYWxpemVkOiBzdHJpbmcpOiBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXMge1xuICAgIGNvbnN0IHByZWZzID0gSlNPTi5wYXJzZShzZXJpYWxpemVkKVxuXG4gICAgLy8gVE9ETzogSW1wbGVtZW50IG1pZ3JhdGlvblxuXG4gICAgcmV0dXJuIHByZWZzXG4gIH1cblxufVxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLXByZWZlcmVuY2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL3NlcnZpY2VzL2RhdGF0YWJsZS1wcmVmZXJlbmNlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1RCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUkxRCxPQUFPLEVBQUUscUNBQXFDLEVBQUUsMkJBQTJCLEVBQStCLE1BQU0sdUJBQXVCLENBQUE7QUFDdkksT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sMENBQTBDLENBQUE7OztBQU1qRyxNQUFNLE9BQU8sMkJBQTJCO0lBV3RDLFlBQ21CLG1CQUFxRCxFQUNGLGNBQTJDO1FBRDlGLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBa0M7UUFDRixtQkFBYyxHQUFkLGNBQWMsQ0FBNkI7UUFYakgsMkVBQTJFO1FBQzNFLDhFQUE4RTtRQUM5RSxzQkFBc0I7UUFFdEI7O1dBRUc7UUFDSyxhQUFRLEdBQUcsS0FBSyxDQUFBO0lBS3BCLENBQUM7SUFFRSxTQUFTLENBQUMsYUFBcUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVNLFFBQVEsQ0FBQyxhQUFxQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTyxLQUFLLENBQUE7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBRU0sV0FBVyxDQUFDLGFBQXFCO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNuRTtRQUVELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDLElBQUksQ0FDL0csR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzVDLE9BQU8sS0FBSyxDQUFBO2FBQ2I7WUFDRCxNQUFNLEtBQUssQ0FBQyx3QkFBd0IsYUFBYSx5Q0FBeUMsQ0FBQyxDQUFBO1FBQzdGLENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRU0sT0FBTyxDQUFDLGFBQXFCO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVNLGNBQWMsQ0FBQyxhQUFxQixFQUFFLFdBQXFDO1FBQzlFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLE9BQU07U0FDUDtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDVixxRUFBcUU7WUFDckUsaURBQWlEO1lBQ2pELGtFQUFrRTtZQUNsRSxvRUFBb0U7WUFDcEUsa0NBQWtDO1lBQ2xDLGtCQUFrQjtZQUNsQixrRkFBa0Y7WUFDbEYsd0VBQXdFO1lBQ3hFLGdHQUFnRztZQUNoRywyRUFBMkU7WUFDM0UsV0FBVztZQUNYLGdDQUFnQztZQUNoQyxJQUFJO1lBQ0osc0VBQXNFO1lBQ3RFLGtCQUFrQjtZQUVsQixNQUFNLFFBQVEsR0FBZ0M7Z0JBQzVDLEdBQUcsMkJBQTJCO2dCQUM5QixXQUFXO2FBQ1osQ0FBQTtZQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1lBQ3JCLE9BQU8sUUFBUSxDQUFBO1FBQ2pCLENBQUMsQ0FBQztRQUNGLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQ2YsRUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUN2QzthQUNBLFNBQVMsRUFBRSxDQUFBO0lBQ2hCLENBQUM7SUFFTyw0QkFBNEIsQ0FBQyxLQUE2QjtRQUNoRSxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUsscUNBQXFDLENBQUE7SUFDaEUsQ0FBQzs7d0hBMUZVLDJCQUEyQixrRUFhaEIsc0NBQXNDOzRIQWJqRCwyQkFBMkIsY0FGMUIsTUFBTTsyRkFFUCwyQkFBMkI7a0JBSHZDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFjSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBUaGVTZWFtUHJlZmVyZW5jZXNBY2Nlc3NvciwgVGhlU2VhbVByZWZlcmVuY2VzQmFzZSwgVGhlU2VhbVByZWZlcmVuY2VzTWFuYWdlclNlcnZpY2UgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vc2VydmljZXMnXG5cbmltcG9ydCB7IENVUlJFTlRfREFUQVRBQkxFX1BSRUZFUkVOQ0VTX1ZFUlNJT04sIEVNUFRZX0RBVEFUQUJMRV9QUkVGRVJFTkNFUywgVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzIH0gZnJvbSAnLi4vbW9kZWxzL3ByZWZlcmVuY2VzJ1xuaW1wb3J0IHsgVEhFU0VBTV9EQVRBVEFCTEVfUFJFRkVSRU5DRVNfQUNDRVNTT1IgfSBmcm9tICcuLi90b2tlbnMvZGF0YXRhYmxlLXByZWZlcmVuY2VzLWFjY2Vzc29yJ1xuaW1wb3J0IHsgQ29sdW1uc0FsdGVyYXRpb25TdGF0ZSB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb24nXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERhdGF0YWJsZVByZWZlcmVuY2VzU2VydmljZSB7XG5cbiAgLy8gVE9ETzogUmVtb3ZlIHRoZSBuZWVkIGZvciB0aGlzIGludGVybmFsIHBlbmRpbmcgZmxhZy4gSSBvbmx5IGtlcHQgaXQgZm9yXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB1bnRpbCBiZXR0ZXIgdGVzdHMgYXJlIGFkZGVkIHRvIG1ha2Ugc3VyZSBpZiBpc24ndFxuICAvLyBuZWNjZXNzYXJ5IGFueW1vcmUuXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gcHJldmVudCBtdWx0aXBsZSB1cGRhdGVzIGZyb20gaGFwcGVuaW5nIGF0IHRoZSBzYW1lIHRpbWUsIGJ1dCBpdCBpcyBub3QgcGVyIGtleS5cbiAgICovXG4gIHByaXZhdGUgX3BlbmRpbmcgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZlcmVuY2VzTWFuYWdlcjogVGhlU2VhbVByZWZlcmVuY2VzTWFuYWdlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVTRUFNX0RBVEFUQUJMRV9QUkVGRVJFTkNFU19BQ0NFU1NPUikgcHJpdmF0ZSBfcHJlZnNBY2Nlc3Nvcj86IFRoZVNlYW1QcmVmZXJlbmNlc0FjY2Vzc29yXG4gICkgeyB9XG5cbiAgcHVibGljIGlzUGVuZGluZyhwcmVmZXJlbmNlS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZyB8fCB0aGlzLl9wcmVmZXJlbmNlc01hbmFnZXIuaXNQZW5kaW5nKHByZWZlcmVuY2VLZXkpXG4gIH1cblxuICBwdWJsaWMgaXNMb2FkZWQocHJlZmVyZW5jZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX3BlbmRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcHJlZmVyZW5jZXNNYW5hZ2VyLmlzTG9hZGVkKHByZWZlcmVuY2VLZXkpXG4gIH1cblxuICBwdWJsaWMgcHJlZmVyZW5jZXMocHJlZmVyZW5jZUtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXM+IHtcbiAgICBpZiAoIXRoaXMuX3ByZWZzQWNjZXNzb3IpIHtcbiAgICAgIHJldHVybiBvZihKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KEVNUFRZX0RBVEFUQUJMRV9QUkVGRVJFTkNFUykpKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wcmVmZXJlbmNlc01hbmFnZXIucHJlZmVyZW5jZXMocHJlZmVyZW5jZUtleSwgdGhpcy5fcHJlZnNBY2Nlc3NvciwgRU1QVFlfREFUQVRBQkxFX1BSRUZFUkVOQ0VTKS5waXBlKFxuICAgICAgbWFwKHByZWZzID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2lzVmFsaWREYXRhdGFibGVQcmVmZXJlbmNlcyhwcmVmcykpIHtcbiAgICAgICAgICByZXR1cm4gcHJlZnNcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgUHJlZmVyZW5jZXMgZm9yIGtleSAnJHtwcmVmZXJlbmNlS2V5fScgaXMgbm90IGEgdmFsaWQgZGF0YXRhYmxlIHByZWZlcmVuY2VzLmApXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKHByZWZlcmVuY2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3ByZWZlcmVuY2VzTWFuYWdlci5yZWZyZXNoKHByZWZlcmVuY2VLZXkpXG4gIH1cblxuICBwdWJsaWMgc2V0QWx0ZXJhdGlvbnMocHJlZmVyZW5jZUtleTogc3RyaW5nLCBhbHRlcmF0aW9uczogQ29sdW1uc0FsdGVyYXRpb25TdGF0ZVtdKTogdm9pZCB7XG4gICAgICBpZiAoIXRoaXMuX3ByZWZzQWNjZXNzb3IpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3BlbmRpbmcgPSB0cnVlXG4gICAgICB0aGlzLnByZWZlcmVuY2VzKHByZWZlcmVuY2VLZXkpLnBpcGUoXG4gICAgICAgIG1hcChwcmVmcyA9PiB7XG4gICAgICAgICAgLy8gTWFraW5nIHRoZSBwcmVmZXJlbmNlcyBpbW11dGFibGUgbWF5IG5vdCBiZSBuZWNlc3NhcnksIGJ1dCBmb3Igbm93XG4gICAgICAgICAgLy8gdGhpcyBvYmotPnN0ci0+b2JqIHdpbGwgd29yayBhcyBhIG5haXZlIGNsb25lLlxuICAgICAgICAgIC8vIGNvbnN0IGNvbHVtbnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByZWZzLmNvbHVtbnMgfHwgW10pKVxuICAgICAgICAgIC8vIGNvbnN0IF9jb2xQcmVmID0gY29sdW1ucy5maW5kKChjOiBhbnkpID0+IGMucHJvcCA9PT0gY29sdW1uLnByb3ApXG4gICAgICAgICAgLy8gLy8gY29uc29sZS5sb2coJ2hhcycsIF9jb2xQcmVmKVxuICAgICAgICAgIC8vIGlmIChfY29sUHJlZikge1xuICAgICAgICAgIC8vICAgLy8gY29uc29sZS5sb2coJ2hhc1Byb3BlcnR5KGNvbHVtbiwgXCJ3aWR0aFwiKSknLCBoYXNQcm9wZXJ0eShjb2x1bW4sICd3aWR0aCcpKVxuICAgICAgICAgIC8vICAgaWYgKGhhc1Byb3BlcnR5KGNvbHVtbiwgJ3dpZHRoJykpIHsgX2NvbFByZWYud2lkdGggPSBjb2x1bW4ud2lkdGggfVxuICAgICAgICAgIC8vICAgaWYgKGhhc1Byb3BlcnR5KGNvbHVtbiwgJ2NhbkF1dG9SZXNpemUnKSkgeyBfY29sUHJlZi5jYW5BdXRvUmVzaXplID0gY29sdW1uLmNhbkF1dG9SZXNpemUgfVxuICAgICAgICAgIC8vICAgaWYgKGhhc1Byb3BlcnR5KGNvbHVtbiwgJ2hpZGRlbicpKSB7IF9jb2xQcmVmLmhpZGRlbiA9IGNvbHVtbi5oaWRkZW4gfVxuICAgICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgLy8gICBjb2x1bW5zLnB1c2goeyAuLi5jb2x1bW4gfSlcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgLy8gY29uc3QgbmV3UHJlZnM6IFRoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlcyA9IHsgLi4ucHJlZnMsIGNvbHVtbnMgfVxuICAgICAgICAgIC8vIHJldHVybiBuZXdQcmVmc1xuXG4gICAgICAgICAgY29uc3QgbmV3UHJlZnM6IFRoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlcyA9IHtcbiAgICAgICAgICAgIC4uLkVNUFRZX0RBVEFUQUJMRV9QUkVGRVJFTkNFUyxcbiAgICAgICAgICAgIGFsdGVyYXRpb25zXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX3BlbmRpbmcgPSBmYWxzZVxuICAgICAgICAgIHJldHVybiBuZXdQcmVmc1xuICAgICAgICB9KSxcbiAgICAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ25ld1ByZWZzJywgdikpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAobmV3UHJlZnMgPT4gdGhpcy5fcHJlZnNBY2Nlc3NvclxuICAgICAgICAgID8gdGhpcy5fcHJlZnNBY2Nlc3Nvci51cGRhdGUocHJlZmVyZW5jZUtleSwgSlNPTi5zdHJpbmdpZnkobmV3UHJlZnMpKVxuICAgICAgICAgIDogb2YobmV3UHJlZnMpXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnJlZnJlc2gocHJlZmVyZW5jZUtleSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKClcbiAgfVxuXG4gIHByaXZhdGUgX2lzVmFsaWREYXRhdGFibGVQcmVmZXJlbmNlcyhwcmVmczogVGhlU2VhbVByZWZlcmVuY2VzQmFzZSk6IHByZWZzIGlzIFRoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlcyB7XG4gICAgcmV0dXJuIHByZWZzLnZlcnNpb24gPT09IENVUlJFTlRfREFUQVRBQkxFX1BSRUZFUkVOQ0VTX1ZFUlNJT05cbiAgfVxuXG59XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const THESEAM_DATATABLE_PREFERENCES_ACCESSOR = new InjectionToken('TheSeamDatatablePreferencesAccessor');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLXByZWZlcmVuY2VzLWFjY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS90b2tlbnMvZGF0YXRhYmxlLXByZWZlcmVuY2VzLWFjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFJOUMsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsSUFBSSxjQUFjLENBQ3RFLHFDQUFxQyxDQUN0QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXNBY2Nlc3NvciB9IGZyb20gJy4uL21vZGVscy9wcmVmZXJlbmNlcy1hY2Nlc3NvcidcblxuZXhwb3J0IGNvbnN0IFRIRVNFQU1fREFUQVRBQkxFX1BSRUZFUkVOQ0VTX0FDQ0VTU09SID0gbmV3IEluamVjdGlvblRva2VuPFRoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlc0FjY2Vzc29yPihcbiAgJ1RoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlc0FjY2Vzc29yJ1xuKVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLXByZWZlcmVuY2VzLWFjY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS90b2tlbnMvZGF0YXRhYmxlLXByZWZlcmVuY2VzLWFjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFJOUMsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsSUFBSSxjQUFjLENBQ3RFLHFDQUFxQyxDQUN0QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBUaGVTZWFtUHJlZmVyZW5jZXNBY2Nlc3NvciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9zZXJ2aWNlcydcblxuZXhwb3J0IGNvbnN0IFRIRVNFQU1fREFUQVRBQkxFX1BSRUZFUkVOQ0VTX0FDQ0VTU09SID0gbmV3IEluamVjdGlvblRva2VuPFRoZVNlYW1QcmVmZXJlbmNlc0FjY2Vzc29yPihcbiAgJ1RoZVNlYW1EYXRhdGFibGVQcmVmZXJlbmNlc0FjY2Vzc29yJ1xuKVxuIl19
@@ -1,8 +1,9 @@
1
1
  import { ComponentPortal } from '@angular/cdk/portal';
2
- import { Injectable, isDevMode } from '@angular/core';
2
+ import { Injectable, Injector, isDevMode } from '@angular/core';
3
3
  import { BehaviorSubject, combineLatest, of } from 'rxjs';
4
4
  import { auditTime, map, mapTo, shareReplay, switchMap, take, tap } from 'rxjs/operators';
5
5
  import { notNullOrUndefined } from '@theseam/ui-common/utils';
6
+ import { THESEAM_WIDGET_DATA } from '@theseam/ui-common/widget';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@theseam/ui-common/dynamic-component-loader";
8
9
  import * as i2 from "./dashboard-widgets-preferences.service";
@@ -77,10 +78,15 @@ export class DashboardWidgetsService {
77
78
  }
78
79
  createWidgetPortal(def, vcr) {
79
80
  if (typeof def.component === 'string') {
81
+ const injector = Injector.create({ providers: [
82
+ { provide: THESEAM_WIDGET_DATA, useValue: { widgetId: def.widgetId } }
83
+ ], parent: this._viewContainerRefSubject.value?.injector });
80
84
  return this._dynamicComponentLoaderModule
81
85
  .getComponentFactory(def.component)
82
86
  .pipe(map(componentFactory => {
83
- return new ComponentPortal(componentFactory.componentType, vcr, undefined, componentFactory /* ComponentFactoryBoundToModule */.ngModule.componentFactoryResolver);
87
+ return new ComponentPortal(componentFactory.componentType, vcr,
88
+ // undefined,
89
+ injector, componentFactory /* ComponentFactoryBoundToModule */.ngModule.componentFactoryResolver);
84
90
  }), take(1));
85
91
  }
86
92
  return def.componentFactoryResolver
@@ -169,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
169
175
  providedIn: 'root'
170
176
  }]
171
177
  }], ctorParameters: function () { return [{ type: i1.TheSeamDynamicComponentLoader }, { type: i2.DashboardWidgetsPreferencesService }]; } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXdpZGdldHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mcmFtZXdvcmsvZGFzaGJvYXJkL2Rhc2hib2FyZC13aWRnZXRzL2Rhc2hib2FyZC13aWRnZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBR3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBOzs7O0FBYTdELE1BQU0sT0FBTyx1QkFBdUI7SUFTbEMsSUFBSSxPQUFPLEtBQWlDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQ3hFLElBQUksT0FBTyxDQUFDLEtBQWlDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRzVFLElBQUksVUFBVSxLQUFhLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQzFELElBQUksVUFBVSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDN0I7SUFDSCxDQUFDO0lBU0QsWUFDbUIsNkJBQTRELEVBQzVELFlBQWdEO1FBRGhELGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBK0I7UUFDNUQsaUJBQVksR0FBWixZQUFZLENBQW9DO1FBM0JuRCxrQkFBYSxHQUFXLG1CQUFtQixDQUFBO1FBRTNDLHNCQUFpQixHQUFXLENBQUMsQ0FBQTtRQUU3QyxnRkFBZ0Y7UUFDaEUsa0JBQWEsR0FBVyxDQUFDLENBQUE7UUFJakMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUE2QixFQUFFLENBQUMsQ0FBQTtRQVE5RCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBTXhELDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUErQixTQUFTLENBQUMsQ0FBQTtRQU10RyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFbEQsbUNBQW1DO1FBQ25DLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxDQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFFLENBQUM7YUFDbEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV4RSxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsQ0FBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBRSxDQUFDO2FBQ25FLElBQUk7UUFDSCxtRUFBbUU7UUFDbkUsc0VBQXNFO1FBQ3RFLHFFQUFxRTtRQUNyRSxvREFBb0Q7UUFDcEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLFNBQVMsQ0FBQyxDQUFDLENBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBRSxFQUFFLEVBQUUsQ0FDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNuRixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUMxRSxDQUNGLEVBQ0QsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDL0MsQ0FBQTtRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVk7YUFDcEMsSUFBSSxDQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDekMsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDL0MsQ0FBQTtJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsVUFBa0I7UUFDcEMsT0FBTyxXQUFXLFVBQVUsRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxHQUFpQztRQUMxRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFnQyxFQUFFLEdBQXNCO1FBQy9FLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQy9FLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDekYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFDOUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1YsSUFBSSxTQUFTLEVBQUUsRUFBRTtnQkFDZixNQUFNLEdBQUcsR0FBYSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRTtvQkFDdEMsc0NBQXNDO29CQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLDhFQUE4RSxDQUFDLENBQUE7aUJBQzdGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEdBQTZCLEVBQUUsR0FBc0I7UUFDM0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksT0FBTyxHQUFHLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEYsSUFBSSxTQUFTLEVBQUUsRUFBRTtnQkFDZixzQ0FBc0M7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0VBQStFLEVBQUUsR0FBRyxDQUFDLENBQUE7YUFDbkc7WUFDRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUNyQjtRQUVELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzNDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDYixHQUFHLEdBQUc7WUFDTixHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUNsQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDO1lBQ3JCLE1BQU07WUFDTixTQUFTLEVBQUUsR0FBRztTQUNmLENBQUMsQ0FBQyxDQUNKLENBQUE7SUFDSCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsR0FBNkIsRUFBRSxHQUFzQjtRQUM3RSxJQUFJLE9BQU8sR0FBRyxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUMsNkJBQTZCO2lCQUN0QyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO2lCQUNsQyxJQUFJLENBQ0gsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQ3JCLE9BQU8sSUFBSSxlQUFlLENBQ3hCLGdCQUFnQixDQUFDLGFBQWEsRUFDOUIsR0FBRyxFQUNILFNBQVMsRUFDUixnQkFBdUIsQ0FBQyxtQ0FBb0MsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQ2hHLENBQUE7WUFDSCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQTtTQUNKO1FBRUQsT0FBTyxHQUFHLENBQUMsd0JBQXdCO1lBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3RGLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNULEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzNDLENBQUMsQ0FBQyxDQUFDLEVBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUNqQixDQUFBO0lBQ0wsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUE4QjtRQUNuRCxJQUFJLE9BQU8sR0FBb0MsRUFBRSxDQUFBO1FBRWpELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1NBQ3ZDO1FBRUQsTUFBTSxXQUFXLEdBQTRCLEVBQUUsQ0FBQTtRQUUvQyxnQ0FBZ0M7UUFDaEMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsTUFBTSxHQUFHLEdBQThDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMvRixJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNSLHNEQUFzRDtnQkFDdEQsc0JBQXNCO2dCQUN0Qiw4RkFBOEY7Z0JBQzlGLGdCQUFnQjtnQkFDaEIsNEJBQTRCO2dCQUM1QixNQUFNO2dCQUNOLCtDQUErQztnQkFDL0Msa0hBQWtIO2dCQUNsSCxrQkFBa0I7Z0JBQ2xCLDhCQUE4QjtnQkFDOUIsTUFBTTtnQkFDTixJQUFJO2dCQUNKLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7YUFDdkI7aUJBQU07Z0JBQ0wsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7YUFDckI7U0FDRjtRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUUzQixNQUFNLEdBQUcsR0FBOEMsT0FBTztpQkFDM0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRTlDLElBQUksR0FBRyxFQUFFO2dCQUNQLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO2FBQ3JCO1NBQ0Y7UUFFRCxlQUFlO1FBQ2YsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVyRCxxQkFBcUI7UUFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUVuRSxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRU0scUJBQXFCLENBQUMsS0FBOEIsRUFBRSxNQUE0QztRQUN2RyxNQUFNLE1BQU0sR0FBNEIsRUFBRSxDQUFBO1FBRTFDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDckUsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixHQUFHLElBQUk7Z0JBQ1AsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7YUFDcEIsQ0FBQyxDQUFBO1NBQ0g7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFTSxlQUFlO1FBQ3BCLDBFQUEwRTtRQUMxRSwwRUFBMEU7UUFDMUUsc0JBQXNCO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNyQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBRSxFQUE4QjthQUMzQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEYsQ0FDRixDQUFBO1FBRUQsT0FBTyxhQUFhLENBQUMsQ0FBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUNyRCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxDQUFDLENBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBRSxFQUFFLEVBQUU7WUFDbEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN4RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2xDLEtBQUs7YUFDTixDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsRUFDRixLQUFLLENBQUMsU0FBUyxDQUFDLENBQ2pCLENBQUE7SUFDSCxDQUFDOztvSEFqT1UsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCdcbmltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGF1ZGl0VGltZSwgbWFwLCBtYXBUbywgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IFRoZVNlYW1EeW5hbWljQ29tcG9uZW50TG9hZGVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2R5bmFtaWMtY29tcG9uZW50LWxvYWRlcidcbmltcG9ydCB7IG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHtcbiAgSURhc2hib2FyZFdpZGdldEl0ZW1MYXlvdXRQcmVmZXJlbmNlLFxuICBJRGFzaGJvYXJkV2lkZ2V0c0NvbHVtblJlY29yZCxcbiAgSURhc2hib2FyZFdpZGdldHNJdGVtLFxuICBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1EZWZcbn0gZnJvbSAnLi9kYXNoYm9hcmQtd2lkZ2V0cy1pdGVtJ1xuaW1wb3J0IHsgRGFzaGJvYXJkV2lkZ2V0c1ByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLXdpZGdldHMtcHJlZmVyZW5jZXMuc2VydmljZSdcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkV2lkZ2V0c1NlcnZpY2Uge1xuXG4gIHB1YmxpYyByZWFkb25seSBwcmVmZXJlbmNlS2V5OiBzdHJpbmcgPSAnZGF0YXRhYmxlLXdpZGdldHMnXG5cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHROdW1Db2x1bW5zOiBudW1iZXIgPSAzXG5cbiAgLyoqIFVzZWQgZm9yIG9wZXJhdGlvbnMsIHN1Y2ggYXMgJ2FkZFdpZGdldCcsIGlmIHRoZSBjb2x1bW4gaXMgbm90IHNwZWNpZmllZC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRDb2x1bW46IG51bWJlciA9IDBcblxuICBnZXQgd2lkZ2V0cygpOiBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1EZWZbXSB7IHJldHVybiB0aGlzLl93aWRnZXRzLnZhbHVlIH1cbiAgc2V0IHdpZGdldHModmFsdWU6IElEYXNoYm9hcmRXaWRnZXRzSXRlbURlZltdKSB7IHRoaXMuX3dpZGdldHMubmV4dCh2YWx1ZSkgfVxuICBwcml2YXRlIF93aWRnZXRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1EZWZbXT4oW10pXG5cbiAgZ2V0IG51bUNvbHVtbnMoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX251bUNvbHVtbnMudmFsdWUgfVxuICBzZXQgbnVtQ29sdW1ucyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9udW1Db2x1bW5zLnZhbHVlKSB7XG4gICAgICB0aGlzLl9udW1Db2x1bW5zLm5leHQodmFsdWUpXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX251bUNvbHVtbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odGhpcy5kZWZhdWx0TnVtQ29sdW1ucylcblxuICBwdWJsaWMgcmVhZG9ubHkgbnVtQ29sdW1ucyQ6IE9ic2VydmFibGU8bnVtYmVyPlxuICBwdWJsaWMgcmVhZG9ubHkgd2lkZ2V0SXRlbXMkOiBPYnNlcnZhYmxlPElEYXNoYm9hcmRXaWRnZXRzSXRlbVtdPlxuICBwdWJsaWMgcmVhZG9ubHkgd2lkZ2V0Q29sdW1ucyQ6IE9ic2VydmFibGU8SURhc2hib2FyZFdpZGdldHNDb2x1bW5SZWNvcmRbXT5cblxuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRMb2FkZXJNb2R1bGU6IFRoZVNlYW1EeW5hbWljQ29tcG9uZW50TG9hZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZlcmVuY2VzOiBEYXNoYm9hcmRXaWRnZXRzUHJlZmVyZW5jZXNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubnVtQ29sdW1ucyQgPSB0aGlzLl9udW1Db2x1bW5zLmFzT2JzZXJ2YWJsZSgpXG5cbiAgICAvLyBXaWRnZXQgaXRlbXMgd2l0aG91dCBwcmVmZXJlbmNlc1xuICAgIGNvbnN0IF93aWRnZXRJdGVtcyQgPSBjb21iaW5lTGF0ZXN0KFsgdGhpcy5fd2lkZ2V0cywgdGhpcy5fdmlld0NvbnRhaW5lclJlZlN1YmplY3QgXSlcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoWyBkZWZzLCB2Y3IgXSkgPT4gdGhpcy5jcmVhdGVXaWRnZXRJdGVtcyhkZWZzLCB2Y3IpKSlcblxuICAgIC8vIFdpZGdldCBpdGVtcyB3aXRoIHByZWZlcmVuY2VzXG4gICAgdGhpcy53aWRnZXRJdGVtcyQgPSBjb21iaW5lTGF0ZXN0KFsgX3dpZGdldEl0ZW1zJCwgdGhpcy5udW1Db2x1bW5zJCBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIFdhaXQgdW50aWwgdGhlIGN1cnJlbnQgdGljayBpcyBkb25lLCBpbmNhc2UgYm90aCB0aGUgd2lkZ2V0cyBhbmRcbiAgICAgICAgLy8gbnVtYmVyIG9mIGNvbHVtbnMgYXJlIHNldCBkdXJyaW5nIHRoZSBzYW1lIHRpY2suIFdpdGhvdXQgdGhlIGF1ZGl0LFxuICAgICAgICAvLyB0aGlzIHdvdWxkIGdldCBjYWxsZWQgdHdpY2Ugd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkIHdpdGhcbiAgICAgICAgLy8gYm90aCBpbnB1dHMgc2V0IG9uZSBhZnRlciB0aGUgb3RoZXIgaW5kaXZpZHVhbGx5LlxuICAgICAgICBhdWRpdFRpbWUoMCksXG4gICAgICAgIHN3aXRjaE1hcCgoWyBpdGVtcywgbnVtQ29sdW1ucyBdKSA9PlxuICAgICAgICAgIHRoaXMuX3ByZWZlcmVuY2VzLnNlbGVjdExheW91dCh0aGlzLnByZWZlcmVuY2VLZXksIHRoaXMuX2xheW91dE5hbWUobnVtQ29sdW1ucykpLnBpcGUoXG4gICAgICAgICAgICBtYXAobGF5b3V0ID0+IGxheW91dCA/IHRoaXMud2l0aExheW91dFByZWZlcmVuY2VzKGl0ZW1zLCBsYXlvdXQpIDogaXRlbXMpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgICApXG5cbiAgICB0aGlzLndpZGdldENvbHVtbnMkID0gdGhpcy53aWRnZXRJdGVtcyRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoaXRlbXMgPT4gdGhpcy50b0NvbHVtblJlY29yZHMoaXRlbXMpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBfbGF5b3V0TmFtZShudW1Db2x1bW5zOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgY29sdW1ucy0ke251bUNvbHVtbnN9YFxuICB9XG5cbiAgcHVibGljIHNldFZpZXdDb250YWluZXJSZWYodmNyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZlN1YmplY3QubmV4dCh2Y3IpXG4gIH1cblxuICBwdWJsaWMgY3JlYXRlV2lkZ2V0SXRlbXMoZGVmczogSURhc2hib2FyZFdpZGdldHNJdGVtRGVmW10sIHZjcj86IFZpZXdDb250YWluZXJSZWYpOiBPYnNlcnZhYmxlPElEYXNoYm9hcmRXaWRnZXRzSXRlbVtdPiB7XG4gICAgY29uc3QgX2NyZWF0ZU9ic2VydmFibGVzID0gKGRlZnMgfHwgW10pLm1hcChkID0+IHRoaXMuY3JlYXRlV2lkZ2V0SXRlbShkLCB2Y3IpKVxuICAgIGNvbnN0IGl0ZW1zJCA9IF9jcmVhdGVPYnNlcnZhYmxlcy5sZW5ndGggPiAwID8gY29tYmluZUxhdGVzdChfY3JlYXRlT2JzZXJ2YWJsZXMpIDogb2YoW10pXG4gICAgcmV0dXJuIGl0ZW1zJC5waXBlKFxuICAgICAgbWFwKGl0ZW1zID0+IGl0ZW1zLmZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpKSxcbiAgICAgIHRhcChpdGVtcyA9PiB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSBpdGVtcy5tYXAodiA9PiB2LndpZGdldElkKVxuICAgICAgICAgIGlmICgobmV3IFNldChpZHMpKS5zaXplICE9PSBpZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbRGFzaGJvYXJkV2lkZ2V0c1NlcnZpY2VdIER1cGxpY2F0ZSB3aWRnZXQncyB3aXRoIHRoZSBzYW1lICd3aWRnZXRJZCcgZm91bmQuYClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZVdpZGdldEl0ZW0oZGVmOiBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1EZWYsIHZjcj86IFZpZXdDb250YWluZXJSZWYpOiBPYnNlcnZhYmxlPElEYXNoYm9hcmRXaWRnZXRzSXRlbSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghZGVmLndpZGdldElkIHx8IHR5cGVvZiBkZWYud2lkZ2V0SWQgIT09ICdzdHJpbmcnIHx8IGRlZi53aWRnZXRJZC5sZW5ndGggPCAxKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKGBbRGFzaGJvYXJkV2lkZ2V0c1NlcnZpY2VdIFdpZGdldCBpZ25vcmVkLiBBbGwgd2lkZ2V0cyBtdXN0IGhhdmUgYSAnd2lkZ2V0SWQnLmAsIGRlZilcbiAgICAgIH1cbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlV2lkZ2V0UG9ydGFsKGRlZiwgdmNyKS5waXBlKFxuICAgICAgbWFwKHBvcnRhbCA9PiAoe1xuICAgICAgICAuLi5kZWYsXG4gICAgICAgIGNvbDogZGVmLmNvbCB8fCB0aGlzLmRlZmF1bHRDb2x1bW4sXG4gICAgICAgIG9yZGVyOiBkZWYub3JkZXIgfHwgMCxcbiAgICAgICAgcG9ydGFsLFxuICAgICAgICBfX2l0ZW1EZWY6IGRlZlxuICAgICAgfSkpXG4gICAgKVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZVdpZGdldFBvcnRhbChkZWY6IElEYXNoYm9hcmRXaWRnZXRzSXRlbURlZiwgdmNyPzogVmlld0NvbnRhaW5lclJlZik6IE9ic2VydmFibGU8Q29tcG9uZW50UG9ydGFsPGFueT4+IHtcbiAgICBpZiAodHlwZW9mIGRlZi5jb21wb25lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZHluYW1pY0NvbXBvbmVudExvYWRlck1vZHVsZVxuICAgICAgICAuZ2V0Q29tcG9uZW50RmFjdG9yeShkZWYuY29tcG9uZW50KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoY29tcG9uZW50RmFjdG9yeSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbChcbiAgICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeS5jb21wb25lbnRUeXBlLFxuICAgICAgICAgICAgICB2Y3IsXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgKGNvbXBvbmVudEZhY3RvcnkgYXMgYW55IC8qIENvbXBvbmVudEZhY3RvcnlCb3VuZFRvTW9kdWxlICovKS5uZ01vZHVsZS5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICAgICAgPyBvZihuZXcgQ29tcG9uZW50UG9ydGFsKGRlZi5jb21wb25lbnQsIHZjciwgdW5kZWZpbmVkLCBkZWYuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSlcbiAgICAgIDogb2YobmV3IENvbXBvbmVudFBvcnRhbChkZWYuY29tcG9uZW50LCB2Y3IpKVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZU9yZGVyKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLndpZGdldENvbHVtbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFwKGNvbHVtbnMgPT4gY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgbGV0IGkgPSAwXG4gICAgICAgICAgY29sLml0ZW1zLmZvckVhY2goaXRtID0+IGl0bS5vcmRlciA9IGkrKylcbiAgICAgICAgfSkpLFxuICAgICAgICBtYXBUbyh1bmRlZmluZWQpXG4gICAgICApXG4gIH1cblxuICBwdWJsaWMgdG9Db2x1bW5SZWNvcmRzKGl0ZW1zOiBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1bXSk6IElEYXNoYm9hcmRXaWRnZXRzQ29sdW1uUmVjb3JkW10ge1xuICAgIGxldCBjb2x1bW5zOiBJRGFzaGJvYXJkV2lkZ2V0c0NvbHVtblJlY29yZFtdID0gW11cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5udW1Db2x1bW5zOyBpKyspIHtcbiAgICAgIGNvbHVtbnMucHVzaCh7IGNvbHVtbjogaSwgaXRlbXM6IFtdIH0pXG4gICAgfVxuXG4gICAgY29uc3QgY29sTm90Rm91bmQ6IElEYXNoYm9hcmRXaWRnZXRzSXRlbVtdID0gW11cblxuICAgIC8vIERpc3RyaWJ1dGUgaXRlbXMgaW50byBjb2x1bW5zXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBjb25zdCBjb2w6IElEYXNoYm9hcmRXaWRnZXRzQ29sdW1uUmVjb3JkIHwgdW5kZWZpbmVkID0gY29sdW1ucy5maW5kKGMgPT4gYy5jb2x1bW4gPT09IGl0ZW0uY29sKVxuICAgICAgaWYgKCFjb2wpIHtcbiAgICAgICAgLy8gY29sdW1ucy5wdXNoKHsgY29sdW1uOiBpdGVtLmNvbCwgaXRlbXM6IFsgaXRlbSBdIH0pXG4gICAgICAgIC8vIGlmIChpdGVtLmNvbCA8IDApIHtcbiAgICAgICAgLy8gICBjb25zdCBjb2wwOiBJRGFzaGJvYXJkV2lkZ2V0c0NvbHVtblJlY29yZCB8IHVuZGVmaW5lZCA9IGNvbHVtbnMuZmluZChjID0+IGMuY29sdW1uID09PSAwKVxuICAgICAgICAvLyAgIGlmIChjb2wwKSB7XG4gICAgICAgIC8vICAgICBjb2wwLml0ZW1zLnB1c2goaXRlbSlcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vIH0gZWxzZSBpZiAoaXRlbS5jb2wgPiB0aGlzLm51bUNvbHVtbnMgLSAxKSB7XG4gICAgICAgIC8vICAgY29uc3QgY29sTWF4OiBJRGFzaGJvYXJkV2lkZ2V0c0NvbHVtblJlY29yZCB8IHVuZGVmaW5lZCA9IGNvbHVtbnMuZmluZChjID0+IGMuY29sdW1uID09PSB0aGlzLm51bUNvbHVtbnMgLSAxKVxuICAgICAgICAvLyAgIGlmIChjb2xNYXgpIHtcbiAgICAgICAgLy8gICAgIGNvbE1heC5pdGVtcy5wdXNoKGl0ZW0pXG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9XG4gICAgICAgIGNvbE5vdEZvdW5kLnB1c2goaXRlbSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbC5pdGVtcy5wdXNoKGl0ZW0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xOb3RGb3VuZC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGNvbE5vdEZvdW5kW2ldXG5cbiAgICAgIGNvbnN0IGNvbDogSURhc2hib2FyZFdpZGdldHNDb2x1bW5SZWNvcmQgfCB1bmRlZmluZWQgPSBjb2x1bW5zXG4gICAgICAgIC5maW5kKGMgPT4gYy5jb2x1bW4gPT09IGkgJSB0aGlzLm51bUNvbHVtbnMpXG5cbiAgICAgIGlmIChjb2wpIHtcbiAgICAgICAgY29sLml0ZW1zLnB1c2goaXRlbSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTb3J0IGNvbHVtbnNcbiAgICBjb2x1bW5zID0gY29sdW1ucy5zb3J0KChhLCBiKSA9PiBhLmNvbHVtbiAtIGIuY29sdW1uKVxuXG4gICAgLy8gU29ydCBjb2x1bW5zIGl0ZW1zXG4gICAgY29sdW1ucy5mb3JFYWNoKGNvbCA9PiBjb2wuaXRlbXMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpKVxuXG4gICAgcmV0dXJuIGNvbHVtbnNcbiAgfVxuXG4gIHB1YmxpYyB3aXRoTGF5b3V0UHJlZmVyZW5jZXMoaXRlbXM6IElEYXNoYm9hcmRXaWRnZXRzSXRlbVtdLCBsYXlvdXQ6IElEYXNoYm9hcmRXaWRnZXRJdGVtTGF5b3V0UHJlZmVyZW5jZSk6IElEYXNoYm9hcmRXaWRnZXRzSXRlbVtdIHtcbiAgICBjb25zdCBfaXRlbXM6IElEYXNoYm9hcmRXaWRnZXRzSXRlbVtdID0gW11cblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgY29uc3QgaXRlbVByZWYgPSBsYXlvdXQuaXRlbXMuZmluZCh4ID0+IHgud2lkZ2V0SWQgPT09IGl0ZW0ud2lkZ2V0SWQpXG4gICAgICBfaXRlbXMucHVzaCh7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIC4uLihpdGVtUHJlZiB8fCB7fSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIF9pdGVtc1xuICB9XG5cbiAgcHVibGljIHNhdmVQcmVmZXJlbmNlcygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAvLyBSaWdodCBub3cgdGhlIGl0ZW1zIGFyZSBtb3ZlZCBiZXR3ZWVuIHRoZSBjb2x1bW4gcmVjb3JkIGFycmF5cywgYnV0IHRoZVxuICAgIC8vICdjb2wnIHByb3AgaXMgbm90IHVwZGF0ZWQsIHNvIGl0IGlzIG1hcHBlZCB0byBjb3JyZWN0ZWQgaXRlbXMgaGVyZSBmcm9tXG4gICAgLy8gdGhlIGNvbHVtbiByZWNvcmRzLlxuICAgIGNvbnN0IGl0ZW1zJCA9IHRoaXMud2lkZ2V0Q29sdW1ucyQucGlwZShcbiAgICAgIG1hcChjb2x1bW5zID0+IChbXSBhcyBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1bXSlcbiAgICAgICAgLmNvbmNhdCguLi4oY29sdW1ucy5tYXAoYyA9PiBjLml0ZW1zLm1hcChpdG0gPT4gKHsgLi4uaXRtLCBjb2w6IGMuY29sdW1uIH0pKSkpKVxuICAgICAgKSxcbiAgICApXG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbIGl0ZW1zJCwgdGhpcy5udW1Db2x1bW5zJCBdKS5waXBlKFxuICAgICAgYXVkaXRUaW1lKDApLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgoWyBpdGVtcywgbnVtQ29sdW1ucyBdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVmZXJlbmNlcy51cGRhdGVMYXlvdXQodGhpcy5wcmVmZXJlbmNlS2V5LCB7XG4gICAgICAgICAgbmFtZTogdGhpcy5fbGF5b3V0TmFtZShudW1Db2x1bW5zKSxcbiAgICAgICAgICBpdGVtc1xuICAgICAgICB9KVxuICAgICAgfSksXG4gICAgICBtYXBUbyh1bmRlZmluZWQpXG4gICAgKVxuICB9XG5cbn1cbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXdpZGdldHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mcmFtZXdvcmsvZGFzaGJvYXJkL2Rhc2hib2FyZC13aWRnZXRzL2Rhc2hib2FyZC13aWRnZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUE7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUd6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQVM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTs7OztBQUsvRCxNQUFNLE9BQU8sdUJBQXVCO0lBU2xDLElBQUksT0FBTyxLQUFpQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUN4RSxJQUFJLE9BQU8sQ0FBQyxLQUFpQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUc1RSxJQUFJLFVBQVUsS0FBYSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUMxRCxJQUFJLFVBQVUsQ0FBQyxLQUFhO1FBQzFCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQzdCO0lBQ0gsQ0FBQztJQVNELFlBQ21CLDZCQUE0RCxFQUM1RCxZQUFnRDtRQURoRCxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQStCO1FBQzVELGlCQUFZLEdBQVosWUFBWSxDQUFvQztRQTNCbkQsa0JBQWEsR0FBVyxtQkFBbUIsQ0FBQTtRQUUzQyxzQkFBaUIsR0FBVyxDQUFDLENBQUE7UUFFN0MsZ0ZBQWdGO1FBQ2hFLGtCQUFhLEdBQVcsQ0FBQyxDQUFBO1FBSWpDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBNkIsRUFBRSxDQUFDLENBQUE7UUFROUQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQU14RCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsU0FBUyxDQUFDLENBQUE7UUFNdEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFBO1FBRWxELG1DQUFtQztRQUNuQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsQ0FBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBRSxDQUFDO2FBQ2xGLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFFLElBQUksRUFBRSxHQUFHLENBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFeEUsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLENBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUUsQ0FBQzthQUNuRSxJQUFJO1FBQ0gsbUVBQW1FO1FBQ25FLHNFQUFzRTtRQUN0RSxxRUFBcUU7UUFDckUsb0RBQW9EO1FBQ3BELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFDWixTQUFTLENBQUMsQ0FBQyxDQUFFLEtBQUssRUFBRSxVQUFVLENBQUUsRUFBRSxFQUFFLENBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDMUUsQ0FDRixFQUNELFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUE7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZO2FBQ3BDLElBQUksQ0FDSCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3pDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUE7SUFDTCxDQUFDO0lBRU8sV0FBVyxDQUFDLFVBQWtCO1FBQ3BDLE9BQU8sV0FBVyxVQUFVLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRU0sbUJBQW1CLENBQUMsR0FBaUM7UUFDMUQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBZ0MsRUFBRSxHQUFzQjtRQUMvRSxNQUFNLGtCQUFrQixHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUMvRSxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3pGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQzlDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLElBQUksU0FBUyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxHQUFHLEdBQWEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDaEQsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUU7b0JBQ3RDLHNDQUFzQztvQkFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyw4RUFBOEUsQ0FBQyxDQUFBO2lCQUM3RjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxHQUE2QixFQUFFLEdBQXNCO1FBQzNFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hGLElBQUksU0FBUyxFQUFFLEVBQUU7Z0JBQ2Ysc0NBQXNDO2dCQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLCtFQUErRSxFQUFFLEdBQUcsQ0FBQyxDQUFBO2FBQ25HO1lBQ0QsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUE7U0FDckI7UUFFRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2IsR0FBRyxHQUFHO1lBQ04sR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWE7WUFDbEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQztZQUNyQixNQUFNO1lBQ04sU0FBUyxFQUFFLEdBQUc7U0FDZixDQUFDLENBQUMsQ0FDSixDQUFBO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEdBQTZCLEVBQUUsR0FBc0I7UUFDN0UsSUFBSSxPQUFPLEdBQUcsQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ3JDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUU7b0JBQzVDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7aUJBQ3ZFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUMzRCxPQUFPLElBQUksQ0FBQyw2QkFBNkI7aUJBQ3RDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7aUJBQ2xDLElBQUksQ0FDSCxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDckIsT0FBTyxJQUFJLGVBQWUsQ0FDeEIsZ0JBQWdCLENBQUMsYUFBYSxFQUM5QixHQUFHO2dCQUNILGFBQWE7Z0JBQ2IsUUFBUSxFQUNQLGdCQUF1QixDQUFDLG1DQUFvQyxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FDaEcsQ0FBQTtZQUNILENBQUMsQ0FBQyxFQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUixDQUFBO1NBQ0o7UUFFRCxPQUFPLEdBQUcsQ0FBQyx3QkFBd0I7WUFDakMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDdEYsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ1QsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDM0MsQ0FBQyxDQUFDLENBQUMsRUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQ2pCLENBQUE7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQThCO1FBQ25ELElBQUksT0FBTyxHQUFvQyxFQUFFLENBQUE7UUFFakQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7U0FDdkM7UUFFRCxNQUFNLFdBQVcsR0FBNEIsRUFBRSxDQUFBO1FBRS9DLGdDQUFnQztRQUNoQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN4QixNQUFNLEdBQUcsR0FBOEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQy9GLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1Isc0RBQXNEO2dCQUN0RCxzQkFBc0I7Z0JBQ3RCLDhGQUE4RjtnQkFDOUYsZ0JBQWdCO2dCQUNoQiw0QkFBNEI7Z0JBQzVCLE1BQU07Z0JBQ04sK0NBQStDO2dCQUMvQyxrSEFBa0g7Z0JBQ2xILGtCQUFrQjtnQkFDbEIsOEJBQThCO2dCQUM5QixNQUFNO2dCQUNOLElBQUk7Z0JBQ0osV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUN2QjtpQkFBTTtnQkFDTCxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUNyQjtTQUNGO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBRTNCLE1BQU0sR0FBRyxHQUE4QyxPQUFPO2lCQUMzRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFFOUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7YUFDckI7U0FDRjtRQUVELGVBQWU7UUFDZixPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRXJELHFCQUFxQjtRQUNyQixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBRW5FLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUE4QixFQUFFLE1BQTRDO1FBQ3ZHLE1BQU0sTUFBTSxHQUE0QixFQUFFLENBQUE7UUFFMUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUNyRSxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLEdBQUcsSUFBSTtnQkFDUCxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQzthQUNwQixDQUFDLENBQUE7U0FDSDtRQUVELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVNLGVBQWU7UUFDcEIsMEVBQTBFO1FBQzFFLDBFQUEwRTtRQUMxRSxzQkFBc0I7UUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3JDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFFLEVBQThCO2FBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNoRixDQUNGLENBQUE7UUFFRCxPQUFPLGFBQWEsQ0FBQyxDQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3JELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFDWixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLENBQUMsQ0FBRSxLQUFLLEVBQUUsVUFBVSxDQUFFLEVBQUUsRUFBRTtZQUNsQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3hELElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztnQkFDbEMsS0FBSzthQUNOLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxFQUNGLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FDakIsQ0FBQTtJQUNILENBQUM7O29IQXJPVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGlzRGV2TW9kZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGF1ZGl0VGltZSwgbWFwLCBtYXBUbywgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IFRoZVNlYW1EeW5hbWljQ29tcG9uZW50TG9hZGVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2R5bmFtaWMtY29tcG9uZW50LWxvYWRlcidcbmltcG9ydCB7IG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHtcbiAgSURhc2hib2FyZFdpZGdldEl0ZW1MYXlvdXRQcmVmZXJlbmNlLFxuICBJRGFzaGJvYXJkV2lkZ2V0c0NvbHVtblJlY29yZCxcbiAgSURhc2hib2FyZFdpZGdldHNJdGVtLFxuICBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1EZWZcbn0gZnJvbSAnLi9kYXNoYm9hcmQtd2lkZ2V0cy1pdGVtJ1xuaW1wb3J0IHsgRGFzaGJvYXJkV2lkZ2V0c1ByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLXdpZGdldHMtcHJlZmVyZW5jZXMuc2VydmljZSdcbmltcG9ydCB7IFRIRVNFQU1fV0lER0VUX0RBVEEgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vd2lkZ2V0J1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRXaWRnZXRzU2VydmljZSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHByZWZlcmVuY2VLZXk6IHN0cmluZyA9ICdkYXRhdGFibGUtd2lkZ2V0cydcblxuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdE51bUNvbHVtbnM6IG51bWJlciA9IDNcblxuICAvKiogVXNlZCBmb3Igb3BlcmF0aW9ucywgc3VjaCBhcyAnYWRkV2lkZ2V0JywgaWYgdGhlIGNvbHVtbiBpcyBub3Qgc3BlY2lmaWVkLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdENvbHVtbjogbnVtYmVyID0gMFxuXG4gIGdldCB3aWRnZXRzKCk6IElEYXNoYm9hcmRXaWRnZXRzSXRlbURlZltdIHsgcmV0dXJuIHRoaXMuX3dpZGdldHMudmFsdWUgfVxuICBzZXQgd2lkZ2V0cyh2YWx1ZTogSURhc2hib2FyZFdpZGdldHNJdGVtRGVmW10pIHsgdGhpcy5fd2lkZ2V0cy5uZXh0KHZhbHVlKSB9XG4gIHByaXZhdGUgX3dpZGdldHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEYXNoYm9hcmRXaWRnZXRzSXRlbURlZltdPihbXSlcblxuICBnZXQgbnVtQ29sdW1ucygpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5fbnVtQ29sdW1ucy52YWx1ZSB9XG4gIHNldCBudW1Db2x1bW5zKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX251bUNvbHVtbnMudmFsdWUpIHtcbiAgICAgIHRoaXMuX251bUNvbHVtbnMubmV4dCh2YWx1ZSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfbnVtQ29sdW1ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih0aGlzLmRlZmF1bHROdW1Db2x1bW5zKVxuXG4gIHB1YmxpYyByZWFkb25seSBudW1Db2x1bW5zJDogT2JzZXJ2YWJsZTxudW1iZXI+XG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXRJdGVtcyQ6IE9ic2VydmFibGU8SURhc2hib2FyZFdpZGdldHNJdGVtW10+XG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXRDb2x1bW5zJDogT2JzZXJ2YWJsZTxJRGFzaGJvYXJkV2lkZ2V0c0NvbHVtblJlY29yZFtdPlxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWZTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudExvYWRlck1vZHVsZTogVGhlU2VhbUR5bmFtaWNDb21wb25lbnRMb2FkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJlZmVyZW5jZXM6IERhc2hib2FyZFdpZGdldHNQcmVmZXJlbmNlc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5udW1Db2x1bW5zJCA9IHRoaXMuX251bUNvbHVtbnMuYXNPYnNlcnZhYmxlKClcblxuICAgIC8vIFdpZGdldCBpdGVtcyB3aXRob3V0IHByZWZlcmVuY2VzXG4gICAgY29uc3QgX3dpZGdldEl0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoWyB0aGlzLl93aWRnZXRzLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmU3ViamVjdCBdKVxuICAgICAgLnBpcGUoc3dpdGNoTWFwKChbIGRlZnMsIHZjciBdKSA9PiB0aGlzLmNyZWF0ZVdpZGdldEl0ZW1zKGRlZnMsIHZjcikpKVxuXG4gICAgLy8gV2lkZ2V0IGl0ZW1zIHdpdGggcHJlZmVyZW5jZXNcbiAgICB0aGlzLndpZGdldEl0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoWyBfd2lkZ2V0SXRlbXMkLCB0aGlzLm51bUNvbHVtbnMkIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgY3VycmVudCB0aWNrIGlzIGRvbmUsIGluY2FzZSBib3RoIHRoZSB3aWRnZXRzIGFuZFxuICAgICAgICAvLyBudW1iZXIgb2YgY29sdW1ucyBhcmUgc2V0IGR1cnJpbmcgdGhlIHNhbWUgdGljay4gV2l0aG91dCB0aGUgYXVkaXQsXG4gICAgICAgIC8vIHRoaXMgd291bGQgZ2V0IGNhbGxlZCB0d2ljZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQgd2l0aFxuICAgICAgICAvLyBib3RoIGlucHV0cyBzZXQgb25lIGFmdGVyIHRoZSBvdGhlciBpbmRpdmlkdWFsbHkuXG4gICAgICAgIGF1ZGl0VGltZSgwKSxcbiAgICAgICAgc3dpdGNoTWFwKChbIGl0ZW1zLCBudW1Db2x1bW5zIF0pID0+XG4gICAgICAgICAgdGhpcy5fcHJlZmVyZW5jZXMuc2VsZWN0TGF5b3V0KHRoaXMucHJlZmVyZW5jZUtleSwgdGhpcy5fbGF5b3V0TmFtZShudW1Db2x1bW5zKSkucGlwZShcbiAgICAgICAgICAgIG1hcChsYXlvdXQgPT4gbGF5b3V0ID8gdGhpcy53aXRoTGF5b3V0UHJlZmVyZW5jZXMoaXRlbXMsIGxheW91dCkgOiBpdGVtcylcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICAgIClcblxuICAgIHRoaXMud2lkZ2V0Q29sdW1ucyQgPSB0aGlzLndpZGdldEl0ZW1zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChpdGVtcyA9PiB0aGlzLnRvQ29sdW1uUmVjb3JkcyhpdGVtcykpLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgICApXG4gIH1cblxuICBwcml2YXRlIF9sYXlvdXROYW1lKG51bUNvbHVtbnM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBjb2x1bW5zLSR7bnVtQ29sdW1uc31gXG4gIH1cblxuICBwdWJsaWMgc2V0Vmlld0NvbnRhaW5lclJlZih2Y3I6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmU3ViamVjdC5uZXh0KHZjcilcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVXaWRnZXRJdGVtcyhkZWZzOiBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1EZWZbXSwgdmNyPzogVmlld0NvbnRhaW5lclJlZik6IE9ic2VydmFibGU8SURhc2hib2FyZFdpZGdldHNJdGVtW10+IHtcbiAgICBjb25zdCBfY3JlYXRlT2JzZXJ2YWJsZXMgPSAoZGVmcyB8fCBbXSkubWFwKGQgPT4gdGhpcy5jcmVhdGVXaWRnZXRJdGVtKGQsIHZjcikpXG4gICAgY29uc3QgaXRlbXMkID0gX2NyZWF0ZU9ic2VydmFibGVzLmxlbmd0aCA+IDAgPyBjb21iaW5lTGF0ZXN0KF9jcmVhdGVPYnNlcnZhYmxlcykgOiBvZihbXSlcbiAgICByZXR1cm4gaXRlbXMkLnBpcGUoXG4gICAgICBtYXAoaXRlbXMgPT4gaXRlbXMuZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCkpLFxuICAgICAgdGFwKGl0ZW1zID0+IHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgY29uc3QgaWRzOiBzdHJpbmdbXSA9IGl0ZW1zLm1hcCh2ID0+IHYud2lkZ2V0SWQpXG4gICAgICAgICAgaWYgKChuZXcgU2V0KGlkcykpLnNpemUgIT09IGlkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtEYXNoYm9hcmRXaWRnZXRzU2VydmljZV0gRHVwbGljYXRlIHdpZGdldCdzIHdpdGggdGhlIHNhbWUgJ3dpZGdldElkJyBmb3VuZC5gKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgY3JlYXRlV2lkZ2V0SXRlbShkZWY6IElEYXNoYm9hcmRXaWRnZXRzSXRlbURlZiwgdmNyPzogVmlld0NvbnRhaW5lclJlZik6IE9ic2VydmFibGU8SURhc2hib2FyZFdpZGdldHNJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCFkZWYud2lkZ2V0SWQgfHwgdHlwZW9mIGRlZi53aWRnZXRJZCAhPT0gJ3N0cmluZycgfHwgZGVmLndpZGdldElkLmxlbmd0aCA8IDEpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oYFtEYXNoYm9hcmRXaWRnZXRzU2VydmljZV0gV2lkZ2V0IGlnbm9yZWQuIEFsbCB3aWRnZXRzIG11c3QgaGF2ZSBhICd3aWRnZXRJZCcuYCwgZGVmKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVXaWRnZXRQb3J0YWwoZGVmLCB2Y3IpLnBpcGUoXG4gICAgICBtYXAocG9ydGFsID0+ICh7XG4gICAgICAgIC4uLmRlZixcbiAgICAgICAgY29sOiBkZWYuY29sIHx8IHRoaXMuZGVmYXVsdENvbHVtbixcbiAgICAgICAgb3JkZXI6IGRlZi5vcmRlciB8fCAwLFxuICAgICAgICBwb3J0YWwsXG4gICAgICAgIF9faXRlbURlZjogZGVmXG4gICAgICB9KSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgY3JlYXRlV2lkZ2V0UG9ydGFsKGRlZjogSURhc2hib2FyZFdpZGdldHNJdGVtRGVmLCB2Y3I/OiBWaWV3Q29udGFpbmVyUmVmKTogT2JzZXJ2YWJsZTxDb21wb25lbnRQb3J0YWw8YW55Pj4ge1xuICAgIGlmICh0eXBlb2YgZGVmLmNvbXBvbmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHsgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogVEhFU0VBTV9XSURHRVRfREFUQSwgdXNlVmFsdWU6IHsgd2lkZ2V0SWQ6IGRlZi53aWRnZXRJZCB9IH1cbiAgICAgIF0sIHBhcmVudDogdGhpcy5fdmlld0NvbnRhaW5lclJlZlN1YmplY3QudmFsdWU/LmluamVjdG9yIH0pXG4gICAgICByZXR1cm4gdGhpcy5fZHluYW1pY0NvbXBvbmVudExvYWRlck1vZHVsZVxuICAgICAgICAuZ2V0Q29tcG9uZW50RmFjdG9yeShkZWYuY29tcG9uZW50KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoY29tcG9uZW50RmFjdG9yeSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudFBvcnRhbChcbiAgICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeS5jb21wb25lbnRUeXBlLFxuICAgICAgICAgICAgICB2Y3IsXG4gICAgICAgICAgICAgIC8vIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgICAgICAgIChjb21wb25lbnRGYWN0b3J5IGFzIGFueSAvKiBDb21wb25lbnRGYWN0b3J5Qm91bmRUb01vZHVsZSAqLykubmdNb2R1bGUuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZSgxKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZi5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgICAgID8gb2YobmV3IENvbXBvbmVudFBvcnRhbChkZWYuY29tcG9uZW50LCB2Y3IsIHVuZGVmaW5lZCwgZGVmLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikpXG4gICAgICA6IG9mKG5ldyBDb21wb25lbnRQb3J0YWwoZGVmLmNvbXBvbmVudCwgdmNyKSlcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVPcmRlcigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy53aWRnZXRDb2x1bW5zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRhcChjb2x1bW5zID0+IGNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgIGxldCBpID0gMFxuICAgICAgICAgIGNvbC5pdGVtcy5mb3JFYWNoKGl0bSA9PiBpdG0ub3JkZXIgPSBpKyspXG4gICAgICAgIH0pKSxcbiAgICAgICAgbWFwVG8odW5kZWZpbmVkKVxuICAgICAgKVxuICB9XG5cbiAgcHVibGljIHRvQ29sdW1uUmVjb3JkcyhpdGVtczogSURhc2hib2FyZFdpZGdldHNJdGVtW10pOiBJRGFzaGJvYXJkV2lkZ2V0c0NvbHVtblJlY29yZFtdIHtcbiAgICBsZXQgY29sdW1uczogSURhc2hib2FyZFdpZGdldHNDb2x1bW5SZWNvcmRbXSA9IFtdXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubnVtQ29sdW1uczsgaSsrKSB7XG4gICAgICBjb2x1bW5zLnB1c2goeyBjb2x1bW46IGksIGl0ZW1zOiBbXSB9KVxuICAgIH1cblxuICAgIGNvbnN0IGNvbE5vdEZvdW5kOiBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1bXSA9IFtdXG5cbiAgICAvLyBEaXN0cmlidXRlIGl0ZW1zIGludG8gY29sdW1uc1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgY29uc3QgY29sOiBJRGFzaGJvYXJkV2lkZ2V0c0NvbHVtblJlY29yZCB8IHVuZGVmaW5lZCA9IGNvbHVtbnMuZmluZChjID0+IGMuY29sdW1uID09PSBpdGVtLmNvbClcbiAgICAgIGlmICghY29sKSB7XG4gICAgICAgIC8vIGNvbHVtbnMucHVzaCh7IGNvbHVtbjogaXRlbS5jb2wsIGl0ZW1zOiBbIGl0ZW0gXSB9KVxuICAgICAgICAvLyBpZiAoaXRlbS5jb2wgPCAwKSB7XG4gICAgICAgIC8vICAgY29uc3QgY29sMDogSURhc2hib2FyZFdpZGdldHNDb2x1bW5SZWNvcmQgfCB1bmRlZmluZWQgPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmNvbHVtbiA9PT0gMClcbiAgICAgICAgLy8gICBpZiAoY29sMCkge1xuICAgICAgICAvLyAgICAgY29sMC5pdGVtcy5wdXNoKGl0ZW0pXG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9IGVsc2UgaWYgKGl0ZW0uY29sID4gdGhpcy5udW1Db2x1bW5zIC0gMSkge1xuICAgICAgICAvLyAgIGNvbnN0IGNvbE1heDogSURhc2hib2FyZFdpZGdldHNDb2x1bW5SZWNvcmQgfCB1bmRlZmluZWQgPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmNvbHVtbiA9PT0gdGhpcy5udW1Db2x1bW5zIC0gMSlcbiAgICAgICAgLy8gICBpZiAoY29sTWF4KSB7XG4gICAgICAgIC8vICAgICBjb2xNYXguaXRlbXMucHVzaChpdGVtKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gfVxuICAgICAgICBjb2xOb3RGb3VuZC5wdXNoKGl0ZW0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2wuaXRlbXMucHVzaChpdGVtKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sTm90Rm91bmQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBjb2xOb3RGb3VuZFtpXVxuXG4gICAgICBjb25zdCBjb2w6IElEYXNoYm9hcmRXaWRnZXRzQ29sdW1uUmVjb3JkIHwgdW5kZWZpbmVkID0gY29sdW1uc1xuICAgICAgICAuZmluZChjID0+IGMuY29sdW1uID09PSBpICUgdGhpcy5udW1Db2x1bW5zKVxuXG4gICAgICBpZiAoY29sKSB7XG4gICAgICAgIGNvbC5pdGVtcy5wdXNoKGl0ZW0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU29ydCBjb2x1bW5zXG4gICAgY29sdW1ucyA9IGNvbHVtbnMuc29ydCgoYSwgYikgPT4gYS5jb2x1bW4gLSBiLmNvbHVtbilcblxuICAgIC8vIFNvcnQgY29sdW1ucyBpdGVtc1xuICAgIGNvbHVtbnMuZm9yRWFjaChjb2wgPT4gY29sLml0ZW1zLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKSlcblxuICAgIHJldHVybiBjb2x1bW5zXG4gIH1cblxuICBwdWJsaWMgd2l0aExheW91dFByZWZlcmVuY2VzKGl0ZW1zOiBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1bXSwgbGF5b3V0OiBJRGFzaGJvYXJkV2lkZ2V0SXRlbUxheW91dFByZWZlcmVuY2UpOiBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1bXSB7XG4gICAgY29uc3QgX2l0ZW1zOiBJRGFzaGJvYXJkV2lkZ2V0c0l0ZW1bXSA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGl0ZW1QcmVmID0gbGF5b3V0Lml0ZW1zLmZpbmQoeCA9PiB4LndpZGdldElkID09PSBpdGVtLndpZGdldElkKVxuICAgICAgX2l0ZW1zLnB1c2goe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICAuLi4oaXRlbVByZWYgfHwge30pXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBfaXRlbXNcbiAgfVxuXG4gIHB1YmxpYyBzYXZlUHJlZmVyZW5jZXMoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgLy8gUmlnaHQgbm93IHRoZSBpdGVtcyBhcmUgbW92ZWQgYmV0d2VlbiB0aGUgY29sdW1uIHJlY29yZCBhcnJheXMsIGJ1dCB0aGVcbiAgICAvLyAnY29sJyBwcm9wIGlzIG5vdCB1cGRhdGVkLCBzbyBpdCBpcyBtYXBwZWQgdG8gY29ycmVjdGVkIGl0ZW1zIGhlcmUgZnJvbVxuICAgIC8vIHRoZSBjb2x1bW4gcmVjb3Jkcy5cbiAgICBjb25zdCBpdGVtcyQgPSB0aGlzLndpZGdldENvbHVtbnMkLnBpcGUoXG4gICAgICBtYXAoY29sdW1ucyA9PiAoW10gYXMgSURhc2hib2FyZFdpZGdldHNJdGVtW10pXG4gICAgICAgIC5jb25jYXQoLi4uKGNvbHVtbnMubWFwKGMgPT4gYy5pdGVtcy5tYXAoaXRtID0+ICh7IC4uLml0bSwgY29sOiBjLmNvbHVtbiB9KSkpKSlcbiAgICAgICksXG4gICAgKVxuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoWyBpdGVtcyQsIHRoaXMubnVtQ29sdW1ucyQgXSkucGlwZShcbiAgICAgIGF1ZGl0VGltZSgwKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAoKFsgaXRlbXMsIG51bUNvbHVtbnMgXSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJlZmVyZW5jZXMudXBkYXRlTGF5b3V0KHRoaXMucHJlZmVyZW5jZUtleSwge1xuICAgICAgICAgIG5hbWU6IHRoaXMuX2xheW91dE5hbWUobnVtQ29sdW1ucyksXG4gICAgICAgICAgaXRlbXNcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgbWFwVG8odW5kZWZpbmVkKVxuICAgIClcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vc2VydmljZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMtYWNjZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtUHJlZmVyZW5jZXNBY2Nlc3NvciB7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgYSBwcmVmZXJlbmNlLlxyXG4gICAqL1xyXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz5cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGEgcHJlZmVyZW5jZS5cclxuICAgKi9cclxuICB1cGRhdGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSBhIHByZWZlcmVuY2UuXHJcbiAgICovXHJcbiAgZGVsZXRlKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj5cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,69 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { map } from 'rxjs';
3
+ import { TheSeamPreferencesMapRecord } from './preferences-record';
4
+ import * as i0 from "@angular/core";
5
+ export class TheSeamPreferencesManagerService {
6
+ constructor() {
7
+ this._tablePrefsMap = new Map();
8
+ }
9
+ preferences(preferenceKey, accessor, emptyPrefs) {
10
+ let prefs = this._tablePrefsMap.get(preferenceKey);
11
+ if (prefs && !prefs.isSameAccessor(accessor)) {
12
+ throw Error(`Preferences accessor mismatch for key '${preferenceKey}'. Changing the accessor is not supported.`);
13
+ }
14
+ if (prefs && !prefs.isSameEmptyPrefs(emptyPrefs)) {
15
+ throw Error(`Preferences emptyPrefs mismatch for key '${preferenceKey}'. Changing the emptyPrefs is not supported.`);
16
+ }
17
+ if (!prefs) {
18
+ prefs = new TheSeamPreferencesMapRecord(preferenceKey, accessor, emptyPrefs);
19
+ this._tablePrefsMap.set(preferenceKey, prefs);
20
+ }
21
+ return prefs.observable.pipe(map(v => {
22
+ // This is for assuming the accessor returned an empty object, as a
23
+ // default for a missing preference. Instead of throwing an error, we
24
+ // return a valid empty preferences.
25
+ //
26
+ // NOTE: May remove this, when a more generic preferences implementation
27
+ // is finished.
28
+ if (Object.keys(v).length === 0) {
29
+ return emptyPrefs;
30
+ }
31
+ return v;
32
+ }));
33
+ }
34
+ update(preferenceKey, value) {
35
+ const prefs = this._tablePrefsMap.get(preferenceKey);
36
+ if (prefs) {
37
+ prefs.update(value);
38
+ }
39
+ }
40
+ delete(preferenceKey) {
41
+ const prefs = this._tablePrefsMap.get(preferenceKey);
42
+ if (prefs) {
43
+ prefs.delete();
44
+ }
45
+ }
46
+ refresh(preferenceKey) {
47
+ const prefs = this._tablePrefsMap.get(preferenceKey);
48
+ if (prefs) {
49
+ prefs.refresh();
50
+ }
51
+ }
52
+ isPending(preferenceKey) {
53
+ const prefs = this._tablePrefsMap.get(preferenceKey);
54
+ return prefs ? prefs.status === 'pending' : false;
55
+ }
56
+ isLoaded(preferenceKey) {
57
+ const prefs = this._tablePrefsMap.get(preferenceKey);
58
+ return prefs ? prefs.status === 'loaded' : false;
59
+ }
60
+ }
61
+ TheSeamPreferencesManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamPreferencesManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
62
+ TheSeamPreferencesManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamPreferencesManagerService, providedIn: 'root' });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamPreferencesManagerService, decorators: [{
64
+ type: Injectable,
65
+ args: [{
66
+ providedIn: 'root'
67
+ }]
68
+ }] });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3NlcnZpY2VzL3ByZWZlcmVuY2VzL3ByZWZlcmVuY2VzLW1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFJdEMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7O0FBS2xFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFIN0M7UUFLbUIsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBdUMsQ0FBQTtLQXFFakY7SUFuRVEsV0FBVyxDQUNoQixhQUFxQixFQUNyQixRQUFvQyxFQUNwQyxVQUFrQztRQUVsQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUVsRCxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxLQUFLLENBQUMsMENBQTBDLGFBQWEsNENBQTRDLENBQUMsQ0FBQTtTQUNqSDtRQUVELElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2hELE1BQU0sS0FBSyxDQUFDLDRDQUE0QyxhQUFhLDhDQUE4QyxDQUFDLENBQUE7U0FDckg7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsS0FBSyxHQUFHLElBQUksMkJBQTJCLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtZQUM1RSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDOUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixtRUFBbUU7WUFDbkUscUVBQXFFO1lBQ3JFLG9DQUFvQztZQUNwQyxFQUFFO1lBQ0Ysd0VBQXdFO1lBQ3hFLGVBQWU7WUFDZixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDL0IsT0FBTyxVQUFVLENBQUE7YUFDbEI7WUFFRCxPQUFPLENBQUMsQ0FBQTtRQUNWLENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQXFCLEVBQUUsS0FBNkI7UUFDaEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDcEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ3BCO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFxQjtRQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRCxJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQTtTQUNmO0lBQ0gsQ0FBQztJQUVNLE9BQU8sQ0FBQyxhQUFxQjtRQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRCxJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUNoQjtJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsYUFBcUI7UUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDcEQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDbkQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxhQUFxQjtRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUNsRCxDQUFDOzs2SEFyRVUsZ0NBQWdDO2lJQUFoQyxnQ0FBZ0MsY0FGL0IsTUFBTTsyRkFFUCxnQ0FBZ0M7a0JBSDVDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXHJcblxyXG5pbXBvcnQgeyBUaGVTZWFtUHJlZmVyZW5jZXNCYXNlIH0gZnJvbSAnLi9wcmVmZXJlbmNlcy5tb2RlbHMnXHJcbmltcG9ydCB7IFRoZVNlYW1QcmVmZXJlbmNlc0FjY2Vzc29yIH0gZnJvbSAnLi9wcmVmZXJlbmNlcy1hY2Nlc3NvcidcclxuaW1wb3J0IHsgVGhlU2VhbVByZWZlcmVuY2VzTWFwUmVjb3JkIH0gZnJvbSAnLi9wcmVmZXJlbmNlcy1yZWNvcmQnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaGVTZWFtUHJlZmVyZW5jZXNNYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlUHJlZnNNYXAgPSBuZXcgTWFwPHN0cmluZywgVGhlU2VhbVByZWZlcmVuY2VzTWFwUmVjb3JkPigpXHJcblxyXG4gIHB1YmxpYyBwcmVmZXJlbmNlcyhcclxuICAgIHByZWZlcmVuY2VLZXk6IHN0cmluZyxcclxuICAgIGFjY2Vzc29yOiBUaGVTZWFtUHJlZmVyZW5jZXNBY2Nlc3NvcixcclxuICAgIGVtcHR5UHJlZnM6IFRoZVNlYW1QcmVmZXJlbmNlc0Jhc2UsXHJcbiAgKTogT2JzZXJ2YWJsZTxUaGVTZWFtUHJlZmVyZW5jZXNCYXNlPiB7XHJcbiAgICBsZXQgcHJlZnMgPSB0aGlzLl90YWJsZVByZWZzTWFwLmdldChwcmVmZXJlbmNlS2V5KVxyXG5cclxuICAgIGlmIChwcmVmcyAmJiAhcHJlZnMuaXNTYW1lQWNjZXNzb3IoYWNjZXNzb3IpKSB7XHJcbiAgICAgIHRocm93IEVycm9yKGBQcmVmZXJlbmNlcyBhY2Nlc3NvciBtaXNtYXRjaCBmb3Iga2V5ICcke3ByZWZlcmVuY2VLZXl9Jy4gQ2hhbmdpbmcgdGhlIGFjY2Vzc29yIGlzIG5vdCBzdXBwb3J0ZWQuYClcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJlZnMgJiYgIXByZWZzLmlzU2FtZUVtcHR5UHJlZnMoZW1wdHlQcmVmcykpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoYFByZWZlcmVuY2VzIGVtcHR5UHJlZnMgbWlzbWF0Y2ggZm9yIGtleSAnJHtwcmVmZXJlbmNlS2V5fScuIENoYW5naW5nIHRoZSBlbXB0eVByZWZzIGlzIG5vdCBzdXBwb3J0ZWQuYClcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXByZWZzKSB7XHJcbiAgICAgIHByZWZzID0gbmV3IFRoZVNlYW1QcmVmZXJlbmNlc01hcFJlY29yZChwcmVmZXJlbmNlS2V5LCBhY2Nlc3NvciwgZW1wdHlQcmVmcylcclxuICAgICAgdGhpcy5fdGFibGVQcmVmc01hcC5zZXQocHJlZmVyZW5jZUtleSwgcHJlZnMpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJlZnMub2JzZXJ2YWJsZS5waXBlKFxyXG4gICAgICBtYXAodiA9PiB7XHJcbiAgICAgICAgLy8gVGhpcyBpcyBmb3IgYXNzdW1pbmcgdGhlIGFjY2Vzc29yIHJldHVybmVkIGFuIGVtcHR5IG9iamVjdCwgYXMgYVxyXG4gICAgICAgIC8vIGRlZmF1bHQgZm9yIGEgbWlzc2luZyBwcmVmZXJlbmNlLiBJbnN0ZWFkIG9mIHRocm93aW5nIGFuIGVycm9yLCB3ZVxyXG4gICAgICAgIC8vIHJldHVybiBhIHZhbGlkIGVtcHR5IHByZWZlcmVuY2VzLlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gTk9URTogTWF5IHJlbW92ZSB0aGlzLCB3aGVuIGEgbW9yZSBnZW5lcmljIHByZWZlcmVuY2VzIGltcGxlbWVudGF0aW9uXHJcbiAgICAgICAgLy8gaXMgZmluaXNoZWQuXHJcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHYpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIGVtcHR5UHJlZnNcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2XHJcbiAgICAgIH0pLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZShwcmVmZXJlbmNlS2V5OiBzdHJpbmcsIHZhbHVlOiBUaGVTZWFtUHJlZmVyZW5jZXNCYXNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBwcmVmcyA9IHRoaXMuX3RhYmxlUHJlZnNNYXAuZ2V0KHByZWZlcmVuY2VLZXkpXHJcbiAgICBpZiAocHJlZnMpIHtcclxuICAgICAgcHJlZnMudXBkYXRlKHZhbHVlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZShwcmVmZXJlbmNlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHByZWZzID0gdGhpcy5fdGFibGVQcmVmc01hcC5nZXQocHJlZmVyZW5jZUtleSlcclxuICAgIGlmIChwcmVmcykge1xyXG4gICAgICBwcmVmcy5kZWxldGUoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZnJlc2gocHJlZmVyZW5jZUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBwcmVmcyA9IHRoaXMuX3RhYmxlUHJlZnNNYXAuZ2V0KHByZWZlcmVuY2VLZXkpXHJcbiAgICBpZiAocHJlZnMpIHtcclxuICAgICAgcHJlZnMucmVmcmVzaCgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNQZW5kaW5nKHByZWZlcmVuY2VLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcHJlZnMgPSB0aGlzLl90YWJsZVByZWZzTWFwLmdldChwcmVmZXJlbmNlS2V5KVxyXG4gICAgcmV0dXJuIHByZWZzID8gcHJlZnMuc3RhdHVzID09PSAncGVuZGluZycgOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzTG9hZGVkKHByZWZlcmVuY2VLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcHJlZnMgPSB0aGlzLl90YWJsZVByZWZzTWFwLmdldChwcmVmZXJlbmNlS2V5KVxyXG4gICAgcmV0dXJuIHByZWZzID8gcHJlZnMuc3RhdHVzID09PSAnbG9hZGVkJyA6IGZhbHNlXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,74 @@
1
+ import { isDevMode } from '@angular/core';
2
+ import { map, of, shareReplay, startWith, Subject, switchMap, tap } from 'rxjs';
3
+ import { notNullOrUndefined } from '@theseam/ui-common/utils';
4
+ export class TheSeamPreferencesMapRecord {
5
+ constructor(_key, _accessor, _emptyPrefs) {
6
+ this._key = _key;
7
+ this._accessor = _accessor;
8
+ this._emptyPrefs = _emptyPrefs;
9
+ this._refreshSubject = new Subject();
10
+ this._statusChangeSubject = new Subject();
11
+ this._status = 'pending';
12
+ this.observable = this._createObservable();
13
+ this.statusChange = this._statusChangeSubject.asObservable();
14
+ }
15
+ _createObservable() {
16
+ if (!this._accessor) {
17
+ return of(this._emptyPrefs);
18
+ }
19
+ const accessor = (key) => this._accessor ? this._accessor.get(key) : of(JSON.stringify(this._emptyPrefs));
20
+ return this._refreshSubject.pipe(startWith(undefined), switchMap(() => accessor(this._key).pipe(map(v => {
21
+ if (!v) {
22
+ return null;
23
+ }
24
+ // TODO: Add a schema validator and migration tool to avoid parsing issues.
25
+ try {
26
+ return this._descerializePreferences(v);
27
+ }
28
+ catch (error) {
29
+ if (isDevMode()) {
30
+ // eslint-disable-next-line no-console
31
+ console.error(error);
32
+ }
33
+ return null;
34
+ }
35
+ }), map(v => notNullOrUndefined(v) ? v : this._emptyPrefs),
36
+ // tap(v => console.log('preferences$', v)),
37
+ tap(() => {
38
+ this._setStatus('loaded');
39
+ }))), shareReplay({ bufferSize: 1, refCount: true }));
40
+ }
41
+ update(value) {
42
+ this._accessor.update(this._key, JSON.stringify(value));
43
+ }
44
+ delete() {
45
+ this._accessor.delete(this._key);
46
+ }
47
+ refresh() {
48
+ this._setStatus('pending');
49
+ this._refreshSubject.next();
50
+ }
51
+ isSameAccessor(accessor) {
52
+ return this._accessor === accessor;
53
+ }
54
+ isSameEmptyPrefs(emptyPrefs) {
55
+ return JSON.stringify(this._emptyPrefs) === JSON.stringify(emptyPrefs);
56
+ }
57
+ get status() {
58
+ return this._status;
59
+ }
60
+ _setStatus(status) {
61
+ if (this._status === status) {
62
+ return;
63
+ }
64
+ const prev = this._status;
65
+ this._status = status;
66
+ this._statusChangeSubject.next({ previous: prev, current: status });
67
+ }
68
+ _descerializePreferences(serialized) {
69
+ const prefs = JSON.parse(serialized);
70
+ // TODO: Implement migration
71
+ return prefs;
72
+ }
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtcmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3NlcnZpY2VzL3ByZWZlcmVuY2VzL3ByZWZlcmVuY2VzLXJlY29yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFZN0QsTUFBTSxPQUFPLDJCQUEyQjtJQVV0QyxZQUNtQixJQUFZLEVBQ1osU0FBcUMsRUFDckMsV0FBbUM7UUFGbkMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGNBQVMsR0FBVCxTQUFTLENBQTRCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQVhyQyxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFDckMseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQXdDLENBQUE7UUFFbkYsWUFBTyxHQUFtQyxTQUFTLENBQUE7UUFVekQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUM5RCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtTQUM1QjtRQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVyxFQUFzQixFQUFFLENBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMs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Q0FBQTtJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcydcclxuXHJcbmltcG9ydCB7IG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcclxuXHJcbmltcG9ydCB7IFRoZVNlYW1QcmVmZXJlbmNlc0FjY2Vzc29yIH0gZnJvbSAnLi9wcmVmZXJlbmNlcy1hY2Nlc3NvcidcclxuaW1wb3J0IHsgVGhlU2VhbVByZWZlcmVuY2VzQmFzZSB9IGZyb20gJy4vcHJlZmVyZW5jZXMubW9kZWxzJ1xyXG5cclxuZXhwb3J0IHR5cGUgVGhlU2VhbVByZWZlcmVuY2VzUmVjb3JkU3RhdHVzID0gJ3BlbmRpbmcnIHwgJ2xvYWRlZCdcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbVByZWZlcmVuY2VzUmVjb3JkU3RhdHVzQ2hhbmdlIHtcclxuICBwcmV2aW91czogVGhlU2VhbVByZWZlcmVuY2VzUmVjb3JkU3RhdHVzXHJcbiAgY3VycmVudDogVGhlU2VhbVByZWZlcmVuY2VzUmVjb3JkU3RhdHVzXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaGVTZWFtUHJlZmVyZW5jZXNNYXBSZWNvcmQge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWZyZXNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0dXNDaGFuZ2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8VGhlU2VhbVByZWZlcmVuY2VzUmVjb3JkU3RhdHVzQ2hhbmdlPigpXHJcblxyXG4gIHByaXZhdGUgX3N0YXR1czogVGhlU2VhbVByZWZlcmVuY2VzUmVjb3JkU3RhdHVzID0gJ3BlbmRpbmcnXHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFRoZVNlYW1QcmVmZXJlbmNlc0Jhc2U+XHJcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NoYW5nZTogT2JzZXJ2YWJsZTxUaGVTZWFtUHJlZmVyZW5jZXNSZWNvcmRTdGF0dXNDaGFuZ2U+XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfa2V5OiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hY2Nlc3NvcjogVGhlU2VhbVByZWZlcmVuY2VzQWNjZXNzb3IsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbXB0eVByZWZzOiBUaGVTZWFtUHJlZmVyZW5jZXNCYXNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5vYnNlcnZhYmxlID0gdGhpcy5fY3JlYXRlT2JzZXJ2YWJsZSgpXHJcbiAgICB0aGlzLnN0YXR1c0NoYW5nZSA9IHRoaXMuX3N0YXR1c0NoYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxUaGVTZWFtUHJlZmVyZW5jZXNCYXNlPiB7XHJcbiAgICBpZiAoIXRoaXMuX2FjY2Vzc29yKSB7XHJcbiAgICAgIHJldHVybiBvZih0aGlzLl9lbXB0eVByZWZzKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFjY2Vzc29yID0gKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+XHJcbiAgICAgIHRoaXMuX2FjY2Vzc29yID8gdGhpcy5fYWNjZXNzb3IuZ2V0KGtleSkgOiBvZihKU09OLnN0cmluZ2lmeSh0aGlzLl9lbXB0eVByZWZzKSlcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fcmVmcmVzaFN1YmplY3QucGlwZShcclxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBhY2Nlc3Nvcih0aGlzLl9rZXkpLnBpcGUoXHJcbiAgICAgICAgbWFwKHYgPT4ge1xyXG4gICAgICAgICAgaWYgKCF2KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gVE9ETzogQWRkIGEgc2NoZW1hIHZhbGlkYXRvciBhbmQgbWlncmF0aW9uIHRvb2wgdG8gYXZvaWQgcGFyc2luZyBpc3N1ZXMuXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVzY2VyaWFsaXplUHJlZmVyZW5jZXModilcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIG1hcCh2ID0+IG5vdE51bGxPclVuZGVmaW5lZCh2KSA/IHYgOiB0aGlzLl9lbXB0eVByZWZzKSxcclxuICAgICAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygncHJlZmVyZW5jZXMkJywgdikpLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zZXRTdGF0dXMoJ2xvYWRlZCcpXHJcbiAgICAgICAgfSlcclxuICAgICAgKSksXHJcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlKHZhbHVlOiBUaGVTZWFtUHJlZmVyZW5jZXNCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hY2Nlc3Nvci51cGRhdGUodGhpcy5fa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWNjZXNzb3IuZGVsZXRlKHRoaXMuX2tleSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWZyZXNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0U3RhdHVzKCdwZW5kaW5nJylcclxuICAgIHRoaXMuX3JlZnJlc2hTdWJqZWN0Lm5leHQoKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzU2FtZUFjY2Vzc29yKGFjY2Vzc29yOiBUaGVTZWFtUHJlZmVyZW5jZXNBY2Nlc3Nvcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjY2Vzc29yID09PSBhY2Nlc3NvclxyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzU2FtZUVtcHR5UHJlZnMoZW1wdHlQcmVmczogVGhlU2VhbVByZWZlcmVuY2VzQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuX2VtcHR5UHJlZnMpID09PSBKU09OLnN0cmluZ2lmeShlbXB0eVByZWZzKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXR1cygpOiBUaGVTZWFtUHJlZmVyZW5jZXNSZWNvcmRTdGF0dXMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1c1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0U3RhdHVzKHN0YXR1czogVGhlU2VhbVByZWZlcmVuY2VzUmVjb3JkU3RhdHVzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc3RhdHVzID09PSBzdGF0dXMpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmV2ID0gdGhpcy5fc3RhdHVzXHJcbiAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXNcclxuICAgIHRoaXMuX3N0YXR1c0NoYW5nZVN1YmplY3QubmV4dCh7IHByZXZpb3VzOiBwcmV2LCBjdXJyZW50OiBzdGF0dXMgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Rlc2NlcmlhbGl6ZVByZWZlcmVuY2VzKHNlcmlhbGl6ZWQ6IHN0cmluZyk6IFRoZVNlYW1QcmVmZXJlbmNlc0Jhc2Uge1xyXG4gICAgY29uc3QgcHJlZnMgPSBKU09OLnBhcnNlKHNlcmlhbGl6ZWQpXHJcblxyXG4gICAgLy8gVE9ETzogSW1wbGVtZW50IG1pZ3JhdGlvblxyXG5cclxuICAgIHJldHVybiBwcmVmc1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3NlcnZpY2VzL3ByZWZlcmVuY2VzL3ByZWZlcmVuY2VzLm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbVByZWZlcmVuY2VzQmFzZSB7XHJcbiAgdmVyc2lvbjogbnVtYmVyXHJcbn1cclxuIl19
@@ -1,4 +1,8 @@
1
+ export * from './preferences/preferences-accessor';
2
+ export * from './preferences/preferences-manager.service';
3
+ export * from './preferences/preferences-record';
4
+ export * from './preferences/preferences.models';
1
5
  export * from './asset-loader.service';
2
6
  export * from './router-helpers.service';
3
7
  export * from './font-loader.service';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9zZXJ2aWNlcy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLHVCQUF1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hc3NldC1sb2FkZXIuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVyLWhlbHBlcnMuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vZm9udC1sb2FkZXIuc2VydmljZSdcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9zZXJ2aWNlcy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0NBQW9DLENBQUE7QUFDbEQsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMsa0NBQWtDLENBQUE7QUFFaEQsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLDBCQUEwQixDQUFBO0FBQ3hDLGNBQWMsdUJBQXVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3ByZWZlcmVuY2VzL3ByZWZlcmVuY2VzLWFjY2Vzc29yJ1xuZXhwb3J0ICogZnJvbSAnLi9wcmVmZXJlbmNlcy9wcmVmZXJlbmNlcy1tYW5hZ2VyLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL3ByZWZlcmVuY2VzL3ByZWZlcmVuY2VzLXJlY29yZCdcbmV4cG9ydCAqIGZyb20gJy4vcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMubW9kZWxzJ1xuXG5leHBvcnQgKiBmcm9tICcuL2Fzc2V0LWxvYWRlci5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXItaGVscGVycy5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9mb250LWxvYWRlci5zZXJ2aWNlJ1xuIl19
@@ -12,4 +12,5 @@ export * from './story-modal-container.component';
12
12
  export * from './story-toastr.service';
13
13
  export * from './on-story-bootstrapped-exec';
14
14
  export * from './on-story-bootstrapped-trigger';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9zdG9yeS1oZWxwZXJzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxnQ0FBZ0M7QUFDaEMsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLG9DQUFvQyxDQUFBO0FBQ2xELGNBQWMsbUNBQW1DLENBQUE7QUFDakQsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsaUNBQWlDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FyZy10eXBlLWhlbHBlcnMnXG4vLyBleHBvcnQgKiBmcm9tICcuL2FyZ3MtdG8tdHBsJ1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yeS1lbXB0eS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL3N0b3J5LWluaXRpYWwtcm91dGUnXG5leHBvcnQgKiBmcm9tICcuL3JvdXRlLWJ1dHRvbidcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVzLWFyZy10eXBlJ1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yeS1oZWxwZXItY29tcG9uZW50cy5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2luaXRpYWwtcm91dGUuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vaW5pdGlhbC1yb3V0ZS1mYWN0b3J5J1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yeS1lbXB0eS13aXRoLXJvdXRlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vc3RvcnktbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vc3RvcnktdG9hc3RyLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL29uLXN0b3J5LWJvb3RzdHJhcHBlZC1leGVjJ1xuZXhwb3J0ICogZnJvbSAnLi9vbi1zdG9yeS1ib290c3RyYXBwZWQtdHJpZ2dlcidcbiJdfQ==
15
+ export * from './story-preferences-accessor.service';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9zdG9yeS1oZWxwZXJzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxnQ0FBZ0M7QUFDaEMsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLG9DQUFvQyxDQUFBO0FBQ2xELGNBQWMsbUNBQW1DLENBQUE7QUFDakQsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsaUNBQWlDLENBQUE7QUFDL0MsY0FBYyxzQ0FBc0MsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJnLXR5cGUtaGVscGVycydcbi8vIGV4cG9ydCAqIGZyb20gJy4vYXJncy10by10cGwnXG5leHBvcnQgKiBmcm9tICcuL3N0b3J5LWVtcHR5LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vc3RvcnktaW5pdGlhbC1yb3V0ZSdcbmV4cG9ydCAqIGZyb20gJy4vcm91dGUtYnV0dG9uJ1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXMtYXJnLXR5cGUnXG5leHBvcnQgKiBmcm9tICcuL3N0b3J5LWhlbHBlci1jb21wb25lbnRzLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vaW5pdGlhbC1yb3V0ZS5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9pbml0aWFsLXJvdXRlLWZhY3RvcnknXG5leHBvcnQgKiBmcm9tICcuL3N0b3J5LWVtcHR5LXdpdGgtcm91dGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yeS1tb2RhbC1jb250YWluZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yeS10b2FzdHIuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vb24tc3RvcnktYm9vdHN0cmFwcGVkLWV4ZWMnXG5leHBvcnQgKiBmcm9tICcuL29uLXN0b3J5LWJvb3RzdHJhcHBlZC10cmlnZ2VyJ1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yeS1wcmVmZXJlbmNlcy1hY2Nlc3Nvci5zZXJ2aWNlJ1xuIl19