@porscheinformatik/clr-addons 18.1.10 → 18.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/datagrid/datagrid-state-persistence/datagrid-state-persistence-model.interface.d.ts +1 -0
- package/datagrid/datagrid-state-persistence/state-persistence-key.directive.d.ts +12 -2
- package/datagrid/datagrid-state-persistence/state-persistence-options.interface.d.ts +1 -0
- package/esm2022/datagrid/datagrid-state-persistence/datagrid-state-persistence-model.interface.mjs +1 -1
- package/esm2022/datagrid/datagrid-state-persistence/state-persistence-key.directive.mjs +67 -8
- package/esm2022/datagrid/datagrid-state-persistence/state-persistence-options.interface.mjs +1 -1
- package/fesm2022/clr-addons.mjs +65 -6
- package/fesm2022/clr-addons.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/clr-addons-phs.css +1 -0
- package/styles/clr-addons-phs.css.map +1 -1
- package/styles/clr-addons-phs.min.css +1 -1
- package/styles/clr-addons-phs.min.css.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AfterContentInit, ElementRef, OnDestroy, QueryList } from '@angular/core';
|
|
2
|
-
import { ClrDatagrid, ClrDatagridFilter, ClrDatagridPagination } from '@clr/angular';
|
|
2
|
+
import { ClrDatagrid, ClrDatagridColumn, ClrDatagridFilter, ClrDatagridPagination } from '@clr/angular';
|
|
3
3
|
import { ClrDatagridStatePersistenceModel } from './datagrid-state-persistence-model.interface';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import { StatePersistenceOptions } from './state-persistence-options.interface';
|
|
@@ -19,6 +19,8 @@ export declare class StatePersistenceKeyDirective implements AfterContentInit, O
|
|
|
19
19
|
pagination: ClrDatagridPagination;
|
|
20
20
|
paginationElem: ElementRef;
|
|
21
21
|
customFilters: QueryList<ClrDatagridFilter>;
|
|
22
|
+
gridColumnRefs: QueryList<ElementRef>;
|
|
23
|
+
gridColumns: QueryList<ClrDatagridColumn>;
|
|
22
24
|
canShowPaginationDescription: boolean;
|
|
23
25
|
warnedAboutCustomDescription: boolean;
|
|
24
26
|
destroy$: Subject<void>;
|
|
@@ -35,9 +37,11 @@ export declare class StatePersistenceKeyDirective implements AfterContentInit, O
|
|
|
35
37
|
private initCurrentPage;
|
|
36
38
|
private initFilter;
|
|
37
39
|
private initSorting;
|
|
40
|
+
private initColumnWidths;
|
|
38
41
|
private initDatagridPersister;
|
|
39
42
|
private persistFiltersAndCurrentPage;
|
|
40
43
|
private persistSorting;
|
|
44
|
+
private persistColumnWidths;
|
|
41
45
|
/**
|
|
42
46
|
* Pagination description must be set by this directive,
|
|
43
47
|
* otherwise we can't update datagrid values from localStorage
|
|
@@ -49,6 +53,12 @@ export declare class StatePersistenceKeyDirective implements AfterContentInit, O
|
|
|
49
53
|
*/
|
|
50
54
|
getVolatileDataState(): ClrDatagridStatePersistenceModel;
|
|
51
55
|
getLocalStorageState(): ClrDatagridStatePersistenceModel;
|
|
56
|
+
/**
|
|
57
|
+
* Save the state of volatile data. This can be influenced by clrUseLocalStoreOnly.
|
|
58
|
+
*/
|
|
59
|
+
saveVolatileDataState(state: ClrDatagridStatePersistenceModel): void;
|
|
60
|
+
saveLocalStorageState(state: ClrDatagridStatePersistenceModel): void;
|
|
61
|
+
private getStorageBasedOnInputFlag;
|
|
52
62
|
/**
|
|
53
63
|
* As a date is serialized as string, but not deserialized as date
|
|
54
64
|
* we need to add some meta information to do that manually later
|
|
@@ -63,5 +73,5 @@ export declare class StatePersistenceKeyDirective implements AfterContentInit, O
|
|
|
63
73
|
private getSortProperty;
|
|
64
74
|
ngOnDestroy(): void;
|
|
65
75
|
static ɵfac: i0.ɵɵFactoryDeclaration<StatePersistenceKeyDirective, never>;
|
|
66
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<StatePersistenceKeyDirective, "[clrStatePersistenceKey]", never, { "options": { "alias": "clrStatePersistenceKey"; "required": false; }; "useLocalStoreOnly": { "alias": "clrUseLocalStoreOnly"; "required": false; }; "paginationDescription": { "alias": "clrPaginationDescription"; "required": false; }; }, {}, ["pagination", "paginationElem", "customFilters"], never, false, never>;
|
|
76
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<StatePersistenceKeyDirective, "[clrStatePersistenceKey]", never, { "options": { "alias": "clrStatePersistenceKey"; "required": false; }; "useLocalStoreOnly": { "alias": "clrUseLocalStoreOnly"; "required": false; }; "paginationDescription": { "alias": "clrPaginationDescription"; "required": false; }; }, {}, ["pagination", "paginationElem", "customFilters", "gridColumnRefs", "gridColumns"], never, false, never>;
|
|
67
77
|
}
|
package/esm2022/datagrid/datagrid-state-persistence/datagrid-state-persistence-model.interface.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQtc3RhdGUtcGVyc2lzdGVuY2UtbW9kZWwuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0YWdyaWQtc3RhdGUtcGVyc2lzdGVuY2UvZGF0YWdyaWQtc3RhdGUtcGVyc2lzdGVuY2UtbW9kZWwuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIHtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgc29ydEJ5Pzogc3RyaW5nO1xuICBzb3J0UmV2ZXJzZT86IGJvb2xlYW47XG4gIGNvbHVtbnM6IHsgW2tleTogc3RyaW5nXTogQ2xyQ29sdW1uU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xyQ29sdW1uU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIHtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZmlsdGVyVmFsdWU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQtc3RhdGUtcGVyc2lzdGVuY2UtbW9kZWwuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0YWdyaWQtc3RhdGUtcGVyc2lzdGVuY2UvZGF0YWdyaWQtc3RhdGUtcGVyc2lzdGVuY2UtbW9kZWwuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIHtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgc29ydEJ5Pzogc3RyaW5nO1xuICBzb3J0UmV2ZXJzZT86IGJvb2xlYW47XG4gIGNvbHVtbnM6IHsgW2tleTogc3RyaW5nXTogQ2xyQ29sdW1uU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xyQ29sdW1uU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIHtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZmlsdGVyVmFsdWU/OiBhbnk7XG4gIHdpZHRoPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ContentChild, ContentChildren, Directive, ElementRef, Input, QueryList, } from '@angular/core';
|
|
2
|
-
import { ClrDatagrid, ClrDatagridFilter, ClrDatagridPagination, ClrDatagridSortOrder, DatagridPropertyComparator, } from '@clr/angular';
|
|
1
|
+
import { ContentChild, ContentChildren, Directive, ElementRef, HostListener, Input, QueryList, } from '@angular/core';
|
|
2
|
+
import { ClrDatagrid, ClrDatagridColumn, ClrDatagridFilter, ClrDatagridPagination, ClrDatagridSortOrder, DatagridPropertyComparator, } from '@clr/angular';
|
|
3
3
|
import { delay, Subject } from 'rxjs';
|
|
4
4
|
import { take, takeUntil } from 'rxjs/operators';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -30,6 +30,10 @@ export class StatePersistenceKeyDirective {
|
|
|
30
30
|
this.initFilter(volatileDataState);
|
|
31
31
|
this.initSorting(localStorageState);
|
|
32
32
|
this.initDatagridPersister();
|
|
33
|
+
const columnWidthPersistenceEnabled = this.options.persistColumnWidths ?? false;
|
|
34
|
+
if (columnWidthPersistenceEnabled) {
|
|
35
|
+
this.initColumnWidths(localStorageState);
|
|
36
|
+
}
|
|
33
37
|
const paginationPersistenceEnabled = this.options.persistPagination ?? true;
|
|
34
38
|
if (this.pagination?.page && paginationPersistenceEnabled) {
|
|
35
39
|
this.initPageSizePersister(localStorageState);
|
|
@@ -52,7 +56,7 @@ export class StatePersistenceKeyDirective {
|
|
|
52
56
|
this.pagination.page.sizeChange.pipe(takeUntil(this.destroy$)).subscribe(pageSize => {
|
|
53
57
|
const state = this.getLocalStorageState();
|
|
54
58
|
state.pageSize = pageSize;
|
|
55
|
-
|
|
59
|
+
this.saveLocalStorageState(state);
|
|
56
60
|
});
|
|
57
61
|
/* init page size of datagrid if already persisted in local storage */
|
|
58
62
|
if (savedState.pageSize) {
|
|
@@ -98,6 +102,20 @@ export class StatePersistenceKeyDirective {
|
|
|
98
102
|
});
|
|
99
103
|
}
|
|
100
104
|
}
|
|
105
|
+
initColumnWidths(savedState) {
|
|
106
|
+
const columnWidthsByField = savedState?.columns
|
|
107
|
+
? Object.fromEntries(Object.entries(savedState.columns).map(([key, value]) => [key, value.width]))
|
|
108
|
+
: undefined;
|
|
109
|
+
if (this.gridColumns && this.gridColumnRefs && columnWidthsByField !== undefined) {
|
|
110
|
+
for (let i = 0; i < this.gridColumns.length; i++) {
|
|
111
|
+
const col = this.gridColumns.get(i);
|
|
112
|
+
const el = this.gridColumnRefs.get(i)?.nativeElement;
|
|
113
|
+
if ((col?.field && columnWidthsByField[col.field]) || el) {
|
|
114
|
+
el.style.width = columnWidthsByField[col.field];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
101
119
|
initDatagridPersister() {
|
|
102
120
|
// delay is needed, as onDestroy the filters emit empty values.
|
|
103
121
|
// So delay it to the end of the current cycle, so the directive is also destroyed before it gets the next values
|
|
@@ -113,6 +131,9 @@ export class StatePersistenceKeyDirective {
|
|
|
113
131
|
persistFiltersAndCurrentPage(dgState) {
|
|
114
132
|
const filterPersistenceEnabled = this.options.persistFilters ?? true;
|
|
115
133
|
const paginationPersistenceEnabled = this.options.persistPagination ?? true;
|
|
134
|
+
if (!filterPersistenceEnabled && !paginationPersistenceEnabled) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
116
137
|
const state = this.getVolatileDataState();
|
|
117
138
|
state.columns = state.columns || {};
|
|
118
139
|
if (paginationPersistenceEnabled) {
|
|
@@ -128,7 +149,7 @@ export class StatePersistenceKeyDirective {
|
|
|
128
149
|
}
|
|
129
150
|
});
|
|
130
151
|
}
|
|
131
|
-
|
|
152
|
+
this.saveVolatileDataState(state);
|
|
132
153
|
}
|
|
133
154
|
persistSorting(dgState) {
|
|
134
155
|
const sortPersistenceEnabled = this.options.persistSort ?? true;
|
|
@@ -136,7 +157,23 @@ export class StatePersistenceKeyDirective {
|
|
|
136
157
|
const state = this.getLocalStorageState();
|
|
137
158
|
state.sortBy = this.getSortProperty(dgState.sort?.by);
|
|
138
159
|
state.sortReverse = dgState.sort?.reverse;
|
|
139
|
-
|
|
160
|
+
this.saveLocalStorageState(state);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
persistColumnWidths() {
|
|
164
|
+
const columnWidthPersistenceEnabled = this.options?.persistColumnWidths ?? false;
|
|
165
|
+
if (columnWidthPersistenceEnabled) {
|
|
166
|
+
const state = this.getLocalStorageState();
|
|
167
|
+
state.columns = state.columns || {};
|
|
168
|
+
for (let i = 0; i < this.gridColumns.length; i++) {
|
|
169
|
+
const col = this.gridColumns.get(i);
|
|
170
|
+
const el = this.gridColumnRefs.get(i)?.nativeElement;
|
|
171
|
+
if (el?.style?.width && el.style.width !== '0px' && col?.field) {
|
|
172
|
+
state.columns[col.field] ||= {};
|
|
173
|
+
state.columns[col.field].width = el.style.width;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
this.saveLocalStorageState(state);
|
|
140
177
|
}
|
|
141
178
|
}
|
|
142
179
|
/**
|
|
@@ -166,11 +203,23 @@ export class StatePersistenceKeyDirective {
|
|
|
166
203
|
* Gets the state of volatile data. This can be influenced by clrUseLocalStoreOnly.
|
|
167
204
|
*/
|
|
168
205
|
getVolatileDataState() {
|
|
169
|
-
return JSON.parse(
|
|
206
|
+
return JSON.parse(this.getStorageBasedOnInputFlag().getItem(this.options.key)) || {};
|
|
170
207
|
}
|
|
171
208
|
getLocalStorageState() {
|
|
172
209
|
return JSON.parse(localStorage.getItem(this.options.key)) || {};
|
|
173
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* Save the state of volatile data. This can be influenced by clrUseLocalStoreOnly.
|
|
213
|
+
*/
|
|
214
|
+
saveVolatileDataState(state) {
|
|
215
|
+
this.getStorageBasedOnInputFlag().setItem(this.options.key, JSON.stringify(state));
|
|
216
|
+
}
|
|
217
|
+
saveLocalStorageState(state) {
|
|
218
|
+
localStorage.setItem(this.options.key, JSON.stringify(state));
|
|
219
|
+
}
|
|
220
|
+
getStorageBasedOnInputFlag() {
|
|
221
|
+
return this.useLocalStoreOnly ? localStorage : sessionStorage;
|
|
222
|
+
}
|
|
174
223
|
/**
|
|
175
224
|
* As a date is serialized as string, but not deserialized as date
|
|
176
225
|
* we need to add some meta information to do that manually later
|
|
@@ -216,11 +265,12 @@ export class StatePersistenceKeyDirective {
|
|
|
216
265
|
return undefined;
|
|
217
266
|
}
|
|
218
267
|
ngOnDestroy() {
|
|
268
|
+
this.persistColumnWidths();
|
|
219
269
|
this.destroy$.next();
|
|
220
270
|
this.destroy$.complete();
|
|
221
271
|
}
|
|
222
272
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: StatePersistenceKeyDirective, deps: [{ token: i1.ClrDatagrid }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
223
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: StatePersistenceKeyDirective, selector: "[clrStatePersistenceKey]", inputs: { options: ["clrStatePersistenceKey", "options"], useLocalStoreOnly: ["clrUseLocalStoreOnly", "useLocalStoreOnly"], paginationDescription: ["clrPaginationDescription", "paginationDescription"] }, queries: [{ propertyName: "pagination", first: true, predicate: ClrDatagridPagination, descendants: true }, { propertyName: "paginationElem", first: true, predicate: ClrDatagridPagination, descendants: true, read: ElementRef }, { propertyName: "customFilters", predicate: ClrDatagridFilter, descendants: true }], ngImport: i0 }); }
|
|
273
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: StatePersistenceKeyDirective, selector: "[clrStatePersistenceKey]", inputs: { options: ["clrStatePersistenceKey", "options"], useLocalStoreOnly: ["clrUseLocalStoreOnly", "useLocalStoreOnly"], paginationDescription: ["clrPaginationDescription", "paginationDescription"] }, host: { listeners: { "window:beforeunload": "persistColumnWidths()" } }, queries: [{ propertyName: "pagination", first: true, predicate: ClrDatagridPagination, descendants: true }, { propertyName: "paginationElem", first: true, predicate: ClrDatagridPagination, descendants: true, read: ElementRef }, { propertyName: "customFilters", predicate: ClrDatagridFilter, descendants: true }, { propertyName: "gridColumnRefs", predicate: ClrDatagridColumn, read: ElementRef }, { propertyName: "gridColumns", predicate: ClrDatagridColumn }], ngImport: i0 }); }
|
|
224
274
|
}
|
|
225
275
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: StatePersistenceKeyDirective, decorators: [{
|
|
226
276
|
type: Directive,
|
|
@@ -245,5 +295,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
245
295
|
}], customFilters: [{
|
|
246
296
|
type: ContentChildren,
|
|
247
297
|
args: [ClrDatagridFilter, { descendants: true }]
|
|
298
|
+
}], gridColumnRefs: [{
|
|
299
|
+
type: ContentChildren,
|
|
300
|
+
args: [ClrDatagridColumn, { read: ElementRef }]
|
|
301
|
+
}], gridColumns: [{
|
|
302
|
+
type: ContentChildren,
|
|
303
|
+
args: [ClrDatagridColumn]
|
|
304
|
+
}], persistColumnWidths: [{
|
|
305
|
+
type: HostListener,
|
|
306
|
+
args: ['window:beforeunload']
|
|
248
307
|
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uta2V5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGFncmlkL2RhdGFncmlkLXN0YXRlLXBlcnNpc3RlbmNlL3N0YXRlLXBlcnNpc3RlbmNlLWtleS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBRVgsaUJBQWlCLEVBRWpCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFFcEIsMEJBQTBCLEdBQzNCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUdqRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFVekIsTUFBTSxPQUFPLDRCQUE0QjtJQThCdkMsWUFBb0IsUUFBcUI7UUFBckIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQWxCekMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRzFCLDBCQUFxQixHQUFHLEVBQUUsQ0FBQztRQVczQixpQ0FBNEIsR0FBRyxLQUFLLENBQUM7UUFDckMsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWEsQ0FBQztJQUU3QyxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJ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WUFBWSwwQkFBMEIsRUFBRSxDQUFDO2dCQUNqRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQWhSVSw0QkFBNEI7a0dBQTVCLDRCQUE0QixvVEFpQnpCLHFCQUFxQixpRkFHckIscUJBQXFCLDJCQUFVLFVBQVUsZ0RBR3RDLGlCQUFpQjs7MkZBdkJ2Qiw0QkFBNEI7a0JBSHhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtpQkFDckM7Z0ZBVUMsT0FBTztzQkFETixLQUFLO3VCQUFDLHdCQUF3QjtnQkFJL0IsaUJBQWlCO3NCQURoQixLQUFLO3VCQUFDLHNCQUFzQjtnQkFJN0IscUJBQXFCO3NCQURwQixLQUFLO3VCQUFDLDBCQUEwQjtnQkFJakMsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFJbkMsY0FBYztzQkFEYixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJekQsYUFBYTtzQkFEWixlQUFlO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDbHJEYXRhZ3JpZCxcbiAgQ2xyRGF0YWdyaWRDb21wYXJhdG9ySW50ZXJmYWNlLFxuICBDbHJEYXRhZ3JpZEZpbHRlcixcbiAgQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2UsXG4gIENsckRhdGFncmlkUGFnaW5hdGlvbixcbiAgQ2xyRGF0YWdyaWRTb3J0T3JkZXIsXG4gIENsckRhdGFncmlkU3RhdGVJbnRlcmZhY2UsXG4gIERhdGFncmlkUHJvcGVydHlDb21wYXJhdG9yLFxufSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuaW1wb3J0IHsgQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwgfSBmcm9tICcuL2RhdGFncmlkLXN0YXRlLXBlcnNpc3RlbmNlLW1vZGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBkZWxheSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RhdGVQZXJzaXN0ZW5jZU9wdGlvbnMgfSBmcm9tICcuL3N0YXRlLXBlcnNpc3RlbmNlLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuY29uc3QgREFURV9UWVBFID0gJ2RhdGUnO1xuXG5pbnRlcmZhY2UgRmlsdGVyVmFsdWVXaXRoTWV0YWRhdGEge1xuICB0eXBlOiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2xyU3RhdGVQZXJzaXN0ZW5jZUtleV0nLFxufSlcbmV4cG9ydCBjbGFzcyBTdGF0ZVBlcnNpc3RlbmNlS2V5RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHBlcnNpc3RlbmNlLlxuICAgKiAnS2V5JyByZXByZXNlbnRzIHRoZSBsb2NhbCBzdG9yYWdlIGtleSB1bmRlciB3aGljaCB0aGUgcGVyc2lzdGVuY2Ugc3RhdGUgaXMgc3RvcmVkLlxuICAgKlxuICAgKiBPcHRpb25hbCBmaWVsZHMgd2l0aCB0aGUgJ3BlcnNpc3QnIHByZWZpeCB0b2dnbGUgdGhlIHBlcnNpc3RlbmNlIG9mIHRoZSByZXNwZWN0aXZlIGRhdGFncmlkIGZ1bmN0aW9uYWxpdHksXG4gICAqIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGFsd2F5cyAndHJ1ZScuXG4gICAqL1xuICBASW5wdXQoJ2NsclN0YXRlUGVyc2lzdGVuY2VLZXknKVxuICBvcHRpb25zOiBTdGF0ZVBlcnNpc3RlbmNlT3B0aW9ucztcblxuICBASW5wdXQoJ2NsclVzZUxvY2FsU3RvcmVPbmx5JylcbiAgdXNlTG9jYWxTdG9yZU9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsclBhZ2luYXRpb25EZXNjcmlwdGlvbicpXG4gIHBhZ2luYXRpb25EZXNjcmlwdGlvbiA9ICcnO1xuXG4gIEBDb250ZW50Q2hpbGQoQ2xyRGF0YWdyaWRQYWdpbmF0aW9uKVxuICBwYWdpbmF0aW9uOiBDbHJEYXRhZ3JpZFBhZ2luYXRpb247XG5cbiAgQENvbnRlbnRDaGlsZChDbHJEYXRhZ3JpZFBhZ2luYXRpb24sIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwYWdpbmF0aW9uRWxlbTogRWxlbWVudFJlZjtcblxuICBAQ29udGVudENoaWxkcmVuKENsckRhdGFncmlkRmlsdGVyLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGN1c3RvbUZpbHRlcnM6IFF1ZXJ5TGlzdDxDbHJEYXRhZ3JpZEZpbHRlcj47XG5cbiAgY2FuU2hvd1BhZ2luYXRpb25EZXNjcmlwdGlvbiA9IGZhbHNlO1xuICB3YXJuZWRBYm91dEN1c3RvbURlc2NyaXB0aW9uID0gZmFsc2U7XG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFncmlkOiBDbHJEYXRhZ3JpZCkge31cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5zZXJ2ZXJEcml2ZW4pIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgY29uc3Qgdm9sYXRpbGVEYXRhU3RhdGUgPSB0aGlzLmdldFZvbGF0aWxlRGF0YVN0YXRlKCk7XG4gICAgY29uc3QgbG9jYWxTdG9yYWdlU3RhdGUgPSB0aGlzLmdldExvY2FsU3RvcmFnZVN0YXRlKCk7XG5cbiAgICB0aGlzLmluaXRGaWx0ZXIodm9sYXRpbGVEYXRhU3RhdGUpO1xuICAgIHRoaXMuaW5pdFNvcnRpbmcobG9jYWxTdG9yYWdlU3RhdGUpO1xuICAgIHRoaXMuaW5pdERhdGFncmlkUGVyc2lzdGVyKCk7XG5cbiAgICBjb25zdCBwYWdpbmF0aW9uUGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zLnBlcnNpc3RQYWdpbmF0aW9uID8/IHRydWU7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbj8ucGFnZSAmJiBwYWdpbmF0aW9uUGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICB0aGlzLmluaXRQYWdlU2l6ZVBlcnNpc3Rlcihsb2NhbFN0b3JhZ2VTdGF0ZSk7XG4gICAgICB0aGlzLmluaXRDdXJyZW50UGFnZSh2b2xhdGlsZURhdGFTdGF0ZSk7XG4gICAgfVxuICAgIHRoaXMuY2FuU2hvd1BhZ2luYXRpb25EZXNjcmlwdGlvbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogV2l0aCB0aGlzIG1ldGhvZCBmaWx0ZXJzIGNhbiBiZSBjbGVhcmVkXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSBmb3IgY2xyU3RhdGVQZXJzaXN0ZW5jZUtleVxuICAgKiBAcGFyYW0gdXNlTG9jYWxTdG9yZU9ubHkgVGhlIGNsclVzZUxvY2FsU3RvcmVPbmx5IGluZGljYXRvclxuICAgKi9cbiAgc3RhdGljIGNsZWFyRmlsdGVycyhrZXk6IHN0cmluZywgdXNlTG9jYWxTdG9yZU9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZSgodXNlTG9jYWxTdG9yZU9ubHkgPyBsb2NhbFN0b3JhZ2UgOiBzZXNzaW9uU3RvcmFnZSkuZ2V0SXRlbShrZXkpKSB8fCB7fTtcbiAgICBkYXRhLmNvbHVtbnMgPSB7fTtcbiAgICAodXNlTG9jYWxTdG9yZU9ubHkgPyBsb2NhbFN0b3JhZ2UgOiBzZXNzaW9uU3RvcmFnZSkuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFBhZ2VTaXplUGVyc2lzdGVyKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKSB7XG4gICAgLyogcGVyc2lzdCBwYWdlIHNpemUgY2hhbmdlcyBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2Uuc2l6ZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHBhZ2VTaXplID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRMb2NhbFN0b3JhZ2VTdGF0ZSgpO1xuICAgICAgc3RhdGUucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMub3B0aW9ucy5rZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XG4gICAgfSk7XG5cbiAgICAvKiBpbml0IHBhZ2Ugc2l6ZSBvZiBkYXRhZ3JpZCBpZiBhbHJlYWR5IHBlcnNpc3RlZCBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgaWYgKHNhdmVkU3RhdGUucGFnZVNpemUpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlLnNpemUgPSBzYXZlZFN0YXRlLnBhZ2VTaXplO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEN1cnJlbnRQYWdlKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKSB7XG4gICAgLyogaW5pdCBjdXJyZW50IHBhZ2Ugb2YgZGF0YWdyaWQgaWYgYWxyZWFkeSBwZXJzaXN0ZWQgKi9cbiAgICBpZiAoc2F2ZWRTdGF0ZT8uY3VycmVudFBhZ2UpIHtcbiAgICAgIHRoaXMuZGF0YWdyaWQuaXRlbXMuY2hhbmdlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+ICh0aGlzLnBhZ2luYXRpb24ucGFnZS5jdXJyZW50ID0gc2F2ZWRTdGF0ZS5jdXJyZW50UGFnZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZpbHRlcihzYXZlZFN0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlclBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0RmlsdGVycyA/PyB0cnVlO1xuICAgIGlmIChzYXZlZFN0YXRlLmNvbHVtbnMgJiYgZmlsdGVyUGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICBPYmplY3Qua2V5cyhzYXZlZFN0YXRlLmNvbHVtbnMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyKHByb3ApO1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgLyogaWYgdGhlIHNhdmVkIHZhbHVlIGlzIGVtcHR5IGZpbHRlciBzZW5kIG51bGwgKi9cbiAgICAgICAgICBjb25zdCBzYXZlZEZpbHRlclZhbHVlID0gc2F2ZWRTdGF0ZS5jb2x1bW5zW3Byb3BdLmZpbHRlclZhbHVlO1xuICAgICAgICAgIGlmIChzYXZlZEZpbHRlclZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIChmaWx0ZXIgYXMgYW55KVsndmFsdWUnXSA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHNhdmVkRmlsdGVyVmFsdWUpXG4gICAgICAgICAgICAgIC5maWx0ZXIodmFsdWVLZXkgPT4gdmFsdWVLZXkgIT09ICdwcm9wZXJ0eScpXG4gICAgICAgICAgICAgIC5mb3JFYWNoKHZhbHVlS2V5ID0+ICgoZmlsdGVyIGFzIGFueSlbdmFsdWVLZXldID0gdGhpcy5wYXJzZUZpbHRlclZhbHVlKHNhdmVkRmlsdGVyVmFsdWVbdmFsdWVLZXldKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0U29ydGluZyhzYXZlZFN0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRQZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdFNvcnQgPz8gdHJ1ZTtcbiAgICBpZiAoc2F2ZWRTdGF0ZS5zb3J0QnkgJiYgc29ydFBlcnNpc3RlbmNlRW5hYmxlZCkge1xuICAgICAgdGhpcy5kYXRhZ3JpZC5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0U29ydFByb3BlcnR5KGNvbHVtbi5zb3J0QnkpID09PSBzYXZlZFN0YXRlLnNvcnRCeSkge1xuICAgICAgICAgIGNvbHVtbi5zb3J0T3JkZXIgPSBzYXZlZFN0YXRlLnNvcnRSZXZlcnNlID8gQ2xyRGF0YWdyaWRTb3J0T3JkZXIuREVTQyA6IENsckRhdGFncmlkU29ydE9yZGVyLkFTQztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW4uc29ydE9yZGVyID0gQ2xyRGF0YWdyaWRTb3J0T3JkZXIuVU5TT1JURUQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdERhdGFncmlkUGVyc2lzdGVyKCkge1xuICAgIC8vIGRlbGF5IGlzIG5lZWRlZCwgYXMgb25EZXN0cm95IHRoZSBmaWx0ZXJzIGVtaXQgZW1wdHkgdmFsdWVzLlxuICAgIC8vIFNvIGRlbGF5IGl0IHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgY3ljbGUsIHNvIHRoZSBkaXJlY3RpdmUgaXMgYWxzbyBkZXN0cm95ZWQgYmVmb3JlIGl0IGdldHMgdGhlIG5leHQgdmFsdWVzXG4gICAgdGhpcy5kYXRhZ3JpZC5yZWZyZXNoLnBpcGUoZGVsYXkoMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGRnU3RhdGUgPT4ge1xuICAgICAgdGhpcy5wZXJzaXN0RmlsdGVyc0FuZEN1cnJlbnRQYWdlKGRnU3RhdGUpO1xuICAgICAgdGhpcy5wZXJzaXN0U29ydGluZyhkZ1N0YXRlKTtcblxuICAgICAgaWYgKHRoaXMuY2FuU2hvd1BhZ2luYXRpb25EZXNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb25EZXNjcmlwdGlvbigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhZ3JpZC5pdGVtcy5jaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVBhZ2luYXRpb25EZXNjcmlwdGlvbigpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyc2lzdEZpbHRlcnNBbmRDdXJyZW50UGFnZShkZ1N0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlSW50ZXJmYWNlPHVua25vd24+KTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyUGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zLnBlcnNpc3RGaWx0ZXJzID8/IHRydWU7XG4gICAgY29uc3QgcGFnaW5hdGlvblBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0UGFnaW5hdGlvbiA/PyB0cnVlO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFZvbGF0aWxlRGF0YVN0YXRlKCk7XG4gICAgc3RhdGUuY29sdW1ucyA9IHN0YXRlLmNvbHVtbnMgfHwge307XG5cbiAgICBpZiAocGFnaW5hdGlvblBlcnNpc3RlbmNlRW5hYmxlZCkge1xuICAgICAgc3RhdGUuY3VycmVudFBhZ2UgPSBkZ1N0YXRlLnBhZ2U/LmN1cnJlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGZpbHRlclBlcnNpc3RlbmNlRW5hYmxlZCkge1xuICAgICAgT2JqZWN0LmtleXMoc3RhdGUuY29sdW1ucykuZm9yRWFjaChwcm9wID0+IChzdGF0ZS5jb2x1bW5zW3Byb3BdLmZpbHRlclZhbHVlID0gdW5kZWZpbmVkKSk7XG4gICAgICBkZ1N0YXRlLmZpbHRlcnM/LmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLmdldEZpbHRlclByb3BlcnR5TmFtZShmaWx0ZXIpO1xuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICBzdGF0ZS5jb2x1bW5zW3Byb3BlcnR5XSA9IHN0YXRlLmNvbHVtbnNbcHJvcGVydHldIHx8IHt9O1xuICAgICAgICAgIHN0YXRlLmNvbHVtbnNbcHJvcGVydHldLmZpbHRlclZhbHVlID0gdGhpcy5lbnJpY2hGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAodGhpcy51c2VMb2NhbFN0b3JlT25seSA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlKS5zZXRJdGVtKHRoaXMub3B0aW9ucy5rZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XG4gIH1cblxuICBwcml2YXRlIHBlcnNpc3RTb3J0aW5nKGRnU3RhdGU6IENsckRhdGFncmlkU3RhdGVJbnRlcmZhY2U8dW5rbm93bj4pOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0UGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zLnBlcnNpc3RTb3J0ID8/IHRydWU7XG4gICAgaWYgKHNvcnRQZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRMb2NhbFN0b3JhZ2VTdGF0ZSgpO1xuICAgICAgc3RhdGUuc29ydEJ5ID0gdGhpcy5nZXRTb3J0UHJvcGVydHkoZGdTdGF0ZS5zb3J0Py5ieSk7XG4gICAgICBzdGF0ZS5zb3J0UmV2ZXJzZSA9IGRnU3RhdGUuc29ydD8ucmV2ZXJzZTtcblxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5vcHRpb25zLmtleSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFnaW5hdGlvbiBkZXNjcmlwdGlvbiBtdXN0IGJlIHNldCBieSB0aGlzIGRpcmVjdGl2ZSxcbiAgICogb3RoZXJ3aXNlIHdlIGNhbid0IHVwZGF0ZSBkYXRhZ3JpZCB2YWx1ZXMgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICogd2l0aG91dCBnZXR0aW5nIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlUGFnaW5hdGlvbkRlc2NyaXB0aW9uKCkge1xuICAgIGlmICh0aGlzLnBhZ2luYXRpb25FbGVtICYmIHRoaXMucGFnaW5hdGlvbikge1xuICAgICAgY29uc3QgcGFnaW5hdGlvbkRlc2NFbGVtID0gKDxIVE1MRWxlbWVudD50aGlzLnBhZ2luYXRpb25FbGVtLm5hdGl2ZUVsZW1lbnQpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gICAgICAgICdwYWdpbmF0aW9uLWRlc2NyaXB0aW9uJ1xuICAgICAgKT8uWzBdO1xuICAgICAgaWYgKHBhZ2luYXRpb25EZXNjRWxlbSkge1xuICAgICAgICBpZiAoIXRoaXMud2FybmVkQWJvdXRDdXN0b21EZXNjcmlwdGlvbiAmJiBwYWdpbmF0aW9uRGVzY0VsZW0udGV4dENvbnRlbnQudHJpbSgpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAnV2hlbiB1c2luZyBjbHJTdGF0ZVBlcnNpc3RlbmNlS2V5IGRpcmVjdGl2ZSwgeW91IHNob3VsZCBub3QgdXNlIGN1c3RvbSBwYWdpbmF0aW9uIGRlc2NyaXB0aW9uJyArXG4gICAgICAgICAgICAgICcgaW5zaWRlIHBhZ2luYXRpb24gY29tcG9uZW50IGNvbnRlbnQsIGJ1dCB1c2UgW2NsclBhZ2luYXRpb25EZXNjcmlwdGlvbl0gb24gY2xyLWRhdGFncmlkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53YXJuZWRBYm91dEN1c3RvbURlc2NyaXB0aW9uID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgcGFnaW5hdGlvbkRlc2NFbGVtLnRleHRDb250ZW50ID0gdGhpcy5wYWdpbmF0aW9uRGVzY3JpcHRpb25cbiAgICAgICAgICAgIC5yZXBsYWNlKCd7e2ZpcnN0fX0nLCAodGhpcy5wYWdpbmF0aW9uLmZpcnN0SXRlbSArIDEpLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAucmVwbGFjZSgne3tsYXN0fX0nLCAodGhpcy5wYWdpbmF0aW9uLmxhc3RJdGVtICsgMSkudG9TdHJpbmcoKSlcbiAgICAgICAgICAgIC5yZXBsYWNlKCd7e3RvdGFsfX0nLCB0aGlzLnBhZ2luYXRpb24udG90YWxJdGVtcy50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGF0ZSBvZiB2b2xhdGlsZSBkYXRhLiBUaGlzIGNhbiBiZSBpbmZsdWVuY2VkIGJ5IGNsclVzZUxvY2FsU3RvcmVPbmx5LlxuICAgKi9cbiAgZ2V0Vm9sYXRpbGVEYXRhU3RhdGUoKTogQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwge1xuICAgIHJldHVybiBKU09OLnBhcnNlKCh0aGlzLnVzZUxvY2FsU3RvcmVPbmx5ID8gbG9jYWxTdG9yYWdlIDogc2Vzc2lvblN0b3JhZ2UpLmdldEl0ZW0odGhpcy5vcHRpb25zLmtleSkpIHx8IHt9O1xuICB9XG5cbiAgZ2V0TG9jYWxTdG9yYWdlU3RhdGUoKTogQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMub3B0aW9ucy5rZXkpKSB8fCB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcyBhIGRhdGUgaXMgc2VyaWFsaXplZCBhcyBzdHJpbmcsIGJ1dCBub3QgZGVzZXJpYWxpemVkIGFzIGRhdGVcbiAgICogd2UgbmVlZCB0byBhZGQgc29tZSBtZXRhIGluZm9ybWF0aW9uIHRvIGRvIHRoYXQgbWFudWFsbHkgbGF0ZXJcbiAgICovXG4gIHByaXZhdGUgZW5yaWNoRmlsdGVyVmFsdWUoZmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gICAgT2JqZWN0LmtleXMoZmlsdGVyKS5mb3JFYWNoKFxuICAgICAga2V5ID0+XG4gICAgICAgIChyZXN1bHRba2V5XSA9XG4gICAgICAgICAgZmlsdGVyW2tleV0gaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgdHlwZTogREFURV9UWVBFLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXJba2V5XSxcbiAgICAgICAgICAgICAgfSBhcyBGaWx0ZXJWYWx1ZVdpdGhNZXRhZGF0YSlcbiAgICAgICAgICAgIDogZmlsdGVyW2tleV0pXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZmlsdGVyIHZhbHVlcyB3aXRoIG1ldGEgaW5mb3JtYXRpb24gbGlrZSBkYXRlLCB3aGljaCBuZWVkcyBtYW51YWwgZGVzZXJpYWxpemF0aW9uIHRvIGEgZGF0ZSBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgcGFyc2VGaWx0ZXJWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICAgIHJldHVybiAodmFsdWUgYXMgRmlsdGVyVmFsdWVXaXRoTWV0YWRhdGEpPy50eXBlID09PSBEQVRFX1RZUEVcbiAgICAgID8gbmV3IERhdGUoKHZhbHVlIGFzIEZpbHRlclZhbHVlV2l0aE1ldGFkYXRhKS52YWx1ZSBhcyBzdHJpbmcpXG4gICAgICA6IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXIocHJvcDogc3RyaW5nKTogQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2U8dW5rbm93biwgdW5rbm93bj4ge1xuICAgIC8vIGdldCBkZWZhdWx0IGZpbHRlciBvciBjdXN0b20gZmlsdGVyXG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZGF0YWdyaWQuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZmllbGQgPT09IHByb3ApPy5maWx0ZXIgfHxcbiAgICAgIHRoaXMuY3VzdG9tRmlsdGVycy5maW5kKGZpbHRlciA9PiB0aGlzLmdldEZpbHRlclByb3BlcnR5TmFtZShmaWx0ZXIuZmlsdGVyKSA9PT0gcHJvcCk/LmZpbHRlclxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlclByb3BlcnR5TmFtZShmaWx0ZXI6IENsckRhdGFncmlkRmlsdGVySW50ZXJmYWNlPHVua25vd24sIHVua25vd24+KTogc3RyaW5nIHtcbiAgICAvLyBmb3IgTmVzdGVkUHJvcGVydHkgd2UgbmVlZCB0byBnZXQgdGhlIG9yaWdpbmFsIHByb3BlcnR5XG4gICAgY29uc3QgZmlsdGVyV2l0aFByb3AgPSBmaWx0ZXIgYXMgdW5rbm93biBhcyB7IHByb3BlcnR5OiB1bmtub3duIH07XG4gICAgcmV0dXJuICgoZmlsdGVyV2l0aFByb3AucHJvcGVydHkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5wcm9wIHx8IGZpbHRlcldpdGhQcm9wLnByb3BlcnR5KSBhcyBzdHJpbmc7XG4gIH1cblxuICBwcml2YXRlIGdldFNvcnRQcm9wZXJ0eShzb3J0Qnk6IENsckRhdGFncmlkQ29tcGFyYXRvckludGVyZmFjZTx1bmtub3duPiB8IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHNvcnRCeSkge1xuICAgICAgaWYgKHR5cGVvZiBzb3J0QnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBzb3J0Qnk7XG4gICAgICB9XG4gICAgICBpZiAoc29ydEJ5IGluc3RhbmNlb2YgRGF0YWdyaWRQcm9wZXJ0eUNvbXBhcmF0b3IpIHtcbiAgICAgICAgcmV0dXJuIHNvcnRCeS5wcm9wO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uta2V5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGFncmlkL2RhdGFncmlkLXN0YXRlLXBlcnNpc3RlbmNlL3N0YXRlLXBlcnNpc3RlbmNlLWtleS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGlCQUFpQixFQUVqQixpQkFBaUIsRUFFakIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUVwQiwwQkFBMEIsR0FDM0IsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR2pELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQVV6QixNQUFNLE9BQU8sNEJBQTRCO0lBb0N2QyxZQUFvQixRQUFxQjtRQUFyQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBeEJ6QyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHMUIsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBaUIzQixpQ0FBNEIsR0FBRyxLQUFLLENBQUM7UUFDckMsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWEsQ0FBQztJQUU3QyxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFB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QUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJeEQsV0FBVztzQkFEVixlQUFlO3VCQUFDLGlCQUFpQjtnQkFpTDFCLG1CQUFtQjtzQkFEMUIsWUFBWTt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDbHJEYXRhZ3JpZCxcbiAgQ2xyRGF0YWdyaWRDb2x1bW4sXG4gIENsckRhdGFncmlkQ29tcGFyYXRvckludGVyZmFjZSxcbiAgQ2xyRGF0YWdyaWRGaWx0ZXIsXG4gIENsckRhdGFncmlkRmlsdGVySW50ZXJmYWNlLFxuICBDbHJEYXRhZ3JpZFBhZ2luYXRpb24sXG4gIENsckRhdGFncmlkU29ydE9yZGVyLFxuICBDbHJEYXRhZ3JpZFN0YXRlSW50ZXJmYWNlLFxuICBEYXRhZ3JpZFByb3BlcnR5Q29tcGFyYXRvcixcbn0gZnJvbSAnQGNsci9hbmd1bGFyJztcbmltcG9ydCB7IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIH0gZnJvbSAnLi9kYXRhZ3JpZC1zdGF0ZS1wZXJzaXN0ZW5jZS1tb2RlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVsYXksIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN0YXRlUGVyc2lzdGVuY2VPcHRpb25zIH0gZnJvbSAnLi9zdGF0ZS1wZXJzaXN0ZW5jZS1vcHRpb25zLmludGVyZmFjZSc7XG5cbmNvbnN0IERBVEVfVFlQRSA9ICdkYXRlJztcblxuaW50ZXJmYWNlIEZpbHRlclZhbHVlV2l0aE1ldGFkYXRhIHtcbiAgdHlwZTogc3RyaW5nO1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NsclN0YXRlUGVyc2lzdGVuY2VLZXldJyxcbn0pXG5leHBvcnQgY2xhc3MgU3RhdGVQZXJzaXN0ZW5jZUtleURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBwZXJzaXN0ZW5jZS5cbiAgICogJ0tleScgcmVwcmVzZW50cyB0aGUgbG9jYWwgc3RvcmFnZSBrZXkgdW5kZXIgd2hpY2ggdGhlIHBlcnNpc3RlbmNlIHN0YXRlIGlzIHN0b3JlZC5cbiAgICpcbiAgICogT3B0aW9uYWwgZmllbGRzIHdpdGggdGhlICdwZXJzaXN0JyBwcmVmaXggdG9nZ2xlIHRoZSBwZXJzaXN0ZW5jZSBvZiB0aGUgcmVzcGVjdGl2ZSBkYXRhZ3JpZCBmdW5jdGlvbmFsaXR5LFxuICAgKiB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhbHdheXMgJ3RydWUnLlxuICAgKi9cbiAgQElucHV0KCdjbHJTdGF0ZVBlcnNpc3RlbmNlS2V5JylcbiAgb3B0aW9uczogU3RhdGVQZXJzaXN0ZW5jZU9wdGlvbnM7XG5cbiAgQElucHV0KCdjbHJVc2VMb2NhbFN0b3JlT25seScpXG4gIHVzZUxvY2FsU3RvcmVPbmx5ID0gZmFsc2U7XG5cbiAgQElucHV0KCdjbHJQYWdpbmF0aW9uRGVzY3JpcHRpb24nKVxuICBwYWdpbmF0aW9uRGVzY3JpcHRpb24gPSAnJztcblxuICBAQ29udGVudENoaWxkKENsckRhdGFncmlkUGFnaW5hdGlvbilcbiAgcGFnaW5hdGlvbjogQ2xyRGF0YWdyaWRQYWdpbmF0aW9uO1xuXG4gIEBDb250ZW50Q2hpbGQoQ2xyRGF0YWdyaWRQYWdpbmF0aW9uLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcGFnaW5hdGlvbkVsZW06IEVsZW1lbnRSZWY7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihDbHJEYXRhZ3JpZEZpbHRlciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBjdXN0b21GaWx0ZXJzOiBRdWVyeUxpc3Q8Q2xyRGF0YWdyaWRGaWx0ZXI+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQ2xyRGF0YWdyaWRDb2x1bW4sIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBncmlkQ29sdW1uUmVmczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQ2xyRGF0YWdyaWRDb2x1bW4pXG4gIGdyaWRDb2x1bW5zOiBRdWVyeUxpc3Q8Q2xyRGF0YWdyaWRDb2x1bW4+O1xuXG4gIGNhblNob3dQYWdpbmF0aW9uRGVzY3JpcHRpb24gPSBmYWxzZTtcbiAgd2FybmVkQWJvdXRDdXN0b21EZXNjcmlwdGlvbiA9IGZhbHNlO1xuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhZ3JpZDogQ2xyRGF0YWdyaWQpIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuc2VydmVyRHJpdmVuKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIGNvbnN0IHZvbGF0aWxlRGF0YVN0YXRlID0gdGhpcy5nZXRWb2xhdGlsZURhdGFTdGF0ZSgpO1xuICAgIGNvbnN0IGxvY2FsU3RvcmFnZVN0YXRlID0gdGhpcy5nZXRMb2NhbFN0b3JhZ2VTdGF0ZSgpO1xuXG4gICAgdGhpcy5pbml0RmlsdGVyKHZvbGF0aWxlRGF0YVN0YXRlKTtcbiAgICB0aGlzLmluaXRTb3J0aW5nKGxvY2FsU3RvcmFnZVN0YXRlKTtcbiAgICB0aGlzLmluaXREYXRhZ3JpZFBlcnNpc3RlcigpO1xuXG4gICAgY29uc3QgY29sdW1uV2lkdGhQZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdENvbHVtbldpZHRocyA/PyBmYWxzZTtcbiAgICBpZiAoY29sdW1uV2lkdGhQZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIHRoaXMuaW5pdENvbHVtbldpZHRocyhsb2NhbFN0b3JhZ2VTdGF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFnaW5hdGlvblBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0UGFnaW5hdGlvbiA/PyB0cnVlO1xuICAgIGlmICh0aGlzLnBhZ2luYXRpb24/LnBhZ2UgJiYgcGFnaW5hdGlvblBlcnNpc3RlbmNlRW5hYmxlZCkge1xuICAgICAgdGhpcy5pbml0UGFnZVNpemVQZXJzaXN0ZXIobG9jYWxTdG9yYWdlU3RhdGUpO1xuICAgICAgdGhpcy5pbml0Q3VycmVudFBhZ2Uodm9sYXRpbGVEYXRhU3RhdGUpO1xuICAgIH1cbiAgICB0aGlzLmNhblNob3dQYWdpbmF0aW9uRGVzY3JpcHRpb24gPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpdGggdGhpcyBtZXRob2QgZmlsdGVycyBjYW4gYmUgY2xlYXJlZFxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgZm9yIGNsclN0YXRlUGVyc2lzdGVuY2VLZXlcbiAgICogQHBhcmFtIHVzZUxvY2FsU3RvcmVPbmx5IFRoZSBjbHJVc2VMb2NhbFN0b3JlT25seSBpbmRpY2F0b3JcbiAgICovXG4gIHN0YXRpYyBjbGVhckZpbHRlcnMoa2V5OiBzdHJpbmcsIHVzZUxvY2FsU3RvcmVPbmx5OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoKHVzZUxvY2FsU3RvcmVPbmx5ID8gbG9jYWxTdG9yYWdlIDogc2Vzc2lvblN0b3JhZ2UpLmdldEl0ZW0oa2V5KSkgfHwge307XG4gICAgZGF0YS5jb2x1bW5zID0ge307XG4gICAgKHVzZUxvY2FsU3RvcmVPbmx5ID8gbG9jYWxTdG9yYWdlIDogc2Vzc2lvblN0b3JhZ2UpLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRQYWdlU2l6ZVBlcnNpc3RlcihzYXZlZFN0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCkge1xuICAgIC8qIHBlcnNpc3QgcGFnZSBzaXplIGNoYW5nZXMgaW4gbG9jYWwgc3RvcmFnZSAqL1xuICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlLnNpemVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShwYWdlU2l6ZSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlU3RhdGUoKTtcbiAgICAgIHN0YXRlLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICB0aGlzLnNhdmVMb2NhbFN0b3JhZ2VTdGF0ZShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICAvKiBpbml0IHBhZ2Ugc2l6ZSBvZiBkYXRhZ3JpZCBpZiBhbHJlYWR5IHBlcnNpc3RlZCBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgaWYgKHNhdmVkU3RhdGUucGFnZVNpemUpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlLnNpemUgPSBzYXZlZFN0YXRlLnBhZ2VTaXplO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEN1cnJlbnRQYWdlKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKSB7XG4gICAgLyogaW5pdCBjdXJyZW50IHBhZ2Ugb2YgZGF0YWdyaWQgaWYgYWxyZWFkeSBwZXJzaXN0ZWQgKi9cbiAgICBpZiAoc2F2ZWRTdGF0ZT8uY3VycmVudFBhZ2UpIHtcbiAgICAgIHRoaXMuZGF0YWdyaWQuaXRlbXMuY2hhbmdlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+ICh0aGlzLnBhZ2luYXRpb24ucGFnZS5jdXJyZW50ID0gc2F2ZWRTdGF0ZS5jdXJyZW50UGFnZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZpbHRlcihzYXZlZFN0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlclBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0RmlsdGVycyA/PyB0cnVlO1xuICAgIGlmIChzYXZlZFN0YXRlLmNvbHVtbnMgJiYgZmlsdGVyUGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICBPYmplY3Qua2V5cyhzYXZlZFN0YXRlLmNvbHVtbnMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyKHByb3ApO1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgLyogaWYgdGhlIHNhdmVkIHZhbHVlIGlzIGVtcHR5IGZpbHRlciBzZW5kIG51bGwgKi9cbiAgICAgICAgICBjb25zdCBzYXZlZEZpbHRlclZhbHVlID0gc2F2ZWRTdGF0ZS5jb2x1bW5zW3Byb3BdLmZpbHRlclZhbHVlO1xuICAgICAgICAgIGlmIChzYXZlZEZpbHRlclZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIChmaWx0ZXIgYXMgYW55KVsndmFsdWUnXSA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHNhdmVkRmlsdGVyVmFsdWUpXG4gICAgICAgICAgICAgIC5maWx0ZXIodmFsdWVLZXkgPT4gdmFsdWVLZXkgIT09ICdwcm9wZXJ0eScpXG4gICAgICAgICAgICAgIC5mb3JFYWNoKHZhbHVlS2V5ID0+ICgoZmlsdGVyIGFzIGFueSlbdmFsdWVLZXldID0gdGhpcy5wYXJzZUZpbHRlclZhbHVlKHNhdmVkRmlsdGVyVmFsdWVbdmFsdWVLZXldKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0U29ydGluZyhzYXZlZFN0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRQZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdFNvcnQgPz8gdHJ1ZTtcbiAgICBpZiAoc2F2ZWRTdGF0ZS5zb3J0QnkgJiYgc29ydFBlcnNpc3RlbmNlRW5hYmxlZCkge1xuICAgICAgdGhpcy5kYXRhZ3JpZC5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0U29ydFByb3BlcnR5KGNvbHVtbi5zb3J0QnkpID09PSBzYXZlZFN0YXRlLnNvcnRCeSkge1xuICAgICAgICAgIGNvbHVtbi5zb3J0T3JkZXIgPSBzYXZlZFN0YXRlLnNvcnRSZXZlcnNlID8gQ2xyRGF0YWdyaWRTb3J0T3JkZXIuREVTQyA6IENsckRhdGFncmlkU29ydE9yZGVyLkFTQztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW4uc29ydE9yZGVyID0gQ2xyRGF0YWdyaWRTb3J0T3JkZXIuVU5TT1JURUQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdENvbHVtbldpZHRocyhzYXZlZFN0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbHVtbldpZHRoc0J5RmllbGQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQgPSBzYXZlZFN0YXRlPy5jb2x1bW5zXG4gICAgICA/IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzYXZlZFN0YXRlLmNvbHVtbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCB2YWx1ZS53aWR0aF0pKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5ncmlkQ29sdW1ucyAmJiB0aGlzLmdyaWRDb2x1bW5SZWZzICYmIGNvbHVtbldpZHRoc0J5RmllbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyaWRDb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuZ3JpZENvbHVtbnMuZ2V0KGkpO1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMuZ3JpZENvbHVtblJlZnMuZ2V0KGkpPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICgoY29sPy5maWVsZCAmJiBjb2x1bW5XaWR0aHNCeUZpZWxkW2NvbC5maWVsZF0pIHx8IGVsKSB7XG4gICAgICAgICAgZWwuc3R5bGUud2lkdGggPSBjb2x1bW5XaWR0aHNCeUZpZWxkW2NvbC5maWVsZF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXREYXRhZ3JpZFBlcnNpc3RlcigpIHtcbiAgICAvLyBkZWxheSBpcyBuZWVkZWQsIGFzIG9uRGVzdHJveSB0aGUgZmlsdGVycyBlbWl0IGVtcHR5IHZhbHVlcy5cbiAgICAvLyBTbyBkZWxheSBpdCB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGN5Y2xlLCBzbyB0aGUgZGlyZWN0aXZlIGlzIGFsc28gZGVzdHJveWVkIGJlZm9yZSBpdCBnZXRzIHRoZSBuZXh0IHZhbHVlc1xuICAgIHRoaXMuZGF0YWdyaWQucmVmcmVzaC5waXBlKGRlbGF5KDApLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShkZ1N0YXRlID0+IHtcbiAgICAgIHRoaXMucGVyc2lzdEZpbHRlcnNBbmRDdXJyZW50UGFnZShkZ1N0YXRlKTtcbiAgICAgIHRoaXMucGVyc2lzdFNvcnRpbmcoZGdTdGF0ZSk7XG5cbiAgICAgIGlmICh0aGlzLmNhblNob3dQYWdpbmF0aW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uRGVzY3JpcHRpb24oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YWdyaWQuaXRlbXMuY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVQYWdpbmF0aW9uRGVzY3JpcHRpb24oKSk7XG4gIH1cblxuICBwcml2YXRlIHBlcnNpc3RGaWx0ZXJzQW5kQ3VycmVudFBhZ2UoZGdTdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZUludGVyZmFjZTx1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlclBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0RmlsdGVycyA/PyB0cnVlO1xuICAgIGNvbnN0IHBhZ2luYXRpb25QZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdFBhZ2luYXRpb24gPz8gdHJ1ZTtcbiAgICBpZiAoIWZpbHRlclBlcnNpc3RlbmNlRW5hYmxlZCAmJiAhcGFnaW5hdGlvblBlcnNpc3RlbmNlRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRWb2xhdGlsZURhdGFTdGF0ZSgpO1xuICAgIHN0YXRlLmNvbHVtbnMgPSBzdGF0ZS5jb2x1bW5zIHx8IHt9O1xuXG4gICAgaWYgKHBhZ2luYXRpb25QZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIHN0YXRlLmN1cnJlbnRQYWdlID0gZGdTdGF0ZS5wYWdlPy5jdXJyZW50O1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXJQZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIE9iamVjdC5rZXlzKHN0YXRlLmNvbHVtbnMpLmZvckVhY2gocHJvcCA9PiAoc3RhdGUuY29sdW1uc1twcm9wXS5maWx0ZXJWYWx1ZSA9IHVuZGVmaW5lZCkpO1xuICAgICAgZGdTdGF0ZS5maWx0ZXJzPy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5nZXRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmlsdGVyKTtcbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgc3RhdGUuY29sdW1uc1twcm9wZXJ0eV0gPSBzdGF0ZS5jb2x1bW5zW3Byb3BlcnR5XSB8fCB7fTtcbiAgICAgICAgICBzdGF0ZS5jb2x1bW5zW3Byb3BlcnR5XS5maWx0ZXJWYWx1ZSA9IHRoaXMuZW5yaWNoRmlsdGVyVmFsdWUoZmlsdGVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zYXZlVm9sYXRpbGVEYXRhU3RhdGUoc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0U29ydGluZyhkZ1N0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlSW50ZXJmYWNlPHVua25vd24+KTogdm9pZCB7XG4gICAgY29uc3Qgc29ydFBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0U29ydCA/PyB0cnVlO1xuICAgIGlmIChzb3J0UGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlU3RhdGUoKTtcbiAgICAgIHN0YXRlLnNvcnRCeSA9IHRoaXMuZ2V0U29ydFByb3BlcnR5KGRnU3RhdGUuc29ydD8uYnkpO1xuICAgICAgc3RhdGUuc29ydFJldmVyc2UgPSBkZ1N0YXRlLnNvcnQ/LnJldmVyc2U7XG5cbiAgICAgIHRoaXMuc2F2ZUxvY2FsU3RvcmFnZVN0YXRlKHN0YXRlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgcHJpdmF0ZSBwZXJzaXN0Q29sdW1uV2lkdGhzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbHVtbldpZHRoUGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zPy5wZXJzaXN0Q29sdW1uV2lkdGhzID8/IGZhbHNlO1xuICAgIGlmIChjb2x1bW5XaWR0aFBlcnNpc3RlbmNlRW5hYmxlZCkge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldExvY2FsU3RvcmFnZVN0YXRlKCk7XG4gICAgICBzdGF0ZS5jb2x1bW5zID0gc3RhdGUuY29sdW1ucyB8fCB7fTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyaWRDb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuZ3JpZENvbHVtbnMuZ2V0KGkpO1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMuZ3JpZENvbHVtblJlZnMuZ2V0KGkpPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmIChlbD8uc3R5bGU/LndpZHRoICYmIGVsLnN0eWxlLndpZHRoICE9PSAnMHB4JyAmJiBjb2w/LmZpZWxkKSB7XG4gICAgICAgICAgc3RhdGUuY29sdW1uc1tjb2wuZmllbGRdIHx8PSB7fTtcbiAgICAgICAgICBzdGF0ZS5jb2x1bW5zW2NvbC5maWVsZF0ud2lkdGggPSBlbC5zdHlsZS53aWR0aDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnNhdmVMb2NhbFN0b3JhZ2VTdGF0ZShzdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBhZ2luYXRpb24gZGVzY3JpcHRpb24gbXVzdCBiZSBzZXQgYnkgdGhpcyBkaXJlY3RpdmUsXG4gICAqIG90aGVyd2lzZSB3ZSBjYW4ndCB1cGRhdGUgZGF0YWdyaWQgdmFsdWVzIGZyb20gbG9jYWxTdG9yYWdlXG4gICAqIHdpdGhvdXQgZ2V0dGluZyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVBhZ2luYXRpb25EZXNjcmlwdGlvbigpIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uRWxlbSAmJiB0aGlzLnBhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHBhZ2luYXRpb25EZXNjRWxlbSA9ICg8SFRNTEVsZW1lbnQ+dGhpcy5wYWdpbmF0aW9uRWxlbS5uYXRpdmVFbGVtZW50KS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxuICAgICAgICAncGFnaW5hdGlvbi1kZXNjcmlwdGlvbidcbiAgICAgICk/LlswXTtcbiAgICAgIGlmIChwYWdpbmF0aW9uRGVzY0VsZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLndhcm5lZEFib3V0Q3VzdG9tRGVzY3JpcHRpb24gJiYgcGFnaW5hdGlvbkRlc2NFbGVtLnRleHRDb250ZW50LnRyaW0oKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgJ1doZW4gdXNpbmcgY2xyU3RhdGVQZXJzaXN0ZW5jZUtleSBkaXJlY3RpdmUsIHlvdSBzaG91bGQgbm90IHVzZSBjdXN0b20gcGFnaW5hdGlvbiBkZXNjcmlwdGlvbicgK1xuICAgICAgICAgICAgICAnIGluc2lkZSBwYWdpbmF0aW9uIGNvbXBvbmVudCBjb250ZW50LCBidXQgdXNlIFtjbHJQYWdpbmF0aW9uRGVzY3JpcHRpb25dIG9uIGNsci1kYXRhZ3JpZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2FybmVkQWJvdXRDdXN0b21EZXNjcmlwdGlvbiA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25EZXNjcmlwdGlvbikge1xuICAgICAgICAgIHBhZ2luYXRpb25EZXNjRWxlbS50ZXh0Q29udGVudCA9IHRoaXMucGFnaW5hdGlvbkRlc2NyaXB0aW9uXG4gICAgICAgICAgICAucmVwbGFjZSgne3tmaXJzdH19JywgKHRoaXMucGFnaW5hdGlvbi5maXJzdEl0ZW0gKyAxKS50b1N0cmluZygpKVxuICAgICAgICAgICAgLnJlcGxhY2UoJ3t7bGFzdH19JywgKHRoaXMucGFnaW5hdGlvbi5sYXN0SXRlbSArIDEpLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAucmVwbGFjZSgne3t0b3RhbH19JywgdGhpcy5wYWdpbmF0aW9uLnRvdGFsSXRlbXMudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3RhdGUgb2Ygdm9sYXRpbGUgZGF0YS4gVGhpcyBjYW4gYmUgaW5mbHVlbmNlZCBieSBjbHJVc2VMb2NhbFN0b3JlT25seS5cbiAgICovXG4gIGdldFZvbGF0aWxlRGF0YVN0YXRlKCk6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmdldFN0b3JhZ2VCYXNlZE9uSW5wdXRGbGFnKCkuZ2V0SXRlbSh0aGlzLm9wdGlvbnMua2V5KSkgfHwge307XG4gIH1cblxuICBnZXRMb2NhbFN0b3JhZ2VTdGF0ZSgpOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5vcHRpb25zLmtleSkpIHx8IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIHN0YXRlIG9mIHZvbGF0aWxlIGRhdGEuIFRoaXMgY2FuIGJlIGluZmx1ZW5jZWQgYnkgY2xyVXNlTG9jYWxTdG9yZU9ubHkuXG4gICAqL1xuICBzYXZlVm9sYXRpbGVEYXRhU3RhdGUoc3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5nZXRTdG9yYWdlQmFzZWRPbklucHV0RmxhZygpLnNldEl0ZW0odGhpcy5vcHRpb25zLmtleSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgfVxuXG4gIHNhdmVMb2NhbFN0b3JhZ2VTdGF0ZShzdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLm9wdGlvbnMua2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdG9yYWdlQmFzZWRPbklucHV0RmxhZygpOiBTdG9yYWdlIHtcbiAgICByZXR1cm4gdGhpcy51c2VMb2NhbFN0b3JlT25seSA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzIGEgZGF0ZSBpcyBzZXJpYWxpemVkIGFzIHN0cmluZywgYnV0IG5vdCBkZXNlcmlhbGl6ZWQgYXMgZGF0ZVxuICAgKiB3ZSBuZWVkIHRvIGFkZCBzb21lIG1ldGEgaW5mb3JtYXRpb24gdG8gZG8gdGhhdCBtYW51YWxseSBsYXRlclxuICAgKi9cbiAgcHJpdmF0ZSBlbnJpY2hGaWx0ZXJWYWx1ZShmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBPYmplY3Qua2V5cyhmaWx0ZXIpLmZvckVhY2goXG4gICAgICBrZXkgPT5cbiAgICAgICAgKHJlc3VsdFtrZXldID1cbiAgICAgICAgICBmaWx0ZXJba2V5XSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBEQVRFX1RZUEUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlcltrZXldLFxuICAgICAgICAgICAgICB9IGFzIEZpbHRlclZhbHVlV2l0aE1ldGFkYXRhKVxuICAgICAgICAgICAgOiBmaWx0ZXJba2V5XSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBmaWx0ZXIgdmFsdWVzIHdpdGggbWV0YSBpbmZvcm1hdGlvbiBsaWtlIGRhdGUsIHdoaWNoIG5lZWRzIG1hbnVhbCBkZXNlcmlhbGl6YXRpb24gdG8gYSBkYXRlIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZUZpbHRlclZhbHVlKHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgcmV0dXJuICh2YWx1ZSBhcyBGaWx0ZXJWYWx1ZVdpdGhNZXRhZGF0YSk/LnR5cGUgPT09IERBVEVfVFlQRVxuICAgICAgPyBuZXcgRGF0ZSgodmFsdWUgYXMgRmlsdGVyVmFsdWVXaXRoTWV0YWRhdGEpLnZhbHVlIGFzIHN0cmluZylcbiAgICAgIDogdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcihwcm9wOiBzdHJpbmcpOiBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTx1bmtub3duLCB1bmtub3duPiB7XG4gICAgLy8gZ2V0IGRlZmF1bHQgZmlsdGVyIG9yIGN1c3RvbSBmaWx0ZXJcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5kYXRhZ3JpZC5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5maWVsZCA9PT0gcHJvcCk/LmZpbHRlciB8fFxuICAgICAgdGhpcy5jdXN0b21GaWx0ZXJzLmZpbmQoZmlsdGVyID0+IHRoaXMuZ2V0RmlsdGVyUHJvcGVydHlOYW1lKGZpbHRlci5maWx0ZXIpID09PSBwcm9wKT8uZmlsdGVyXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyUHJvcGVydHlOYW1lKGZpbHRlcjogQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2U8dW5rbm93biwgdW5rbm93bj4pOiBzdHJpbmcge1xuICAgIC8vIGZvciBOZXN0ZWRQcm9wZXJ0eSB3ZSBuZWVkIHRvIGdldCB0aGUgb3JpZ2luYWwgcHJvcGVydHlcbiAgICBjb25zdCBmaWx0ZXJXaXRoUHJvcCA9IGZpbHRlciBhcyB1bmtub3duIGFzIHsgcHJvcGVydHk6IHVua25vd24gfTtcbiAgICByZXR1cm4gKChmaWx0ZXJXaXRoUHJvcC5wcm9wZXJ0eSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LnByb3AgfHwgZmlsdGVyV2l0aFByb3AucHJvcGVydHkpIGFzIHN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydFByb3BlcnR5KHNvcnRCeTogQ2xyRGF0YWdyaWRDb21wYXJhdG9ySW50ZXJmYWNlPHVua25vd24+IHwgc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoc29ydEJ5KSB7XG4gICAgICBpZiAodHlwZW9mIHNvcnRCeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHNvcnRCeTtcbiAgICAgIH1cbiAgICAgIGlmIChzb3J0QnkgaW5zdGFuY2VvZiBEYXRhZ3JpZFByb3BlcnR5Q29tcGFyYXRvcikge1xuICAgICAgICByZXR1cm4gc29ydEJ5LnByb3A7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnBlcnNpc3RDb2x1bW5XaWR0aHMoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Utb3B0aW9ucy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9kYXRhZ3JpZC9kYXRhZ3JpZC1zdGF0ZS1wZXJzaXN0ZW5jZS9zdGF0ZS1wZXJzaXN0ZW5jZS1vcHRpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTdGF0ZVBlcnNpc3RlbmNlT3B0aW9ucyB7XG4gIGtleTogc3RyaW5nO1xuICBzZXJ2ZXJEcml2ZW46IGJvb2xlYW47XG4gIHBlcnNpc3RGaWx0ZXJzPzogYm9vbGVhbjtcbiAgcGVyc2lzdFBhZ2luYXRpb24/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Utb3B0aW9ucy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9kYXRhZ3JpZC9kYXRhZ3JpZC1zdGF0ZS1wZXJzaXN0ZW5jZS9zdGF0ZS1wZXJzaXN0ZW5jZS1vcHRpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTdGF0ZVBlcnNpc3RlbmNlT3B0aW9ucyB7XG4gIGtleTogc3RyaW5nO1xuICBzZXJ2ZXJEcml2ZW46IGJvb2xlYW47XG4gIHBlcnNpc3RGaWx0ZXJzPzogYm9vbGVhbjtcbiAgcGVyc2lzdFBhZ2luYXRpb24/OiBib29sZWFuO1xuICBwZXJzaXN0U29ydD86IGJvb2xlYW47XG4gIHBlcnNpc3RIaWRkZW5Db2x1bW5zPzogYm9vbGVhbjtcbiAgcGVyc2lzdENvbHVtbldpZHRocz86IGJvb2xlYW47XG59XG4iXX0=
|
package/fesm2022/clr-addons.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import * as i1 from '@angular/common';
|
|
|
4
4
|
import { CommonModule, DOCUMENT, getLocaleDateFormat, FormatWidth } from '@angular/common';
|
|
5
5
|
import { ClarityIcons, arrowIcon, angleIcon, timesIcon, trashIcon, plusCircleIcon, exclamationCircleIcon, searchIcon, ellipsisVerticalIcon, pencilIcon, historyIcon, treeViewIcon, organizationIcon, calendarIcon, checkCircleIcon, windowCloseIcon, exclamationTriangleIcon } from '@cds/core/icon';
|
|
6
6
|
import * as i2 from '@clr/angular';
|
|
7
|
-
import { ClarityModule, ClrFormsModule, ClrDropdown, ClrForm, ClrAlert, ClrAxis, ClrSide, ClrAlignment, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService, ClrIconModule, ClrDropdownModule, ClrDatagridSortOrder, DatagridPropertyComparator, ClrDatagridPagination, ClrDatagridFilter, ClrDateContainer, ClrLabel, ClrControlHelper, ClrControlError, ClrControlSuccess, ClrDatepickerModule } from '@clr/angular';
|
|
7
|
+
import { ClarityModule, ClrFormsModule, ClrDropdown, ClrForm, ClrAlert, ClrAxis, ClrSide, ClrAlignment, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService, ClrIconModule, ClrDropdownModule, ClrDatagridSortOrder, DatagridPropertyComparator, ClrDatagridPagination, ClrDatagridFilter, ClrDatagridColumn, ClrDateContainer, ClrLabel, ClrControlHelper, ClrControlError, ClrControlSuccess, ClrDatepickerModule } from '@clr/angular';
|
|
8
8
|
import * as i3$1 from '@angular/forms';
|
|
9
9
|
import { FormsModule, NG_VALIDATORS, NgControl, NG_VALUE_ACCESSOR, FormControl, ReactiveFormsModule, NgModel } from '@angular/forms';
|
|
10
10
|
import { Subject, BehaviorSubject, timer, asyncScheduler, interval, takeUntil as takeUntil$1, of, ReplaySubject, delay } from 'rxjs';
|
|
@@ -5964,6 +5964,10 @@ class StatePersistenceKeyDirective {
|
|
|
5964
5964
|
this.initFilter(volatileDataState);
|
|
5965
5965
|
this.initSorting(localStorageState);
|
|
5966
5966
|
this.initDatagridPersister();
|
|
5967
|
+
const columnWidthPersistenceEnabled = this.options.persistColumnWidths ?? false;
|
|
5968
|
+
if (columnWidthPersistenceEnabled) {
|
|
5969
|
+
this.initColumnWidths(localStorageState);
|
|
5970
|
+
}
|
|
5967
5971
|
const paginationPersistenceEnabled = this.options.persistPagination ?? true;
|
|
5968
5972
|
if (this.pagination?.page && paginationPersistenceEnabled) {
|
|
5969
5973
|
this.initPageSizePersister(localStorageState);
|
|
@@ -5986,7 +5990,7 @@ class StatePersistenceKeyDirective {
|
|
|
5986
5990
|
this.pagination.page.sizeChange.pipe(takeUntil(this.destroy$)).subscribe(pageSize => {
|
|
5987
5991
|
const state = this.getLocalStorageState();
|
|
5988
5992
|
state.pageSize = pageSize;
|
|
5989
|
-
|
|
5993
|
+
this.saveLocalStorageState(state);
|
|
5990
5994
|
});
|
|
5991
5995
|
/* init page size of datagrid if already persisted in local storage */
|
|
5992
5996
|
if (savedState.pageSize) {
|
|
@@ -6032,6 +6036,20 @@ class StatePersistenceKeyDirective {
|
|
|
6032
6036
|
});
|
|
6033
6037
|
}
|
|
6034
6038
|
}
|
|
6039
|
+
initColumnWidths(savedState) {
|
|
6040
|
+
const columnWidthsByField = savedState?.columns
|
|
6041
|
+
? Object.fromEntries(Object.entries(savedState.columns).map(([key, value]) => [key, value.width]))
|
|
6042
|
+
: undefined;
|
|
6043
|
+
if (this.gridColumns && this.gridColumnRefs && columnWidthsByField !== undefined) {
|
|
6044
|
+
for (let i = 0; i < this.gridColumns.length; i++) {
|
|
6045
|
+
const col = this.gridColumns.get(i);
|
|
6046
|
+
const el = this.gridColumnRefs.get(i)?.nativeElement;
|
|
6047
|
+
if ((col?.field && columnWidthsByField[col.field]) || el) {
|
|
6048
|
+
el.style.width = columnWidthsByField[col.field];
|
|
6049
|
+
}
|
|
6050
|
+
}
|
|
6051
|
+
}
|
|
6052
|
+
}
|
|
6035
6053
|
initDatagridPersister() {
|
|
6036
6054
|
// delay is needed, as onDestroy the filters emit empty values.
|
|
6037
6055
|
// So delay it to the end of the current cycle, so the directive is also destroyed before it gets the next values
|
|
@@ -6047,6 +6065,9 @@ class StatePersistenceKeyDirective {
|
|
|
6047
6065
|
persistFiltersAndCurrentPage(dgState) {
|
|
6048
6066
|
const filterPersistenceEnabled = this.options.persistFilters ?? true;
|
|
6049
6067
|
const paginationPersistenceEnabled = this.options.persistPagination ?? true;
|
|
6068
|
+
if (!filterPersistenceEnabled && !paginationPersistenceEnabled) {
|
|
6069
|
+
return;
|
|
6070
|
+
}
|
|
6050
6071
|
const state = this.getVolatileDataState();
|
|
6051
6072
|
state.columns = state.columns || {};
|
|
6052
6073
|
if (paginationPersistenceEnabled) {
|
|
@@ -6062,7 +6083,7 @@ class StatePersistenceKeyDirective {
|
|
|
6062
6083
|
}
|
|
6063
6084
|
});
|
|
6064
6085
|
}
|
|
6065
|
-
|
|
6086
|
+
this.saveVolatileDataState(state);
|
|
6066
6087
|
}
|
|
6067
6088
|
persistSorting(dgState) {
|
|
6068
6089
|
const sortPersistenceEnabled = this.options.persistSort ?? true;
|
|
@@ -6070,7 +6091,23 @@ class StatePersistenceKeyDirective {
|
|
|
6070
6091
|
const state = this.getLocalStorageState();
|
|
6071
6092
|
state.sortBy = this.getSortProperty(dgState.sort?.by);
|
|
6072
6093
|
state.sortReverse = dgState.sort?.reverse;
|
|
6073
|
-
|
|
6094
|
+
this.saveLocalStorageState(state);
|
|
6095
|
+
}
|
|
6096
|
+
}
|
|
6097
|
+
persistColumnWidths() {
|
|
6098
|
+
const columnWidthPersistenceEnabled = this.options?.persistColumnWidths ?? false;
|
|
6099
|
+
if (columnWidthPersistenceEnabled) {
|
|
6100
|
+
const state = this.getLocalStorageState();
|
|
6101
|
+
state.columns = state.columns || {};
|
|
6102
|
+
for (let i = 0; i < this.gridColumns.length; i++) {
|
|
6103
|
+
const col = this.gridColumns.get(i);
|
|
6104
|
+
const el = this.gridColumnRefs.get(i)?.nativeElement;
|
|
6105
|
+
if (el?.style?.width && el.style.width !== '0px' && col?.field) {
|
|
6106
|
+
state.columns[col.field] ||= {};
|
|
6107
|
+
state.columns[col.field].width = el.style.width;
|
|
6108
|
+
}
|
|
6109
|
+
}
|
|
6110
|
+
this.saveLocalStorageState(state);
|
|
6074
6111
|
}
|
|
6075
6112
|
}
|
|
6076
6113
|
/**
|
|
@@ -6100,11 +6137,23 @@ class StatePersistenceKeyDirective {
|
|
|
6100
6137
|
* Gets the state of volatile data. This can be influenced by clrUseLocalStoreOnly.
|
|
6101
6138
|
*/
|
|
6102
6139
|
getVolatileDataState() {
|
|
6103
|
-
return JSON.parse(
|
|
6140
|
+
return JSON.parse(this.getStorageBasedOnInputFlag().getItem(this.options.key)) || {};
|
|
6104
6141
|
}
|
|
6105
6142
|
getLocalStorageState() {
|
|
6106
6143
|
return JSON.parse(localStorage.getItem(this.options.key)) || {};
|
|
6107
6144
|
}
|
|
6145
|
+
/**
|
|
6146
|
+
* Save the state of volatile data. This can be influenced by clrUseLocalStoreOnly.
|
|
6147
|
+
*/
|
|
6148
|
+
saveVolatileDataState(state) {
|
|
6149
|
+
this.getStorageBasedOnInputFlag().setItem(this.options.key, JSON.stringify(state));
|
|
6150
|
+
}
|
|
6151
|
+
saveLocalStorageState(state) {
|
|
6152
|
+
localStorage.setItem(this.options.key, JSON.stringify(state));
|
|
6153
|
+
}
|
|
6154
|
+
getStorageBasedOnInputFlag() {
|
|
6155
|
+
return this.useLocalStoreOnly ? localStorage : sessionStorage;
|
|
6156
|
+
}
|
|
6108
6157
|
/**
|
|
6109
6158
|
* As a date is serialized as string, but not deserialized as date
|
|
6110
6159
|
* we need to add some meta information to do that manually later
|
|
@@ -6150,11 +6199,12 @@ class StatePersistenceKeyDirective {
|
|
|
6150
6199
|
return undefined;
|
|
6151
6200
|
}
|
|
6152
6201
|
ngOnDestroy() {
|
|
6202
|
+
this.persistColumnWidths();
|
|
6153
6203
|
this.destroy$.next();
|
|
6154
6204
|
this.destroy$.complete();
|
|
6155
6205
|
}
|
|
6156
6206
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: StatePersistenceKeyDirective, deps: [{ token: i2.ClrDatagrid }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6157
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: StatePersistenceKeyDirective, selector: "[clrStatePersistenceKey]", inputs: { options: ["clrStatePersistenceKey", "options"], useLocalStoreOnly: ["clrUseLocalStoreOnly", "useLocalStoreOnly"], paginationDescription: ["clrPaginationDescription", "paginationDescription"] }, queries: [{ propertyName: "pagination", first: true, predicate: ClrDatagridPagination, descendants: true }, { propertyName: "paginationElem", first: true, predicate: ClrDatagridPagination, descendants: true, read: ElementRef }, { propertyName: "customFilters", predicate: ClrDatagridFilter, descendants: true }], ngImport: i0 }); }
|
|
6207
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: StatePersistenceKeyDirective, selector: "[clrStatePersistenceKey]", inputs: { options: ["clrStatePersistenceKey", "options"], useLocalStoreOnly: ["clrUseLocalStoreOnly", "useLocalStoreOnly"], paginationDescription: ["clrPaginationDescription", "paginationDescription"] }, host: { listeners: { "window:beforeunload": "persistColumnWidths()" } }, queries: [{ propertyName: "pagination", first: true, predicate: ClrDatagridPagination, descendants: true }, { propertyName: "paginationElem", first: true, predicate: ClrDatagridPagination, descendants: true, read: ElementRef }, { propertyName: "customFilters", predicate: ClrDatagridFilter, descendants: true }, { propertyName: "gridColumnRefs", predicate: ClrDatagridColumn, read: ElementRef }, { propertyName: "gridColumns", predicate: ClrDatagridColumn }], ngImport: i0 }); }
|
|
6158
6208
|
}
|
|
6159
6209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: StatePersistenceKeyDirective, decorators: [{
|
|
6160
6210
|
type: Directive,
|
|
@@ -6179,6 +6229,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
6179
6229
|
}], customFilters: [{
|
|
6180
6230
|
type: ContentChildren,
|
|
6181
6231
|
args: [ClrDatagridFilter, { descendants: true }]
|
|
6232
|
+
}], gridColumnRefs: [{
|
|
6233
|
+
type: ContentChildren,
|
|
6234
|
+
args: [ClrDatagridColumn, { read: ElementRef }]
|
|
6235
|
+
}], gridColumns: [{
|
|
6236
|
+
type: ContentChildren,
|
|
6237
|
+
args: [ClrDatagridColumn]
|
|
6238
|
+
}], persistColumnWidths: [{
|
|
6239
|
+
type: HostListener,
|
|
6240
|
+
args: ['window:beforeunload']
|
|
6182
6241
|
}] } });
|
|
6183
6242
|
|
|
6184
6243
|
class ColumnHiddenStatePersistenceDirective {
|