cps-ui-kit 17.13.0 → 17.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +3 -3
- package/esm2022/lib/components/cps-button/cps-button.component.mjs +3 -3
- package/esm2022/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +3 -3
- package/esm2022/lib/components/cps-checkbox/cps-checkbox.component.mjs +3 -3
- package/esm2022/lib/components/cps-chip/cps-chip.component.mjs +3 -3
- package/esm2022/lib/components/cps-datepicker/cps-datepicker.component.mjs +3 -3
- package/esm2022/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +3 -3
- package/esm2022/lib/components/cps-file-upload/cps-file-upload.component.mjs +3 -3
- package/esm2022/lib/components/cps-icon/cps-icon.component.mjs +3 -3
- package/esm2022/lib/components/cps-info-circle/cps-info-circle.component.mjs +3 -3
- package/esm2022/lib/components/cps-input/cps-input.component.mjs +3 -3
- package/esm2022/lib/components/cps-loader/cps-loader.component.mjs +3 -3
- package/esm2022/lib/components/cps-menu/cps-menu.component.mjs +3 -3
- package/esm2022/lib/components/cps-paginator/cps-paginator.component.mjs +5 -6
- package/esm2022/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +3 -3
- package/esm2022/lib/components/cps-progress-circular/cps-progress-circular.component.mjs +3 -3
- package/esm2022/lib/components/cps-progress-linear/cps-progress-linear.component.mjs +3 -3
- package/esm2022/lib/components/cps-radio-group/cps-radio/cps-radio.component.mjs +3 -3
- package/esm2022/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +3 -3
- package/esm2022/lib/components/cps-radio-group/cps-radio-group.component.mjs +3 -3
- package/esm2022/lib/components/cps-scheduler/cps-scheduler.component.mjs +4 -4
- package/esm2022/lib/components/cps-select/cps-select.component.mjs +12 -5
- package/esm2022/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +3 -3
- package/esm2022/lib/components/cps-switch/cps-switch.component.mjs +3 -3
- package/esm2022/lib/components/cps-tab-group/cps-tab/cps-tab.component.mjs +3 -3
- package/esm2022/lib/components/cps-tab-group/cps-tab-group.component.mjs +3 -3
- package/esm2022/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +3 -3
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +4 -4
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +4 -5
- package/esm2022/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +3 -3
- package/esm2022/lib/components/cps-table/cps-table.component.mjs +8 -7
- package/esm2022/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +3 -3
- package/esm2022/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +3 -3
- package/esm2022/lib/components/cps-table/directives/cps-table-header-selectable.directive.mjs +3 -3
- package/esm2022/lib/components/cps-table/directives/cps-table-row-selectable.directive.mjs +3 -3
- package/esm2022/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +21 -29
- package/esm2022/lib/components/cps-tag/cps-tag.component.mjs +3 -3
- package/esm2022/lib/components/cps-textarea/cps-textarea.component.mjs +3 -3
- package/esm2022/lib/components/cps-timepicker/cps-timepicker.component.mjs +3 -3
- package/esm2022/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +6 -6
- package/esm2022/lib/components/cps-tree-select/cps-tree-select.component.mjs +5 -5
- package/esm2022/lib/components/cps-tree-table/cps-tree-table.component.mjs +8 -10
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +3 -3
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +3 -3
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +3 -3
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs +3 -3
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +3 -3
- package/esm2022/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +23 -41
- package/esm2022/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +19 -6
- package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +3 -3
- package/esm2022/lib/pipes/internal/check-option-selected.pipe.mjs +3 -3
- package/esm2022/lib/pipes/internal/combine-labels.pipe.mjs +3 -3
- package/esm2022/lib/pipes/internal/label-by-value.pipe.mjs +3 -3
- package/esm2022/lib/services/cps-dialog/cps-dialog.service.mjs +3 -3
- package/esm2022/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.mjs +3 -3
- package/esm2022/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +3 -3
- package/esm2022/lib/services/cps-dialog/internal/directives/cps-dialog-content.directive.mjs +3 -3
- package/esm2022/lib/services/cps-notification/cps-notification.service.mjs +3 -3
- package/esm2022/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +3 -3
- package/esm2022/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.mjs +3 -3
- package/fesm2022/cps-ui-kit.mjs +251 -260
- package/fesm2022/cps-ui-kit.mjs.map +1 -1
- package/lib/components/cps-select/cps-select.component.d.ts +6 -1
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +3 -4
- package/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.d.ts +7 -1
- package/package.json +7 -7
package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs
CHANGED
|
@@ -129,10 +129,10 @@ export class CpsTreeTableColumnFilterDirective {
|
|
|
129
129
|
this.filterCompRef.destroy();
|
|
130
130
|
this.viewContainerRef.clear();
|
|
131
131
|
}
|
|
132
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
133
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreeTableColumnFilterDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
133
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: CpsTreeTableColumnFilterDirective, isStandalone: true, selector: "[cpsTTColFilter]", inputs: { field: ["cpsTTColFilter", "field"], filterType: "filterType", filterPersistent: "filterPersistent", filterShowClearButton: "filterShowClearButton", filterShowApplyButton: "filterShowApplyButton", filterShowCloseButton: "filterShowCloseButton", filterShowMatchModes: "filterShowMatchModes", filterMatchModes: "filterMatchModes", filterShowOperator: "filterShowOperator", filterHeaderTitle: "filterHeaderTitle", filterHideOnClear: "filterHideOnClear", filterCategoryOptions: "filterCategoryOptions", filterAsButtonToggle: "filterAsButtonToggle", filterSingleSelection: "filterSingleSelection", filterPlaceholder: "filterPlaceholder" }, exportAs: ["cpsTTColFilter"], usesOnChanges: true, ngImport: i0 }); }
|
|
134
134
|
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreeTableColumnFilterDirective, decorators: [{
|
|
136
136
|
type: Directive,
|
|
137
137
|
args: [{
|
|
138
138
|
standalone: true,
|
|
@@ -31,10 +31,10 @@ export class CpsTreeTableColumnSortableDirective extends TTSortableColumn {
|
|
|
31
31
|
this.sortIconRef.destroy();
|
|
32
32
|
this.viewContainerRef.clear();
|
|
33
33
|
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
35
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreeTableColumnSortableDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1.TreeTable }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
35
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: CpsTreeTableColumnSortableDirective, isStandalone: true, selector: "[cpsTTColSortable]", inputs: { field: ["cpsTTColSortable", "field"] }, usesInheritance: true, ngImport: i0 }); }
|
|
36
36
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreeTableColumnSortableDirective, decorators: [{
|
|
38
38
|
type: Directive,
|
|
39
39
|
args: [{
|
|
40
40
|
standalone: true,
|
|
@@ -20,10 +20,10 @@ export class CpsTreeTableHeaderSelectableDirective {
|
|
|
20
20
|
this.checkboxCompRef.destroy();
|
|
21
21
|
this.viewContainerRef.clear();
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
24
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreeTableHeaderSelectableDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: CpsTreeTableHeaderSelectableDirective, isStandalone: true, selector: "[cpsTTHdrSelectable]", ngImport: i0 }); }
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreeTableHeaderSelectableDirective, decorators: [{
|
|
27
27
|
type: Directive,
|
|
28
28
|
args: [{
|
|
29
29
|
standalone: true,
|
package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs
CHANGED
|
@@ -20,10 +20,10 @@ export class CpsTreeTableRowSelectableDirective {
|
|
|
20
20
|
this.checkboxCompRef.destroy();
|
|
21
21
|
this.viewContainerRef.clear();
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
24
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreeTableRowSelectableDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: CpsTreeTableRowSelectableDirective, isStandalone: true, selector: "[cpsTTRowSelectable]", inputs: { value: ["cpsTTRowSelectable", "value"] }, ngImport: i0 }); }
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreeTableRowSelectableDirective, decorators: [{
|
|
27
27
|
type: Directive,
|
|
28
28
|
args: [{
|
|
29
29
|
standalone: true,
|
package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs
CHANGED
|
@@ -27,10 +27,10 @@ export class CpsTreetableRowTogglerDirective {
|
|
|
27
27
|
this.togglerCompRef.destroy();
|
|
28
28
|
this.viewContainerRef.clear();
|
|
29
29
|
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
31
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreetableRowTogglerDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
31
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: CpsTreetableRowTogglerDirective, isStandalone: true, selector: "[cpsTTRowToggler]", inputs: { rowNode: ["cpsTTRowToggler", "rowNode"] }, ngImport: i0 }); }
|
|
32
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTreetableRowTogglerDirective, decorators: [{
|
|
34
34
|
type: Directive,
|
|
35
35
|
args: [{
|
|
36
36
|
standalone: true,
|
package/esm2022/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs
CHANGED
|
@@ -21,18 +21,17 @@ export class TreeTableUnsortDirective {
|
|
|
21
21
|
if (pTreeTable.sortMode === 'multiple') {
|
|
22
22
|
let resetIndex = false;
|
|
23
23
|
const sortMeta = pTreeTable.getSortMeta(event.field);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
pTreeTable._multiSortMeta.splice(i, 1);
|
|
24
|
+
if (sortMeta && pTreeTable.multiSortMeta) {
|
|
25
|
+
for (let i = 0; i < pTreeTable.multiSortMeta.length; i++) {
|
|
26
|
+
if (pTreeTable.multiSortMeta[i].field === sortMeta.field) {
|
|
27
|
+
pTreeTable.multiSortMeta.splice(i, 1);
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
if (sortMeta.order === 1) {
|
|
32
31
|
sortMeta.order = sortMeta.order * -1;
|
|
33
32
|
pTreeTable.multiSortMeta.push(sortMeta);
|
|
34
33
|
}
|
|
35
|
-
if (pTreeTable.
|
|
34
|
+
if (pTreeTable.multiSortMeta.length === 0) {
|
|
36
35
|
pTreeTable.multiSortMeta.push({
|
|
37
36
|
field: '_defaultSortOrder',
|
|
38
37
|
order: pTreeTable.defaultSortOrder
|
|
@@ -42,7 +41,7 @@ export class TreeTableUnsortDirective {
|
|
|
42
41
|
}
|
|
43
42
|
else {
|
|
44
43
|
if (!pTreeTable.multiSortMeta) {
|
|
45
|
-
pTreeTable.
|
|
44
|
+
pTreeTable.multiSortMeta = [];
|
|
46
45
|
}
|
|
47
46
|
pTreeTable.multiSortMeta.push({
|
|
48
47
|
field: event.field,
|
|
@@ -51,21 +50,19 @@ export class TreeTableUnsortDirective {
|
|
|
51
50
|
}
|
|
52
51
|
pTreeTable.sortMultiple();
|
|
53
52
|
if (resetIndex)
|
|
54
|
-
pTreeTable.
|
|
53
|
+
pTreeTable.multiSortMeta = [];
|
|
55
54
|
}
|
|
56
55
|
};
|
|
57
56
|
pTreeTable.sortNodes = (nodes) => {
|
|
58
57
|
if (!nodes || nodes.length === 0) {
|
|
59
58
|
return;
|
|
60
59
|
}
|
|
61
|
-
// Replace with explicit type
|
|
62
60
|
this._syncNodesParams(pTreeTable.filteredNodes, nodes);
|
|
63
61
|
if (pTreeTable.customSort) {
|
|
64
62
|
pTreeTable.sortFunction.emit({
|
|
65
63
|
data: nodes,
|
|
66
64
|
mode: pTreeTable.sortMode,
|
|
67
|
-
|
|
68
|
-
field: pTreeTable.sortField,
|
|
65
|
+
field: pTreeTable.sortField || undefined,
|
|
69
66
|
order: pTreeTable.sortOrder
|
|
70
67
|
});
|
|
71
68
|
}
|
|
@@ -93,15 +90,14 @@ export class TreeTableUnsortDirective {
|
|
|
93
90
|
});
|
|
94
91
|
}
|
|
95
92
|
for (const node of nodes) {
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
if (node.children)
|
|
94
|
+
pTreeTable.sortNodes(node.children);
|
|
98
95
|
}
|
|
99
96
|
};
|
|
100
97
|
pTreeTable.sortMultipleNodes = (nodes) => {
|
|
101
98
|
if (!nodes || nodes.length === 0) {
|
|
102
99
|
return;
|
|
103
100
|
}
|
|
104
|
-
// Replace with explicit type
|
|
105
101
|
this._syncNodesParams(pTreeTable.filteredNodes, nodes);
|
|
106
102
|
if (pTreeTable.customSort) {
|
|
107
103
|
pTreeTable.sortFunction.emit({
|
|
@@ -112,14 +108,12 @@ export class TreeTableUnsortDirective {
|
|
|
112
108
|
}
|
|
113
109
|
else {
|
|
114
110
|
nodes.sort((node1, node2) => {
|
|
115
|
-
return pTreeTable.multisortField(node1, node2,
|
|
116
|
-
// Replace with explicit type
|
|
117
|
-
pTreeTable.multiSortMeta, 0);
|
|
111
|
+
return pTreeTable.multisortField(node1, node2, pTreeTable.multiSortMeta || [], 0);
|
|
118
112
|
});
|
|
119
113
|
}
|
|
120
114
|
for (const node of nodes) {
|
|
121
|
-
|
|
122
|
-
|
|
115
|
+
if (node.children)
|
|
116
|
+
pTreeTable.sortMultipleNodes(node.children);
|
|
123
117
|
}
|
|
124
118
|
};
|
|
125
119
|
pTreeTable.multisortField = (node1, node2, multiSortMeta, index) => {
|
|
@@ -129,12 +123,10 @@ export class TreeTableUnsortDirective {
|
|
|
129
123
|
}
|
|
130
124
|
const isUnsort = multiSortMeta[index].field === '_defaultSortOrder';
|
|
131
125
|
const value1 = isUnsort
|
|
132
|
-
?
|
|
133
|
-
node1._defaultSortOrder
|
|
126
|
+
? node1._defaultSortOrder
|
|
134
127
|
: ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);
|
|
135
128
|
const value2 = isUnsort
|
|
136
|
-
?
|
|
137
|
-
node2._defaultSortOrder
|
|
129
|
+
? node2._defaultSortOrder
|
|
138
130
|
: ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);
|
|
139
131
|
let result = 0;
|
|
140
132
|
if (value1 == null && value2 != null)
|
|
@@ -184,7 +176,6 @@ export class TreeTableUnsortDirective {
|
|
|
184
176
|
globalFilterFieldsArray =
|
|
185
177
|
pTreeTable.globalFilterFields || pTreeTable.columns;
|
|
186
178
|
}
|
|
187
|
-
// Replace with explicit type
|
|
188
179
|
this._syncNodesParams(pTreeTable.filteredNodes, pTreeTable.value);
|
|
189
180
|
pTreeTable.filteredNodes = [];
|
|
190
181
|
const isStrictMode = pTreeTable.filterMode === 'strict';
|
|
@@ -212,13 +203,10 @@ export class TreeTableUnsortDirective {
|
|
|
212
203
|
};
|
|
213
204
|
if ((isStrictMode &&
|
|
214
205
|
!(pTreeTable.findFilteredNodes(copyNode, paramsWithoutNode) ||
|
|
215
|
-
// Replace with explicit type
|
|
216
206
|
pTreeTable.isFilterMatched(copyNode, paramsWithoutNode))) ||
|
|
217
207
|
(!isStrictMode &&
|
|
218
|
-
!(
|
|
219
|
-
|
|
220
|
-
(pTreeTable.isFilterMatched(copyNode, paramsWithoutNode) ||
|
|
221
|
-
pTreeTable.findFilteredNodes(copyNode, paramsWithoutNode))))) {
|
|
208
|
+
!(pTreeTable.isFilterMatched(copyNode, paramsWithoutNode) ||
|
|
209
|
+
pTreeTable.findFilteredNodes(copyNode, paramsWithoutNode)))) {
|
|
222
210
|
localMatch = false;
|
|
223
211
|
}
|
|
224
212
|
if (!localMatch) {
|
|
@@ -244,13 +232,9 @@ export class TreeTableUnsortDirective {
|
|
|
244
232
|
};
|
|
245
233
|
if ((isStrictMode &&
|
|
246
234
|
(pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) ||
|
|
247
|
-
pTreeTable.isFilterMatched(copyNodeForGlobal,
|
|
248
|
-
// Replace with explicit type
|
|
249
|
-
paramsWithoutNode))) ||
|
|
235
|
+
pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||
|
|
250
236
|
(!isStrictMode &&
|
|
251
|
-
(pTreeTable.isFilterMatched(copyNodeForGlobal,
|
|
252
|
-
// Replace with explicit type
|
|
253
|
-
paramsWithoutNode) ||
|
|
237
|
+
(pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) ||
|
|
254
238
|
pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {
|
|
255
239
|
globalMatch = true;
|
|
256
240
|
copyNode = copyNodeForGlobal;
|
|
@@ -262,7 +246,6 @@ export class TreeTableUnsortDirective {
|
|
|
262
246
|
matches = localMatch && globalMatch;
|
|
263
247
|
}
|
|
264
248
|
if (matches) {
|
|
265
|
-
// Replace with explicit type
|
|
266
249
|
copyNode._idx = idx;
|
|
267
250
|
pTreeTable.filteredNodes.push(copyNode);
|
|
268
251
|
}
|
|
@@ -307,7 +290,6 @@ export class TreeTableUnsortDirective {
|
|
|
307
290
|
const copyChildNode = { ...childNode };
|
|
308
291
|
if (pTreeTable.isFilterMatched(copyChildNode, paramsWithoutNode)) {
|
|
309
292
|
matched = true;
|
|
310
|
-
// Replace with explicit type
|
|
311
293
|
copyChildNode._idx = idx;
|
|
312
294
|
node.children.push(copyChildNode);
|
|
313
295
|
}
|
|
@@ -335,10 +317,10 @@ export class TreeTableUnsortDirective {
|
|
|
335
317
|
}
|
|
336
318
|
});
|
|
337
319
|
}
|
|
338
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
339
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
320
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TreeTableUnsortDirective, deps: [{ token: i1.TreeTable, host: true, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
321
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: TreeTableUnsortDirective, isStandalone: true, selector: "[ttWithUnsort]", ngImport: i0 }); }
|
|
340
322
|
}
|
|
341
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TreeTableUnsortDirective, decorators: [{
|
|
342
324
|
type: Directive,
|
|
343
325
|
args: [{
|
|
344
326
|
standalone: true,
|
|
@@ -351,4 +333,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
351
333
|
}, {
|
|
352
334
|
type: Optional
|
|
353
335
|
}] }] });
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS10YWJsZS11bnNvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRyZWUtdGFibGUvZGlyZWN0aXZlcy9pbnRlcm5hbC90cmVlLXRhYmxlLXVuc29ydC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNNUMsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUErQyxVQUFxQjtRQUFyQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ2xFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUMvQixJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3JDLElBQ0UsVUFBVSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsS0FBSztvQkFDcEMsVUFBVSxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFDM0IsQ0FBQztvQkFDRCxLQUFLLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDO2dCQUNwQyxDQUFDO2dCQUVELFVBQVUsQ0FBQyxVQUFVO29CQUNuQixVQUFVLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxLQUFLO3dCQUNsQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7d0JBQzNCLENBQUMsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDcEMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJ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QUM7b0JBQ1osT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBdUIsRUFBRSxFQUFxQjtRQUNyRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU87UUFFekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO29CQUNsQyxNQUFNLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7b0JBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBOVpVLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjs7MEJBRWMsSUFBSTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdCwgU2VsZiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyZWVUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1t0dFdpdGhVbnNvcnRdJ1xufSlcbmV4cG9ydCBjbGFzcyBUcmVlVGFibGVVbnNvcnREaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihASG9zdCgpIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIHBUcmVlVGFibGU6IFRyZWVUYWJsZSkge1xuICAgIHBUcmVlVGFibGUuc29ydCA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBpZiAocFRyZWVUYWJsZS5zb3J0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBUcmVlVGFibGUuc29ydEZpZWxkID09PSBldmVudC5maWVsZCAmJlxuICAgICAgICAgIHBUcmVlVGFibGUuc29ydE9yZGVyID09PSAtMVxuICAgICAgICApIHtcbiAgICAgICAgICBldmVudC5maWVsZCA9ICdfZGVmYXVsdFNvcnRPcmRlcic7XG4gICAgICAgIH1cblxuICAgICAgICBwVHJlZVRhYmxlLl9zb3J0T3JkZXIgPVxuICAgICAgICAgIHBUcmVlVGFibGUuc29ydEZpZWxkID09PSBldmVudC5maWVsZFxuICAgICAgICAgICAgPyBwVHJlZVRhYmxlLnNvcnRPcmRlciAqIC0xXG4gICAgICAgICAgICA6IHBUcmVlVGFibGUuZGVmYXVsdFNvcnRPcmRlcjtcbiAgICAgICAgcFRyZWVUYWJsZS5fc29ydEZpZWxkID0gZXZlbnQuZmllbGQ7XG4gICAgICAgIHBUcmVlVGFibGUuc29ydFNpbmdsZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHBUcmVlVGFibGUuc29ydE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgbGV0IHJlc2V0SW5kZXggPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc29ydE1ldGEgPSBwVHJlZVRhYmxlLmdldFNvcnRNZXRhKGV2ZW50LmZpZWxkKTtcblxuICAgICAgICAvLyBUb2RvOiBVc2UgZXhwbGljaXQgdHlwZSBpbiB0aGUgd2hvbGUgYmxvY2tcbiAgICAgICAgaWYgKHNvcnRNZXRhKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAocFRyZWVUYWJsZS5fbXVsdGlTb3J0TWV0YSBhcyBhbnkpLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIChwVHJlZVRhYmxlLl9tdWx0aVNvcnRNZXRhIGFzIGFueSlbaV0uZmllbGQgPT09IHNvcnRNZXRhLmZpZWxkXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgKHBUcmVlVGFibGUuX211bHRpU29ydE1ldGEgYXMgYW55KS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzb3J0TWV0YS5vcmRlciA9PT0gMSkge1xuICAgICAgICAgICAgc29ydE1ldGEub3JkZXIgPSBzb3J0TWV0YS5vcmRlciAqIC0xO1xuICAgICAgICAgICAgKHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSBhcyBhbnkpLnB1c2goc29ydE1ldGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocFRyZWVUYWJsZS5fbXVsdGlTb3J0TWV0YT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAocFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhIGFzIGFueSkucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkOiAnX2RlZmF1bHRTb3J0T3JkZXInLFxuICAgICAgICAgICAgICBvcmRlcjogcFRyZWVUYWJsZS5kZWZhdWx0U29ydE9yZGVyXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc2V0SW5kZXggPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSkge1xuICAgICAgICAgICAgcFRyZWVUYWJsZS5fbXVsdGlTb3J0TWV0YSA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgICAocFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhIGFzIGFueSkucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogZXZlbnQuZmllbGQsXG4gICAgICAgICAgICBvcmRlcjogcFRyZWVUYWJsZS5kZWZhdWx0U29ydE9yZGVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBwVHJlZVRhYmxlLnNvcnRNdWx0aXBsZSgpO1xuICAgICAgICBpZiAocmVzZXRJbmRleCkgcFRyZWVUYWJsZS5fbXVsdGlTb3J0TWV0YSA9IFtdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwVHJlZVRhYmxlLnNvcnROb2RlcyA9IChub2RlcykgPT4ge1xuICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXBsYWNlIHdpdGggZXhwbGljaXQgdHlwZVxuICAgICAgdGhpcy5fc3luY05vZGVzUGFyYW1zKHBUcmVlVGFibGUuZmlsdGVyZWROb2RlcyBhcyBhbnksIG5vZGVzKTtcblxuICAgICAgaWYgKHBUcmVlVGFibGUuY3VzdG9tU29ydCkge1xuICAgICAgICBwVHJlZVRhYmxlLnNvcnRGdW5jdGlvbi5lbWl0KHtcbiAgICAgICAgICBkYXRhOiBub2RlcyxcbiAgICAgICAgICBtb2RlOiBwVHJlZVRhYmxlLnNvcnRNb2RlLFxuICAgICAgICAgIC8vIFRvZG86IFVzZSBleHBsaWNpdCB0eXBlXG4gICAgICAgICAgZmllbGQ6IHBUcmVlVGFibGUuc29ydEZpZWxkIGFzIGFueSxcbiAgICAgICAgICBvcmRlcjogcFRyZWVUYWJsZS5zb3J0T3JkZXJcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpc1Vuc29ydCA9IHBUcmVlVGFibGUuc29ydEZpZWxkID09PSAnX2RlZmF1bHRTb3J0T3JkZXInO1xuICAgICAgICBub2Rlcy5zb3J0KChub2RlMTogYW55LCBub2RlMjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUxID0gaXNVbnNvcnRcbiAgICAgICAgICAgID8gbm9kZTEuX2RlZmF1bHRTb3J0T3JkZXJcbiAgICAgICAgICAgIDogT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMS5kYXRhLCBwVHJlZVRhYmxlLnNvcnRGaWVsZCk7XG4gICAgICAgICAgY29uc3QgdmFsdWUyID0gaXNVbnNvcnRcbiAgICAgICAgICAgID8gbm9kZTIuX2RlZmF1bHRTb3J0T3JkZXJcbiAgICAgICAgICAgIDogT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMi5kYXRhLCBwVHJlZVRhYmxlLnNvcnRGaWVsZCk7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG5cbiAgICAgICAgICBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyICE9IG51bGwpIHJlc3VsdCA9IC0xO1xuICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAxO1xuICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAwO1xuICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZTIgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyLCB1bmRlZmluZWQsIHsgbnVtZXJpYzogdHJ1ZSB9KTtcbiAgICAgICAgICBlbHNlIHJlc3VsdCA9IHZhbHVlMSA8IHZhbHVlMiA/IC0xIDogdmFsdWUxID4gdmFsdWUyID8gMSA6IDA7XG5cbiAgICAgICAgICByZXR1cm4gcFRyZWVUYWJsZS5zb3J0T3JkZXIgKiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgLy8gVG9kbzogVXNlIGV4cGxpY2l0IHR5cGVcbiAgICAgICAgcFRyZWVUYWJsZS5zb3J0Tm9kZXMobm9kZS5jaGlsZHJlbiBhcyBhbnkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwVHJlZVRhYmxlLnNvcnRNdWx0aXBsZU5vZGVzID0gKG5vZGVzKSA9PiB7XG4gICAgICBpZiAoIW5vZGVzIHx8IG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFJlcGxhY2Ugd2l0aCBleHBsaWNpdCB0eXBlXG4gICAgICB0aGlzLl9zeW5jTm9kZXNQYXJhbXMocFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzIGFzIGFueSwgbm9kZXMpO1xuXG4gICAgICBpZiAocFRyZWVUYWJsZS5jdXN0b21Tb3J0KSB7XG4gICAgICAgIHBUcmVlVGFibGUuc29ydEZ1bmN0aW9uLmVtaXQoe1xuICAgICAgICAgIGRhdGE6IHBUcmVlVGFibGUudmFsdWUsXG4gICAgICAgICAgbW9kZTogcFRyZWVUYWJsZS5zb3J0TW9kZSxcbiAgICAgICAgICBtdWx0aVNvcnRNZXRhOiBwVHJlZVRhYmxlLm11bHRpU29ydE1ldGFcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2Rlcy5zb3J0KChub2RlMTogYW55LCBub2RlMjogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBUcmVlVGFibGUubXVsdGlzb3J0RmllbGQoXG4gICAgICAgICAgICBub2RlMSxcbiAgICAgICAgICAgIG5vZGUyLFxuICAgICAgICAgICAgLy8gUmVwbGFjZSB3aXRoIGV4cGxpY2l0IHR5cGVcbiAgICAgICAgICAgIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSBhcyBhbnksXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAvLyBSZXBsYWNlIHdpdGggZXhwbGljaXQgdHlwZVxuICAgICAgICBwVHJlZVRhYmxlLnNvcnRNdWx0aXBsZU5vZGVzKG5vZGUuY2hpbGRyZW4gYXMgYW55KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcFRyZWVUYWJsZS5tdWx0aXNvcnRGaWVsZCA9IChub2RlMSwgbm9kZTIsIG11bHRpU29ydE1ldGEsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdFV0aWxzLmlzRW1wdHkocFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhKSB8fFxuICAgICAgICBPYmplY3RVdGlscy5pc0VtcHR5KG11bHRpU29ydE1ldGFbaW5kZXhdKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNVbnNvcnQgPSBtdWx0aVNvcnRNZXRhW2luZGV4XS5maWVsZCA9PT0gJ19kZWZhdWx0U29ydE9yZGVyJztcbiAgICAgIGNvbnN0IHZhbHVlMSA9IGlzVW5zb3J0XG4gICAgICAgID8gLy8gVG9kbzogVXNlIGV4cGxpY2l0IHR5cGVcbiAgICAgICAgICAobm9kZTEgYXMgYW55KS5fZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICA6IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEobm9kZTEuZGF0YSwgbXVsdGlTb3J0TWV0YVtpbmRleF0uZmllbGQpO1xuICAgICAgY29uc3QgdmFsdWUyID0gaXNVbnNvcnRcbiAgICAgICAgPyAvLyBUb2RvOiBVc2UgZXhwbGljaXQgdHlwZVxuICAgICAgICAgIChub2RlMiBhcyBhbnkpLl9kZWZhdWx0U29ydE9yZGVyXG4gICAgICAgIDogT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMi5kYXRhLCBtdWx0aVNvcnRNZXRhW2luZGV4XS5maWVsZCk7XG4gICAgICBsZXQgcmVzdWx0ID0gMDtcblxuICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKSByZXN1bHQgPSAtMTtcbiAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAxO1xuICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDA7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgfHwgdmFsdWUxIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZTEubG9jYWxlQ29tcGFyZSAmJiB2YWx1ZTEgIT09IHZhbHVlMikge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBtdWx0aVNvcnRNZXRhW2luZGV4XS5vcmRlciAqXG4gICAgICAgICAgICB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIsIHVuZGVmaW5lZCwgeyBudW1lcmljOiB0cnVlIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdmFsdWUxIDwgdmFsdWUyID8gLTEgOiAxO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUxID09PSB2YWx1ZTIpIHtcbiAgICAgICAgcmV0dXJuIG11bHRpU29ydE1ldGEubGVuZ3RoIC0gMSA+IGluZGV4XG4gICAgICAgICAgPyBwVHJlZVRhYmxlLm11bHRpc29ydEZpZWxkKG5vZGUxLCBub2RlMiwgbXVsdGlTb3J0TWV0YSwgaW5kZXggKyAxKVxuICAgICAgICAgIDogMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG11bHRpU29ydE1ldGFbaW5kZXhdLm9yZGVyICogcmVzdWx0O1xuICAgIH07XG5cbiAgICBwVHJlZVRhYmxlLl9maWx0ZXIgPSAoKSA9PiB7XG4gICAgICBpZiAocFRyZWVUYWJsZS5sYXp5KSB7XG4gICAgICAgIHBUcmVlVGFibGUub25MYXp5TG9hZC5lbWl0KHBUcmVlVGFibGUuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghcFRyZWVUYWJsZS52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcFRyZWVUYWJsZS5oYXNGaWx0ZXIoKSkge1xuICAgICAgICAgIChwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMgYXMgYW55KSA9IG51bGw7XG4gICAgICAgICAgaWYgKHBUcmVlVGFibGUucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICBwVHJlZVRhYmxlLnRvdGFsUmVjb3JkcyA9IHBUcmVlVGFibGUudmFsdWVcbiAgICAgICAgICAgICAgPyBwVHJlZVRhYmxlLnZhbHVlLmxlbmd0aFxuICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheTogYW55W10gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHBUcmVlVGFibGUuZmlsdGVycy5nbG9iYWwpIHtcbiAgICAgICAgICAgIGlmICghcFRyZWVUYWJsZS5jb2x1bW5zICYmICFwVHJlZVRhYmxlLmdsb2JhbEZpbHRlckZpZWxkcylcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdHbG9iYWwgZmlsdGVyaW5nIHJlcXVpcmVzIGR5bmFtaWMgY29sdW1ucyBvciBnbG9iYWxGaWx0ZXJGaWVsZHMgdG8gYmUgZGVmaW5lZC4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlckZpZWxkc0FycmF5ID1cbiAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmdsb2JhbEZpbHRlckZpZWxkcyB8fCBwVHJlZVRhYmxlLmNvbHVtbnM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gUmVwbGFjZSB3aXRoIGV4cGxpY2l0IHR5cGVcbiAgICAgICAgICB0aGlzLl9zeW5jTm9kZXNQYXJhbXMoXG4gICAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMgYXMgYW55LFxuICAgICAgICAgICAgcFRyZWVUYWJsZS52YWx1ZVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMgPSBbXTtcbiAgICAgICAgICBjb25zdCBpc1N0cmljdE1vZGUgPSBwVHJlZVRhYmxlLmZpbHRlck1vZGUgPT09ICdzdHJpY3QnO1xuICAgICAgICAgIGxldCBpc1ZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbaWR4LCBub2RlXSBvZiBwVHJlZVRhYmxlLnZhbHVlLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgbGV0IGNvcHlOb2RlID0geyAuLi5ub2RlIH07XG4gICAgICAgICAgICBsZXQgbG9jYWxNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgZ2xvYmFsTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBwYXJhbXNXaXRob3V0Tm9kZTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHBUcmVlVGFibGUuZmlsdGVycykge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJlxuICAgICAgICAgICAgICAgIHByb3AgIT09ICdnbG9iYWwnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck1ldGEgPSBwVHJlZVRhYmxlLmZpbHRlcnNbcHJvcF07XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRmllbGQgPSBwcm9wO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyTWV0YT8udmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyTWF0Y2hNb2RlID0gZmlsdGVyTWV0YT8ubWF0Y2hNb2RlIHx8ICdzdGFydHNXaXRoJztcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJDb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVyU2VydmljZS5maWx0ZXJzW1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJNYXRjaE1vZGUgYXMga2V5b2YgdHlwZW9mIHBUcmVlVGFibGUuZmlsdGVyU2VydmljZS5maWx0ZXJzXG4gICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlID0ge1xuICAgICAgICAgICAgICAgICAgZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIGZpbHRlckNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgICAgICBpc1N0cmljdE1vZGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIChpc1N0cmljdE1vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbmRGaWx0ZXJlZE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weU5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZVxuICAgICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHdpdGggZXhwbGljaXQgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuaXNGaWx0ZXJNYXRjaGVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weU5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZSBhcyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICkpIHx8XG4gICAgICAgICAgICAgICAgICAoIWlzU3RyaWN0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2Ugd2l0aCBleHBsaWNpdCB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcFRyZWVUYWJsZS5pc0ZpbHRlck1hdGNoZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZSBhcyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmluZEZpbHRlcmVkTm9kZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGxvY2FsTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWxvY2FsTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVycy5nbG9iYWwgJiZcbiAgICAgICAgICAgICAgIWdsb2JhbE1hdGNoICYmXG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlckZpZWxkc0FycmF5XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvcHlOb2RlRm9yR2xvYmFsID0geyAuLi5jb3B5Tm9kZSB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlckZpZWxkID1cbiAgICAgICAgICAgICAgICAgIGdsb2JhbEZpbHRlckZpZWxkc0FycmF5W2pdLmZpZWxkIHx8XG4gICAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheVtqXTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHBUcmVlVGFibGUuZmlsdGVycy5nbG9iYWwudmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyQ29uc3RyYWludCA9XG4gICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlclNlcnZpY2UuZmlsdGVyc1tcbiAgICAgICAgICAgICAgICAgICAgcFRyZWVUYWJsZS5maWx0ZXJzLmdsb2JhbFxuICAgICAgICAgICAgICAgICAgICAgIC5tYXRjaE1vZGUgYXMga2V5b2YgdHlwZW9mIHBUcmVlVGFibGUuZmlsdGVyU2VydmljZS5maWx0ZXJzXG4gICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlID0ge1xuICAgICAgICAgICAgICAgICAgZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIGZpbHRlckNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgICAgICBpc1N0cmljdE1vZGVcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgKGlzU3RyaWN0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAocFRyZWVUYWJsZS5maW5kRmlsdGVyZWROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgICBjb3B5Tm9kZUZvckdsb2JhbCxcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZVxuICAgICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgcFRyZWVUYWJsZS5pc0ZpbHRlck1hdGNoZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3B5Tm9kZUZvckdsb2JhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2Ugd2l0aCBleHBsaWNpdCB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZSBhcyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICApKSkgfHxcbiAgICAgICAgICAgICAgICAgICghaXNTdHJpY3RNb2RlICYmXG4gICAgICAgICAgICAgICAgICAgIChwVHJlZVRhYmxlLmlzRmlsdGVyTWF0Y2hlZChcbiAgICAgICAgICAgICAgICAgICAgICBjb3B5Tm9kZUZvckdsb2JhbCxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHdpdGggZXhwbGljaXQgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlIGFzIGFueVxuICAgICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgcFRyZWVUYWJsZS5maW5kRmlsdGVyZWROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlRm9yR2xvYmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGVcbiAgICAgICAgICAgICAgICAgICAgICApKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGdsb2JhbE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGNvcHlOb2RlID0gY29weU5vZGVGb3JHbG9iYWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gbG9jYWxNYXRjaDtcbiAgICAgICAgICAgIGlmIChwVHJlZVRhYmxlLmZpbHRlcnMuZ2xvYmFsKSB7XG4gICAgICAgICAgICAgIG1hdGNoZXMgPSBsb2NhbE1hdGNoICYmIGdsb2JhbE1hdGNoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAvLyBSZXBsYWNlIHdpdGggZXhwbGljaXQgdHlwZVxuICAgICAgICAgICAgICAoY29weU5vZGUgYXMgYW55KS5faWR4ID0gaWR4O1xuICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMucHVzaChjb3B5Tm9kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlzVmFsdWVDaGFuZ2VkID1cbiAgICAgICAgICAgICAgaXNWYWx1ZUNoYW5nZWQgfHxcbiAgICAgICAgICAgICAgIWxvY2FsTWF0Y2ggfHxcbiAgICAgICAgICAgICAgZ2xvYmFsTWF0Y2ggfHxcbiAgICAgICAgICAgICAgKGxvY2FsTWF0Y2ggJiYgcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgICAgICghZ2xvYmFsTWF0Y2ggJiYgcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFpc1ZhbHVlQ2hhbmdlZCkge1xuICAgICAgICAgICAgKHBUcmVlVGFibGUuZmlsdGVyZWROb2RlcyBhcyBhbnkpID0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocFRyZWVUYWJsZS5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgIHBUcmVlVGFibGUudG90YWxSZWNvcmRzID0gcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzXG4gICAgICAgICAgICAgID8gcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzLmxlbmd0aFxuICAgICAgICAgICAgICA6IHBUcmVlVGFibGUudmFsdWVcbiAgICAgICAgICAgICAgICA/IHBUcmVlVGFibGUudmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwVHJlZVRhYmxlLmZpcnN0ID0gMDtcblxuICAgICAgY29uc3QgZmlsdGVyZWRWYWx1ZSA9IHBUcmVlVGFibGUuZmlsdGVyZWROb2RlcyB8fCBwVHJlZVRhYmxlLnZhbHVlO1xuXG4gICAgICBwVHJlZVRhYmxlLm9uRmlsdGVyLmVtaXQoe1xuICAgICAgICBmaWx0ZXJzOiBwVHJlZVRhYmxlLmZpbHRlcnMsXG4gICAgICAgIGZpbHRlcmVkVmFsdWVcbiAgICAgIH0pO1xuXG4gICAgICBwVHJlZVRhYmxlLnRhYmxlU2VydmljZS5vblVJVXBkYXRlKGZpbHRlcmVkVmFsdWUpO1xuICAgICAgcFRyZWVUYWJsZS51cGRhdGVTZXJpYWxpemVkVmFsdWUoKTtcblxuICAgICAgaWYgKHBUcmVlVGFibGUuc2Nyb2xsYWJsZSkge1xuICAgICAgICBwVHJlZVRhYmxlLnJlc2V0U2Nyb2xsVG9wKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHBUcmVlVGFibGUuZmluZEZpbHRlcmVkTm9kZXMgPSAobm9kZSwgcGFyYW1zV2l0aG91dE5vZGUpOiBhbnkgPT4ge1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gWy4uLm5vZGUuY2hpbGRyZW5dO1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtpZHgsIGNoaWxkTm9kZV0gb2YgY2hpbGROb2Rlcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvcHlDaGlsZE5vZGUgPSB7IC4uLmNoaWxkTm9kZSB9O1xuICAgICAgICAgICAgaWYgKHBUcmVlVGFibGUuaXNGaWx0ZXJNYXRjaGVkKGNvcHlDaGlsZE5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKSkge1xuICAgICAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgLy8gUmVwbGFjZSB3aXRoIGV4cGxpY2l0IHR5cGVcbiAgICAgICAgICAgICAgKGNvcHlDaGlsZE5vZGUgYXMgYW55KS5faWR4ID0gaWR4O1xuICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLnB1c2goY29weUNoaWxkTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTm9kZXNQYXJhbXMoZnJvbTogYW55W10gfCB1bmRlZmluZWQsIHRvOiBhbnlbXSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghZnJvbSB8fCAhdG8pIHJldHVybjtcblxuICAgIGZyb20uZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBzb3VyY2UuX2lkeDtcbiAgICAgIGlmICh0eXBlb2YgaWR4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSB0b1tpZHhdO1xuICAgICAgICBkZWxldGUgc291cmNlLl9pZHg7XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICB0YXJnZXQuZXhwYW5kZWQgPSBzb3VyY2UuZXhwYW5kZWQ7XG4gICAgICAgICAgdGFyZ2V0LnBhcnRpYWxTZWxlY3RlZCA9IHNvdXJjZS5wYXJ0aWFsU2VsZWN0ZWQ7XG4gICAgICAgICAgdGhpcy5fc3luY05vZGVzUGFyYW1zKHNvdXJjZS5jaGlsZHJlbiwgdGFyZ2V0LmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS10YWJsZS11bnNvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRyZWUtdGFibGUvZGlyZWN0aXZlcy9pbnRlcm5hbC90cmVlLXRhYmxlLXVuc29ydC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNNUMsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUErQyxVQUFxQjtRQUFyQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ2xFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUMvQixJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3JDLElBQ0UsVUFBVSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsS0FBSztvQkFDcEMsVUFBVSxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFDM0IsQ0FBQztvQkFDRCxLQUFLLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDO2dCQUNwQyxDQUFDO2dCQUVELFVBQVUsQ0FBQyxVQUFVO29CQUNuQixVQUFVLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxLQUFLO3dCQUNsQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7d0JBQzNCLENBQUMsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDcEMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJ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LElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3hCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNuQixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztvQkFDbEMsTUFBTSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO29CQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXZZVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQUVjLElBQUk7OzBCQUFJLElBQUk7OzBCQUFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QsIFNlbGYsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmVlVGFibGUgfSBmcm9tICdwcmltZW5nL3RyZWV0YWJsZSc7XG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbdHRXaXRoVW5zb3J0XSdcbn0pXG5leHBvcnQgY2xhc3MgVHJlZVRhYmxlVW5zb3J0RGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IoQEhvc3QoKSBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBwVHJlZVRhYmxlOiBUcmVlVGFibGUpIHtcbiAgICBwVHJlZVRhYmxlLnNvcnQgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHBUcmVlVGFibGUuc29ydE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwVHJlZVRhYmxlLnNvcnRGaWVsZCA9PT0gZXZlbnQuZmllbGQgJiZcbiAgICAgICAgICBwVHJlZVRhYmxlLnNvcnRPcmRlciA9PT0gLTFcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXZlbnQuZmllbGQgPSAnX2RlZmF1bHRTb3J0T3JkZXInO1xuICAgICAgICB9XG5cbiAgICAgICAgcFRyZWVUYWJsZS5fc29ydE9yZGVyID1cbiAgICAgICAgICBwVHJlZVRhYmxlLnNvcnRGaWVsZCA9PT0gZXZlbnQuZmllbGRcbiAgICAgICAgICAgID8gcFRyZWVUYWJsZS5zb3J0T3JkZXIgKiAtMVxuICAgICAgICAgICAgOiBwVHJlZVRhYmxlLmRlZmF1bHRTb3J0T3JkZXI7XG4gICAgICAgIHBUcmVlVGFibGUuX3NvcnRGaWVsZCA9IGV2ZW50LmZpZWxkO1xuICAgICAgICBwVHJlZVRhYmxlLnNvcnRTaW5nbGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChwVHJlZVRhYmxlLnNvcnRNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgIGxldCByZXNldEluZGV4ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHNvcnRNZXRhID0gcFRyZWVUYWJsZS5nZXRTb3J0TWV0YShldmVudC5maWVsZCk7XG5cbiAgICAgICAgaWYgKHNvcnRNZXRhICYmIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhW2ldLmZpZWxkID09PSBzb3J0TWV0YS5maWVsZCkge1xuICAgICAgICAgICAgICBwVHJlZVRhYmxlLm11bHRpU29ydE1ldGEuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc29ydE1ldGEub3JkZXIgPT09IDEpIHtcbiAgICAgICAgICAgIHNvcnRNZXRhLm9yZGVyID0gc29ydE1ldGEub3JkZXIgKiAtMTtcbiAgICAgICAgICAgIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YS5wdXNoKHNvcnRNZXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YS5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQ6ICdfZGVmYXVsdFNvcnRPcmRlcicsXG4gICAgICAgICAgICAgIG9yZGVyOiBwVHJlZVRhYmxlLmRlZmF1bHRTb3J0T3JkZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzZXRJbmRleCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhKSB7XG4gICAgICAgICAgICBwVHJlZVRhYmxlLm11bHRpU29ydE1ldGEgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6IGV2ZW50LmZpZWxkLFxuICAgICAgICAgICAgb3JkZXI6IHBUcmVlVGFibGUuZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcFRyZWVUYWJsZS5zb3J0TXVsdGlwbGUoKTtcbiAgICAgICAgaWYgKHJlc2V0SW5kZXgpIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSA9IFtdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwVHJlZVRhYmxlLnNvcnROb2RlcyA9IChub2RlcykgPT4ge1xuICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9zeW5jTm9kZXNQYXJhbXMocFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzLCBub2Rlcyk7XG5cbiAgICAgIGlmIChwVHJlZVRhYmxlLmN1c3RvbVNvcnQpIHtcbiAgICAgICAgcFRyZWVUYWJsZS5zb3J0RnVuY3Rpb24uZW1pdCh7XG4gICAgICAgICAgZGF0YTogbm9kZXMsXG4gICAgICAgICAgbW9kZTogcFRyZWVUYWJsZS5zb3J0TW9kZSxcbiAgICAgICAgICBmaWVsZDogcFRyZWVUYWJsZS5zb3J0RmllbGQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIG9yZGVyOiBwVHJlZVRhYmxlLnNvcnRPcmRlclxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGlzVW5zb3J0ID0gcFRyZWVUYWJsZS5zb3J0RmllbGQgPT09ICdfZGVmYXVsdFNvcnRPcmRlcic7XG4gICAgICAgIG5vZGVzLnNvcnQoKG5vZGUxOiBhbnksIG5vZGUyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZTEgPSBpc1Vuc29ydFxuICAgICAgICAgICAgPyBub2RlMS5fZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICAgICAgOiBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG5vZGUxLmRhdGEsIHBUcmVlVGFibGUuc29ydEZpZWxkKTtcbiAgICAgICAgICBjb25zdCB2YWx1ZTIgPSBpc1Vuc29ydFxuICAgICAgICAgICAgPyBub2RlMi5fZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICAgICAgOiBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG5vZGUyLmRhdGEsIHBUcmVlVGFibGUuc29ydEZpZWxkKTtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgICAgICAgIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgIT0gbnVsbCkgcmVzdWx0ID0gLTE7XG4gICAgICAgICAgZWxzZSBpZiAodmFsdWUxICE9IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDE7XG4gICAgICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDA7XG4gICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlMiA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIsIHVuZGVmaW5lZCwgeyBudW1lcmljOiB0cnVlIH0pO1xuICAgICAgICAgIGVsc2UgcmVzdWx0ID0gdmFsdWUxIDwgdmFsdWUyID8gLTEgOiB2YWx1ZTEgPiB2YWx1ZTIgPyAxIDogMDtcblxuICAgICAgICAgIHJldHVybiBwVHJlZVRhYmxlLnNvcnRPcmRlciAqIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikgcFRyZWVUYWJsZS5zb3J0Tm9kZXMobm9kZS5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHBUcmVlVGFibGUuc29ydE11bHRpcGxlTm9kZXMgPSAobm9kZXMpID0+IHtcbiAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3luY05vZGVzUGFyYW1zKHBUcmVlVGFibGUuZmlsdGVyZWROb2Rlcywgbm9kZXMpO1xuXG4gICAgICBpZiAocFRyZWVUYWJsZS5jdXN0b21Tb3J0KSB7XG4gICAgICAgIHBUcmVlVGFibGUuc29ydEZ1bmN0aW9uLmVtaXQoe1xuICAgICAgICAgIGRhdGE6IHBUcmVlVGFibGUudmFsdWUsXG4gICAgICAgICAgbW9kZTogcFRyZWVUYWJsZS5zb3J0TW9kZSxcbiAgICAgICAgICBtdWx0aVNvcnRNZXRhOiBwVHJlZVRhYmxlLm11bHRpU29ydE1ldGFcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2Rlcy5zb3J0KChub2RlMTogYW55LCBub2RlMjogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBUcmVlVGFibGUubXVsdGlzb3J0RmllbGQoXG4gICAgICAgICAgICBub2RlMSxcbiAgICAgICAgICAgIG5vZGUyLFxuICAgICAgICAgICAgcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhIHx8IFtdLFxuICAgICAgICAgICAgMFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHBUcmVlVGFibGUuc29ydE11bHRpcGxlTm9kZXMobm9kZS5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHBUcmVlVGFibGUubXVsdGlzb3J0RmllbGQgPSAobm9kZTEsIG5vZGUyLCBtdWx0aVNvcnRNZXRhLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBPYmplY3RVdGlscy5pc0VtcHR5KHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSkgfHxcbiAgICAgICAgT2JqZWN0VXRpbHMuaXNFbXB0eShtdWx0aVNvcnRNZXRhW2luZGV4XSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzVW5zb3J0ID0gbXVsdGlTb3J0TWV0YVtpbmRleF0uZmllbGQgPT09ICdfZGVmYXVsdFNvcnRPcmRlcic7XG4gICAgICBjb25zdCB2YWx1ZTEgPSBpc1Vuc29ydFxuICAgICAgICA/IChub2RlMSBhcyBhbnkpLl9kZWZhdWx0U29ydE9yZGVyXG4gICAgICAgIDogT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMS5kYXRhLCBtdWx0aVNvcnRNZXRhW2luZGV4XS5maWVsZCk7XG4gICAgICBjb25zdCB2YWx1ZTIgPSBpc1Vuc29ydFxuICAgICAgICA/IChub2RlMiBhcyBhbnkpLl9kZWZhdWx0U29ydE9yZGVyXG4gICAgICAgIDogT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMi5kYXRhLCBtdWx0aVNvcnRNZXRhW2luZGV4XS5maWVsZCk7XG4gICAgICBsZXQgcmVzdWx0ID0gMDtcblxuICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKSByZXN1bHQgPSAtMTtcbiAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAxO1xuICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDA7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgfHwgdmFsdWUxIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZTEubG9jYWxlQ29tcGFyZSAmJiB2YWx1ZTEgIT09IHZhbHVlMikge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBtdWx0aVNvcnRNZXRhW2luZGV4XS5vcmRlciAqXG4gICAgICAgICAgICB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIsIHVuZGVmaW5lZCwgeyBudW1lcmljOiB0cnVlIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdmFsdWUxIDwgdmFsdWUyID8gLTEgOiAxO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUxID09PSB2YWx1ZTIpIHtcbiAgICAgICAgcmV0dXJuIG11bHRpU29ydE1ldGEubGVuZ3RoIC0gMSA+IGluZGV4XG4gICAgICAgICAgPyBwVHJlZVRhYmxlLm11bHRpc29ydEZpZWxkKG5vZGUxLCBub2RlMiwgbXVsdGlTb3J0TWV0YSwgaW5kZXggKyAxKVxuICAgICAgICAgIDogMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG11bHRpU29ydE1ldGFbaW5kZXhdLm9yZGVyICogcmVzdWx0O1xuICAgIH07XG5cbiAgICBwVHJlZVRhYmxlLl9maWx0ZXIgPSAoKSA9PiB7XG4gICAgICBpZiAocFRyZWVUYWJsZS5sYXp5KSB7XG4gICAgICAgIHBUcmVlVGFibGUub25MYXp5TG9hZC5lbWl0KHBUcmVlVGFibGUuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghcFRyZWVUYWJsZS52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcFRyZWVUYWJsZS5oYXNGaWx0ZXIoKSkge1xuICAgICAgICAgIChwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMgYXMgYW55KSA9IG51bGw7XG4gICAgICAgICAgaWYgKHBUcmVlVGFibGUucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICBwVHJlZVRhYmxlLnRvdGFsUmVjb3JkcyA9IHBUcmVlVGFibGUudmFsdWVcbiAgICAgICAgICAgICAgPyBwVHJlZVRhYmxlLnZhbHVlLmxlbmd0aFxuICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheTogYW55W10gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHBUcmVlVGFibGUuZmlsdGVycy5nbG9iYWwpIHtcbiAgICAgICAgICAgIGlmICghcFRyZWVUYWJsZS5jb2x1bW5zICYmICFwVHJlZVRhYmxlLmdsb2JhbEZpbHRlckZpZWxkcylcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdHbG9iYWwgZmlsdGVyaW5nIHJlcXVpcmVzIGR5bmFtaWMgY29sdW1ucyBvciBnbG9iYWxGaWx0ZXJGaWVsZHMgdG8gYmUgZGVmaW5lZC4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlckZpZWxkc0FycmF5ID1cbiAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmdsb2JhbEZpbHRlckZpZWxkcyB8fCBwVHJlZVRhYmxlLmNvbHVtbnM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fc3luY05vZGVzUGFyYW1zKHBUcmVlVGFibGUuZmlsdGVyZWROb2RlcywgcFRyZWVUYWJsZS52YWx1ZSk7XG5cbiAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMgPSBbXTtcbiAgICAgICAgICBjb25zdCBpc1N0cmljdE1vZGUgPSBwVHJlZVRhYmxlLmZpbHRlck1vZGUgPT09ICdzdHJpY3QnO1xuICAgICAgICAgIGxldCBpc1ZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbaWR4LCBub2RlXSBvZiBwVHJlZVRhYmxlLnZhbHVlLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgbGV0IGNvcHlOb2RlID0geyAuLi5ub2RlIH07XG4gICAgICAgICAgICBsZXQgbG9jYWxNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgZ2xvYmFsTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBwYXJhbXNXaXRob3V0Tm9kZTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHBUcmVlVGFibGUuZmlsdGVycykge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJlxuICAgICAgICAgICAgICAgIHByb3AgIT09ICdnbG9iYWwnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck1ldGEgPSBwVHJlZVRhYmxlLmZpbHRlcnNbcHJvcF07XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRmllbGQgPSBwcm9wO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyTWV0YT8udmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyTWF0Y2hNb2RlID0gZmlsdGVyTWV0YT8ubWF0Y2hNb2RlIHx8ICdzdGFydHNXaXRoJztcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJDb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVyU2VydmljZS5maWx0ZXJzW1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJNYXRjaE1vZGUgYXMga2V5b2YgdHlwZW9mIHBUcmVlVGFibGUuZmlsdGVyU2VydmljZS5maWx0ZXJzXG4gICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlID0ge1xuICAgICAgICAgICAgICAgICAgZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIGZpbHRlckNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgICAgICBpc1N0cmljdE1vZGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIChpc1N0cmljdE1vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbmRGaWx0ZXJlZE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weU5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZVxuICAgICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmlzRmlsdGVyTWF0Y2hlZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApKSB8fFxuICAgICAgICAgICAgICAgICAgKCFpc1N0cmljdE1vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmlzRmlsdGVyTWF0Y2hlZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmluZEZpbHRlcmVkTm9kZXMoY29weU5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKVxuICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgbG9jYWxNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghbG9jYWxNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgcFRyZWVUYWJsZS5maWx0ZXJzLmdsb2JhbCAmJlxuICAgICAgICAgICAgICAhZ2xvYmFsTWF0Y2ggJiZcbiAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyRmllbGRzQXJyYXlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGdsb2JhbEZpbHRlckZpZWxkc0FycmF5Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29weU5vZGVGb3JHbG9iYWwgPSB7IC4uLmNvcHlOb2RlIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRmllbGQgPVxuICAgICAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyRmllbGRzQXJyYXlbal0uZmllbGQgfHxcbiAgICAgICAgICAgICAgICAgIGdsb2JhbEZpbHRlckZpZWxkc0FycmF5W2pdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gcFRyZWVUYWJsZS5maWx0ZXJzLmdsb2JhbC52YWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJDb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVyU2VydmljZS5maWx0ZXJzW1xuICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlcnMuZ2xvYmFsXG4gICAgICAgICAgICAgICAgICAgICAgLm1hdGNoTW9kZSBhcyBrZXlvZiB0eXBlb2YgcFRyZWVUYWJsZS5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgPSB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZCxcbiAgICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlLFxuICAgICAgICAgICAgICAgICAgZmlsdGVyQ29uc3RyYWludCxcbiAgICAgICAgICAgICAgICAgIGlzU3RyaWN0TW9kZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAoaXNTdHJpY3RNb2RlICYmXG4gICAgICAgICAgICAgICAgICAgIChwVHJlZVRhYmxlLmZpbmRGaWx0ZXJlZE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlRm9yR2xvYmFsLFxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlXG4gICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmlzRmlsdGVyTWF0Y2hlZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlRm9yR2xvYmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICAgKSkpIHx8XG4gICAgICAgICAgICAgICAgICAoIWlzU3RyaWN0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAocFRyZWVUYWJsZS5pc0ZpbHRlck1hdGNoZWQoXG4gICAgICAgICAgICAgICAgICAgICAgY29weU5vZGVGb3JHbG9iYWwsXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbmRGaWx0ZXJlZE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weU5vZGVGb3JHbG9iYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZVxuICAgICAgICAgICAgICAgICAgICAgICkpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgZ2xvYmFsTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgY29weU5vZGUgPSBjb3B5Tm9kZUZvckdsb2JhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBsb2NhbE1hdGNoO1xuICAgICAgICAgICAgaWYgKHBUcmVlVGFibGUuZmlsdGVycy5nbG9iYWwpIHtcbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IGxvY2FsTWF0Y2ggJiYgZ2xvYmFsTWF0Y2g7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICAgIChjb3B5Tm9kZSBhcyBhbnkpLl9pZHggPSBpZHg7XG4gICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVyZWROb2Rlcy5wdXNoKGNvcHlOb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXNWYWx1ZUNoYW5nZWQgPVxuICAgICAgICAgICAgICBpc1ZhbHVlQ2hhbmdlZCB8fFxuICAgICAgICAgICAgICAhbG9jYWxNYXRjaCB8fFxuICAgICAgICAgICAgICBnbG9iYWxNYXRjaCB8fFxuICAgICAgICAgICAgICAobG9jYWxNYXRjaCAmJiBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMubGVuZ3RoID4gMCkgfHxcbiAgICAgICAgICAgICAgKCFnbG9iYWxNYXRjaCAmJiBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMubGVuZ3RoID09PSAwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWlzVmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICAocFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzIGFzIGFueSkgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwVHJlZVRhYmxlLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgcFRyZWVUYWJsZS50b3RhbFJlY29yZHMgPSBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXNcbiAgICAgICAgICAgICAgPyBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMubGVuZ3RoXG4gICAgICAgICAgICAgIDogcFRyZWVUYWJsZS52YWx1ZVxuICAgICAgICAgICAgICAgID8gcFRyZWVUYWJsZS52YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHBUcmVlVGFibGUuZmlyc3QgPSAwO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZFZhbHVlID0gcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzIHx8IHBUcmVlVGFibGUudmFsdWU7XG5cbiAgICAgIHBUcmVlVGFibGUub25GaWx0ZXIuZW1pdCh7XG4gICAgICAgIGZpbHRlcnM6IHBUcmVlVGFibGUuZmlsdGVycyxcbiAgICAgICAgZmlsdGVyZWRWYWx1ZVxuICAgICAgfSk7XG5cbiAgICAgIHBUcmVlVGFibGUudGFibGVTZXJ2aWNlLm9uVUlVcGRhdGUoZmlsdGVyZWRWYWx1ZSk7XG4gICAgICBwVHJlZVRhYmxlLnVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpO1xuXG4gICAgICBpZiAocFRyZWVUYWJsZS5zY3JvbGxhYmxlKSB7XG4gICAgICAgIHBUcmVlVGFibGUucmVzZXRTY3JvbGxUb3AoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcFRyZWVUYWJsZS5maW5kRmlsdGVyZWROb2RlcyA9IChub2RlLCBwYXJhbXNXaXRob3V0Tm9kZSk6IGFueSA9PiB7XG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICBsZXQgbWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBbLi4ubm9kZS5jaGlsZHJlbl07XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3QgW2lkeCwgY2hpbGROb2RlXSBvZiBjaGlsZE5vZGVzLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgY29weUNoaWxkTm9kZSA9IHsgLi4uY2hpbGROb2RlIH07XG4gICAgICAgICAgICBpZiAocFRyZWVUYWJsZS5pc0ZpbHRlck1hdGNoZWQoY29weUNoaWxkTm9kZSwgcGFyYW1zV2l0aG91dE5vZGUpKSB7XG4gICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAoY29weUNoaWxkTm9kZSBhcyBhbnkpLl9pZHggPSBpZHg7XG4gICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4ucHVzaChjb3B5Q2hpbGROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOb2Rlc1BhcmFtcyhcbiAgICBmcm9tOiBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwsXG4gICAgdG86IGFueVtdIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmICghZnJvbSB8fCAhdG8pIHJldHVybjtcblxuICAgIGZyb20uZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBzb3VyY2UuX2lkeDtcbiAgICAgIGlmICh0eXBlb2YgaWR4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSB0b1tpZHhdO1xuICAgICAgICBkZWxldGUgc291cmNlLl9pZHg7XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICB0YXJnZXQuZXhwYW5kZWQgPSBzb3VyY2UuZXhwYW5kZWQ7XG4gICAgICAgICAgdGFyZ2V0LnBhcnRpYWxTZWxlY3RlZCA9IHNvdXJjZS5wYXJ0aWFsU2VsZWN0ZWQ7XG4gICAgICAgICAgdGhpcy5fc3luY05vZGVzUGFyYW1zKHNvdXJjZS5jaGlsZHJlbiwgdGFyZ2V0LmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|