tuain-ng-forms-lib 17.2.25 → 17.2.27
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/esm2022/lib/classes/forms/table/table.mjs +12 -9
- package/esm2022/lib/components/elements/tables/table.component.mjs +3 -2
- package/fesm2022/tuain-ng-forms-lib.mjs +13 -9
- package/fesm2022/tuain-ng-forms-lib.mjs.map +1 -1
- package/lib/classes/forms/table/table.d.ts +3 -1
- package/lib/components/elements/tables/table.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -11,6 +11,7 @@ const attrs = {
|
|
|
11
11
|
tableCode: { name: 'tableCode', propagate: 'code' },
|
|
12
12
|
clientPaging: { name: 'clientPaging', propagate: null },
|
|
13
13
|
globalSearch: { name: 'globalSearch', propagate: 'globalSearch' },
|
|
14
|
+
restrictedId: { name: 'restrictedId', propagate: 'restrictedId' },
|
|
14
15
|
globalFilterString: { name: '_globalFilterString', propagate: 'globalFilterString' },
|
|
15
16
|
sorting: { name: 'sorting', propagate: null },
|
|
16
17
|
recordsPerPage: { name: 'recordsPerPage', propagate: 'recordsPerPage' },
|
|
@@ -36,8 +37,8 @@ export class RecordTable extends FormElement {
|
|
|
36
37
|
_globalFilterString = '';
|
|
37
38
|
globalFilterStrings = [];
|
|
38
39
|
selectedRecords;
|
|
39
|
-
restrictedId;
|
|
40
40
|
layout = null;
|
|
41
|
+
_restrictedId;
|
|
41
42
|
_globalSearch;
|
|
42
43
|
_tableRecords;
|
|
43
44
|
_tableRecordObj = {};
|
|
@@ -73,7 +74,7 @@ export class RecordTable extends FormElement {
|
|
|
73
74
|
this._actionsObj = {};
|
|
74
75
|
this._tableRecords = [];
|
|
75
76
|
this._globalSearch = false;
|
|
76
|
-
this.
|
|
77
|
+
this._restrictedId = null;
|
|
77
78
|
this._tableTitle = tableReceived.tableTitle;
|
|
78
79
|
this._appendPages = tableReceived?.append ?? false;
|
|
79
80
|
this._selectable = tableReceived?.selectable ?? false;
|
|
@@ -136,6 +137,7 @@ export class RecordTable extends FormElement {
|
|
|
136
137
|
get recordSelectionTrigger() { return this._recordSelectionTrigger.asObservable(); }
|
|
137
138
|
get getDataTrigger() { return this._getDataTrigger.asObservable(); }
|
|
138
139
|
get globalSearch() { return this._globalSearch; }
|
|
140
|
+
get restrictedId() { return this._restrictedId; }
|
|
139
141
|
get tableRecords() { return this._tableRecords; }
|
|
140
142
|
get tableRecordObj() { return this._tableRecordObj; }
|
|
141
143
|
get visibleRecords() { return this._visibleRecords; }
|
|
@@ -159,6 +161,7 @@ export class RecordTable extends FormElement {
|
|
|
159
161
|
get globalFilterString() { return this._globalFilterString; }
|
|
160
162
|
set globalFilterString(globalFilterString) { this._globalFilterString = globalFilterString; }
|
|
161
163
|
set globalSearch(globalSearch) { this._globalSearch = globalSearch; }
|
|
164
|
+
set restrictedId(restrictedId) { this.setFilterById(restrictedId); }
|
|
162
165
|
set tableRecords(tableRecords) { this._tableRecords = tableRecords; }
|
|
163
166
|
set tableRecordObj(tableRecordObj) { this._tableRecordObj = tableRecordObj; }
|
|
164
167
|
set visibleRecords(visibleRecords) { this._visibleRecords = visibleRecords ?? []; }
|
|
@@ -410,17 +413,17 @@ export class RecordTable extends FormElement {
|
|
|
410
413
|
}
|
|
411
414
|
// Filtros
|
|
412
415
|
setFilterById(id) {
|
|
413
|
-
if (this.
|
|
416
|
+
if (this._restrictedId === id) {
|
|
414
417
|
return;
|
|
415
418
|
}
|
|
416
|
-
this.restrictedId
|
|
419
|
+
this.setAttr(attrs.restrictedId, id);
|
|
417
420
|
this.updateVisibleRecords();
|
|
418
421
|
}
|
|
419
422
|
cleanIdFilter() {
|
|
420
|
-
if (this.
|
|
423
|
+
if (this._restrictedId === null) {
|
|
421
424
|
return;
|
|
422
425
|
}
|
|
423
|
-
this.restrictedId
|
|
426
|
+
this.setAttr(attrs.restrictedId, null);
|
|
424
427
|
this.updateVisibleRecords();
|
|
425
428
|
}
|
|
426
429
|
setGlobalFilterString(text, notifyComponent = true) {
|
|
@@ -438,8 +441,8 @@ export class RecordTable extends FormElement {
|
|
|
438
441
|
}
|
|
439
442
|
getFilteredRecords() {
|
|
440
443
|
let filteredRecords = this._tableRecords;
|
|
441
|
-
if (this.
|
|
442
|
-
filteredRecords = filteredRecords.filter(record => record.recordId === this.
|
|
444
|
+
if (this._restrictedId) {
|
|
445
|
+
filteredRecords = filteredRecords.filter(record => record.recordId === this._restrictedId);
|
|
443
446
|
}
|
|
444
447
|
if (this.globalFilterStrings.length > 0) {
|
|
445
448
|
filteredRecords = filteredRecords.filter(record => record.hasPattern(this.globalFilterStrings, this._tableColumnObj));
|
|
@@ -532,4 +535,4 @@ export class RecordTable extends FormElement {
|
|
|
532
535
|
});
|
|
533
536
|
}
|
|
534
537
|
}
|
|
535
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUVyQyxNQUFNLEtBQUssR0FBRztJQUNaLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUM5RCxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQ3ZELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtJQUNqRSxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUU7SUFDcEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQzdDLGNBQWMsRUFBRSxFQUFFLElB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QUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudCB9IGZyb20gJy4uL2VsZW1lbnQnO1xuaW1wb3J0IHsgUmVjb3JkVGFibGVDb2x1bW4gfSBmcm9tICcuL2NvbHVtbic7XG5pbXBvcnQgeyBUYWJsZUFjdGlvbiB9IGZyb20gJy4vYWN0aW9uJztcbmltcG9ydCB7IFRhYmxlUmVjb3JkRGF0YSB9IGZyb20gJy4vcm93LWRhdGEnO1xuXG5jb25zdCBUQUJMRV9TT1JUX0FTQ0VORElORyA9ICdhc2MnO1xuY29uc3QgVEFCTEVfU09SVF9ERVNDRU5ESU5HID0gJ2Rlc2MnO1xuXG5jb25zdCBhdHRycyA9IHtcbiAgYWxsU2VsZWN0ZWQ6IHsgbmFtZTogJ2FsbFNlbGVjdGVkJywgcHJvcGFnYXRlOiAnYWxsU2VsZWN0ZWQnIH0sXG4gIHRhYmxlQ29kZTogeyBuYW1lOiAndGFibGVDb2RlJywgcHJvcGFnYXRlOiAnY29kZScgfSxcbiAgY2xpZW50UGFnaW5nOiB7IG5hbWU6ICdjbGllbnRQYWdpbmcnLCBwcm9wYWdhdGU6IG51bGwgfSxcbiAgZ2xvYmFsU2VhcmNoOiB7IG5hbWU6ICdnbG9iYWxTZWFyY2gnLCBwcm9wYWdhdGU6ICdnbG9iYWxTZWFyY2gnIH0sXG4gIGdsb2JhbEZpbHRlclN0cmluZzogeyBuYW1lOiAnX2dsb2JhbEZpbHRlclN0cmluZycsIHByb3BhZ2F0ZTogJ2dsb2JhbEZpbHRlclN0cmluZycgfSxcbiAgc29ydGluZzogeyBuYW1lOiAnc29ydGluZycsIHByb3BhZ2F0ZTogbnVsbCB9LFxuICByZWNvcmRzUGVyUGFnZTogeyBuYW1lOiAncmVjb3Jkc1BlclBhZ2UnLCBwcm9wYWdhdGU6ICdyZWNvcmRzUGVyUGFnZScgfSxcbiAgbGF5b3V0OiB7IG5hbWU6ICdsYXlvdXQnLCBwcm9wYWdhdGU6ICdsYXlvdXQnIH0sXG4gIGNvbHVtbnM6IHsgbmFtZTogJ2NvbHVtbnMnLCBwcm9wYWdhdGU6ICdjb2x1bW5zJyB9LFxuICBzZWxlY3RlZFJlY29yZHM6IHsgbmFtZTogJ3NlbGVjdGVkUmVjb3JkcycsIHByb3BhZ2F0ZTogJ3NlbGVjdGVkUmVjb3JkcycgfSxcbiAgY3VycmVudFBhZ2U6IHsgbmFtZTogJ2N1cnJlbnRQYWdlJywgcHJvcGFnYXRlOiAnY3VycmVudFBhZ2UnIH0sXG4gIHRvdGFsUmVjb3Jkc051bWJlcjogeyBuYW1lOiAndG90YWxSZWNvcmRzTnVtYmVyJywgcHJvcGFnYXRlOiAndG90YWxSZWNvcmRzTnVtYmVyJyB9LFxuICB2aXNpYmxlUmVjb3JkczogeyBuYW1lOiAnX3Zpc2libGVSZWNvcmRzJywgcHJvcGFnYXRlOiAndmlzaWJsZVJlY29yZHMnIH0sXG4gIHdhaXRpbmc6IHsgbmFtZTogJ193YWl0aW5nJywgcHJvcGFnYXRlOiAnd2FpdGluZycgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVBY3Rpb25FdmVudCB7XG4gIGFjdGlvbkNvZGU6IHN0cmluZztcbiAgcmVjb3JkSWQ6IGFueTtcbiAgcmVjb3JkRGF0YTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlRXZlbnQge1xuICB0YWJsZUNvZGU6IHN0cmluZztcbiAgYWN0aW9uQ29kZTogc3RyaW5nIHwgbnVsbDtcbiAgYWN0aW9uRGV0YWlsOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBSZWNvcmRUYWJsZSBleHRlbmRzIEZvcm1FbGVtZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5saW5lQWN0aW9uVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2dsb2JhbEFjdGlvblRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWNvcmRTZWxlY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0aW9uQWN0aW9uVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2dldERhdGFUcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSBfdGFibGVDb2x1bW5PYmogPSB7fTtcbiAgcHJpdmF0ZSBfYXBwZW5kUGFnZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgX2FjdGlvbnM6IFRhYmxlQWN0aW9uW107XG4gIHByaXZhdGUgX2FjdGlvbnNPYmogPSB7fTtcblxuICAvLyBNZWNhbmlzbW9zIGRlIGZpbHRyYWRvIG51ZXZhIHZlcnNpw7NuXG4gIHByaXZhdGUgX2dsb2JhbEZpbHRlclN0cmluZzogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgZ2xvYmFsRmlsdGVyU3RyaW5nczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBzZWxlY3RlZFJlY29yZHM6IGFueTtcbiAgcHJpdmF0ZSByZXN0cmljdGVkSWQ6IGFueTtcbiAgcHJpdmF0ZSBsYXlvdXQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9nbG9iYWxTZWFyY2g6IGJvb2xlYW47XG4gIHByaXZhdGUgX3RhYmxlUmVjb3JkczogVGFibGVSZWNvcmREYXRhW107XG4gIHByaXZhdGUgX3RhYmxlUmVjb3JkT2JqID0ge307XG4gIHByaXZhdGUgX3Zpc2libGVSZWNvcmRzOiBUYWJsZVJlY29yZERhdGFbXSA9IFtdO1xuICBwcml2YXRlIF9jb2x1bW5zOiBSZWNvcmRUYWJsZUNvbHVtbltdO1xuICBwcml2YXRlIF9zZWxlY3RhYmxlOiBib29sZWFuO1xuICBwcml2YXRlIF9zZWxlY3Rpb25CYWNrZW5kOiBib29sZWFuO1xuICBwcml2YXRlIF9zZWxlY3Rpb25GaWVsZDogc3RyaW5nO1xuICBwcml2YXRlIF9hbGxTZWxlY3RlZCA9IGZhbHNlO1xuICBwcml2YXRlIF90YWJsZUNvZGU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF90YWJsZVRpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgX2N1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHByaXZhdGUgX3RvdGFsUGFnZXM6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcmVxdWVzdGVkUGFnZTogbnVtYmVyO1xuICBwcml2YXRlIF9yZWNvcmRzUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIHByaXZhdGUgX3RvdGFsUmVjb3Jkc051bWJlcjogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfcmVjb3Jkc051bWJlcjogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfc29ydGluZzogYW55O1xuICBwcml2YXRlIF93YWl0aW5nOiBib29sZWFuO1xuICBwcml2YXRlIF9jbGllbnRQYWdpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBwcml2YXRlIF9zb3J0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih0YWJsZVJlY2VpdmVkLCBmb3JtQ29uZmlnKSB7XG4gICAgc3VwZXIodGFibGVSZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXMgPSB0aGlzLl9mb3JtQ29uZmlnPy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXM/LnRhYmxlcyA/PyBbXTtcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gZWxlbWVudFR5cGVzLnRhYmxlO1xuICAgIHRoaXMuX3dhaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5fdG90YWxQYWdlcyA9IDE7XG4gICAgdGhpcy5fcmVxdWVzdGVkUGFnZSA9IDE7XG4gICAgdGhpcy5fY29sdW1ucyA9IFtdO1xuICAgIHRoaXMuX3RhYmxlQ29sdW1uT2JqID0ge307XG4gICAgdGhpcy5fYWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuX2FjdGlvbnNPYmogPSB7fTtcbiAgICB0aGlzLl90YWJsZVJlY29yZHMgPSBbXTtcbiAgICB0aGlzLl9nbG9iYWxTZWFyY2ggPSBmYWxzZTtcbiAgICB0aGlzLnJlc3RyaWN0ZWRJZCA9IG51bGw7XG5cbiAgICB0aGlzLl90YWJsZVRpdGxlID0gdGFibGVSZWNlaXZlZC50YWJsZVRpdGxlO1xuICAgIHRoaXMuX2FwcGVuZFBhZ2VzID0gdGFibGVSZWNlaXZlZD8uYXBwZW5kID8/IGZhbHNlO1xuICAgIHRoaXMuX3NlbGVjdGFibGUgPSB0YWJsZVJlY2VpdmVkPy5zZWxlY3RhYmxlID8/IGZhbHNlO1xuICAgIHRoaXMuX3NlbGVjdGlvbkJhY2tlbmQgPSB0YWJsZVJlY2VpdmVkPy5zZWxlY3Rpb25CYWNrZW5kID8/IGZhbHNlO1xuICAgIHRoaXMuX3NvcnRhYmxlID0gdGFibGVSZWNlaXZlZD8uc29ydGFibGUgPz8gZmFsc2U7XG5cbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWxsU2VsZWN0ZWQsIGZhbHNlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMudGFibGVDb2RlLCB0YWJsZVJlY2VpdmVkLnRhYmxlQ29kZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmNsaWVudFBhZ2luZywgdGFibGVSZWNlaXZlZD8uY2xpZW50UGFnaW5nID8/IHRydWUpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5nbG9iYWxTZWFyY2gsIHRhYmxlUmVjZWl2ZWQ/LnNpbXBsZUZpbHRlciA/PyBmYWxzZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbEZpbHRlclN0cmluZywgJycpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5zb3J0aW5nLCB7IGNvbHVtbk5hbWU6ICcnLCBkaXJlY3Rpb246ICcnIH0pO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5yZWNvcmRzUGVyUGFnZSwgZm9ybUNvbmZpZy5kZWZhdWx0UmVjb3Jkc1BlclBhZ2UpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5sYXlvdXQsICcnKTtcblxuICAgIGlmICh0YWJsZVJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgY29uc3QgY29sdW1uczogUmVjb3JkVGFibGVDb2x1bW5bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb2x1bW5SZWNlaXZlZCBvZiB0YWJsZVJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgICBjb25zdCBjb2x1bW5FbnJpY2hlZCA9IHtcbiAgICAgICAgICAuLi5jb2x1bW5SZWNlaXZlZCxcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzOiB0aGlzLnZpc2libGVTdGF0ZXMsXG4gICAgICAgICAgZW5hYmxlZFN0YXRlczogdGhpcy5lbmFibGVkU3RhdGVzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNvbHVtbkRlZmluaXRpb246IFJlY29yZFRhYmxlQ29sdW1uID0gbmV3IFJlY29yZFRhYmxlQ29sdW1uKGNvbHVtbkVucmljaGVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbkRlZmluaXRpb24pO1xuICAgICAgICB0aGlzLl90YWJsZUNvbHVtbk9ialtjb2x1bW5EZWZpbml0aW9uLmZpZWxkQ29kZV0gPSBjb2x1bW5EZWZpbml0aW9uO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmNvbHVtbnMsIGNvbHVtbnMpO1xuICAgIH1cbiAgICBpZiAodGFibGVSZWNlaXZlZC5hY3Rpb25zKSB7XG4gICAgICBjb25zdCB0YWJsZUFjdGlvbnMgPSB0YWJsZVJlY2VpdmVkLmFjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLmFjdGlvbk1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCk7XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBhY3Rpb25SZWNlaXZlZCBvZiB0YWJsZUFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgaW5saW5lQWN0aW9uID0gbmV3IFRhYmxlQWN0aW9uKGFjdGlvblJlY2VpdmVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5wdXNoKGlubGluZUFjdGlvbik7XG4gICAgICAgIHRoaXMuX2FjdGlvbnNPYmpbaW5saW5lQWN0aW9uLmFjdGlvbkNvZGVdID0gaW5saW5lQWN0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9zZWxlY3Rpb25GaWVsZCA9ICh0aGlzLl9zZWxlY3RhYmxlKSA/IHRhYmxlUmVjZWl2ZWQ/LnNlbGVjdGlvbkZpZWxkIDogbnVsbDtcbiAgICAvLyBGaWx0cm9zIHByZWRlZmluaWRvcyBlbiBlbCBmb3JtdWxhcmlvXG4gICAgaWYgKHRhYmxlUmVjZWl2ZWQuZmlsdGVycykge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlUmVjZWl2ZWQuZmlsdGVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdGhpcy5hZGRGaWx0ZXJEZWZpbml0aW9uKHRhYmxlUmVjZWl2ZWQuZmlsdGVyc1tpbmRleF0uZmllbGRDb2RlLCB0YWJsZVJlY2VpdmVkLmZpbHRlcnNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgY29sdW1uTmFtZXMoKSB7IHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl90YWJsZUNvbHVtbk9iaik7IH1cbiAgZ2V0IGlubGluZUFjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9pbmxpbmVBY3Rpb25UcmlnZ2VyLmFzT2JzZXJ2YWJsZSgpOyB9XG4gIGdldCBnbG9iYWxBY3Rpb25UcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5fZ2xvYmFsQWN0aW9uVHJpZ2dlci5hc09ic2VydmFibGUoKTsgfVxuICBnZXQgc2VsZWN0aW9uQWN0aW9uVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkFjdGlvblRyaWdnZXIuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IHJlY29yZFNlbGVjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9yZWNvcmRTZWxlY3Rpb25UcmlnZ2VyLmFzT2JzZXJ2YWJsZSgpOyB9XG4gIGdldCBnZXREYXRhVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX2dldERhdGFUcmlnZ2VyLmFzT2JzZXJ2YWJsZSgpOyB9XG5cbiAgZ2V0IGdsb2JhbFNlYXJjaCgpIHsgcmV0dXJuIHRoaXMuX2dsb2JhbFNlYXJjaDsgfVxuICBnZXQgdGFibGVSZWNvcmRzKCkgeyByZXR1cm4gdGhpcy5fdGFibGVSZWNvcmRzOyB9XG4gIGdldCB0YWJsZVJlY29yZE9iaigpIHsgcmV0dXJuIHRoaXMuX3RhYmxlUmVjb3JkT2JqOyB9XG4gIGdldCB2aXNpYmxlUmVjb3JkcygpIHsgcmV0dXJuIHRoaXMuX3Zpc2libGVSZWNvcmRzOyB9XG4gIGdldCBjb2x1bW5zKCkgeyByZXR1cm4gdGhpcy5fY29sdW1uczsgfVxuICBnZXQgc2VsZWN0YWJsZSgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGFibGU7IH1cbiAgZ2V0IHNlbGVjdGlvbkJhY2tlbmQoKSB7IHJldHVybiB0aGlzLl9zZWxlY3Rpb25CYWNrZW5kOyB9XG4gIGdldCBzZWxlY3Rpb25GaWVsZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkZpZWxkOyB9XG4gIGdldCBhbGxTZWxlY3RlZCgpIHsgcmV0dXJuIHRoaXMuX2FsbFNlbGVjdGVkOyB9XG4gIGdldCB0YWJsZUNvZGUoKSB7IHJldHVybiB0aGlzLl90YWJsZUNvZGU7IH1cbiAgZ2V0IHRhYmxlVGl0bGUoKSB7IHJldHVybiB0aGlzLl90YWJsZVRpdGxlOyB9XG4gIGdldCBjdXJyZW50UGFnZSgpIHsgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlOyB9XG4gIGdldCB0b3RhbFBhZ2VzKCkgeyByZXR1cm4gdGhpcy5fdG90YWxQYWdlczsgfVxuICBnZXQgcmVxdWVzdGVkUGFnZSgpIHsgcmV0dXJuIHRoaXMuX3JlcXVlc3RlZFBhZ2U7IH1cbiAgZ2V0IHJlY29yZHNQZXJQYWdlKCkgeyByZXR1cm4gdGhpcy5fcmVjb3Jkc1BlclBhZ2U7IH1cbiAgZ2V0IHRvdGFsUmVjb3Jkc051bWJlcigpIHsgcmV0dXJuIHRoaXMuX3RvdGFsUmVjb3Jkc051bWJlcjsgfVxuICBnZXQgcmVjb3Jkc051bWJlcigpIHsgcmV0dXJuIHRoaXMuX3JlY29yZHNOdW1iZXI7IH1cbiAgZ2V0IHNvcnRpbmcoKSB7IHJldHVybiB0aGlzLl9zb3J0aW5nOyB9XG4gIGdldCB3YWl0aW5nKCkgeyByZXR1cm4gdGhpcy5fd2FpdGluZzsgfVxuICBnZXQgY2xpZW50UGFnaW5nKCkgeyByZXR1cm4gdGhpcy5fY2xpZW50UGFnaW5nOyB9XG4gIGdldCBzb3J0YWJsZSgpIHsgcmV0dXJuIHRoaXMuX3NvcnRhYmxlOyB9XG5cbiAgZ2V0IGdsb2JhbEZpbHRlclN0cmluZygpIHsgcmV0dXJuIHRoaXMuX2dsb2JhbEZpbHRlclN0cmluZzsgfVxuICBzZXQgZ2xvYmFsRmlsdGVyU3RyaW5nKGdsb2JhbEZpbHRlclN0cmluZykgeyB0aGlzLl9nbG9iYWxGaWx0ZXJTdHJpbmcgPSBnbG9iYWxGaWx0ZXJTdHJpbmc7IH1cblxuICBzZXQgZ2xvYmFsU2VhcmNoKGdsb2JhbFNlYXJjaCkgeyB0aGlzLl9nbG9iYWxTZWFyY2ggPSBnbG9iYWxTZWFyY2g7IH1cbiAgc2V0IHRhYmxlUmVjb3Jkcyh0YWJsZVJlY29yZHMpIHsgdGhpcy5fdGFibGVSZWNvcmRzID0gdGFibGVSZWNvcmRzOyB9XG4gIHNldCB0YWJsZVJlY29yZE9iaih0YWJsZVJlY29yZE9iaikgeyB0aGlzLl90YWJsZVJlY29yZE9iaiA9IHRhYmxlUmVjb3JkT2JqOyB9XG4gIHNldCB2aXNpYmxlUmVjb3Jkcyh2aXNpYmxlUmVjb3JkcykgeyB0aGlzLl92aXNpYmxlUmVjb3JkcyA9IHZpc2libGVSZWNvcmRzID8/IFtdOyB9XG4gIHNldCBjb2x1bW5zKGNvbHVtbnMpIHsgdGhpcy5fY29sdW1ucyA9IGNvbHVtbnM7IH1cbiAgc2V0IHNlbGVjdGFibGUoc2VsZWN0YWJsZSkgeyB0aGlzLl9zZWxlY3RhYmxlID0gc2VsZWN0YWJsZTsgfVxuICBzZXQgc2VsZWN0aW9uQmFja2VuZChzZWxlY3Rpb25CYWNrZW5kKSB7IHRoaXMuX3NlbGVjdGlvbkJhY2tlbmQgPSBzZWxlY3Rpb25CYWNrZW5kOyB9XG4gIHNldCBzZWxlY3Rpb25GaWVsZChzZWxlY3Rpb25GaWVsZCkgeyB0aGlzLl9zZWxlY3Rpb25GaWVsZCA9IHNlbGVjdGlvbkZpZWxkOyB9XG4gIHNldCBhbGxTZWxlY3RlZChhbGxTZWxlY3RlZCkgeyB0aGlzLl9hbGxTZWxlY3RlZCA9IGFsbFNlbGVjdGVkOyB9XG4gIHNldCB0YWJsZUNvZGUodGFibGVDb2RlKSB7IHRoaXMuX3RhYmxlQ29kZSA9IHRhYmxlQ29kZTsgfVxuICBzZXQgdGFibGVUaXRsZSh0YWJsZVRpdGxlKSB7IHRoaXMuX3RhYmxlVGl0bGUgPSB0YWJsZVRpdGxlOyB9XG4gIHNldCBjdXJyZW50UGFnZShjdXJyZW50UGFnZSkgeyB0aGlzLl9jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlOyB9XG4gIHNldCB0b3RhbFBhZ2VzKHRvdGFsUGFnZXMpIHsgdGhpcy5fdG90YWxQYWdlcyA9IHRvdGFsUGFnZXM7IH1cbiAgc2V0IHJlcXVlc3RlZFBhZ2UocmVxdWVzdGVkUGFnZSkgeyB0aGlzLl9yZXF1ZXN0ZWRQYWdlID0gcmVxdWVzdGVkUGFnZTsgfVxuICBzZXQgcmVjb3Jkc1BlclBhZ2UocmVjb3Jkc1BlclBhZ2UpIHsgdGhpcy5fcmVjb3Jkc1BlclBhZ2UgPSByZWNvcmRzUGVyUGFnZTsgfVxuICBzZXQgdG90YWxSZWNvcmRzTnVtYmVyKHRvdGFsUmVjb3Jkc051bWJlcikgeyB0aGlzLl90b3RhbFJlY29yZHNOdW1iZXIgPSB0b3RhbFJlY29yZHNOdW1iZXI7IH1cbiAgc2V0IHJlY29yZHNOdW1iZXIocmVjb3Jkc051bWJlcikgeyB0aGlzLl9yZWNvcmRzTnVtYmVyID0gcmVjb3Jkc051bWJlcjsgfVxuICBzZXQgc29ydGluZyhzb3J0aW5nKSB7IHRoaXMuX3NvcnRpbmcgPSBzb3J0aW5nOyB9XG4gIHNldCB3YWl0aW5nKHdhaXRpbmcpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLndhaXRpbmcsIHdhaXRpbmcpIH1cbiAgc2V0IGNsaWVudFBhZ2luZyhjbGllbnRQYWdpbmcpIHsgdGhpcy5fY2xpZW50UGFnaW5nID0gY2xpZW50UGFnaW5nOyB9XG4gIHNldCBzb3J0YWJsZShzb3J0YWJsZSkgeyB0aGlzLl9zb3J0YWJsZSA9IHNvcnRhYmxlOyB9XG5cbiAgZ2V0TGF5b3V0KCkgeyByZXR1cm4gdGhpcy5sYXlvdXQ7IH1cbiAgc2V0TGF5b3V0KGxheW91dCkgeyB0aGlzLnNldEF0dHIoYXR0cnMubGF5b3V0LCBsYXlvdXQpOyB9XG4gIGhhc0FjdGlvbnMoKSB7IHJldHVybiAodGhpcy5fYWN0aW9ucy5sZW5ndGggPiAwKTsgfVxuICBnZXRTZWxlY3RlZFJlY29yZHMoKSB7IHJldHVybiB0aGlzLl90YWJsZVJlY29yZHMuZmlsdGVyKHJlYyA9PiByZWMuc2VsZWN0ZWQpLm1hcChyZWMgPT4gcmVjLnJlY29yZElkKTsgfVxuICBhY3RpdmF0ZUdsb2JhbFNlYXJjaCgpIHsgdGhpcy5fZ2xvYmFsU2VhcmNoID0gdHJ1ZTsgfVxuICBpbmFjdGl2YXRlR2xvYmFsU2VhcmNoKCkgeyB0aGlzLl9nbG9iYWxTZWFyY2ggPSBmYWxzZTsgfVxuICBjb2x1bW5EZWZpbml0aW9uKGZpZWxkQ29kZSk6IFJlY29yZFRhYmxlQ29sdW1uIHsgcmV0dXJuIHRoaXMuX3RhYmxlQ29sdW1uT2JqW2ZpZWxkQ29kZV07IH1cbiAgcHV0T25XYWl0KCkgeyB0aGlzLndhaXRpbmcgPSB0cnVlOyB9XG4gIGZyZWVXYWl0aW5nKCkgeyB0aGlzLndhaXRpbmcgPSBmYWxzZTsgfVxuICBzZXRXaWRnZXQod2lkZ2V0KSB7IHRoaXMud2lkZ2V0ID0gd2lkZ2V0OyB9XG5cbiAgbm90aWZ5R2xvYmFsQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCB0YWJsZUV2ZW50OiBUYWJsZUV2ZW50ID0ge1xuICAgICAgdGFibGVDb2RlOiB0aGlzLl90YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlLFxuICAgICAgYWN0aW9uRGV0YWlsOiBudWxsXG4gICAgfTtcbiAgICB0aGlzLl9nbG9iYWxBY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlJbmxpbmVBY3Rpb24odGFibGVBY3Rpb25FdmVudDogVGFibGVBY3Rpb25FdmVudCkge1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMuX3RhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGU6IHRhYmxlQWN0aW9uRXZlbnQuYWN0aW9uQ29kZSxcbiAgICAgIGFjdGlvbkRldGFpbDoge1xuICAgICAgICByZWNvcmRJZDogdGFibGVBY3Rpb25FdmVudC5yZWNvcmRJZCxcbiAgICAgICAgcmVjb3JkRGF0YTogdGFibGVBY3Rpb25FdmVudC5yZWNvcmREYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl9pbmxpbmVBY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlSZWNvcmRTZWxlY3Rpb24ocmVjb3JkSWQpIHtcbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLmdldFRhYmxlUmVjb3JkKHJlY29yZElkKTtcbiAgICBpZiAoIXJlY29yZCkgeyByZXR1cm47IH1cbiAgICByZWNvcmQudG9nZ2xlU2VsZWN0KCk7XG4gICAgdGhpcy5fcmVxdWVzdGVkUGFnZSA9IHRoaXMuX2N1cnJlbnRQYWdlID8/IDE7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy5fdGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZTogbnVsbCxcbiAgICAgIGFjdGlvbkRldGFpbDoge1xuICAgICAgICByZWNvcmRJZDogcmVjb3JkLnJlY29yZElkLFxuICAgICAgICByZWNvcmREYXRhOiByZWNvcmQucmVjb3JkRGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fcmVjb3JkU2VsZWN0aW9uVHJpZ2dlci5uZXh0KHRhYmxlRXZlbnQpO1xuICB9XG5cbiAgbm90aWZ5U2VsZWN0aW9uQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCB0YWJsZUV2ZW50OiBUYWJsZUV2ZW50ID0ge1xuICAgICAgdGFibGVDb2RlOiB0aGlzLl90YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHNlbGVjdGVkUmVjb3JkczogdGhpcy5zZWxlY3RlZFJlY29yZHNcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3NlbGVjdGlvbkFjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeUdldERhdGFBY3Rpb24ocmVxdWVzdGVkUGFnZSA9IG51bGwpIHtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gICAgdGhpcy5fcmVxdWVzdGVkUGFnZSA9IHJlcXVlc3RlZFBhZ2UgfHwgdGhpcy5fY3VycmVudFBhZ2UgfHwgMTtcbiAgICBjb25zdCB0YWJsZUV2ZW50OiBUYWJsZUV2ZW50ID0ge1xuICAgICAgdGFibGVDb2RlOiB0aGlzLl90YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlOiBudWxsLFxuICAgICAgYWN0aW9uRGV0YWlsOiBudWxsLFxuICAgIH07XG4gICAgdGhpcy5fZ2V0RGF0YVRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNsZWFuKCkge1xuICAgIHRoaXMuX3RhYmxlUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMudW5TZWxlY3RBbGwoKTtcbiAgICB0aGlzLl90YWJsZVJlY29yZE9iaiA9IHt9O1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWxsU2VsZWN0ZWQsIHRydWUpO1xuICAgIHRoaXMuX3RhYmxlUmVjb3Jkcy5mb3JFYWNoKHJlY29yZCA9PiByZWNvcmQuc2VsZWN0KCkpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5zZWxlY3RlZFJlY29yZHMsIHRoaXMuZ2V0U2VsZWN0ZWRSZWNvcmRzKCkpO1xuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICB1blNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWxsU2VsZWN0ZWQsIGZhbHNlKTtcbiAgICB0aGlzLl90YWJsZVJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4gcmVjb3JkLnVuc2VsZWN0KCkpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5zZWxlY3RlZFJlY29yZHMsIHRoaXMuZ2V0U2VsZWN0ZWRSZWNvcmRzKCkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc2V0VGFibGVSZWNvcmRzKHRhYmxlUmVjb3JkcywgYXBwZW5kID0gZmFsc2UsIHByZXBlbmQgPSBmYWxzZSkge1xuICAgIGlmICghYXBwZW5kKSB7XG4gICAgICB0aGlzLl90YWJsZVJlY29yZHMgPSBbXTtcbiAgICAgIHRoaXMuX3RhYmxlUmVjb3JkT2JqID0ge307XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWxsU2VsZWN0ZWQsIGZhbHNlKTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5zZWxlY3RlZFJlY29yZHMsIFtdKTtcbiAgICB9XG4gICAgY29uc3QgbmV3UmVjb3Jkc09iaiA9IHsgLi4udGhpcy5fdGFibGVSZWNvcmRPYmogfTtcbiAgICBjb25zdCBuZXdSZWNvcmRzID0gWy4uLnRoaXMuX3RhYmxlUmVjb3Jkc107XG4gICAgZm9yIChjb25zdCB0YWJsZVJlY29yZCBvZiB0YWJsZVJlY29yZHMpIHtcbiAgICAgIHRhYmxlUmVjb3JkLnRhYmxlUmVjb3JkSWQgPSB0YWJsZVJlY29yZC50YWJsZVJlY29yZElkID8/IHRhYmxlUmVjb3JkLnJlY29yZElkID8/IHRhYmxlUmVjb3JkLnJlY29yZElkS2V5O1xuICAgICAgY29uc3QgcmVjb3JkUmVjZWl2ZWQ6IFRhYmxlUmVjb3JkRGF0YSA9IG5ldyBUYWJsZVJlY29yZERhdGEodGFibGVSZWNvcmQsIHRoaXMuX2NvbHVtbnMsIHRoaXMuX3NlbGVjdGlvbkZpZWxkKTtcbiAgICAgIGNvbnN0IHJlY29yZElkS2V5ID0gcmVjb3JkUmVjZWl2ZWQucmVjb3JkSWRLZXkgPz8gcmVjb3JkUmVjZWl2ZWQucmVjb3JkSWRLZXk7XG4gICAgICBpZiAobmV3UmVjb3Jkc09ialtyZWNvcmRJZEtleV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJlcGVuZCkge1xuICAgICAgICBuZXdSZWNvcmRzLnVuc2hpZnQocmVjb3JkUmVjZWl2ZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3UmVjb3Jkcy5wdXNoKHJlY29yZFJlY2VpdmVkKTtcbiAgICAgIH1cbiAgICAgIG5ld1JlY29yZHNPYmpbcmVjb3JkSWRLZXldID0gcmVjb3JkUmVjZWl2ZWQ7XG4gICAgfVxuICAgIHRoaXMuX3RhYmxlUmVjb3JkcyA9IG5ld1JlY29yZHM7XG4gICAgdGhpcy5fdGFibGVSZWNvcmRPYmogPSBuZXdSZWNvcmRzT2JqO1xuICB9XG5cbiAgYXBwZW5kUmVjb3JkcyhyZWNvcmRzKSB7IHRoaXMuc2V0VGFibGVSZWNvcmRzKHJlY29yZHMsIHRydWUpOyB9XG4gIHByZXBlbmRSZWNvcmRzKHJlY29yZHMpIHsgdGhpcy5zZXRUYWJsZVJlY29yZHMocmVjb3JkcywgdHJ1ZSwgdHJ1ZSk7IH1cbiAgcmVwbGFjZVJlY29yZHMocmVjb3JkcykgeyB0aGlzLnNldFRhYmxlUmVjb3JkcyhyZWNvcmRzLCBmYWxzZSk7IH1cblxuICBzZXRUYWJsZUFwcGVuZChhcHBlbmQ6IGJvb2xlYW4pIHsgdGhpcy5fYXBwZW5kUGFnZXMgPSBhcHBlbmQgfVxuXG4gIGNoYW5nZVBhZ2UocmVxdWVzdGVkUGFnZSkge1xuICAgIGlmICh0aGlzLl9jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5jdXJyZW50UGFnZSwgcmVxdWVzdGVkUGFnZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZ5R2V0RGF0YUFjdGlvbihyZXF1ZXN0ZWRQYWdlKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWaXNpYmxlUmVjb3JkcygpIHtcbiAgICBsZXQgdmlzaWJsZVJlY29yZHM6IGFueVtdO1xuICAgIGlmICh0aGlzLl9jbGllbnRQYWdpbmcpIHtcbiAgICAgIHZpc2libGVSZWNvcmRzID0gdGhpcy5nZXRGaWx0ZXJlZFJlY29yZHMoKTtcbiAgICAgIC8vIFNlIHZhbGlkYSBzaSBsYSBww6FnaW5hIGFjdHVhbCBzaWd1ZSBzaWVuZG8gdsOhbGlkYVxuICAgICAgY29uc3QgdG90YWxSZWNvcmRzID0gdmlzaWJsZVJlY29yZHMubGVuZ3RoO1xuICAgICAgY29uc3QgcmVjb3Jkc0xhc3RQYWdlID0gdG90YWxSZWNvcmRzICUgdGhpcy5fcmVjb3Jkc1BlclBhZ2U7XG4gICAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC50cnVuYyh0b3RhbFJlY29yZHMgLyB0aGlzLl9yZWNvcmRzUGVyUGFnZSArIChyZWNvcmRzTGFzdFBhZ2UgPyAxIDogMCkpO1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRQYWdlID4gdG90YWxQYWdlcykge1xuICAgICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IHRvdGFsUGFnZXMgfHwgMTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNsaWNlTnVtYmVyMSA9ICh0aGlzLl9jdXJyZW50UGFnZSAtIDEpICogdGhpcy5fcmVjb3Jkc1BlclBhZ2U7XG4gICAgICBjb25zdCBzbGljZU51bWJlcjIgPSAodGhpcy5fY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMuX3JlY29yZHNQZXJQYWdlICsgdGhpcy5fcmVjb3Jkc1BlclBhZ2VcbiAgICAgIHZpc2libGVSZWNvcmRzID0gdmlzaWJsZVJlY29yZHMuc2xpY2Uoc2xpY2VOdW1iZXIxLCBzbGljZU51bWJlcjIpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnRvdGFsUmVjb3Jkc051bWJlciwgdG90YWxSZWNvcmRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmlzaWJsZVJlY29yZHMgPSB0aGlzLl90YWJsZVJlY29yZHM7XG4gICAgfVxuICAgIHRoaXMuc2V0QXR0cihhdHRycy52aXNpYmxlUmVjb3JkcywgdmlzaWJsZVJlY29yZHMgPz8gW10pO1xuICB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcih0YWJsZVJlY2VpdmVkKSB7XG4gICAgdGhpcy5fcmVxdWVzdGVkUGFnZSA9IDE7XG4gICAgY29uc3QgeyB2aXNpYmxlID0gdHJ1ZSwgdG90YWxQYWdlcyA9IDEsIHJlY29yZHNOdW1iZXIsIGN1cnJlbnRQYWdlID0gMSwgcmVjb3Jkc1BlclBhZ2UsXG4gICAgICB0b3RhbFJlY29yZHNOdW1iZXIsIHNvcnRpbmdDb2x1bW4sIHNvcnRpbmdEaXJlY3Rpb24sIHRhYmxlUmVjb3JkcyxcbiAgICAgIGFjdGlvbnMsIGZpZWxkcyxcbiAgICB9ID0gdGFibGVSZWNlaXZlZDtcbiAgICB0aGlzLnZpc2libGUgPSB2aXNpYmxlO1xuICAgIGlmIChhY3Rpb25zKSB7XG4gICAgICBPYmplY3Qua2V5cyhhY3Rpb25zKS5mb3JFYWNoKGFjdGlvbkNvZGUgPT4ge1xuICAgICAgICBjb25zdCB0YmxBY3Rpb24gPSB0aGlzLmdldEFjdGlvbihhY3Rpb25Db2RlKTtcbiAgICAgICAgY29uc3QgYWN0aW9uUmVjZWl2ZWQgPSBhY3Rpb25zW2FjdGlvbkNvZGVdO1xuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gdHJ1ZSB8fCBhY3Rpb25SZWNlaXZlZC52aXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgIChhY3Rpb25SZWNlaXZlZC52aXNpYmxlID09PSB0cnVlKSAmJiB0YmxBY3Rpb24uc2hvdygpO1xuICAgICAgICAgIChhY3Rpb25SZWNlaXZlZC52aXNpYmxlID09PSBmYWxzZSkgJiYgdGJsQWN0aW9uLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuZW5hYmxlZCA9PT0gdHJ1ZSB8fCBhY3Rpb25SZWNlaXZlZC5lbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgIChhY3Rpb25SZWNlaXZlZC5lbmFibGVkID09PSB0cnVlKSAmJiB0YmxBY3Rpb24uZW5hYmxlKCk7XG4gICAgICAgICAgKGFjdGlvblJlY2VpdmVkLmVuYWJsZWQgPT09IGZhbHNlKSAmJiB0YmxBY3Rpb24uZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25SZWNlaXZlZC5zaG93T25TdGF0ZXMpIHtcbiAgICAgICAgICBhY3Rpb25SZWNlaXZlZC5zaG93T25TdGF0ZXM/LmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgICAgICAgdGJsQWN0aW9uLmFkZFZpc2libGVTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmhpZGVPblN0YXRlcykge1xuICAgICAgICAgIGFjdGlvblJlY2VpdmVkLmhpZGVPblN0YXRlcz8uZm9yRWFjaChuZXdTdGF0ZSA9PiB7XG4gICAgICAgICAgICB0YmxBY3Rpb24ucmVtb3ZlVmlzaWJsZVN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuZW5hYmxlT25TdGF0ZXMpIHtcbiAgICAgICAgICBhY3Rpb25SZWNlaXZlZC5lbmFibGVPblN0YXRlcz8uZm9yRWFjaChuZXdTdGF0ZSA9PiB7XG4gICAgICAgICAgICB0YmxBY3Rpb24uYWRkRW5hYmxlZFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuZGlzYWJsZU9uU3RhdGVzKSB7XG4gICAgICAgICAgYWN0aW9uUmVjZWl2ZWQuZGlzYWJsZU9uU3RhdGVzPy5mb3JFYWNoKG5ld1N0YXRlID0+IHtcbiAgICAgICAgICAgIHRibEFjdGlvbi5yZW1vdmVFbmFibGVkU3RhdGUobmV3U3RhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGZpZWxkcykge1xuICAgICAgT2JqZWN0LmtleXMoZmllbGRzKS5mb3JFYWNoKGZpZWxkQ29kZSA9PiB7XG4gICAgICAgIGNvbnN0IHRibEZpZWxkID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGZpZWxkQ29kZSk7XG4gICAgICAgIGNvbnN0IGZpZWxkUmVjZWl2ZWQgPSBmaWVsZHNbZmllbGRDb2RlXTtcbiAgICAgICAgaWYgKGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gdHJ1ZSB8fCBmaWVsZFJlY2VpdmVkLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgKGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gdHJ1ZSkgJiYgdGJsRmllbGQuc2hvdygpO1xuICAgICAgICAgIChmaWVsZFJlY2VpdmVkLnZpc2libGUgPT09IGZhbHNlKSAmJiB0YmxGaWVsZC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGFibGVSZWNvcmRzKSB7XG4gICAgICB0aGlzLl90b3RhbFBhZ2VzID0gdG90YWxQYWdlcztcbiAgICAgIHRoaXMuX3JlY29yZHNOdW1iZXIgPSByZWNvcmRzTnVtYmVyO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmN1cnJlbnRQYWdlLCArY3VycmVudFBhZ2UpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlY29yZHNQZXJQYWdlLCArcmVjb3Jkc1BlclBhZ2UpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnRvdGFsUmVjb3Jkc051bWJlciwgKHRoaXMuX2NsaWVudFBhZ2luZykgPyB0YWJsZVJlY29yZHMubGVuZ3RoIDogK3RvdGFsUmVjb3Jkc051bWJlcik7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuc29ydGluZywge1xuICAgICAgICBjb2x1bW5OYW1lOiBzb3J0aW5nQ29sdW1uIHx8ICcnLFxuICAgICAgICBkaXJlY3Rpb246IHNvcnRpbmdEaXJlY3Rpb24gfHwgJydcbiAgICAgIH0pO1xuICAgICAgaWYgKCF0aGlzLl9hcHBlbmRQYWdlcykge1xuICAgICAgICB0aGlzLnJlcGxhY2VSZWNvcmRzKHRhYmxlUmVjb3Jkcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFwcGVuZFJlY29yZHModGFibGVSZWNvcmRzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5mcmVlV2FpdGluZygpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIGdldFRhYmxlUmVjb3JkKHJlY29yZElkKSB7XG4gICAgY29uc3QgcmVjb3JkSWRLZXkgPSAodHlwZW9mIHJlY29yZElkID09PSAnb2JqZWN0JykgPyBKU09OLnN0cmluZ2lmeShyZWNvcmRJZCkgOiByZWNvcmRJZDtcbiAgICByZXR1cm4gKHRoaXMuX3RhYmxlUmVjb3JkT2JqICYmIHJlY29yZElkICYmIHRoaXMuX3RhYmxlUmVjb3JkT2JqW3JlY29yZElkXSlcbiAgICAgID8gdGhpcy5fdGFibGVSZWNvcmRPYmpbcmVjb3JkSWRdIDogbnVsbDtcbiAgfVxuXG4gIGdldEFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgcmV0dXJuICh0aGlzLl9hY3Rpb25zT2JqICYmIGFjdGlvbkNvZGUgJiYgdGhpcy5fYWN0aW9uc09ialthY3Rpb25Db2RlXSlcbiAgICAgID8gdGhpcy5fYWN0aW9uc09ialthY3Rpb25Db2RlXSA6IG51bGw7XG4gIH1cblxuICBnZXRBY3Rpb25zKGFjdGlvbkNsYXNzOiBzdHJpbmcgPSB0aGlzLl9mb3JtQ29uZmlnLnRhYmxlQWN0aW9ucy5pbmxpbmUsIGFjdGlvblR5cGVzOiBzdHJpbmdbXSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5maWx0ZXIoYWN0aW9uRGVmID0+IHtcbiAgICAgIGNvbnN0IHR5cGVJbmNsdWRlZCA9IChhY3Rpb25UeXBlcykgPyBhY3Rpb25UeXBlcy5pbmNsdWRlcyhhY3Rpb25EZWYuYWN0aW9uVHlwZSkgOiB0cnVlO1xuICAgICAgcmV0dXJuIGFjdGlvbkRlZi5hY3Rpb25DbGFzcyA9PT0gYWN0aW9uQ2xhc3MgJiYgdHlwZUluY2x1ZGVkO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gRmlsdHJvc1xuXG4gIHNldEZpbHRlckJ5SWQoaWQpIHtcbiAgICBpZiAodGhpcy5yZXN0cmljdGVkSWQgPT09IGlkKSB7IHJldHVybjsgfVxuICAgIHRoaXMucmVzdHJpY3RlZElkID0gaWQ7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgY2xlYW5JZEZpbHRlcigpIHtcbiAgICBpZiAodGhpcy5yZXN0cmljdGVkSWQgPT09IG51bGwpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5yZXN0cmljdGVkSWQgPSBudWxsO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHNldEdsb2JhbEZpbHRlclN0cmluZyh0ZXh0LCBub3RpZnlDb21wb25lbnQgPSB0cnVlKSB7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzID0gdGV4dC5zcGxpdCgnICcpLmZpbHRlcih0ID0+IHQgJiYgdC50cmltKCkubGVuZ3RoID4gMCkubWFwKHQgPT4gdC50cmltKCkpID8/IFtdO1xuICAgIGlmICh0aGlzLl9jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMuY2hhbmdlUGFnZSgxKTtcbiAgICB9XG4gICAgaWYgKG5vdGlmeUNvbXBvbmVudCkge1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbEZpbHRlclN0cmluZywgdGV4dC50cmltKCkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEZpbHRlckRlZmluaXRpb24oY29sdW1uTmFtZSwgZmlsdGVyRGVmaW5pdGlvbikge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIHRhYmxlQ29sdW1uICYmIHRhYmxlQ29sdW1uLmFkZEZpbHRlckRlZmluaXRpb24oZmlsdGVyRGVmaW5pdGlvbik7XG4gIH1cblxuICBnZXRGaWx0ZXJlZFJlY29yZHMoKSB7XG4gICAgbGV0IGZpbHRlcmVkUmVjb3JkcyA9IHRoaXMuX3RhYmxlUmVjb3JkcztcbiAgICBpZiAodGhpcy5yZXN0cmljdGVkSWQpIHtcbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5yZWNvcmRJZCA9PT0gdGhpcy5yZXN0cmljdGVkSWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5oYXNQYXR0ZXJuKHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5ncywgdGhpcy5fdGFibGVDb2x1bW5PYmopKTtcbiAgICB9XG4gICAgY29uc3QgY29sdW1uRmlsdGVycyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpO1xuICAgIGlmIChjb2x1bW5GaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5oYXNDb25kaXRpb24oY29sdW1uRmlsdGVycykpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRSZWNvcmRzO1xuICB9XG5cbiAgZ2V0Q29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIHJldHVybiB0YWJsZUNvbHVtbj8uZmlsdGVyID8/IG51bGw7XG4gIH1cblxuICBhZGRDb2x1bW5GaWx0ZXIoY29sdW1uTmFtZTogc3RyaW5nLCBjb2x1bW5WYWx1ZXM6IGFueSB8IGFueVtdLCBvcGVyYXRvcjogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICBjb25zdCBjb2x1bW5GaWx0ZXJEZWZpbml0aW9uID0gdGFibGVDb2x1bW4/LmZpbHRlckRlZmluaXRpb24gPz8gbnVsbDtcbiAgICBpZiAoIWNvbHVtbkZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGFibGVDb2x1bW4gJiYgdGFibGVDb2x1bW4uYWRkRmlsdGVyKGNvbHVtblZhbHVlcywgb3BlcmF0b3IpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbkZpbHRlcihjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICB0YWJsZUNvbHVtbiAmJiB0YWJsZUNvbHVtbi5yZW1vdmVGaWx0ZXIoKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBnZXQgY3VycmVudEZpbHRlcigpIHtcbiAgICBjb25zdCBjb21wYWN0RmlsdGVyOiBhbnkgPSB7XG4gICAgICBzaW1wbGVGaWx0ZXJXb3JkczogdGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLFxuICAgICAgYWR2YW5jZWRGaWx0ZXI6IFtdLFxuICAgIH07XG4gICAgY29uc3QgY29sdW1uRmlsdGVycyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2x1bW5GaWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyc1tpbmRleF07XG4gICAgICBjb21wYWN0RmlsdGVyLmFkdmFuY2VkRmlsdGVyLnB1c2goe1xuICAgICAgICBmaWVsZENvZGU6IGNvbHVtbkZpbHRlcj8uZmllbGRDb2RlLFxuICAgICAgICBvcGVyYXRvcjogY29sdW1uRmlsdGVyPy5vcGVyYXRvcixcbiAgICAgICAgZmllbGRWYWx1ZTE6IGNvbHVtbkZpbHRlcj8udmFsdWVzWzBdLFxuICAgICAgICBmaWVsZFZhbHVlMjogY29sdW1uRmlsdGVyPy52YWx1ZXNbMV0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBhY3RGaWx0ZXI7XG4gIH1cblxuICAvLyBPcmRlbmFtaWVudG8gZGUgcmVnaXN0cm9zIGxvY2FsXG5cbiAgc29ydChjb2x1bW5OYW1lLCBkaXJlY3Rpb24pIHtcbiAgICB0aGlzLnNldFJlcXVpcmVkT3JkZXIoY29sdW1uTmFtZSwgZGlyZWN0aW9uKTtcbiAgICBpZiAodGhpcy5fY2xpZW50UGFnaW5nKSB7XG4gICAgICB0aGlzLmxvY2FsU29ydERhdGEoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdGlmeUdldERhdGFBY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBzZXRSZXF1aXJlZE9yZGVyKGNvbHVtbkZpZWxkLCBkaXJlY3Rpb24gPSBudWxsKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNvcnRpbmcsIHtcbiAgICAgIGNvbHVtbk5hbWU6IGNvbHVtbkZpZWxkLFxuICAgICAgZGlyZWN0aW9uOiAoZGlyZWN0aW9uID09PSAnYXNjZW5kJykgPyBUQUJMRV9TT1JUX0FTQ0VORElORyA6IFRBQkxFX1NPUlRfREVTQ0VORElORyxcbiAgICB9KTtcbiAgfVxuXG4gIGxvY2FsU29ydERhdGEoKSB7XG4gICAgaWYgKCF0aGlzLl9zb3J0aW5nLmNvbHVtbk5hbWUgfHwgIXRoaXMuX3NvcnRpbmcuZGlyZWN0aW9uKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX3RhYmxlUmVjb3Jkcy5zb3J0KChhLCBiKSA9PiB0aGlzLnJlY29yZENvbXBhcmUoYSwgYiwgdGhpcy5fc29ydGluZy5jb2x1bW5OYW1lLCB0aGlzLl9zb3J0aW5nLmRpcmVjdGlvbikpO1xuICAgIC8vdGhpcy51blNlbGVjdEFsbCgpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHJlY29yZENvbXBhcmUocmVjb3JkQTogVGFibGVSZWNvcmREYXRhLCByZWNvcmRCOiBUYWJsZVJlY29yZERhdGEsIGNvbHVtbkNvbXBhcmUsIGRpcmVjdGlvbikge1xuICAgIGNvbnN0IHJlY29yZEFWYWx1ZSA9IHJlY29yZEEuZ2V0RmllbGRWYWx1ZShjb2x1bW5Db21wYXJlKTtcbiAgICBjb25zdCByZWNvcmRCVmFsdWUgPSByZWNvcmRCLmdldEZpZWxkVmFsdWUoY29sdW1uQ29tcGFyZSk7XG4gICAgY29uc3QgcmVjb3JkQUNvbHVtbiA9IGlzTmFOKHJlY29yZEFWYWx1ZSkgPyByZWNvcmRBVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6ICtyZWNvcmRBVmFsdWU7XG4gICAgY29uc3QgcmVjb3JkQkNvbHVtbiA9IGlzTmFOKHJlY29yZEJWYWx1ZSkgPyByZWNvcmRCVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6ICtyZWNvcmRCVmFsdWU7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgaWYgKHJlY29yZEFDb2x1bW4gPCByZWNvcmRCQ29sdW1uKSB7XG4gICAgICByZXN1bHQgPSAtMTtcbiAgICB9IGVsc2UgaWYgKHJlY29yZEFDb2x1bW4gPiByZWNvcmRCQ29sdW1uKSB7XG4gICAgICByZXN1bHQgPSAxO1xuICAgIH1cbiAgICByZXR1cm4gZGlyZWN0aW9uID09PSBUQUJMRV9TT1JUX0FTQ0VORElORyA/IHJlc3VsdCA6IC1yZXN1bHQ7XG4gIH1cblxuICBvdmVycmlkZSBmb3JtU3RhdGVDaGFuZ2VDdXN0b21TdWJzY3JpYmUoZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpIHtcbiAgICB0aGlzLl9jb2x1bW5zPy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICBjb2x1bW4/LmNvbm5lY3RXaXRoUGFyZW50Rm9ybShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCk7XG4gICAgfSk7XG4gICAgdGhpcy5fYWN0aW9ucz8uZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgYWN0aW9uPy5jb25uZWN0V2l0aFBhcmVudEZvcm0oZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
538
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUVyQyxNQUFNLEtBQUssR0FBRztJQUNaLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUM5RCxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQ3ZELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtJQUNqRSxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7SUFDakUsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFO0lBQ3BGLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRTtJQUM3QyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO0lBQ3ZFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTtJQUMvQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7SUFDbEQsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRTtJQUMxRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUU7SUFDOUQsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFO0lBQ25GLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7SUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFO0NBQ3BELENBQUM7QUFjRixNQUFNLE9BQU8sV0FBWSxTQUFRLFdBQVc7SUFDekIsb0JBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztJQUNqRCxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO0lBQ2pELHVCQUF1QixHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDcEQsdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztJQUNwRCxlQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztJQUNyRCxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFlBQVksQ0FBVTtJQUN0QixRQUFRLENBQWdCO0lBQ3hCLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFFekIsdUNBQXVDO0lBQy9CLG1CQUFtQixHQUFXLEVBQUUsQ0FBQztJQUNqQyxtQkFBbUIsR0FBYSxFQUFFLENBQUM7SUFDbkMsZUFBZSxDQUFNO0lBQ3JCLE1BQU0sR0FBa0IsSUFBSSxDQUFDO0lBQzdCLGFBQWEsQ0FBTTtJQUNuQixhQUFhLENBQVU7SUFDdkIsYUFBYSxDQUFvQjtJQUNqQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLGVBQWUsR0FBc0IsRUFBRSxDQUFDO0lBQ3hDLFFBQVEsQ0FBc0I7SUFDOUIsV0FBVyxDQUFVO0lBQ3JCLGlCQUFpQixDQUFVO0lBQzNCLGVBQWUsQ0FBUztJQUN4QixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsV0FBVyxDQUFTO0lBQ3BCLFlBQVksQ0FBUztJQUNyQixXQUFXLENBQVM7SUFDcEIsY0FBYyxDQUFTO0lBQ3ZCLGVBQWUsR0FBVyxFQUFFLENBQUM7SUFDN0IsbUJBQW1CLEdBQVcsQ0FBQyxDQUFDO0lBQ2hDLGNBQWMsR0FBVyxDQUFDLENBQUM7SUFDM0IsUUFBUSxDQUFNO0lBQ2QsUUFBUSxDQUFVO0lBQ2xCLGFBQWEsR0FBWSxJQUFJLENBQUM7SUFDOUIsU0FBUyxDQUFVO0lBRTNCLFlBQVksYUFBYSxFQUFFLFVBQVU7UUFDbkMsS0FBSyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO1FBQy9GLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQztRQUNuRCxJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsRUFBRSxVQUFVLElBQUksS0FBSyxDQUFDO1FBQ3RELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxhQUFhLEVBQUUsZ0JBQWdCLElBQUksS0FBSyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFFbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLElBQUksS0FBSyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRS9CLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE1BQU0sT0FBTyxHQUF3QixFQUFFLENBQUM7WUFDeEMsS0FBSyxNQUFNLGNBQWMsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sY0FBYyxHQUFHO29CQUNyQixHQUFHLGNBQWM7b0JBQ2pCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtvQkFDakMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO2lCQUNsQyxDQUFDO2dCQUNGLE1BQU0sZ0JBQWdCLEdBQXNCLElBQUksaUJBQWlCLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDcEcsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1lBQ3RFLENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN0RCxJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO2dCQUN6QyxJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ25CLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzt5QkFDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO3lCQUMxQixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxhQUFhLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7eUJBQ2xELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQzt5QkFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztnQkFDRCxPQUFPLEVBQUUsR0FBRyxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQ3JELENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxNQUFNLGNBQWMsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFlBQVksQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqRix3Q0FBd0M7UUFDeEMsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakcsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxXQUFXLEtBQUssT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxtQkFBbUIsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsSUFBSSxtQkFBbUIsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsSUFBSSxzQkFBc0IsS0FBSyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEYsSUFBSSxzQkFBc0IsS0FBSyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEYsSUFBSSxjQUFjLEtBQUssT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVwRSxJQUFJLFlBQVksS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDakQsSUFBSSxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRCxJQUFJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxLQUFLLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdDLElBQUksZ0JBQWdCLEtBQUssT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ3pELElBQUksY0FBYyxLQUFLLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUMvQyxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzNDLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUMvQyxJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdDLElBQUksYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsSUFBSSxjQUFjLEtBQUssT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNyRCxJQUFJLGtCQUFrQixLQUFLLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUM3RCxJQUFJLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ25ELElBQUksT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLFlBQVksS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFekMsSUFBSSxrQkFBa0IsS0FBSyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFDN0QsSUFBSSxrQkFBa0IsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBRTdGLElBQUksWUFBWSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDckUsSUFBSSxZQUFZLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ25FLElBQUksWUFBWSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDckUsSUFBSSxjQUFjLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUM3RSxJQUFJLGNBQWMsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRixJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksVUFBVSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLElBQUksY0FBYyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsSUFBSSxXQUFXLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNqRSxJQUFJLFNBQVMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pELElBQUksVUFBVSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsSUFBSSxXQUFXLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNqRSxJQUFJLFVBQVUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzdELElBQUksYUFBYSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDekUsSUFBSSxjQUFjLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUM3RSxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDN0YsSUFBSSxhQUFhLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN6RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQzdELElBQUksWUFBWSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDckUsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVyRCxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuQyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsVUFBVSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsa0JBQWtCLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLG9CQUFvQixLQUFLLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxzQkFBc0IsS0FBSyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEQsZ0JBQWdCLENBQUMsU0FBUyxJQUF1QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLFNBQVMsS0FBSyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEMsV0FBVyxLQUFLLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2QyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUUzQyxrQkFBa0IsQ0FBQyxVQUFVO1FBQzNCLE1BQU0sVUFBVSxHQUFlO1lBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixVQUFVO1lBQ1YsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQztRQUNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQixDQUFDLGdCQUFrQztRQUNuRCxNQUFNLFVBQVUsR0FBZTtZQUM3QixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDMUIsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFVBQVU7WUFDdkMsWUFBWSxFQUFFO2dCQUNaLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUNuQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsVUFBVTthQUN4QztTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFRO1FBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQWU7WUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzFCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRTtnQkFDWixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ3pCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTthQUM5QjtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxVQUFVO1FBQzlCLE1BQU0sVUFBVSxHQUFlO1lBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixVQUFVO1lBQ1YsWUFBWSxFQUFFO2dCQUNaLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTthQUN0QztTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsSUFBSTtRQUN0QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztRQUM5RCxNQUFNLFVBQVUsR0FBZTtZQUM3QixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDMUIsVUFBVSxFQUFFLElBQUk7WUFDaEIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQztJQUVkLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQzNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbEQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQyxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLGFBQWEsSUFBSSxXQUFXLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUM7WUFDekcsTUFBTSxjQUFjLEdBQW9CLElBQUksZUFBZSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsV0FBVyxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUM7WUFDN0UsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsU0FBUztZQUNYLENBQUM7WUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxjQUFjLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxjQUFjLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsY0FBYyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakUsY0FBYyxDQUFDLE1BQWUsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQSxDQUFDLENBQUM7SUFFOUQsVUFBVSxDQUFDLGFBQWE7UUFDdEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksY0FBcUIsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDM0Msb0RBQW9EO1lBQ3BELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDM0MsTUFBTSxlQUFlLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9GLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLElBQUksQ0FBQyxDQUFDO1lBQ3RDLENBQUM7WUFDRCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNwRSxNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFBO1lBQzFGLGNBQWMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxhQUFhO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLFdBQVcsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUNwRixrQkFBa0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUNqRSxPQUFPLEVBQUUsTUFBTSxHQUNoQixHQUFHLGFBQWEsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxjQUFjLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxjQUFjLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO29CQUN4RSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUN0RCxDQUFDLGNBQWMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN6RCxDQUFDO2dCQUNELElBQUksY0FBYyxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksY0FBYyxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDeEUsQ0FBQyxjQUFjLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDeEQsQ0FBQyxjQUFjLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDNUQsQ0FBQztnQkFDRCxJQUFJLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDaEMsY0FBYyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7d0JBQzlDLFNBQVMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsSUFBSSxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ2hDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dCQUM5QyxTQUFTLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3pDLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsSUFBSSxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2xDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dCQUNoRCxTQUFTLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN0QyxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELElBQUksY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNuQyxjQUFjLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTt3QkFDakQsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN6QyxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxhQUFhLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxhQUFhLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO29CQUN0RSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNwRCxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztZQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztZQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3pHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDMUIsVUFBVSxFQUFFLGFBQWEsSUFBSSxFQUFFO2dCQUMvQixTQUFTLEVBQUUsZ0JBQWdCLElBQUksRUFBRTthQUNsQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjLENBQUMsUUFBUTtRQUNyQixNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDekYsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBRUQsU0FBUyxDQUFDLFVBQVU7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRUQsVUFBVSxDQUFDLGNBQXNCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxjQUF3QixJQUFJO1FBQ2pHLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN2RixPQUFPLFNBQVMsQ0FBQyxXQUFXLEtBQUssV0FBVyxJQUFJLFlBQVksQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO0lBRVYsYUFBYSxDQUFDLEVBQUU7UUFDZCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssRUFBRSxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQUksRUFBRSxlQUFlLEdBQUcsSUFBSTtRQUNoRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUcsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQVUsRUFBRSxnQkFBZ0I7UUFDOUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELFdBQVcsSUFBSSxXQUFXLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsZUFBZSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3RixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hDLGVBQWUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDeEgsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsZUFBZSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDekYsQ0FBQztRQUNELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlLENBQUMsVUFBa0I7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sV0FBVyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUFrQixFQUFFLFlBQXlCLEVBQUUsV0FBMEIsSUFBSTtRQUMzRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsTUFBTSxzQkFBc0IsR0FBRyxXQUFXLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0QsV0FBVyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFrQjtRQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsV0FBVyxJQUFJLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsTUFBTSxhQUFhLEdBQVE7WUFDekIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUMzQyxjQUFjLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBQ0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pHLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVM7Z0JBQ2xDLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUTtnQkFDaEMsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDckMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxrQ0FBa0M7SUFFbEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQzFCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLFNBQVMsRUFBRSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtTQUNuRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0cscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBd0IsRUFBRSxPQUF3QixFQUFFLGFBQWEsRUFBRSxTQUFTO1FBQ3hGLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUM3RixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUM3RixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLGFBQWEsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZCxDQUFDO2FBQU0sSUFBSSxhQUFhLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDekMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNiLENBQUM7UUFDRCxPQUFPLFNBQVMsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvRCxDQUFDO0lBRVEsOEJBQThCLENBQUMsSUFBSSxFQUFFLGlCQUFpQjtRQUM3RCxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixNQUFNLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixNQUFNLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudCB9IGZyb20gJy4uL2VsZW1lbnQnO1xuaW1wb3J0IHsgUmVjb3JkVGFibGVDb2x1bW4gfSBmcm9tICcuL2NvbHVtbic7XG5pbXBvcnQgeyBUYWJsZUFjdGlvbiB9IGZyb20gJy4vYWN0aW9uJztcbmltcG9ydCB7IFRhYmxlUmVjb3JkRGF0YSB9IGZyb20gJy4vcm93LWRhdGEnO1xuXG5jb25zdCBUQUJMRV9TT1JUX0FTQ0VORElORyA9ICdhc2MnO1xuY29uc3QgVEFCTEVfU09SVF9ERVNDRU5ESU5HID0gJ2Rlc2MnO1xuXG5jb25zdCBhdHRycyA9IHtcbiAgYWxsU2VsZWN0ZWQ6IHsgbmFtZTogJ2FsbFNlbGVjdGVkJywgcHJvcGFnYXRlOiAnYWxsU2VsZWN0ZWQnIH0sXG4gIHRhYmxlQ29kZTogeyBuYW1lOiAndGFibGVDb2RlJywgcHJvcGFnYXRlOiAnY29kZScgfSxcbiAgY2xpZW50UGFnaW5nOiB7IG5hbWU6ICdjbGllbnRQYWdpbmcnLCBwcm9wYWdhdGU6IG51bGwgfSxcbiAgZ2xvYmFsU2VhcmNoOiB7IG5hbWU6ICdnbG9iYWxTZWFyY2gnLCBwcm9wYWdhdGU6ICdnbG9iYWxTZWFyY2gnIH0sXG4gIHJlc3RyaWN0ZWRJZDogeyBuYW1lOiAncmVzdHJpY3RlZElkJywgcHJvcGFnYXRlOiAncmVzdHJpY3RlZElkJyB9LFxuICBnbG9iYWxGaWx0ZXJTdHJpbmc6IHsgbmFtZTogJ19nbG9iYWxGaWx0ZXJTdHJpbmcnLCBwcm9wYWdhdGU6ICdnbG9iYWxGaWx0ZXJTdHJpbmcnIH0sXG4gIHNvcnRpbmc6IHsgbmFtZTogJ3NvcnRpbmcnLCBwcm9wYWdhdGU6IG51bGwgfSxcbiAgcmVjb3Jkc1BlclBhZ2U6IHsgbmFtZTogJ3JlY29yZHNQZXJQYWdlJywgcHJvcGFnYXRlOiAncmVjb3Jkc1BlclBhZ2UnIH0sXG4gIGxheW91dDogeyBuYW1lOiAnbGF5b3V0JywgcHJvcGFnYXRlOiAnbGF5b3V0JyB9LFxuICBjb2x1bW5zOiB7IG5hbWU6ICdjb2x1bW5zJywgcHJvcGFnYXRlOiAnY29sdW1ucycgfSxcbiAgc2VsZWN0ZWRSZWNvcmRzOiB7IG5hbWU6ICdzZWxlY3RlZFJlY29yZHMnLCBwcm9wYWdhdGU6ICdzZWxlY3RlZFJlY29yZHMnIH0sXG4gIGN1cnJlbnRQYWdlOiB7IG5hbWU6ICdjdXJyZW50UGFnZScsIHByb3BhZ2F0ZTogJ2N1cnJlbnRQYWdlJyB9LFxuICB0b3RhbFJlY29yZHNOdW1iZXI6IHsgbmFtZTogJ3RvdGFsUmVjb3Jkc051bWJlcicsIHByb3BhZ2F0ZTogJ3RvdGFsUmVjb3Jkc051bWJlcicgfSxcbiAgdmlzaWJsZVJlY29yZHM6IHsgbmFtZTogJ192aXNpYmxlUmVjb3JkcycsIHByb3BhZ2F0ZTogJ3Zpc2libGVSZWNvcmRzJyB9LFxuICB3YWl0aW5nOiB7IG5hbWU6ICdfd2FpdGluZycsIHByb3BhZ2F0ZTogJ3dhaXRpbmcnIH0sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQWN0aW9uRXZlbnQge1xuICBhY3Rpb25Db2RlOiBzdHJpbmc7XG4gIHJlY29yZElkOiBhbnk7XG4gIHJlY29yZERhdGE6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUV2ZW50IHtcbiAgdGFibGVDb2RlOiBzdHJpbmc7XG4gIGFjdGlvbkNvZGU6IHN0cmluZyB8IG51bGw7XG4gIGFjdGlvbkRldGFpbDogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgUmVjb3JkVGFibGUgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lubGluZUFjdGlvblRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9nbG9iYWxBY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVjb3JkU2VsZWN0aW9uVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGlvbkFjdGlvblRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9nZXREYXRhVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgX3RhYmxlQ29sdW1uT2JqID0ge307XG4gIHByaXZhdGUgX2FwcGVuZFBhZ2VzOiBib29sZWFuO1xuICBwcml2YXRlIF9hY3Rpb25zOiBUYWJsZUFjdGlvbltdO1xuICBwcml2YXRlIF9hY3Rpb25zT2JqID0ge307XG5cbiAgLy8gTWVjYW5pc21vcyBkZSBmaWx0cmFkbyBudWV2YSB2ZXJzacOzblxuICBwcml2YXRlIF9nbG9iYWxGaWx0ZXJTdHJpbmc6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGdsb2JhbEZpbHRlclN0cmluZ3M6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgc2VsZWN0ZWRSZWNvcmRzOiBhbnk7XG4gIHByaXZhdGUgbGF5b3V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVzdHJpY3RlZElkOiBhbnk7XG4gIHByaXZhdGUgX2dsb2JhbFNlYXJjaDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdGFibGVSZWNvcmRzOiBUYWJsZVJlY29yZERhdGFbXTtcbiAgcHJpdmF0ZSBfdGFibGVSZWNvcmRPYmogPSB7fTtcbiAgcHJpdmF0ZSBfdmlzaWJsZVJlY29yZHM6IFRhYmxlUmVjb3JkRGF0YVtdID0gW107XG4gIHByaXZhdGUgX2NvbHVtbnM6IFJlY29yZFRhYmxlQ29sdW1uW107XG4gIHByaXZhdGUgX3NlbGVjdGFibGU6IGJvb2xlYW47XG4gIHByaXZhdGUgX3NlbGVjdGlvbkJhY2tlbmQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX3NlbGVjdGlvbkZpZWxkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FsbFNlbGVjdGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3RhYmxlQ29kZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3RhYmxlVGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBfY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdG90YWxQYWdlczogbnVtYmVyO1xuICBwcml2YXRlIF9yZXF1ZXN0ZWRQYWdlOiBudW1iZXI7XG4gIHByaXZhdGUgX3JlY29yZHNQZXJQYWdlOiBudW1iZXIgPSAxMDtcbiAgcHJpdmF0ZSBfdG90YWxSZWNvcmRzTnVtYmVyOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9yZWNvcmRzTnVtYmVyOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9zb3J0aW5nOiBhbnk7XG4gIHByaXZhdGUgX3dhaXRpbmc6IGJvb2xlYW47XG4gIHByaXZhdGUgX2NsaWVudFBhZ2luZzogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX3NvcnRhYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICBzdXBlcih0YWJsZVJlY2VpdmVkLCBmb3JtQ29uZmlnKTtcbiAgICB0aGlzLnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcyA9IHRoaXMuX2Zvcm1Db25maWc/LnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcz8udGFibGVzID8/IFtdO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMudGFibGU7XG4gICAgdGhpcy5fd2FpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLl90b3RhbFBhZ2VzID0gMTtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRQYWdlID0gMTtcbiAgICB0aGlzLl9jb2x1bW5zID0gW107XG4gICAgdGhpcy5fdGFibGVDb2x1bW5PYmogPSB7fTtcbiAgICB0aGlzLl9hY3Rpb25zID0gW107XG4gICAgdGhpcy5fYWN0aW9uc09iaiA9IHt9O1xuICAgIHRoaXMuX3RhYmxlUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMuX2dsb2JhbFNlYXJjaCA9IGZhbHNlO1xuICAgIHRoaXMuX3Jlc3RyaWN0ZWRJZCA9IG51bGw7XG5cbiAgICB0aGlzLl90YWJsZVRpdGxlID0gdGFibGVSZWNlaXZlZC50YWJsZVRpdGxlO1xuICAgIHRoaXMuX2FwcGVuZFBhZ2VzID0gdGFibGVSZWNlaXZlZD8uYXBwZW5kID8/IGZhbHNlO1xuICAgIHRoaXMuX3NlbGVjdGFibGUgPSB0YWJsZVJlY2VpdmVkPy5zZWxlY3RhYmxlID8/IGZhbHNlO1xuICAgIHRoaXMuX3NlbGVjdGlvbkJhY2tlbmQgPSB0YWJsZVJlY2VpdmVkPy5zZWxlY3Rpb25CYWNrZW5kID8/IGZhbHNlO1xuICAgIHRoaXMuX3NvcnRhYmxlID0gdGFibGVSZWNlaXZlZD8uc29ydGFibGUgPz8gZmFsc2U7XG5cbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWxsU2VsZWN0ZWQsIGZhbHNlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMudGFibGVDb2RlLCB0YWJsZVJlY2VpdmVkLnRhYmxlQ29kZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmNsaWVudFBhZ2luZywgdGFibGVSZWNlaXZlZD8uY2xpZW50UGFnaW5nID8/IHRydWUpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5nbG9iYWxTZWFyY2gsIHRhYmxlUmVjZWl2ZWQ/LnNpbXBsZUZpbHRlciA/PyBmYWxzZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbEZpbHRlclN0cmluZywgJycpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5zb3J0aW5nLCB7IGNvbHVtbk5hbWU6ICcnLCBkaXJlY3Rpb246ICcnIH0pO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5yZWNvcmRzUGVyUGFnZSwgZm9ybUNvbmZpZy5kZWZhdWx0UmVjb3Jkc1BlclBhZ2UpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5sYXlvdXQsICcnKTtcblxuICAgIGlmICh0YWJsZVJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgY29uc3QgY29sdW1uczogUmVjb3JkVGFibGVDb2x1bW5bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb2x1bW5SZWNlaXZlZCBvZiB0YWJsZVJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgICBjb25zdCBjb2x1bW5FbnJpY2hlZCA9IHtcbiAgICAgICAgICAuLi5jb2x1bW5SZWNlaXZlZCxcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzOiB0aGlzLnZpc2libGVTdGF0ZXMsXG4gICAgICAgICAgZW5hYmxlZFN0YXRlczogdGhpcy5lbmFibGVkU3RhdGVzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNvbHVtbkRlZmluaXRpb246IFJlY29yZFRhYmxlQ29sdW1uID0gbmV3IFJlY29yZFRhYmxlQ29sdW1uKGNvbHVtbkVucmljaGVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbkRlZmluaXRpb24pO1xuICAgICAgICB0aGlzLl90YWJsZUNvbHVtbk9ialtjb2x1bW5EZWZpbml0aW9uLmZpZWxkQ29kZV0gPSBjb2x1bW5EZWZpbml0aW9uO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmNvbHVtbnMsIGNvbHVtbnMpO1xuICAgIH1cbiAgICBpZiAodGFibGVSZWNlaXZlZC5hY3Rpb25zKSB7XG4gICAgICBjb25zdCB0YWJsZUFjdGlvbnMgPSB0YWJsZVJlY2VpdmVkLmFjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLmFjdGlvbk1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCk7XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBhY3Rpb25SZWNlaXZlZCBvZiB0YWJsZUFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgaW5saW5lQWN0aW9uID0gbmV3IFRhYmxlQWN0aW9uKGFjdGlvblJlY2VpdmVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5wdXNoKGlubGluZUFjdGlvbik7XG4gICAgICAgIHRoaXMuX2FjdGlvbnNPYmpbaW5saW5lQWN0aW9uLmFjdGlvbkNvZGVdID0gaW5saW5lQWN0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9zZWxlY3Rpb25GaWVsZCA9ICh0aGlzLl9zZWxlY3RhYmxlKSA/IHRhYmxlUmVjZWl2ZWQ/LnNlbGVjdGlvbkZpZWxkIDogbnVsbDtcbiAgICAvLyBGaWx0cm9zIHByZWRlZmluaWRvcyBlbiBlbCBmb3JtdWxhcmlvXG4gICAgaWYgKHRhYmxlUmVjZWl2ZWQuZmlsdGVycykge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlUmVjZWl2ZWQuZmlsdGVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdGhpcy5hZGRGaWx0ZXJEZWZpbml0aW9uKHRhYmxlUmVjZWl2ZWQuZmlsdGVyc1tpbmRleF0uZmllbGRDb2RlLCB0YWJsZVJlY2VpdmVkLmZpbHRlcnNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgY29sdW1uTmFtZXMoKSB7IHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl90YWJsZUNvbHVtbk9iaik7IH1cbiAgZ2V0IGlubGluZUFjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9pbmxpbmVBY3Rpb25UcmlnZ2VyLmFzT2JzZXJ2YWJsZSgpOyB9XG4gIGdldCBnbG9iYWxBY3Rpb25UcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5fZ2xvYmFsQWN0aW9uVHJpZ2dlci5hc09ic2VydmFibGUoKTsgfVxuICBnZXQgc2VsZWN0aW9uQWN0aW9uVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkFjdGlvblRyaWdnZXIuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IHJlY29yZFNlbGVjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9yZWNvcmRTZWxlY3Rpb25UcmlnZ2VyLmFzT2JzZXJ2YWJsZSgpOyB9XG4gIGdldCBnZXREYXRhVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX2dldERhdGFUcmlnZ2VyLmFzT2JzZXJ2YWJsZSgpOyB9XG5cbiAgZ2V0IGdsb2JhbFNlYXJjaCgpIHsgcmV0dXJuIHRoaXMuX2dsb2JhbFNlYXJjaDsgfVxuICBnZXQgcmVzdHJpY3RlZElkKCkgeyByZXR1cm4gdGhpcy5fcmVzdHJpY3RlZElkOyB9XG4gIGdldCB0YWJsZVJlY29yZHMoKSB7IHJldHVybiB0aGlzLl90YWJsZVJlY29yZHM7IH1cbiAgZ2V0IHRhYmxlUmVjb3JkT2JqKCkgeyByZXR1cm4gdGhpcy5fdGFibGVSZWNvcmRPYmo7IH1cbiAgZ2V0IHZpc2libGVSZWNvcmRzKCkgeyByZXR1cm4gdGhpcy5fdmlzaWJsZVJlY29yZHM7IH1cbiAgZ2V0IGNvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5zOyB9XG4gIGdldCBzZWxlY3RhYmxlKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0YWJsZTsgfVxuICBnZXQgc2VsZWN0aW9uQmFja2VuZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkJhY2tlbmQ7IH1cbiAgZ2V0IHNlbGVjdGlvbkZpZWxkKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0aW9uRmllbGQ7IH1cbiAgZ2V0IGFsbFNlbGVjdGVkKCkgeyByZXR1cm4gdGhpcy5fYWxsU2VsZWN0ZWQ7IH1cbiAgZ2V0IHRhYmxlQ29kZSgpIHsgcmV0dXJuIHRoaXMuX3RhYmxlQ29kZTsgfVxuICBnZXQgdGFibGVUaXRsZSgpIHsgcmV0dXJuIHRoaXMuX3RhYmxlVGl0bGU7IH1cbiAgZ2V0IGN1cnJlbnRQYWdlKCkgeyByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U7IH1cbiAgZ2V0IHRvdGFsUGFnZXMoKSB7IHJldHVybiB0aGlzLl90b3RhbFBhZ2VzOyB9XG4gIGdldCByZXF1ZXN0ZWRQYWdlKCkgeyByZXR1cm4gdGhpcy5fcmVxdWVzdGVkUGFnZTsgfVxuICBnZXQgcmVjb3Jkc1BlclBhZ2UoKSB7IHJldHVybiB0aGlzLl9yZWNvcmRzUGVyUGFnZTsgfVxuICBnZXQgdG90YWxSZWNvcmRzTnVtYmVyKCkgeyByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzTnVtYmVyOyB9XG4gIGdldCByZWNvcmRzTnVtYmVyKCkgeyByZXR1cm4gdGhpcy5fcmVjb3Jkc051bWJlcjsgfVxuICBnZXQgc29ydGluZygpIHsgcmV0dXJuIHRoaXMuX3NvcnRpbmc7IH1cbiAgZ2V0IHdhaXRpbmcoKSB7IHJldHVybiB0aGlzLl93YWl0aW5nOyB9XG4gIGdldCBjbGllbnRQYWdpbmcoKSB7IHJldHVybiB0aGlzLl9jbGllbnRQYWdpbmc7IH1cbiAgZ2V0IHNvcnRhYmxlKCkgeyByZXR1cm4gdGhpcy5fc29ydGFibGU7IH1cblxuICBnZXQgZ2xvYmFsRmlsdGVyU3RyaW5nKCkgeyByZXR1cm4gdGhpcy5fZ2xvYmFsRmlsdGVyU3RyaW5nOyB9XG4gIHNldCBnbG9iYWxGaWx0ZXJTdHJpbmcoZ2xvYmFsRmlsdGVyU3RyaW5nKSB7IHRoaXMuX2dsb2JhbEZpbHRlclN0cmluZyA9IGdsb2JhbEZpbHRlclN0cmluZzsgfVxuXG4gIHNldCBnbG9iYWxTZWFyY2goZ2xvYmFsU2VhcmNoKSB7IHRoaXMuX2dsb2JhbFNlYXJjaCA9IGdsb2JhbFNlYXJjaDsgfVxuICBzZXQgcmVzdHJpY3RlZElkKHJlc3RyaWN0ZWRJZCkgeyB0aGlzLnNldEZpbHRlckJ5SWQocmVzdHJpY3RlZElkKSB9XG4gIHNldCB0YWJsZVJlY29yZHModGFibGVSZWNvcmRzKSB7IHRoaXMuX3RhYmxlUmVjb3JkcyA9IHRhYmxlUmVjb3JkczsgfVxuICBzZXQgdGFibGVSZWNvcmRPYmoodGFibGVSZWNvcmRPYmopIHsgdGhpcy5fdGFibGVSZWNvcmRPYmogPSB0YWJsZVJlY29yZE9iajsgfVxuICBzZXQgdmlzaWJsZVJlY29yZHModmlzaWJsZVJlY29yZHMpIHsgdGhpcy5fdmlzaWJsZVJlY29yZHMgPSB2aXNpYmxlUmVjb3JkcyA/PyBbXTsgfVxuICBzZXQgY29sdW1ucyhjb2x1bW5zKSB7IHRoaXMuX2NvbHVtbnMgPSBjb2x1bW5zOyB9XG4gIHNldCBzZWxlY3RhYmxlKHNlbGVjdGFibGUpIHsgdGhpcy5fc2VsZWN0YWJsZSA9IHNlbGVjdGFibGU7IH1cbiAgc2V0IHNlbGVjdGlvbkJhY2tlbmQoc2VsZWN0aW9uQmFja2VuZCkgeyB0aGlzLl9zZWxlY3Rpb25CYWNrZW5kID0gc2VsZWN0aW9uQmFja2VuZDsgfVxuICBzZXQgc2VsZWN0aW9uRmllbGQoc2VsZWN0aW9uRmllbGQpIHsgdGhpcy5fc2VsZWN0aW9uRmllbGQgPSBzZWxlY3Rpb25GaWVsZDsgfVxuICBzZXQgYWxsU2VsZWN0ZWQoYWxsU2VsZWN0ZWQpIHsgdGhpcy5fYWxsU2VsZWN0ZWQgPSBhbGxTZWxlY3RlZDsgfVxuICBzZXQgdGFibGVDb2RlKHRhYmxlQ29kZSkgeyB0aGlzLl90YWJsZUNvZGUgPSB0YWJsZUNvZGU7IH1cbiAgc2V0IHRhYmxlVGl0bGUodGFibGVUaXRsZSkgeyB0aGlzLl90YWJsZVRpdGxlID0gdGFibGVUaXRsZTsgfVxuICBzZXQgY3VycmVudFBhZ2UoY3VycmVudFBhZ2UpIHsgdGhpcy5fY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZTsgfVxuICBzZXQgdG90YWxQYWdlcyh0b3RhbFBhZ2VzKSB7IHRoaXMuX3RvdGFsUGFnZXMgPSB0b3RhbFBhZ2VzOyB9XG4gIHNldCByZXF1ZXN0ZWRQYWdlKHJlcXVlc3RlZFBhZ2UpIHsgdGhpcy5fcmVxdWVzdGVkUGFnZSA9IHJlcXVlc3RlZFBhZ2U7IH1cbiAgc2V0IHJlY29yZHNQZXJQYWdlKHJlY29yZHNQZXJQYWdlKSB7IHRoaXMuX3JlY29yZHNQZXJQYWdlID0gcmVjb3Jkc1BlclBhZ2U7IH1cbiAgc2V0IHRvdGFsUmVjb3Jkc051bWJlcih0b3RhbFJlY29yZHNOdW1iZXIpIHsgdGhpcy5fdG90YWxSZWNvcmRzTnVtYmVyID0gdG90YWxSZWNvcmRzTnVtYmVyOyB9XG4gIHNldCByZWNvcmRzTnVtYmVyKHJlY29yZHNOdW1iZXIpIHsgdGhpcy5fcmVjb3Jkc051bWJlciA9IHJlY29yZHNOdW1iZXI7IH1cbiAgc2V0IHNvcnRpbmcoc29ydGluZykgeyB0aGlzLl9zb3J0aW5nID0gc29ydGluZzsgfVxuICBzZXQgd2FpdGluZyh3YWl0aW5nKSB7IHRoaXMuc2V0QXR0cihhdHRycy53YWl0aW5nLCB3YWl0aW5nKSB9XG4gIHNldCBjbGllbnRQYWdpbmcoY2xpZW50UGFnaW5nKSB7IHRoaXMuX2NsaWVudFBhZ2luZyA9IGNsaWVudFBhZ2luZzsgfVxuICBzZXQgc29ydGFibGUoc29ydGFibGUpIHsgdGhpcy5fc29ydGFibGUgPSBzb3J0YWJsZTsgfVxuXG4gIGdldExheW91dCgpIHsgcmV0dXJuIHRoaXMubGF5b3V0OyB9XG4gIHNldExheW91dChsYXlvdXQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmxheW91dCwgbGF5b3V0KTsgfVxuICBoYXNBY3Rpb25zKCkgeyByZXR1cm4gKHRoaXMuX2FjdGlvbnMubGVuZ3RoID4gMCk7IH1cbiAgZ2V0U2VsZWN0ZWRSZWNvcmRzKCkgeyByZXR1cm4gdGhpcy5fdGFibGVSZWNvcmRzLmZpbHRlcihyZWMgPT4gcmVjLnNlbGVjdGVkKS5tYXAocmVjID0+IHJlYy5yZWNvcmRJZCk7IH1cbiAgYWN0aXZhdGVHbG9iYWxTZWFyY2goKSB7IHRoaXMuX2dsb2JhbFNlYXJjaCA9IHRydWU7IH1cbiAgaW5hY3RpdmF0ZUdsb2JhbFNlYXJjaCgpIHsgdGhpcy5fZ2xvYmFsU2VhcmNoID0gZmFsc2U7IH1cbiAgY29sdW1uRGVmaW5pdGlvbihmaWVsZENvZGUpOiBSZWNvcmRUYWJsZUNvbHVtbiB7IHJldHVybiB0aGlzLl90YWJsZUNvbHVtbk9ialtmaWVsZENvZGVdOyB9XG4gIHB1dE9uV2FpdCgpIHsgdGhpcy53YWl0aW5nID0gdHJ1ZTsgfVxuICBmcmVlV2FpdGluZygpIHsgdGhpcy53YWl0aW5nID0gZmFsc2U7IH1cbiAgc2V0V2lkZ2V0KHdpZGdldCkgeyB0aGlzLndpZGdldCA9IHdpZGdldDsgfVxuXG4gIG5vdGlmeUdsb2JhbEFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy5fdGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZSxcbiAgICAgIGFjdGlvbkRldGFpbDogbnVsbFxuICAgIH07XG4gICAgdGhpcy5fZ2xvYmFsQWN0aW9uVHJpZ2dlci5uZXh0KHRhYmxlRXZlbnQpO1xuICB9XG5cbiAgbm90aWZ5SW5saW5lQWN0aW9uKHRhYmxlQWN0aW9uRXZlbnQ6IFRhYmxlQWN0aW9uRXZlbnQpIHtcbiAgICBjb25zdCB0YWJsZUV2ZW50OiBUYWJsZUV2ZW50ID0ge1xuICAgICAgdGFibGVDb2RlOiB0aGlzLl90YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlOiB0YWJsZUFjdGlvbkV2ZW50LmFjdGlvbkNvZGUsXG4gICAgICBhY3Rpb25EZXRhaWw6IHtcbiAgICAgICAgcmVjb3JkSWQ6IHRhYmxlQWN0aW9uRXZlbnQucmVjb3JkSWQsXG4gICAgICAgIHJlY29yZERhdGE6IHRhYmxlQWN0aW9uRXZlbnQucmVjb3JkRGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5faW5saW5lQWN0aW9uVHJpZ2dlci5uZXh0KHRhYmxlRXZlbnQpO1xuICB9XG5cbiAgbm90aWZ5UmVjb3JkU2VsZWN0aW9uKHJlY29yZElkKSB7XG4gICAgY29uc3QgcmVjb3JkID0gdGhpcy5nZXRUYWJsZVJlY29yZChyZWNvcmRJZCk7XG4gICAgaWYgKCFyZWNvcmQpIHsgcmV0dXJuOyB9XG4gICAgcmVjb3JkLnRvZ2dsZVNlbGVjdCgpO1xuICAgIHRoaXMuX3JlcXVlc3RlZFBhZ2UgPSB0aGlzLl9jdXJyZW50UGFnZSA/PyAxO1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMuX3RhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGU6IG51bGwsXG4gICAgICBhY3Rpb25EZXRhaWw6IHtcbiAgICAgICAgcmVjb3JkSWQ6IHJlY29yZC5yZWNvcmRJZCxcbiAgICAgICAgcmVjb3JkRGF0YTogcmVjb3JkLnJlY29yZERhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3JlY29yZFNlbGVjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeVNlbGVjdGlvbkFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy5fdGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZSxcbiAgICAgIGFjdGlvbkRldGFpbDoge1xuICAgICAgICBzZWxlY3RlZFJlY29yZHM6IHRoaXMuc2VsZWN0ZWRSZWNvcmRzXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl9zZWxlY3Rpb25BY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlHZXREYXRhQWN0aW9uKHJlcXVlc3RlZFBhZ2UgPSBudWxsKSB7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICAgIHRoaXMuX3JlcXVlc3RlZFBhZ2UgPSByZXF1ZXN0ZWRQYWdlIHx8IHRoaXMuX2N1cnJlbnRQYWdlIHx8IDE7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy5fdGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZTogbnVsbCxcbiAgICAgIGFjdGlvbkRldGFpbDogbnVsbCxcbiAgICB9O1xuICAgIHRoaXMuX2dldERhdGFUcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjbGVhbigpIHtcbiAgICB0aGlzLl90YWJsZVJlY29yZHMgPSBbXTtcbiAgICB0aGlzLnVuU2VsZWN0QWxsKCk7XG4gICAgdGhpcy5fdGFibGVSZWNvcmRPYmogPSB7fTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmFsbFNlbGVjdGVkLCB0cnVlKTtcbiAgICB0aGlzLl90YWJsZVJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4gcmVjb3JkLnNlbGVjdCgpKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuc2VsZWN0ZWRSZWNvcmRzLCB0aGlzLmdldFNlbGVjdGVkUmVjb3JkcygpKTtcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgdW5TZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmFsbFNlbGVjdGVkLCBmYWxzZSk7XG4gICAgdGhpcy5fdGFibGVSZWNvcmRzLmZvckVhY2gocmVjb3JkID0+IHJlY29yZC51bnNlbGVjdCgpKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuc2VsZWN0ZWRSZWNvcmRzLCB0aGlzLmdldFNlbGVjdGVkUmVjb3JkcygpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNldFRhYmxlUmVjb3Jkcyh0YWJsZVJlY29yZHMsIGFwcGVuZCA9IGZhbHNlLCBwcmVwZW5kID0gZmFsc2UpIHtcbiAgICBpZiAoIWFwcGVuZCkge1xuICAgICAgdGhpcy5fdGFibGVSZWNvcmRzID0gW107XG4gICAgICB0aGlzLl90YWJsZVJlY29yZE9iaiA9IHt9O1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmFsbFNlbGVjdGVkLCBmYWxzZSk7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuc2VsZWN0ZWRSZWNvcmRzLCBbXSk7XG4gICAgfVxuICAgIGNvbnN0IG5ld1JlY29yZHNPYmogPSB7IC4uLnRoaXMuX3RhYmxlUmVjb3JkT2JqIH07XG4gICAgY29uc3QgbmV3UmVjb3JkcyA9IFsuLi50aGlzLl90YWJsZVJlY29yZHNdO1xuICAgIGZvciAoY29uc3QgdGFibGVSZWNvcmQgb2YgdGFibGVSZWNvcmRzKSB7XG4gICAgICB0YWJsZVJlY29yZC50YWJsZVJlY29yZElkID0gdGFibGVSZWNvcmQudGFibGVSZWNvcmRJZCA/PyB0YWJsZVJlY29yZC5yZWNvcmRJZCA/PyB0YWJsZVJlY29yZC5yZWNvcmRJZEtleTtcbiAgICAgIGNvbnN0IHJlY29yZFJlY2VpdmVkOiBUYWJsZVJlY29yZERhdGEgPSBuZXcgVGFibGVSZWNvcmREYXRhKHRhYmxlUmVjb3JkLCB0aGlzLl9jb2x1bW5zLCB0aGlzLl9zZWxlY3Rpb25GaWVsZCk7XG4gICAgICBjb25zdCByZWNvcmRJZEtleSA9IHJlY29yZFJlY2VpdmVkLnJlY29yZElkS2V5ID8/IHJlY29yZFJlY2VpdmVkLnJlY29yZElkS2V5O1xuICAgICAgaWYgKG5ld1JlY29yZHNPYmpbcmVjb3JkSWRLZXldKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByZXBlbmQpIHtcbiAgICAgICAgbmV3UmVjb3Jkcy51bnNoaWZ0KHJlY29yZFJlY2VpdmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1JlY29yZHMucHVzaChyZWNvcmRSZWNlaXZlZCk7XG4gICAgICB9XG4gICAgICBuZXdSZWNvcmRzT2JqW3JlY29yZElkS2V5XSA9IHJlY29yZFJlY2VpdmVkO1xuICAgIH1cbiAgICB0aGlzLl90YWJsZVJlY29yZHMgPSBuZXdSZWNvcmRzO1xuICAgIHRoaXMuX3RhYmxlUmVjb3JkT2JqID0gbmV3UmVjb3Jkc09iajtcbiAgfVxuXG4gIGFwcGVuZFJlY29yZHMocmVjb3JkcykgeyB0aGlzLnNldFRhYmxlUmVjb3JkcyhyZWNvcmRzLCB0cnVlKTsgfVxuICBwcmVwZW5kUmVjb3JkcyhyZWNvcmRzKSB7IHRoaXMuc2V0VGFibGVSZWNvcmRzKHJlY29yZHMsIHRydWUsIHRydWUpOyB9XG4gIHJlcGxhY2VSZWNvcmRzKHJlY29yZHMpIHsgdGhpcy5zZXRUYWJsZVJlY29yZHMocmVjb3JkcywgZmFsc2UpOyB9XG5cbiAgc2V0VGFibGVBcHBlbmQoYXBwZW5kOiBib29sZWFuKSB7IHRoaXMuX2FwcGVuZFBhZ2VzID0gYXBwZW5kIH1cblxuICBjaGFuZ2VQYWdlKHJlcXVlc3RlZFBhZ2UpIHtcbiAgICBpZiAodGhpcy5fY2xpZW50UGFnaW5nKSB7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuY3VycmVudFBhZ2UsIHJlcXVlc3RlZFBhZ2UpO1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdGlmeUdldERhdGFBY3Rpb24ocmVxdWVzdGVkUGFnZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVmlzaWJsZVJlY29yZHMoKSB7XG4gICAgbGV0IHZpc2libGVSZWNvcmRzOiBhbnlbXTtcbiAgICBpZiAodGhpcy5fY2xpZW50UGFnaW5nKSB7XG4gICAgICB2aXNpYmxlUmVjb3JkcyA9IHRoaXMuZ2V0RmlsdGVyZWRSZWNvcmRzKCk7XG4gICAgICAvLyBTZSB2YWxpZGEgc2kgbGEgcMOhZ2luYSBhY3R1YWwgc2lndWUgc2llbmRvIHbDoWxpZGFcbiAgICAgIGNvbnN0IHRvdGFsUmVjb3JkcyA9IHZpc2libGVSZWNvcmRzLmxlbmd0aDtcbiAgICAgIGNvbnN0IHJlY29yZHNMYXN0UGFnZSA9IHRvdGFsUmVjb3JkcyAlIHRoaXMuX3JlY29yZHNQZXJQYWdlO1xuICAgICAgY29uc3QgdG90YWxQYWdlcyA9IE1hdGgudHJ1bmModG90YWxSZWNvcmRzIC8gdGhpcy5fcmVjb3Jkc1BlclBhZ2UgKyAocmVjb3Jkc0xhc3RQYWdlID8gMSA6IDApKTtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50UGFnZSA+IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSB0b3RhbFBhZ2VzIHx8IDE7XG4gICAgICB9XG4gICAgICBjb25zdCBzbGljZU51bWJlcjEgPSAodGhpcy5fY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMuX3JlY29yZHNQZXJQYWdlO1xuICAgICAgY29uc3Qgc2xpY2VOdW1iZXIyID0gKHRoaXMuX2N1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLl9yZWNvcmRzUGVyUGFnZSArIHRoaXMuX3JlY29yZHNQZXJQYWdlXG4gICAgICB2aXNpYmxlUmVjb3JkcyA9IHZpc2libGVSZWNvcmRzLnNsaWNlKHNsaWNlTnVtYmVyMSwgc2xpY2VOdW1iZXIyKTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy50b3RhbFJlY29yZHNOdW1iZXIsIHRvdGFsUmVjb3Jkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZpc2libGVSZWNvcmRzID0gdGhpcy5fdGFibGVSZWNvcmRzO1xuICAgIH1cbiAgICB0aGlzLnNldEF0dHIoYXR0cnMudmlzaWJsZVJlY29yZHMsIHZpc2libGVSZWNvcmRzID8/IFtdKTtcbiAgfVxuXG4gIHVwZGF0ZUZyb21TZXJ2ZXIodGFibGVSZWNlaXZlZCkge1xuICAgIHRoaXMuX3JlcXVlc3RlZFBhZ2UgPSAxO1xuICAgIGNvbnN0IHsgdmlzaWJsZSA9IHRydWUsIHRvdGFsUGFnZXMgPSAxLCByZWNvcmRzTnVtYmVyLCBjdXJyZW50UGFnZSA9IDEsIHJlY29yZHNQZXJQYWdlLFxuICAgICAgdG90YWxSZWNvcmRzTnVtYmVyLCBzb3J0aW5nQ29sdW1uLCBzb3J0aW5nRGlyZWN0aW9uLCB0YWJsZVJlY29yZHMsXG4gICAgICBhY3Rpb25zLCBmaWVsZHMsXG4gICAgfSA9IHRhYmxlUmVjZWl2ZWQ7XG4gICAgdGhpcy52aXNpYmxlID0gdmlzaWJsZTtcbiAgICBpZiAoYWN0aW9ucykge1xuICAgICAgT2JqZWN0LmtleXMoYWN0aW9ucykuZm9yRWFjaChhY3Rpb25Db2RlID0+IHtcbiAgICAgICAgY29uc3QgdGJsQWN0aW9uID0gdGhpcy5nZXRBY3Rpb24oYWN0aW9uQ29kZSk7XG4gICAgICAgIGNvbnN0IGFjdGlvblJlY2VpdmVkID0gYWN0aW9uc1thY3Rpb25Db2RlXTtcbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLnZpc2libGUgPT09IHRydWUgfHwgYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gdHJ1ZSkgJiYgdGJsQWN0aW9uLnNob3coKTtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpICYmIHRibEFjdGlvbi5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmVuYWJsZWQgPT09IHRydWUgfHwgYWN0aW9uUmVjZWl2ZWQuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQuZW5hYmxlZCA9PT0gdHJ1ZSkgJiYgdGJsQWN0aW9uLmVuYWJsZSgpO1xuICAgICAgICAgIChhY3Rpb25SZWNlaXZlZC5lbmFibGVkID09PSBmYWxzZSkgJiYgdGJsQWN0aW9uLmRpc2FibGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuc2hvd09uU3RhdGVzKSB7XG4gICAgICAgICAgYWN0aW9uUmVjZWl2ZWQuc2hvd09uU3RhdGVzPy5mb3JFYWNoKG5ld1N0YXRlID0+IHtcbiAgICAgICAgICAgIHRibEFjdGlvbi5hZGRWaXNpYmxlU3RhdGUobmV3U3RhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25SZWNlaXZlZC5oaWRlT25TdGF0ZXMpIHtcbiAgICAgICAgICBhY3Rpb25SZWNlaXZlZC5oaWRlT25TdGF0ZXM/LmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgICAgICAgdGJsQWN0aW9uLnJlbW92ZVZpc2libGVTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmVuYWJsZU9uU3RhdGVzKSB7XG4gICAgICAgICAgYWN0aW9uUmVjZWl2ZWQuZW5hYmxlT25TdGF0ZXM/LmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgICAgICAgdGJsQWN0aW9uLmFkZEVuYWJsZWRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmRpc2FibGVPblN0YXRlcykge1xuICAgICAgICAgIGFjdGlvblJlY2VpdmVkLmRpc2FibGVPblN0YXRlcz8uZm9yRWFjaChuZXdTdGF0ZSA9PiB7XG4gICAgICAgICAgICB0YmxBY3Rpb24ucmVtb3ZlRW5hYmxlZFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChmaWVsZHMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGZpZWxkcykuZm9yRWFjaChmaWVsZENvZGUgPT4ge1xuICAgICAgICBjb25zdCB0YmxGaWVsZCA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihmaWVsZENvZGUpO1xuICAgICAgICBjb25zdCBmaWVsZFJlY2VpdmVkID0gZmllbGRzW2ZpZWxkQ29kZV07XG4gICAgICAgIGlmIChmaWVsZFJlY2VpdmVkLnZpc2libGUgPT09IHRydWUgfHwgZmllbGRSZWNlaXZlZC52aXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgIChmaWVsZFJlY2VpdmVkLnZpc2libGUgPT09IHRydWUpICYmIHRibEZpZWxkLnNob3coKTtcbiAgICAgICAgICAoZmllbGRSZWNlaXZlZC52aXNpYmxlID09PSBmYWxzZSkgJiYgdGJsRmllbGQuaGlkZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRhYmxlUmVjb3Jkcykge1xuICAgICAgdGhpcy5fdG90YWxQYWdlcyA9IHRvdGFsUGFnZXM7XG4gICAgICB0aGlzLl9yZWNvcmRzTnVtYmVyID0gcmVjb3Jkc051bWJlcjtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5jdXJyZW50UGFnZSwgK2N1cnJlbnRQYWdlKTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5yZWNvcmRzUGVyUGFnZSwgK3JlY29yZHNQZXJQYWdlKTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy50b3RhbFJlY29yZHNOdW1iZXIsICh0aGlzLl9jbGllbnRQYWdpbmcpID8gdGFibGVSZWNvcmRzLmxlbmd0aCA6ICt0b3RhbFJlY29yZHNOdW1iZXIpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNvcnRpbmcsIHtcbiAgICAgICAgY29sdW1uTmFtZTogc29ydGluZ0NvbHVtbiB8fCAnJyxcbiAgICAgICAgZGlyZWN0aW9uOiBzb3J0aW5nRGlyZWN0aW9uIHx8ICcnXG4gICAgICB9KTtcbiAgICAgIGlmICghdGhpcy5fYXBwZW5kUGFnZXMpIHtcbiAgICAgICAgdGhpcy5yZXBsYWNlUmVjb3Jkcyh0YWJsZVJlY29yZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hcHBlbmRSZWNvcmRzKHRhYmxlUmVjb3Jkcyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZnJlZVdhaXRpbmcoKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBnZXRUYWJsZVJlY29yZChyZWNvcmRJZCkge1xuICAgIGNvbnN0IHJlY29yZElkS2V5ID0gKHR5cGVvZiByZWNvcmRJZCA9PT0gJ29iamVjdCcpID8gSlNPTi5zdHJpbmdpZnkocmVjb3JkSWQpIDogcmVjb3JkSWQ7XG4gICAgcmV0dXJuICh0aGlzLl90YWJsZVJlY29yZE9iaiAmJiByZWNvcmRJZCAmJiB0aGlzLl90YWJsZVJlY29yZE9ialtyZWNvcmRJZF0pXG4gICAgICA/IHRoaXMuX3RhYmxlUmVjb3JkT2JqW3JlY29yZElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIHJldHVybiAodGhpcy5fYWN0aW9uc09iaiAmJiBhY3Rpb25Db2RlICYmIHRoaXMuX2FjdGlvbnNPYmpbYWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX2FjdGlvbnNPYmpbYWN0aW9uQ29kZV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0QWN0aW9ucyhhY3Rpb25DbGFzczogc3RyaW5nID0gdGhpcy5fZm9ybUNvbmZpZy50YWJsZUFjdGlvbnMuaW5saW5lLCBhY3Rpb25UeXBlczogc3RyaW5nW10gPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuZmlsdGVyKGFjdGlvbkRlZiA9PiB7XG4gICAgICBjb25zdCB0eXBlSW5jbHVkZWQgPSAoYWN0aW9uVHlwZXMpID8gYWN0aW9uVHlwZXMuaW5jbHVkZXMoYWN0aW9uRGVmLmFjdGlvblR5cGUpIDogdHJ1ZTtcbiAgICAgIHJldHVybiBhY3Rpb25EZWYuYWN0aW9uQ2xhc3MgPT09IGFjdGlvbkNsYXNzICYmIHR5cGVJbmNsdWRlZDtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEZpbHRyb3NcblxuICBzZXRGaWx0ZXJCeUlkKGlkKSB7XG4gICAgaWYgKHRoaXMuX3Jlc3RyaWN0ZWRJZCA9PT0gaWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlc3RyaWN0ZWRJZCwgaWQpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIGNsZWFuSWRGaWx0ZXIoKSB7XG4gICAgaWYgKHRoaXMuX3Jlc3RyaWN0ZWRJZCA9PT0gbnVsbCkgeyByZXR1cm47IH1cbiAgICB0aGlzLnNldEF0dHIoYXR0cnMucmVzdHJpY3RlZElkLCBudWxsKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBzZXRHbG9iYWxGaWx0ZXJTdHJpbmcodGV4dCwgbm90aWZ5Q29tcG9uZW50ID0gdHJ1ZSkge1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5ncyA9IHRleHQuc3BsaXQoJyAnKS5maWx0ZXIodCA9PiB0ICYmIHQudHJpbSgpLmxlbmd0aCA+IDApLm1hcCh0ID0+IHQudHJpbSgpKSA/PyBbXTtcbiAgICBpZiAodGhpcy5fY2xpZW50UGFnaW5nKSB7XG4gICAgICB0aGlzLmNoYW5nZVBhZ2UoMSk7XG4gICAgfVxuICAgIGlmIChub3RpZnlDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5nbG9iYWxGaWx0ZXJTdHJpbmcsIHRleHQudHJpbSgpKTtcbiAgICB9XG4gIH1cblxuICBhZGRGaWx0ZXJEZWZpbml0aW9uKGNvbHVtbk5hbWUsIGZpbHRlckRlZmluaXRpb24pIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICB0YWJsZUNvbHVtbiAmJiB0YWJsZUNvbHVtbi5hZGRGaWx0ZXJEZWZpbml0aW9uKGZpbHRlckRlZmluaXRpb24pO1xuICB9XG5cbiAgZ2V0RmlsdGVyZWRSZWNvcmRzKCkge1xuICAgIGxldCBmaWx0ZXJlZFJlY29yZHMgPSB0aGlzLl90YWJsZVJlY29yZHM7XG4gICAgaWYgKHRoaXMuX3Jlc3RyaWN0ZWRJZCkge1xuICAgICAgZmlsdGVyZWRSZWNvcmRzID0gZmlsdGVyZWRSZWNvcmRzLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLnJlY29yZElkID09PSB0aGlzLl9yZXN0cmljdGVkSWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5oYXNQYXR0ZXJuKHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5ncywgdGhpcy5fdGFibGVDb2x1bW5PYmopKTtcbiAgICB9XG4gICAgY29uc3QgY29sdW1uRmlsdGVycyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpO1xuICAgIGlmIChjb2x1bW5GaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5oYXNDb25kaXRpb24oY29sdW1uRmlsdGVycykpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRSZWNvcmRzO1xuICB9XG5cbiAgZ2V0Q29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIHJldHVybiB0YWJsZUNvbHVtbj8uZmlsdGVyID8/IG51bGw7XG4gIH1cblxuICBhZGRDb2x1bW5GaWx0ZXIoY29sdW1uTmFtZTogc3RyaW5nLCBjb2x1bW5WYWx1ZXM6IGFueSB8IGFueVtdLCBvcGVyYXRvcjogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICBjb25zdCBjb2x1bW5GaWx0ZXJEZWZpbml0aW9uID0gdGFibGVDb2x1bW4/LmZpbHRlckRlZmluaXRpb24gPz8gbnVsbDtcbiAgICBpZiAoIWNvbHVtbkZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGFibGVDb2x1bW4gJiYgdGFibGVDb2x1bW4uYWRkRmlsdGVyKGNvbHVtblZhbHVlcywgb3BlcmF0b3IpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbkZpbHRlcihjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICB0YWJsZUNvbHVtbiAmJiB0YWJsZUNvbHVtbi5yZW1vdmVGaWx0ZXIoKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBnZXQgY3VycmVudEZpbHRlcigpIHtcbiAgICBjb25zdCBjb21wYWN0RmlsdGVyOiBhbnkgPSB7XG4gICAgICBzaW1wbGVGaWx0ZXJXb3JkczogdGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLFxuICAgICAgYWR2YW5jZWRGaWx0ZXI6IFtdLFxuICAgIH07XG4gICAgY29uc3QgY29sdW1uRmlsdGVycyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2x1bW5GaWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyc1tpbmRleF07XG4gICAgICBjb21wYWN0RmlsdGVyLmFkdmFuY2VkRmlsdGVyLnB1c2goe1xuICAgICAgICBmaWVsZENvZGU6IGNvbHVtbkZpbHRlcj8uZmllbGRDb2RlLFxuICAgICAgICBvcGVyYXRvcjogY29sdW1uRmlsdGVyPy5vcGVyYXRvcixcbiAgICAgICAgZmllbGRWYWx1ZTE6IGNvbHVtbkZpbHRlcj8udmFsdWVzWzBdLFxuICAgICAgICBmaWVsZFZhbHVlMjogY29sdW1uRmlsdGVyPy52YWx1ZXNbMV0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBhY3RGaWx0ZXI7XG4gIH1cblxuICAvLyBPcmRlbmFtaWVudG8gZGUgcmVnaXN0cm9zIGxvY2FsXG5cbiAgc29ydChjb2x1bW5OYW1lLCBkaXJlY3Rpb24pIHtcbiAgICB0aGlzLnNldFJlcXVpcmVkT3JkZXIoY29sdW1uTmFtZSwgZGlyZWN0aW9uKTtcbiAgICBpZiAodGhpcy5fY2xpZW50UGFnaW5nKSB7XG4gICAgICB0aGlzLmxvY2FsU29ydERhdGEoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdGlmeUdldERhdGFBY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBzZXRSZXF1aXJlZE9yZGVyKGNvbHVtbkZpZWxkLCBkaXJlY3Rpb24gPSBudWxsKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNvcnRpbmcsIHtcbiAgICAgIGNvbHVtbk5hbWU6IGNvbHVtbkZpZWxkLFxuICAgICAgZGlyZWN0aW9uOiAoZGlyZWN0aW9uID09PSAnYXNjZW5kJykgPyBUQUJMRV9TT1JUX0FTQ0VORElORyA6IFRBQkxFX1NPUlRfREVTQ0VORElORyxcbiAgICB9KTtcbiAgfVxuXG4gIGxvY2FsU29ydERhdGEoKSB7XG4gICAgaWYgKCF0aGlzLl9zb3J0aW5nLmNvbHVtbk5hbWUgfHwgIXRoaXMuX3NvcnRpbmcuZGlyZWN0aW9uKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX3RhYmxlUmVjb3Jkcy5zb3J0KChhLCBiKSA9PiB0aGlzLnJlY29yZENvbXBhcmUoYSwgYiwgdGhpcy5fc29ydGluZy5jb2x1bW5OYW1lLCB0aGlzLl9zb3J0aW5nLmRpcmVjdGlvbikpO1xuICAgIC8vdGhpcy51blNlbGVjdEFsbCgpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHJlY29yZENvbXBhcmUocmVjb3JkQTogVGFibGVSZWNvcmREYXRhLCByZWNvcmRCOiBUYWJsZVJlY29yZERhdGEsIGNvbHVtbkNvbXBhcmUsIGRpcmVjdGlvbikge1xuICAgIGNvbnN0IHJlY29yZEFWYWx1ZSA9IHJlY29yZEEuZ2V0RmllbGRWYWx1ZShjb2x1bW5Db21wYXJlKTtcbiAgICBjb25zdCByZWNvcmRCVmFsdWUgPSByZWNvcmRCLmdldEZpZWxkVmFsdWUoY29sdW1uQ29tcGFyZSk7XG4gICAgY29uc3QgcmVjb3JkQUNvbHVtbiA9IGlzTmFOKHJlY29yZEFWYWx1ZSkgPyByZWNvcmRBVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6ICtyZWNvcmRBVmFsdWU7XG4gICAgY29uc3QgcmVjb3JkQkNvbHVtbiA9IGlzTmFOKHJlY29yZEJWYWx1ZSkgPyByZWNvcmRCVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6ICtyZWNvcmRCVmFsdWU7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgaWYgKHJlY29yZEFDb2x1bW4gPCByZWNvcmRCQ29sdW1uKSB7XG4gICAgICByZXN1bHQgPSAtMTtcbiAgICB9IGVsc2UgaWYgKHJlY29yZEFDb2x1bW4gPiByZWNvcmRCQ29sdW1uKSB7XG4gICAgICByZXN1bHQgPSAxO1xuICAgIH1cbiAgICByZXR1cm4gZGlyZWN0aW9uID09PSBUQUJMRV9TT1JUX0FTQ0VORElORyA/IHJlc3VsdCA6IC1yZXN1bHQ7XG4gIH1cblxuICBvdmVycmlkZSBmb3JtU3RhdGVDaGFuZ2VDdXN0b21TdWJzY3JpYmUoZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpIHtcbiAgICB0aGlzLl9jb2x1bW5zPy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICBjb2x1bW4/LmNvbm5lY3RXaXRoUGFyZW50Rm9ybShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCk7XG4gICAgfSk7XG4gICAgdGhpcy5fYWN0aW9ucz8uZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgYWN0aW9uPy5jb25uZWN0V2l0aFBhcmVudEZvcm0oZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -4,7 +4,7 @@ import { ElementComponent } from '../layout/element.component';
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
const CUSTOM_ATTRIBUTES = 'customAttributes';
|
|
6
6
|
const signaledAttributes = [
|
|
7
|
-
'allSelected', 'code', 'globalSearch', 'recordsPerPage', 'layout',
|
|
7
|
+
'allSelected', 'code', 'globalSearch', 'restrictedId', 'recordsPerPage', 'layout',
|
|
8
8
|
'columns', 'selectedRecords', 'currentPage', 'totalRecordsNumber', 'visibleRecords',
|
|
9
9
|
'waiting', 'visible', 'disabled',
|
|
10
10
|
];
|
|
@@ -14,6 +14,7 @@ export class LibTableComponent extends ElementComponent {
|
|
|
14
14
|
allSelected = signal(null);
|
|
15
15
|
code = signal('');
|
|
16
16
|
globalSearch = signal(null);
|
|
17
|
+
restrictedId = signal(null);
|
|
17
18
|
recordsPerPage = signal(null);
|
|
18
19
|
layout = signal(null);
|
|
19
20
|
columns = signal(null);
|
|
@@ -106,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
106
107
|
}], propDecorators: { table: [{
|
|
107
108
|
type: Input
|
|
108
109
|
}] } });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9lbGVtZW50cy90YWJsZXMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFL0QsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztBQUU3QyxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLGFBQWEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFFBQVE7SUFDakUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0I7SUFDbkYsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVO0NBQ2pDLENBQUM7QUFRRixNQUFNLE9BQU8saUJBQWtCLFNBQVEsZ0JBQWdCO0lBQzdDLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXZDLHFDQUFxQztJQUNyQyxXQUFXLEdBQVEsTUFBTSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JDLElBQUksR0FBUSxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxHQUFRLE1BQU0sQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUN0QyxjQUFjLEdBQVEsTUFBTSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sR0FBUSxNQUFNLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDaEMsT0FBTyxHQUFRLE1BQU0sQ0FBTSxJQUFJLENBQUMs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UUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzhCQTRCVSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIHNpZ25hbCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGFibGVSZWNvcmREYXRhIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3Jtcy90YWJsZS9yb3ctZGF0YSc7XG5pbXBvcnQgeyBUYWJsZUFjdGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3Jtcy90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZSwgVGFibGVFdmVudCB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybXMvdGFibGUvdGFibGUnO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC9lbGVtZW50LmNvbXBvbmVudCc7XG5cbmNvbnN0IENVU1RPTV9BVFRSSUJVVEVTID0gJ2N1c3RvbUF0dHJpYnV0ZXMnO1xuXG5jb25zdCBzaWduYWxlZEF0dHJpYnV0ZXMgPSBbXG4gICdhbGxTZWxlY3RlZCcsICdjb2RlJywgJ2dsb2JhbFNlYXJjaCcsICdyZWNvcmRzUGVyUGFnZScsICdsYXlvdXQnLFxuICAnY29sdW1ucycsICdzZWxlY3RlZFJlY29yZHMnLCAnY3VycmVudFBhZ2UnLCAndG90YWxSZWNvcmRzTnVtYmVyJywgJ3Zpc2libGVSZWNvcmRzJyxcbiAgJ3dhaXRpbmcnLCAndmlzaWJsZScsICdkaXNhYmxlZCcsXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdGFibGUnLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIExpYlRhYmxlQ29tcG9uZW50IGV4dGVuZHMgRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIEF0cmlidXRvcyBzaW5jcm9uaXphZG9zIGRlbCBvYmpldG9cbiAgYWxsU2VsZWN0ZWQ6IGFueSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuICBjb2RlOiBhbnkgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIGdsb2JhbFNlYXJjaDogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIHJlY29yZHNQZXJQYWdlOiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgbGF5b3V0OiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgY29sdW1uczogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIHNlbGVjdGVkUmVjb3JkczogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIGN1cnJlbnRQYWdlOiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgdG90YWxSZWNvcmRzTnVtYmVyOiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgdmlzaWJsZVJlY29yZHM6IGFueSA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICB3YWl0aW5nOiBhbnkgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGdsb2JhbEZpbHRlclN0cmluZzogc3RyaW5nID0gJyc7XG5cbiAgdGFibGVGaWVsZFN0eWxlczogYW55O1xuICBsb2FkZWQgPSBmYWxzZTtcbiAgc2VsZWN0YWJsZSA9IGZhbHNlO1xuICBoYXNBY3Rpb25zID0gZmFsc2U7XG4gIGlubGluZUFjdGlvbnM6IGFueTtcbiAgZ2xvYmFsQWN0aW9uczogYW55O1xuICBzZWxlY3Rpb25BY3Rpb25zOiBhbnk7XG5cbiAgQElucHV0KCkgdGFibGU6IFJlY29yZFRhYmxlIHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLnRhYmxlKSB7IHJldHVybjsgfVxuICAgIHRoaXMudGFibGUuc2V0V2lkZ2V0KHRoaXMpO1xuICAgIHRoaXMuZm9ybUNvbmZpZyA9IHRoaXMudGFibGU/Ll9mb3JtQ29uZmlnO1xuXG4gICAgdGhpcy50YWJsZUZpZWxkU3R5bGVzID0gdGhpcy5mb3JtQ29uZmlnPy50YWJsZUZpZWxkU3R5bGVzO1xuICAgIHRoaXMuc2VsZWN0YWJsZSA9IHRoaXMudGFibGU/LnNlbGVjdGFibGU7XG4gICAgdGhpcy5oYXNBY3Rpb25zID0gdGhpcy50YWJsZT8uaGFzQWN0aW9ucygpO1xuICAgIHRoaXMuaW5saW5lQWN0aW9ucyA9IHRoaXMudGFibGU/LmdldEFjdGlvbnModGhpcy5mb3JtQ29uZmlnPy50YWJsZUFjdGlvbnMuaW5saW5lKTtcbiAgICB0aGlzLmdsb2JhbEFjdGlvbnMgPSB0aGlzLnRhYmxlPy5nZXRBY3Rpb25zKHRoaXMuZm9ybUNvbmZpZz8udGFibGVBY3Rpb25zLmdsb2JhbCk7XG4gICAgdGhpcy5zZWxlY3Rpb25BY3Rpb25zID0gdGhpcy50YWJsZT8uZ2V0QWN0aW9ucyh0aGlzLmZvcm1Db25maWc/LnRhYmxlQWN0aW9ucy5zZWxlY3Rpb24pO1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5nID0gdGhpcy50YWJsZT8uZ2xvYmFsRmlsdGVyU3RyaW5nO1xuICAgIHRoaXMudXBkYXRlUHJvcGFnYXRlZEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLnJlcGxhY2VDdXN0b21BdHRyaWJ1dGVzKHRoaXMudGFibGU/LmN1c3RvbUF0dHJpYnV0ZXMpO1xuXG4gICAgdGhpcy50YWJsZT8uYXR0cmlidXRlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgY29uc3QgeyBuYW1lOiBhdHRyaWJ1dGUsIHZhbHVlID0gbnVsbCB9ID0gZXZlbnQgPz8ge307XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZVBhcnRzID0gYXR0cmlidXRlPy5zcGxpdCgnLicpID8/IFtdO1xuICAgICAgICBpZiAoYXR0cmlidXRlID09PSAndmlzaWJsZVJlY29yZHMnKSB7XG4gICAgICAgICAgdGhpcy52aXNpYmxlUmVjb3Jkcy5zZXQodmFsdWUgPz8gW10pO1xuICAgICAgICAgIHRoaXMudXBkYXRlVGFibGVEYXRhKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlID09PSAnZ2xvYmFsRmlsdGVyU3RyaW5nJykge1xuICAgICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5nID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoc2lnbmFsZWRBdHRyaWJ1dGVzLmluY2x1ZGVzKGF0dHJpYnV0ZSkpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVBpZWNlQXR0cmlidXRlKHNpZ25hbGVkQXR0cmlidXRlcywgYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlUGFydHM/Lmxlbmd0aCA+IDEgJiYgYXR0cmlidXRlUGFydHM/LlswXSA9PT0gQ1VTVE9NX0FUVFJJQlVURVMpIHtcbiAgICAgICAgICBjb25zdCBzdWJBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVQYXJ0cz8uWzFdID8/IG51bGw7XG4gICAgICAgICAgdGhpcy51cGRhdGVDdXN0b21BdHRyaWJ1dGUoc3ViQXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHVwZGF0ZVByb3BhZ2F0ZWRBdHRyaWJ1dGVzKCkge1xuICAgIHRoaXMudXBkYXRlUGllY2VBdHRyaWJ1dGVzKHRoaXMudGFibGUsIHNpZ25hbGVkQXR0cmlidXRlcylcbiAgfVxuXG4gIHVwZGF0ZVRhYmxlRGF0YSgpIHsgfVxuICB0YWJsZUdsb2JhbEFjdGlvbihhY3Rpb25Db2RlOiBzdHJpbmcpIHsgdGhpcy50YWJsZT8ubm90aWZ5R2xvYmFsQWN0aW9uKGFjdGlvbkNvZGUpOyB9XG4gIHRhYmxlU2VsZWN0aW9uQWN0aW9uKGFjdGlvbkNvZGU6IHN0cmluZykgeyB0aGlzLnRhYmxlPy5ub3RpZnlTZWxlY3Rpb25BY3Rpb24oYWN0aW9uQ29kZSk7IH1cbiAgdGFibGVBY3Rpb25TZWxlY3RlZChhY3Rpb25FdmVudDogVGFibGVBY3Rpb25FdmVudCkgeyB0aGlzLnRhYmxlPy5ub3RpZnlJbmxpbmVBY3Rpb24oYWN0aW9uRXZlbnQpOyB9XG4gIHRhYmxlU2VsZWN0aW9uVG9nZ2xlKHJlY29yZElkOiBhbnkpIHsgdGhpcy50YWJsZT8ubm90aWZ5UmVjb3JkU2VsZWN0aW9uKHJlY29yZElkKTsgfVxuICB0b2dnbGVTZWxlY3RBbGwoKSB7IHJldHVybiAodGhpcy50YWJsZT8uYWxsU2VsZWN0ZWQpID8gdGhpcy50YWJsZT8udW5TZWxlY3RBbGwoKSA6IHRoaXMudGFibGU/LnNlbGVjdEFsbCgpOyB9XG4gIGdsb2JhbEZpbHRlckNvbXBsZXRlZCgpIHsgdGhpcy5jaGFuZ2VQYWdlKDEpOyB9XG4gIGNoYW5nZVBhZ2UocmVxdWVzdGVkUGFnZTogbnVtYmVyKSB7IHRoaXMudGFibGU/LmNoYW5nZVBhZ2UocmVxdWVzdGVkUGFnZSk7IH1cbiAgdGFibGVDb2x1bW5Tb3J0KGNvbHVtbk5hbWU6IHN0cmluZywgZGlyZWN0aW9uID0gbnVsbCkgeyB0aGlzLnRhYmxlPy5zb3J0KGNvbHVtbk5hbWUsIGRpcmVjdGlvbiA/PyAnYXNjZW5kJyk7IH1cbiAgZ2xvYmFsRmlsdGVyQ2hhbmdlZCgpIHsgdGhpcy50YWJsZT8uc2V0R2xvYmFsRmlsdGVyU3RyaW5nKHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5nPy50cmltKCkgPz8gJycsIGZhbHNlKTsgfVxuXG4gIGZpbHRlckhhc0NoYW5nZWQoY29sdW1uLCB2YWx1ZXMpIHtcbiAgICBpZiAoIXZhbHVlcyB8fCB2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnRhYmxlPy5yZW1vdmVDb2x1bW5GaWx0ZXIoY29sdW1uLmZpZWxkQ29kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFibGU/LmFkZENvbHVtbkZpbHRlcihjb2x1bW4uZmllbGRDb2RlLCB2YWx1ZXMpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9lbGVtZW50cy90YWJsZXMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFL0QsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztBQUU3QyxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLGFBQWEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRO0lBQ2pGLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCO0lBQ25GLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVTtDQUNqQyxDQUFDO0FBUUYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGdCQUFnQjtJQUM3QyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV2QyxxQ0FBcUM7SUFDckMsV0FBVyxHQUFRLE1BQU0sQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUNyQyxJQUFJLEdBQVEsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksR0FBUSxNQUFNLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDdEMsWUFBWSxHQUFRLE1BQU0sQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUN0QyxjQUFjLEdBQVEsTUFBTSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sR0FBUSxNQUFNLENBQU0s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QUFpQjtrQkFON0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzhCQTZCVSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIHNpZ25hbCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGFibGVSZWNvcmREYXRhIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3Jtcy90YWJsZS9yb3ctZGF0YSc7XG5pbXBvcnQgeyBUYWJsZUFjdGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3Jtcy90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZSwgVGFibGVFdmVudCB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybXMvdGFibGUvdGFibGUnO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC9lbGVtZW50LmNvbXBvbmVudCc7XG5cbmNvbnN0IENVU1RPTV9BVFRSSUJVVEVTID0gJ2N1c3RvbUF0dHJpYnV0ZXMnO1xuXG5jb25zdCBzaWduYWxlZEF0dHJpYnV0ZXMgPSBbXG4gICdhbGxTZWxlY3RlZCcsICdjb2RlJywgJ2dsb2JhbFNlYXJjaCcsICdyZXN0cmljdGVkSWQnLCAncmVjb3Jkc1BlclBhZ2UnLCAnbGF5b3V0JyxcbiAgJ2NvbHVtbnMnLCAnc2VsZWN0ZWRSZWNvcmRzJywgJ2N1cnJlbnRQYWdlJywgJ3RvdGFsUmVjb3Jkc051bWJlcicsICd2aXNpYmxlUmVjb3JkcycsXG4gICd3YWl0aW5nJywgJ3Zpc2libGUnLCAnZGlzYWJsZWQnLFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXRhYmxlJyxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5cbmV4cG9ydCBjbGFzcyBMaWJUYWJsZUNvbXBvbmVudCBleHRlbmRzIEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyBBdHJpYnV0b3Mgc2luY3Jvbml6YWRvcyBkZWwgb2JqZXRvXG4gIGFsbFNlbGVjdGVkOiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgY29kZTogYW55ID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBnbG9iYWxTZWFyY2g6IGFueSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuICByZXN0cmljdGVkSWQ6IGFueSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuICByZWNvcmRzUGVyUGFnZTogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIGxheW91dDogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIGNvbHVtbnM6IGFueSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuICBzZWxlY3RlZFJlY29yZHM6IGFueSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuICBjdXJyZW50UGFnZTogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIHRvdGFsUmVjb3Jkc051bWJlcjogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIHZpc2libGVSZWNvcmRzOiBhbnkgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgd2FpdGluZzogYW55ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBnbG9iYWxGaWx0ZXJTdHJpbmc6IHN0cmluZyA9ICcnO1xuXG4gIHRhYmxlRmllbGRTdHlsZXM6IGFueTtcbiAgbG9hZGVkID0gZmFsc2U7XG4gIHNlbGVjdGFibGUgPSBmYWxzZTtcbiAgaGFzQWN0aW9ucyA9IGZhbHNlO1xuICBpbmxpbmVBY3Rpb25zOiBhbnk7XG4gIGdsb2JhbEFjdGlvbnM6IGFueTtcbiAgc2VsZWN0aW9uQWN0aW9uczogYW55O1xuXG4gIEBJbnB1dCgpIHRhYmxlOiBSZWNvcmRUYWJsZSB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy50YWJsZSkgeyByZXR1cm47IH1cbiAgICB0aGlzLnRhYmxlLnNldFdpZGdldCh0aGlzKTtcbiAgICB0aGlzLmZvcm1Db25maWcgPSB0aGlzLnRhYmxlPy5fZm9ybUNvbmZpZztcblxuICAgIHRoaXMudGFibGVGaWVsZFN0eWxlcyA9IHRoaXMuZm9ybUNvbmZpZz8udGFibGVGaWVsZFN0eWxlcztcbiAgICB0aGlzLnNlbGVjdGFibGUgPSB0aGlzLnRhYmxlPy5zZWxlY3RhYmxlO1xuICAgIHRoaXMuaGFzQWN0aW9ucyA9IHRoaXMudGFibGU/Lmhhc0FjdGlvbnMoKTtcbiAgICB0aGlzLmlubGluZUFjdGlvbnMgPSB0aGlzLnRhYmxlPy5nZXRBY3Rpb25zKHRoaXMuZm9ybUNvbmZpZz8udGFibGVBY3Rpb25zLmlubGluZSk7XG4gICAgdGhpcy5nbG9iYWxBY3Rpb25zID0gdGhpcy50YWJsZT8uZ2V0QWN0aW9ucyh0aGlzLmZvcm1Db25maWc/LnRhYmxlQWN0aW9ucy5nbG9iYWwpO1xuICAgIHRoaXMuc2VsZWN0aW9uQWN0aW9ucyA9IHRoaXMudGFibGU/LmdldEFjdGlvbnModGhpcy5mb3JtQ29uZmlnPy50YWJsZUFjdGlvbnMuc2VsZWN0aW9uKTtcbiAgICB0aGlzLmdsb2JhbEZpbHRlclN0cmluZyA9IHRoaXMudGFibGU/Lmdsb2JhbEZpbHRlclN0cmluZztcbiAgICB0aGlzLnVwZGF0ZVByb3BhZ2F0ZWRBdHRyaWJ1dGVzKCk7XG4gICAgdGhpcy5yZXBsYWNlQ3VzdG9tQXR0cmlidXRlcyh0aGlzLnRhYmxlPy5jdXN0b21BdHRyaWJ1dGVzKTtcblxuICAgIHRoaXMudGFibGU/LmF0dHJpYnV0ZUNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGNvbnN0IHsgbmFtZTogYXR0cmlidXRlLCB2YWx1ZSA9IG51bGwgfSA9IGV2ZW50ID8/IHt9O1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVQYXJ0cyA9IGF0dHJpYnV0ZT8uc3BsaXQoJy4nKSA/PyBbXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gJ3Zpc2libGVSZWNvcmRzJykge1xuICAgICAgICAgIHRoaXMudmlzaWJsZVJlY29yZHMuc2V0KHZhbHVlID8/IFtdKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRhYmxlRGF0YSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gJ2dsb2JhbEZpbHRlclN0cmluZycpIHtcbiAgICAgICAgICB0aGlzLmdsb2JhbEZpbHRlclN0cmluZyA9IHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHNpZ25hbGVkQXR0cmlidXRlcy5pbmNsdWRlcyhhdHRyaWJ1dGUpKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQaWVjZUF0dHJpYnV0ZShzaWduYWxlZEF0dHJpYnV0ZXMsIGF0dHJpYnV0ZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZVBhcnRzPy5sZW5ndGggPiAxICYmIGF0dHJpYnV0ZVBhcnRzPy5bMF0gPT09IENVU1RPTV9BVFRSSUJVVEVTKSB7XG4gICAgICAgICAgY29uc3Qgc3ViQXR0cmlidXRlID0gYXR0cmlidXRlUGFydHM/LlsxXSA/PyBudWxsO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ3VzdG9tQXR0cmlidXRlKHN1YkF0dHJpYnV0ZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICB1cGRhdGVQcm9wYWdhdGVkQXR0cmlidXRlcygpIHtcbiAgICB0aGlzLnVwZGF0ZVBpZWNlQXR0cmlidXRlcyh0aGlzLnRhYmxlLCBzaWduYWxlZEF0dHJpYnV0ZXMpXG4gIH1cblxuICB1cGRhdGVUYWJsZURhdGEoKSB7IH1cbiAgdGFibGVHbG9iYWxBY3Rpb24oYWN0aW9uQ29kZTogc3RyaW5nKSB7IHRoaXMudGFibGU/Lm5vdGlmeUdsb2JhbEFjdGlvbihhY3Rpb25Db2RlKTsgfVxuICB0YWJsZVNlbGVjdGlvbkFjdGlvbihhY3Rpb25Db2RlOiBzdHJpbmcpIHsgdGhpcy50YWJsZT8ubm90aWZ5U2VsZWN0aW9uQWN0aW9uKGFjdGlvbkNvZGUpOyB9XG4gIHRhYmxlQWN0aW9uU2VsZWN0ZWQoYWN0aW9uRXZlbnQ6IFRhYmxlQWN0aW9uRXZlbnQpIHsgdGhpcy50YWJsZT8ubm90aWZ5SW5saW5lQWN0aW9uKGFjdGlvbkV2ZW50KTsgfVxuICB0YWJsZVNlbGVjdGlvblRvZ2dsZShyZWNvcmRJZDogYW55KSB7IHRoaXMudGFibGU/Lm5vdGlmeVJlY29yZFNlbGVjdGlvbihyZWNvcmRJZCk7IH1cbiAgdG9nZ2xlU2VsZWN0QWxsKCkgeyByZXR1cm4gKHRoaXMudGFibGU/LmFsbFNlbGVjdGVkKSA/IHRoaXMudGFibGU/LnVuU2VsZWN0QWxsKCkgOiB0aGlzLnRhYmxlPy5zZWxlY3RBbGwoKTsgfVxuICBnbG9iYWxGaWx0ZXJDb21wbGV0ZWQoKSB7IHRoaXMuY2hhbmdlUGFnZSgxKTsgfVxuICBjaGFuZ2VQYWdlKHJlcXVlc3RlZFBhZ2U6IG51bWJlcikgeyB0aGlzLnRhYmxlPy5jaGFuZ2VQYWdlKHJlcXVlc3RlZFBhZ2UpOyB9XG4gIHRhYmxlQ29sdW1uU29ydChjb2x1bW5OYW1lOiBzdHJpbmcsIGRpcmVjdGlvbiA9IG51bGwpIHsgdGhpcy50YWJsZT8uc29ydChjb2x1bW5OYW1lLCBkaXJlY3Rpb24gPz8gJ2FzY2VuZCcpOyB9XG4gIGdsb2JhbEZpbHRlckNoYW5nZWQoKSB7IHRoaXMudGFibGU/LnNldEdsb2JhbEZpbHRlclN0cmluZyh0aGlzLmdsb2JhbEZpbHRlclN0cmluZz8udHJpbSgpID8/ICcnLCBmYWxzZSk7IH1cblxuICBmaWx0ZXJIYXNDaGFuZ2VkKGNvbHVtbiwgdmFsdWVzKSB7XG4gICAgaWYgKCF2YWx1ZXMgfHwgdmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50YWJsZT8ucmVtb3ZlQ29sdW1uRmlsdGVyKGNvbHVtbi5maWVsZENvZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYmxlPy5hZGRDb2x1bW5GaWx0ZXIoY29sdW1uLmZpZWxkQ29kZSwgdmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -510,7 +510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
510
510
|
|
|
511
511
|
const CUSTOM_ATTRIBUTES = 'customAttributes';
|
|
512
512
|
const signaledAttributes = [
|
|
513
|
-
'allSelected', 'code', 'globalSearch', 'recordsPerPage', 'layout',
|
|
513
|
+
'allSelected', 'code', 'globalSearch', 'restrictedId', 'recordsPerPage', 'layout',
|
|
514
514
|
'columns', 'selectedRecords', 'currentPage', 'totalRecordsNumber', 'visibleRecords',
|
|
515
515
|
'waiting', 'visible', 'disabled',
|
|
516
516
|
];
|
|
@@ -520,6 +520,7 @@ class LibTableComponent extends ElementComponent {
|
|
|
520
520
|
allSelected = signal(null);
|
|
521
521
|
code = signal('');
|
|
522
522
|
globalSearch = signal(null);
|
|
523
|
+
restrictedId = signal(null);
|
|
523
524
|
recordsPerPage = signal(null);
|
|
524
525
|
layout = signal(null);
|
|
525
526
|
columns = signal(null);
|
|
@@ -1637,6 +1638,7 @@ const attrs = {
|
|
|
1637
1638
|
tableCode: { name: 'tableCode', propagate: 'code' },
|
|
1638
1639
|
clientPaging: { name: 'clientPaging', propagate: null },
|
|
1639
1640
|
globalSearch: { name: 'globalSearch', propagate: 'globalSearch' },
|
|
1641
|
+
restrictedId: { name: 'restrictedId', propagate: 'restrictedId' },
|
|
1640
1642
|
globalFilterString: { name: '_globalFilterString', propagate: 'globalFilterString' },
|
|
1641
1643
|
sorting: { name: 'sorting', propagate: null },
|
|
1642
1644
|
recordsPerPage: { name: 'recordsPerPage', propagate: 'recordsPerPage' },
|
|
@@ -1662,8 +1664,8 @@ class RecordTable extends FormElement {
|
|
|
1662
1664
|
_globalFilterString = '';
|
|
1663
1665
|
globalFilterStrings = [];
|
|
1664
1666
|
selectedRecords;
|
|
1665
|
-
restrictedId;
|
|
1666
1667
|
layout = null;
|
|
1668
|
+
_restrictedId;
|
|
1667
1669
|
_globalSearch;
|
|
1668
1670
|
_tableRecords;
|
|
1669
1671
|
_tableRecordObj = {};
|
|
@@ -1699,7 +1701,7 @@ class RecordTable extends FormElement {
|
|
|
1699
1701
|
this._actionsObj = {};
|
|
1700
1702
|
this._tableRecords = [];
|
|
1701
1703
|
this._globalSearch = false;
|
|
1702
|
-
this.
|
|
1704
|
+
this._restrictedId = null;
|
|
1703
1705
|
this._tableTitle = tableReceived.tableTitle;
|
|
1704
1706
|
this._appendPages = tableReceived?.append ?? false;
|
|
1705
1707
|
this._selectable = tableReceived?.selectable ?? false;
|
|
@@ -1762,6 +1764,7 @@ class RecordTable extends FormElement {
|
|
|
1762
1764
|
get recordSelectionTrigger() { return this._recordSelectionTrigger.asObservable(); }
|
|
1763
1765
|
get getDataTrigger() { return this._getDataTrigger.asObservable(); }
|
|
1764
1766
|
get globalSearch() { return this._globalSearch; }
|
|
1767
|
+
get restrictedId() { return this._restrictedId; }
|
|
1765
1768
|
get tableRecords() { return this._tableRecords; }
|
|
1766
1769
|
get tableRecordObj() { return this._tableRecordObj; }
|
|
1767
1770
|
get visibleRecords() { return this._visibleRecords; }
|
|
@@ -1785,6 +1788,7 @@ class RecordTable extends FormElement {
|
|
|
1785
1788
|
get globalFilterString() { return this._globalFilterString; }
|
|
1786
1789
|
set globalFilterString(globalFilterString) { this._globalFilterString = globalFilterString; }
|
|
1787
1790
|
set globalSearch(globalSearch) { this._globalSearch = globalSearch; }
|
|
1791
|
+
set restrictedId(restrictedId) { this.setFilterById(restrictedId); }
|
|
1788
1792
|
set tableRecords(tableRecords) { this._tableRecords = tableRecords; }
|
|
1789
1793
|
set tableRecordObj(tableRecordObj) { this._tableRecordObj = tableRecordObj; }
|
|
1790
1794
|
set visibleRecords(visibleRecords) { this._visibleRecords = visibleRecords ?? []; }
|
|
@@ -2036,17 +2040,17 @@ class RecordTable extends FormElement {
|
|
|
2036
2040
|
}
|
|
2037
2041
|
// Filtros
|
|
2038
2042
|
setFilterById(id) {
|
|
2039
|
-
if (this.
|
|
2043
|
+
if (this._restrictedId === id) {
|
|
2040
2044
|
return;
|
|
2041
2045
|
}
|
|
2042
|
-
this.restrictedId
|
|
2046
|
+
this.setAttr(attrs.restrictedId, id);
|
|
2043
2047
|
this.updateVisibleRecords();
|
|
2044
2048
|
}
|
|
2045
2049
|
cleanIdFilter() {
|
|
2046
|
-
if (this.
|
|
2050
|
+
if (this._restrictedId === null) {
|
|
2047
2051
|
return;
|
|
2048
2052
|
}
|
|
2049
|
-
this.restrictedId
|
|
2053
|
+
this.setAttr(attrs.restrictedId, null);
|
|
2050
2054
|
this.updateVisibleRecords();
|
|
2051
2055
|
}
|
|
2052
2056
|
setGlobalFilterString(text, notifyComponent = true) {
|
|
@@ -2064,8 +2068,8 @@ class RecordTable extends FormElement {
|
|
|
2064
2068
|
}
|
|
2065
2069
|
getFilteredRecords() {
|
|
2066
2070
|
let filteredRecords = this._tableRecords;
|
|
2067
|
-
if (this.
|
|
2068
|
-
filteredRecords = filteredRecords.filter(record => record.recordId === this.
|
|
2071
|
+
if (this._restrictedId) {
|
|
2072
|
+
filteredRecords = filteredRecords.filter(record => record.recordId === this._restrictedId);
|
|
2069
2073
|
}
|
|
2070
2074
|
if (this.globalFilterStrings.length > 0) {
|
|
2071
2075
|
filteredRecords = filteredRecords.filter(record => record.hasPattern(this.globalFilterStrings, this._tableColumnObj));
|