igniteui-angular 18.3.0-beta.0 → 18.3.0-beta.1
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/data-operations/expressions-tree-util.mjs +148 -1
- package/esm2022/lib/data-operations/filtering-expressions-tree.mjs +1 -1
- package/esm2022/lib/data-operations/filtering-strategy.mjs +3 -2
- package/esm2022/lib/grids/filtering/excel-style/common.mjs +5 -6
- package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +3 -2
- package/esm2022/lib/grids/filtering/grid-filtering.service.mjs +14 -17
- package/esm2022/lib/grids/grid-base.directive.mjs +14 -11
- package/esm2022/lib/grids/state-base.directive.mjs +4 -69
- package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +3 -3
- package/esm2022/lib/query-builder/query-builder-tree.component.mjs +84 -38
- package/esm2022/lib/query-builder/query-builder.component.mjs +34 -4
- package/esm2022/public_api.mjs +2 -2
- package/fesm2022/igniteui-angular.mjs +18361 -18209
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/data-operations/expressions-tree-util.d.ts +24 -1
- package/lib/grids/state-base.directive.d.ts +1 -5
- package/lib/query-builder/query-builder-tree.component.d.ts +5 -0
- package/lib/query-builder/query-builder.component.d.ts +9 -2
- package/package.json +1 -1
- package/public_api.d.ts +1 -1
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { DateTimeUtil } from '../date-common/util/date-time.util';
|
|
2
|
+
import { GridColumnDataType } from './data-util';
|
|
3
|
+
import { IgxBooleanFilteringOperand, IgxDateFilteringOperand, IgxDateTimeFilteringOperand, IgxNumberFilteringOperand, IgxStringFilteringOperand, IgxTimeFilteringOperand } from './filtering-condition';
|
|
1
4
|
export class ExpressionsTreeUtil {
|
|
2
5
|
/**
|
|
3
6
|
* Returns the filtering expression for a column with the provided tree and fieldName.
|
|
@@ -47,4 +50,148 @@ export class ExpressionsTreeUtil {
|
|
|
47
50
|
return false;
|
|
48
51
|
}
|
|
49
52
|
}
|
|
50
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Recreates the search value for a given expression.
|
|
55
|
+
* @param searchValue The search value to recreate.
|
|
56
|
+
* @param dataType The data type of the field.
|
|
57
|
+
* @returns The recreated search value.
|
|
58
|
+
*/
|
|
59
|
+
function recreateSearchValue(searchValue, dataType) {
|
|
60
|
+
if (!dataType) {
|
|
61
|
+
return searchValue;
|
|
62
|
+
}
|
|
63
|
+
// In ESF, values are stored as a Set.
|
|
64
|
+
// Those values are converted to an array before returning string in the stringifyCallback
|
|
65
|
+
// now we need to convert those back to Set
|
|
66
|
+
if (Array.isArray(searchValue)) {
|
|
67
|
+
return new Set(searchValue);
|
|
68
|
+
}
|
|
69
|
+
else if ((dataType.toLowerCase().includes('date') || dataType.toLowerCase().includes('time')) && !(searchValue instanceof Date)) {
|
|
70
|
+
return DateTimeUtil.parseIsoDate(searchValue) ?? searchValue;
|
|
71
|
+
}
|
|
72
|
+
return searchValue;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Returns the filtering logic function for a given dataType and condition (contains, greaterThan, etc.)
|
|
76
|
+
* @param dataType The data type of the field.
|
|
77
|
+
* @param name The name of the filtering condition.
|
|
78
|
+
* @returns The filtering logic function.
|
|
79
|
+
*/
|
|
80
|
+
function getFilteringCondition(dataType, name) {
|
|
81
|
+
let filters;
|
|
82
|
+
switch (dataType) {
|
|
83
|
+
case GridColumnDataType.Boolean:
|
|
84
|
+
filters = IgxBooleanFilteringOperand.instance();
|
|
85
|
+
break;
|
|
86
|
+
case GridColumnDataType.Number:
|
|
87
|
+
case GridColumnDataType.Currency:
|
|
88
|
+
case GridColumnDataType.Percent:
|
|
89
|
+
filters = IgxNumberFilteringOperand.instance();
|
|
90
|
+
break;
|
|
91
|
+
case GridColumnDataType.Date:
|
|
92
|
+
filters = IgxDateFilteringOperand.instance();
|
|
93
|
+
break;
|
|
94
|
+
case GridColumnDataType.Time:
|
|
95
|
+
filters = IgxTimeFilteringOperand.instance();
|
|
96
|
+
break;
|
|
97
|
+
case GridColumnDataType.DateTime:
|
|
98
|
+
filters = IgxDateTimeFilteringOperand.instance();
|
|
99
|
+
break;
|
|
100
|
+
case GridColumnDataType.String:
|
|
101
|
+
default:
|
|
102
|
+
filters = IgxStringFilteringOperand.instance();
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
return filters.condition(name);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Recreates the IFilteringOperation for a given expression.
|
|
109
|
+
* If the `logic` is already populated - it will return the original IFilteringOperation
|
|
110
|
+
* of the expression.
|
|
111
|
+
* @param expression The expression for which to resolve the IFilteringOperation.
|
|
112
|
+
* @param dataType The data type of the field.
|
|
113
|
+
* @returns The IFilteringOperation for the given expression.
|
|
114
|
+
*/
|
|
115
|
+
function recreateOperatorFromDataType(expression, dataType) {
|
|
116
|
+
if (!expression.condition?.logic) {
|
|
117
|
+
return getFilteringCondition(dataType, expression.conditionName || expression.condition?.name);
|
|
118
|
+
}
|
|
119
|
+
return expression.condition;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Recreates an expression from the given fields by applying the correct operands
|
|
123
|
+
* and adjusting the search value to be the correct type.
|
|
124
|
+
* @param expression The expression to recreate.
|
|
125
|
+
* @param fields An array of fields to use for recreating the expression.
|
|
126
|
+
* @returns The recreated expression.
|
|
127
|
+
*/
|
|
128
|
+
function recreateExpression(expression, fields) {
|
|
129
|
+
const field = fields?.find(f => f.field === expression.fieldName);
|
|
130
|
+
if (field && !expression.condition?.logic) {
|
|
131
|
+
if (!field.filters) {
|
|
132
|
+
expression.condition = recreateOperatorFromDataType(expression, field.dataType);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
expression.condition = field.filters.condition(expression.conditionName || expression.condition?.name);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (!expression.conditionName) {
|
|
139
|
+
expression.conditionName = expression.condition?.name;
|
|
140
|
+
}
|
|
141
|
+
expression.searchVal = recreateSearchValue(expression.searchVal, field?.dataType);
|
|
142
|
+
return expression;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Checks if the given entry is an IExpressionTree.
|
|
146
|
+
* @param entry The entry to check.
|
|
147
|
+
* @returns True if the entry is an IExpressionTree, false otherwise.
|
|
148
|
+
*/
|
|
149
|
+
export function isTree(entry) {
|
|
150
|
+
return 'operator' in entry;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Recreates the tree from a given array of entities by applying the correct operands
|
|
154
|
+
* for each expression and adjusting the search values to be the correct type.
|
|
155
|
+
* @param tree The expression tree to recreate.
|
|
156
|
+
* @param entities An array of entities to use for recreating the tree.
|
|
157
|
+
* @returns The recreated expression tree.
|
|
158
|
+
*/
|
|
159
|
+
export function recreateTree(tree, entities) {
|
|
160
|
+
const entity = entities.find(e => e.name === tree.entity);
|
|
161
|
+
for (let i = 0; i < tree.filteringOperands.length; i++) {
|
|
162
|
+
const operand = tree.filteringOperands[i];
|
|
163
|
+
if (isTree(operand)) {
|
|
164
|
+
tree.filteringOperands[i] = recreateTree(operand, entities);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
if (operand.searchTree) {
|
|
168
|
+
operand.searchTree = recreateTree(operand.searchTree, entities);
|
|
169
|
+
}
|
|
170
|
+
tree.filteringOperands[i] = recreateExpression(operand, entity?.fields);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return tree;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Recreates the tree from a given array of fields by applying the correct operands.
|
|
177
|
+
* It is recommended to use `recreateTree` if there will be multiple entities in the tree
|
|
178
|
+
* with potentially colliding field names.
|
|
179
|
+
* @param tree The expression tree to recreate.
|
|
180
|
+
* @param fields An array of fields to use for recreating the tree.
|
|
181
|
+
*/
|
|
182
|
+
export function recreateTreeFromFields(tree, fields) {
|
|
183
|
+
for (let i = 0; i < tree.filteringOperands.length; i++) {
|
|
184
|
+
const operand = tree.filteringOperands[i];
|
|
185
|
+
if (isTree(operand)) {
|
|
186
|
+
tree.filteringOperands[i] = recreateTreeFromFields(operand, fields);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
if (operand.searchTree) {
|
|
190
|
+
operand.searchTree = recreateTreeFromFields(operand.searchTree, fields);
|
|
191
|
+
}
|
|
192
|
+
tree.filteringOperands[i] = recreateExpression(operand, fields);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return tree;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbnMtdHJlZS11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RhdGEtb3BlcmF0aW9ucy9leHByZXNzaW9ucy10cmVlLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQXVCLDBCQUEwQixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUF1Qix5QkFBeUIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSWxQLE1BQU0sT0FBTyxtQkFBbUI7SUFDNUI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQStCLEVBQUUsU0FBaUI7UUFDakUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFOUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQStCLEVBQUUsU0FBaUI7UUFDdEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSyxJQUFrQyxDQUFDLFFBQVEsS0FB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TUFBTSxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQXFCLEVBQUUsTUFBbUI7SUFDN0UsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM1RSxDQUFDO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlVGltZVV0aWwgfSBmcm9tICcuLi9kYXRlLWNvbW1vbi91dGlsL2RhdGUtdGltZS51dGlsJztcbmltcG9ydCB7IEVudGl0eVR5cGUsIEZpZWxkVHlwZSB9IGZyb20gJy4uL2dyaWRzL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBHcmlkQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nT3BlcmF0aW9uLCBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZCwgSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQsIElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZCwgSWd4RmlsdGVyaW5nT3BlcmFuZCwgSWd4TnVtYmVyRmlsdGVyaW5nT3BlcmFuZCwgSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZCwgSWd4VGltZUZpbHRlcmluZ09wZXJhbmQgfSBmcm9tICcuL2ZpbHRlcmluZy1jb25kaXRpb24nO1xuaW1wb3J0IHsgSUZpbHRlcmluZ0V4cHJlc3Npb24gfSBmcm9tICcuL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRXhwcmVzc2lvblRyZWUsIElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfSBmcm9tICcuL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcblxuZXhwb3J0IGNsYXNzIEV4cHJlc3Npb25zVHJlZVV0aWwge1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGZpbHRlcmluZyBleHByZXNzaW9uIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBwcm92aWRlZCB0cmVlIGFuZCBmaWVsZE5hbWUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBmaWx0ZXJpbmdFeHByZXNzaW9uID0gRXhwcmVzc2lvbnNUcmVlVXRpbC5maW5kKGdyaWRFeHByZXNzaW9uVHJlZSwgJ0NvbHVtbiBGaWVsZCcpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZmluZCh0cmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBmaWVsZE5hbWU6IHN0cmluZyk6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfCBJRmlsdGVyaW5nRXhwcmVzc2lvbiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maW5kSW5kZXgodHJlZSwgZmllbGROYW1lKTtcblxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRyZWUuZmlsdGVyaW5nT3BlcmFuZHNbaW5kZXhdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpbHRlcmluZyBleHByZXNzaW9uIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBwcm92aWRlZCB0cmVlIGFuZCBmaWVsZE5hbWUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBmaWx0ZXJpbmdFeHByZXNzaW9uSW5kZXggPSBFeHByZXNzaW9uc1RyZWVVdGlsLmZpbmRJbmRleChncmlkRXhwcmVzc2lvblRyZWUsICdDb2x1bW4gRmllbGQnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZpbmRJbmRleCh0cmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBmaWVsZE5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZXhwciA9IHRyZWUuZmlsdGVyaW5nT3BlcmFuZHNbaV07XG4gICAgICAgICAgICBpZiAoKGV4cHIgYXMgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSkub3BlcmF0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlRm9yQ29sdW1uKGV4cHIgYXMgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgZmllbGROYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChleHByIGFzIElGaWx0ZXJpbmdFeHByZXNzaW9uKS5maWVsZE5hbWUgPT09IGZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgaXNGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWVGb3JDb2x1bW4oZXhwcmVzc2lvbnNUcmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZXhwcmVzc2lvbnNUcmVlLmZpZWxkTmFtZSA9PT0gZmllbGROYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgZXhwciBvZiBleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMpIHtcbiAgICAgICAgICAgIGlmICgoZXhwciBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKS5vcGVyYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWVGb3JDb2x1bW4oZXhwciBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgoZXhwciBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbikuZmllbGROYW1lID09PSBmaWVsZE5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlY3JlYXRlcyB0aGUgc2VhcmNoIHZhbHVlIGZvciBhIGdpdmVuIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgVGhlIHNlYXJjaCB2YWx1ZSB0byByZWNyZWF0ZS5cbiAqIEBwYXJhbSBkYXRhVHlwZSBUaGUgZGF0YSB0eXBlIG9mIHRoZSBmaWVsZC5cbiAqIEByZXR1cm5zIFRoZSByZWNyZWF0ZWQgc2VhcmNoIHZhbHVlLlxuICovXG5mdW5jdGlvbiByZWNyZWF0ZVNlYXJjaFZhbHVlKHNlYXJjaFZhbHVlOiBhbnksIGRhdGFUeXBlOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHNlYXJjaFZhbHVlO1xuICAgIH1cbiAgICAvLyBJbiBFU0YsIHZhbHVlcyBhcmUgc3RvcmVkIGFzIGEgU2V0LlxuICAgIC8vIFRob3NlIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIGFuIGFycmF5IGJlZm9yZSByZXR1cm5pbmcgc3RyaW5nIGluIHRoZSBzdHJpbmdpZnlDYWxsYmFja1xuICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGNvbnZlcnQgdGhvc2UgYmFjayB0byBTZXRcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWFyY2hWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoc2VhcmNoVmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoKGRhdGFUeXBlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2RhdGUnKSB8fCBkYXRhVHlwZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCd0aW1lJykpICYmICEoc2VhcmNoVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICByZXR1cm4gRGF0ZVRpbWVVdGlsLnBhcnNlSXNvRGF0ZShzZWFyY2hWYWx1ZSkgPz8gc2VhcmNoVmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlYXJjaFZhbHVlO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpbHRlcmluZyBsb2dpYyBmdW5jdGlvbiBmb3IgYSBnaXZlbiBkYXRhVHlwZSBhbmQgY29uZGl0aW9uIChjb250YWlucywgZ3JlYXRlclRoYW4sIGV0Yy4pXG4gKiBAcGFyYW0gZGF0YVR5cGUgVGhlIGRhdGEgdHlwZSBvZiB0aGUgZmllbGQuXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZmlsdGVyaW5nIGNvbmRpdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBmaWx0ZXJpbmcgbG9naWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGdldEZpbHRlcmluZ0NvbmRpdGlvbihkYXRhVHlwZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBJRmlsdGVyaW5nT3BlcmF0aW9uIHtcbiAgICBsZXQgZmlsdGVyczogSWd4RmlsdGVyaW5nT3BlcmFuZDtcbiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICBmaWx0ZXJzID0gSWd4Qm9vbGVhbkZpbHRlcmluZ09wZXJhbmQuaW5zdGFuY2UoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5OdW1iZXI6XG4gICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkN1cnJlbmN5OlxuICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5QZXJjZW50OlxuICAgICAgICAgICAgZmlsdGVycyA9IElneE51bWJlckZpbHRlcmluZ09wZXJhbmQuaW5zdGFuY2UoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlOlxuICAgICAgICAgICAgZmlsdGVycyA9IElneERhdGVGaWx0ZXJpbmdPcGVyYW5kLmluc3RhbmNlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuVGltZTpcbiAgICAgICAgICAgIGZpbHRlcnMgPSBJZ3hUaW1lRmlsdGVyaW5nT3BlcmFuZC5pbnN0YW5jZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGVUaW1lOlxuICAgICAgICAgICAgZmlsdGVycyA9IElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZC5pbnN0YW5jZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLlN0cmluZzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGZpbHRlcnMgPSBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLmluc3RhbmNlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcnMuY29uZGl0aW9uKG5hbWUpO1xufVxuXG4vKipcbiAqIFJlY3JlYXRlcyB0aGUgSUZpbHRlcmluZ09wZXJhdGlvbiBmb3IgYSBnaXZlbiBleHByZXNzaW9uLlxuICogSWYgdGhlIGBsb2dpY2AgaXMgYWxyZWFkeSBwb3B1bGF0ZWQgLSBpdCB3aWxsIHJldHVybiB0aGUgb3JpZ2luYWwgSUZpbHRlcmluZ09wZXJhdGlvblxuICogb2YgdGhlIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgZXhwcmVzc2lvbiBmb3Igd2hpY2ggdG8gcmVzb2x2ZSB0aGUgSUZpbHRlcmluZ09wZXJhdGlvbi5cbiAqIEBwYXJhbSBkYXRhVHlwZSBUaGUgZGF0YSB0eXBlIG9mIHRoZSBmaWVsZC5cbiAqIEByZXR1cm5zIFRoZSBJRmlsdGVyaW5nT3BlcmF0aW9uIGZvciB0aGUgZ2l2ZW4gZXhwcmVzc2lvbi5cbiAqL1xuZnVuY3Rpb24gcmVjcmVhdGVPcGVyYXRvckZyb21EYXRhVHlwZShleHByZXNzaW9uOiBJRmlsdGVyaW5nRXhwcmVzc2lvbiwgZGF0YVR5cGU6IHN0cmluZyk6IElGaWx0ZXJpbmdPcGVyYXRpb24ge1xuICAgIGlmICghZXhwcmVzc2lvbi5jb25kaXRpb24/LmxvZ2ljKSB7XG4gICAgICAgIHJldHVybiBnZXRGaWx0ZXJpbmdDb25kaXRpb24oZGF0YVR5cGUsIGV4cHJlc3Npb24uY29uZGl0aW9uTmFtZSB8fCBleHByZXNzaW9uLmNvbmRpdGlvbj8ubmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4cHJlc3Npb24uY29uZGl0aW9uO1xufVxuXG4vKipcbiAqIFJlY3JlYXRlcyBhbiBleHByZXNzaW9uIGZyb20gdGhlIGdpdmVuIGZpZWxkcyBieSBhcHBseWluZyB0aGUgY29ycmVjdCBvcGVyYW5kc1xuICogYW5kIGFkanVzdGluZyB0aGUgc2VhcmNoIHZhbHVlIHRvIGJlIHRoZSBjb3JyZWN0IHR5cGUuXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgZXhwcmVzc2lvbiB0byByZWNyZWF0ZS5cbiAqIEBwYXJhbSBmaWVsZHMgQW4gYXJyYXkgb2YgZmllbGRzIHRvIHVzZSBmb3IgcmVjcmVhdGluZyB0aGUgZXhwcmVzc2lvbi5cbiAqIEByZXR1cm5zIFRoZSByZWNyZWF0ZWQgZXhwcmVzc2lvbi5cbiAqL1xuZnVuY3Rpb24gcmVjcmVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb246IElGaWx0ZXJpbmdFeHByZXNzaW9uLCBmaWVsZHM6IEZpZWxkVHlwZVtdKTogSUZpbHRlcmluZ0V4cHJlc3Npb24ge1xuICAgIGNvbnN0IGZpZWxkID0gZmllbGRzPy5maW5kKGYgPT4gZi5maWVsZCA9PT0gZXhwcmVzc2lvbi5maWVsZE5hbWUpO1xuXG4gICAgaWYgKGZpZWxkICYmICFleHByZXNzaW9uLmNvbmRpdGlvbj8ubG9naWMpIHtcbiAgICAgICAgaWYgKCFmaWVsZC5maWx0ZXJzKSB7XG4gICAgICAgICAgICBleHByZXNzaW9uLmNvbmRpdGlvbiA9IHJlY3JlYXRlT3BlcmF0b3JGcm9tRGF0YVR5cGUoZXhwcmVzc2lvbiwgZmllbGQuZGF0YVR5cGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXhwcmVzc2lvbi5jb25kaXRpb24gPSBmaWVsZC5maWx0ZXJzLmNvbmRpdGlvbihleHByZXNzaW9uLmNvbmRpdGlvbk5hbWUgfHwgZXhwcmVzc2lvbi5jb25kaXRpb24/Lm5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFleHByZXNzaW9uLmNvbmRpdGlvbk5hbWUpIHtcbiAgICAgICAgZXhwcmVzc2lvbi5jb25kaXRpb25OYW1lID0gZXhwcmVzc2lvbi5jb25kaXRpb24/Lm5hbWU7XG4gICAgfVxuXG4gICAgZXhwcmVzc2lvbi5zZWFyY2hWYWwgPSByZWNyZWF0ZVNlYXJjaFZhbHVlKGV4cHJlc3Npb24uc2VhcmNoVmFsLCBmaWVsZD8uZGF0YVR5cGUpO1xuXG4gICAgcmV0dXJuIGV4cHJlc3Npb247XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBlbnRyeSBpcyBhbiBJRXhwcmVzc2lvblRyZWUuXG4gKiBAcGFyYW0gZW50cnkgVGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZW50cnkgaXMgYW4gSUV4cHJlc3Npb25UcmVlLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RyZWUoZW50cnk6IElFeHByZXNzaW9uVHJlZSB8IElGaWx0ZXJpbmdFeHByZXNzaW9uKTogZW50cnkgaXMgSUV4cHJlc3Npb25UcmVlIHtcbiAgICByZXR1cm4gJ29wZXJhdG9yJyBpbiBlbnRyeTtcbn1cblxuLyoqXG4gKiBSZWNyZWF0ZXMgdGhlIHRyZWUgZnJvbSBhIGdpdmVuIGFycmF5IG9mIGVudGl0aWVzIGJ5IGFwcGx5aW5nIHRoZSBjb3JyZWN0IG9wZXJhbmRzXG4gKiBmb3IgZWFjaCBleHByZXNzaW9uIGFuZCBhZGp1c3RpbmcgdGhlIHNlYXJjaCB2YWx1ZXMgdG8gYmUgdGhlIGNvcnJlY3QgdHlwZS5cbiAqIEBwYXJhbSB0cmVlIFRoZSBleHByZXNzaW9uIHRyZWUgdG8gcmVjcmVhdGUuXG4gKiBAcGFyYW0gZW50aXRpZXMgQW4gYXJyYXkgb2YgZW50aXRpZXMgdG8gdXNlIGZvciByZWNyZWF0aW5nIHRoZSB0cmVlLlxuICogQHJldHVybnMgVGhlIHJlY3JlYXRlZCBleHByZXNzaW9uIHRyZWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNyZWF0ZVRyZWUodHJlZTogSUV4cHJlc3Npb25UcmVlLCBlbnRpdGllczogRW50aXR5VHlwZVtdKTogSUV4cHJlc3Npb25UcmVlIHtcbiAgICBjb25zdCBlbnRpdHkgPSBlbnRpdGllcy5maW5kKGUgPT4gZS5uYW1lID09PSB0cmVlLmVudGl0eSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyZWUuZmlsdGVyaW5nT3BlcmFuZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgb3BlcmFuZCA9IHRyZWUuZmlsdGVyaW5nT3BlcmFuZHNbaV07XG4gICAgICAgIGlmIChpc1RyZWUob3BlcmFuZCkpIHtcbiAgICAgICAgICAgIHRyZWUuZmlsdGVyaW5nT3BlcmFuZHNbaV0gPSByZWNyZWF0ZVRyZWUob3BlcmFuZCwgZW50aXRpZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9wZXJhbmQuc2VhcmNoVHJlZSkge1xuICAgICAgICAgICAgICAgIG9wZXJhbmQuc2VhcmNoVHJlZSA9IHJlY3JlYXRlVHJlZShvcGVyYW5kLnNlYXJjaFRyZWUsIGVudGl0aWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyZWUuZmlsdGVyaW5nT3BlcmFuZHNbaV0gPSByZWNyZWF0ZUV4cHJlc3Npb24ob3BlcmFuZCwgZW50aXR5Py5maWVsZHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyZWU7XG59XG5cbi8qKlxuICogUmVjcmVhdGVzIHRoZSB0cmVlIGZyb20gYSBnaXZlbiBhcnJheSBvZiBmaWVsZHMgYnkgYXBwbHlpbmcgdGhlIGNvcnJlY3Qgb3BlcmFuZHMuXG4gKiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgYHJlY3JlYXRlVHJlZWAgaWYgdGhlcmUgd2lsbCBiZSBtdWx0aXBsZSBlbnRpdGllcyBpbiB0aGUgdHJlZVxuICogd2l0aCBwb3RlbnRpYWxseSBjb2xsaWRpbmcgZmllbGQgbmFtZXMuXG4gKiBAcGFyYW0gdHJlZSBUaGUgZXhwcmVzc2lvbiB0cmVlIHRvIHJlY3JlYXRlLlxuICogQHBhcmFtIGZpZWxkcyBBbiBhcnJheSBvZiBmaWVsZHMgdG8gdXNlIGZvciByZWNyZWF0aW5nIHRoZSB0cmVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjcmVhdGVUcmVlRnJvbUZpZWxkcyh0cmVlOiBJRXhwcmVzc2lvblRyZWUsIGZpZWxkczogRmllbGRUeXBlW10pOiBJRXhwcmVzc2lvblRyZWUge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBvcGVyYW5kID0gdHJlZS5maWx0ZXJpbmdPcGVyYW5kc1tpXTtcbiAgICAgICAgaWYgKGlzVHJlZShvcGVyYW5kKSkge1xuICAgICAgICAgICAgdHJlZS5maWx0ZXJpbmdPcGVyYW5kc1tpXSA9IHJlY3JlYXRlVHJlZUZyb21GaWVsZHMob3BlcmFuZCwgZmllbGRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvcGVyYW5kLnNlYXJjaFRyZWUpIHtcbiAgICAgICAgICAgICAgICBvcGVyYW5kLnNlYXJjaFRyZWUgPSByZWNyZWF0ZVRyZWVGcm9tRmllbGRzKG9wZXJhbmQuc2VhcmNoVHJlZSwgZmllbGRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyZWUuZmlsdGVyaW5nT3BlcmFuZHNbaV0gPSByZWNyZWF0ZUV4cHJlc3Npb24ob3BlcmFuZCwgZmllbGRzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cmVlO1xufVxuIl19
|
|
@@ -68,4 +68,4 @@ export class FilteringExpressionsTree {
|
|
|
68
68
|
return ExpressionsTreeUtil.findIndex(this, fieldName);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLWV4cHJlc3Npb25zLXRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELHFCQUFxQjtBQUNyQixNQUFNLENBQU4sSUFBWSw0QkFHWDtBQUhELFdBQVksNEJBQTRCO0lBQ3BDLHFGQUFPLENBQUE7SUFDUCx1RkFBUSxDQUFBO0FBQ1osQ0FBQyxFQUhXLDRCQUE0QixLQUE1Qiw0QkFBNEIsUUFHdkM7QUEyQkQsb0JBQW9CO0FBQ3BCLHdCQUF3QjtBQUN4QixNQUFNLE9BQU8sd0JBQXdCO0lBMEZqQyxZQUFZLFFBQXdCLEVBQUUsU0FBa0IsRUFBRSxNQUFlLEVBQUUsWUFBdUI7UUF4RmxHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBbUJHO1FBQ0ksc0JBQWlCLEdBQXlELEVBQUUsQ0FBQztRQXFFaEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQXlDO1FBQ3pELE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQzVHLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLElBQUksQ0FBQyxTQUFpQjtRQUN6QixPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksU0FBUyxDQUFDLFNBQWlCO1FBQzlCLE9BQU8sbUJBQW1CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJpbmdMb2dpYywgSUZpbHRlcmluZ0V4cHJlc3Npb24gfSBmcm9tICcuL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRXhwcmVzc2lvbnNUcmVlVXRpbCB9IGZyb20gJy4vZXhwcmVzc2lvbnMtdHJlZS11dGlsJztcblxuLyogbXVzdENvZXJjZVRvSW50ICovXG5leHBvcnQgZW51bSBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWVUeXBlIHtcbiAgICBSZWd1bGFyLFxuICAgIEFkdmFuY2VkXG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJRXhwcmVzc2lvblRyZWUge1xuICAgIGZpbHRlcmluZ09wZXJhbmRzOiAoSUV4cHJlc3Npb25UcmVlIHwgSUZpbHRlcmluZ0V4cHJlc3Npb24pW107XG4gICAgb3BlcmF0b3I6IEZpbHRlcmluZ0xvZ2ljO1xuICAgIGZpZWxkTmFtZT86IHN0cmluZztcbiAgICBlbnRpdHk/OiBzdHJpbmc7XG4gICAgcmV0dXJuRmllbGRzPzogc3RyaW5nW107XG59XG5cbi8qIG1hcnNoYWxCeVZhbHVlICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSBleHRlbmRzIElCYXNlRXZlbnRBcmdzLCBJRXhwcmVzc2lvblRyZWUge1xuICAgIGZpbHRlcmluZ09wZXJhbmRzOiAoSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8IElGaWx0ZXJpbmdFeHByZXNzaW9uKVtdO1xuICAgIC8qIGFsdGVybmF0ZU5hbWU6IHRyZWVUeXBlICovXG4gICAgdHlwZT86IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDE4LjIuMC4gVXNlIGBFeHByZXNzaW9uc1RyZWVVdGlsLmZpbmRgIGluc3RlYWQuXG4gICAgICovXG4gICAgZmluZChmaWVsZE5hbWU6IHN0cmluZyk6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfCBJRmlsdGVyaW5nRXhwcmVzc2lvbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIGluIHZlcnNpb24gMTguMi4wLiBVc2UgYEV4cHJlc3Npb25zVHJlZVV0aWwuZmluZEluZGV4YCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGZpbmRJbmRleChmaWVsZE5hbWU6IHN0cmluZyk6IG51bWJlcjtcbn1cblxuLyogbWFyc2hhbEJ5VmFsdWUgKi9cbi8qIGpzb25BUElQbGFpbk9iamVjdCAqL1xuZXhwb3J0IGNsYXNzIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSBpbXBsZW1lbnRzIElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUge1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBmaWx0ZXJpbmcgb3BlcmFuZHMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGdyaWRFeHByZXNzaW9uc1RyZWUgPSBuZXcgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKEZpbHRlcmluZ0xvZ2ljLkFuZCk7XG4gICAgICogY29uc3QgZXhwcmVzc2lvbiA9IFtcbiAgICAgKiB7XG4gICAgICogICBjb25kaXRpb246IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuaW5zdGFuY2UoKS5jb25kaXRpb24oJ2NvbnRhaW5zJyksXG4gICAgICogICBmaWVsZE5hbWU6ICdDb2x1bW4gRmllbGQnLFxuICAgICAqICAgc2VhcmNoVmFsOiAnVmFsdWUnLFxuICAgICAqICAgaWdub3JlQ2FzZTogZmFsc2VcbiAgICAgKiB9XTtcbiAgICAgKiBncmlkRXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLnB1c2goZXhwcmVzc2lvbik7XG4gICAgICogdGhpcy5ncmlkLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSA9IGdyaWRFeHByZXNzaW9uc1RyZWU7XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBmaWx0ZXJpbmdPcGVyYW5kcyA9IGdyaWRFeHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHM7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlXG4gICAgICovXG4gICAgcHVibGljIGZpbHRlcmluZ09wZXJhbmRzOiAoSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8IElGaWx0ZXJpbmdFeHByZXNzaW9uKVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIG9wZXJhdG9yLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBncmlkRXhwcmVzc2lvbnNUcmVlLm9wZXJhdG9yID0gRmlsdGVyaW5nTG9naWMuQW5kO1xuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgb3BlcmF0b3IgPSBncmlkRXhwcmVzc2lvbnNUcmVlLm9wZXJhdG9yO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZVxuICAgICAqL1xuICAgIHB1YmxpYyBvcGVyYXRvcjogRmlsdGVyaW5nTG9naWM7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGZpZWxkIG5hbWUgb2YgdGhlIGNvbHVtbiB3aGVyZSB0aGUgZmlsdGVyaW5nIGV4cHJlc3Npb24gaXMgcGxhY2VkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBncmlkRXhwcmVzc2lvblRyZWUuZmllbGROYW1lID0gJ0NvbHVtbiBGaWVsZCc7XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjb2x1bW5GaWVsZCA9IGV4cHJlc3Npb25UcmVlLmZpZWxkTmFtZTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWVcbiAgICAgKi9cbiAgICBwdWJsaWMgZmllbGROYW1lPzogc3RyaW5nO1xuXG4gICAgLyogYWx0ZXJuYXRlTmFtZTogdHJlZVR5cGUgKi9cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHR5cGUgb2YgdGhlIGZpbHRlcmluZyBleHByZXNzaW9ucyB0cmVlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBncmlkRXhwcmVzc2lvblRyZWUudHlwZSA9IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5BZHZhbmNlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHR5cGUgPSBleHByZXNzaW9uVHJlZS50eXBlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZVxuICAgICAqL1xuICAgIHB1YmxpYyB0eXBlPzogRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlVHlwZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgZW50aXR5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBncmlkRXhwcmVzc2lvbnNUcmVlLmVudGl0eSA9ICdFbnRpdHkgQSc7XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBlbnRpdHkgPSBncmlkRXhwcmVzc2lvbnNUcmVlLmVudGl0eTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWVcbiAgICAgKi9cbiAgICBwdWJsaWMgZW50aXR5Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSByZXR1cm4gZmllbGRzLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBncmlkRXhwcmVzc2lvbnNUcmVlLnJldHVybkZpZWxkcyA9IFsnQ29sdW1uIEZpZWxkIDEnLCAnQ29sdW1uIEZpZWxkIDInXTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHJldHVybkZpZWxkcyA9IGdyaWRFeHByZXNzaW9uc1RyZWUucmV0dXJuRmllbGRzO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZVxuICAgICAqL1xuICAgIHB1YmxpYyByZXR1cm5GaWVsZHM/OiBzdHJpbmdbXTtcblxuICAgIGNvbnN0cnVjdG9yKG9wZXJhdG9yOiBGaWx0ZXJpbmdMb2dpYywgZmllbGROYW1lPzogc3RyaW5nLCBlbnRpdHk/OiBzdHJpbmcsIHJldHVybkZpZWxkcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG4gICAgICAgIHRoaXMucmV0dXJuRmllbGRzID0gcmV0dXJuRmllbGRzO1xuICAgICAgICB0aGlzLmZpZWxkTmFtZSA9IGZpZWxkTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgZmlsdGVyaW5nIGV4cHJlc3Npb25zIHRyZWUgaXMgZW1wdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXhwcmVzc2lvblRyZWUgZmlsdGVyaW5nIGV4cHJlc3Npb25zIHRyZWUuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBlbXB0eShleHByZXNzaW9uVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIWV4cHJlc3Npb25UcmVlIHx8ICFleHByZXNzaW9uVHJlZS5maWx0ZXJpbmdPcGVyYW5kcyB8fCAhZXhwcmVzc2lvblRyZWUuZmlsdGVyaW5nT3BlcmFuZHMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGZpbHRlcmluZyBleHByZXNzaW9uIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBwcm92aWRlZCBmaWVsZE5hbWUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBmaWx0ZXJpbmdFeHByZXNzaW9uID0gZ3JpZEV4cHJlc3Npb25UcmVlLmZpbmQoJ0NvbHVtbiBGaWVsZCcpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZVxuICAgICAqIEBkZXByZWNhdGVkIGluIHZlcnNpb24gMTguMi4wLiBVc2UgYEV4cHJlc3Npb25zVHJlZVV0aWwuZmluZGAgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmluZChmaWVsZE5hbWU6IHN0cmluZyk6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfCBJRmlsdGVyaW5nRXhwcmVzc2lvbiB7XG4gICAgICAgIHJldHVybiBFeHByZXNzaW9uc1RyZWVVdGlsLmZpbmQodGhpcywgZmllbGROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlsdGVyaW5nIGV4cHJlc3Npb24gZm9yIGEgY29sdW1uIHdpdGggdGhlIHByb3ZpZGVkIGZpZWxkTmFtZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGZpbHRlcmluZ0V4cHJlc3Npb25JbmRleCA9IGdyaWRFeHByZXNzaW9uVHJlZS5maW5kSW5kZXgoJ0NvbHVtbiBGaWVsZCcpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZVxuICAgICAqIEBkZXByZWNhdGVkIGluIHZlcnNpb24gMTguMi4wLiBVc2UgYEV4cHJlc3Npb25zVHJlZVV0aWwuZmluZEluZGV4YCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kSW5kZXgoZmllbGROYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gRXhwcmVzc2lvbnNUcmVlVXRpbC5maW5kSW5kZXgodGhpcywgZmllbGROYW1lKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -4,6 +4,7 @@ import { resolveNestedPath, parseDate, formatDate, formatCurrency } from '../cor
|
|
|
4
4
|
import { GridColumnDataType } from './data-util';
|
|
5
5
|
import { SortingDirection } from './sorting-strategy';
|
|
6
6
|
import { formatNumber, formatPercent, getLocaleCurrencyCode } from '@angular/common';
|
|
7
|
+
import { isTree } from './expressions-tree-util';
|
|
7
8
|
const DateType = 'date';
|
|
8
9
|
const DateTimeType = 'dateTime';
|
|
9
10
|
const TimeType = 'time';
|
|
@@ -26,7 +27,7 @@ export class BaseFilteringStrategy {
|
|
|
26
27
|
// protected
|
|
27
28
|
matchRecord(rec, expressions, grid) {
|
|
28
29
|
if (expressions) {
|
|
29
|
-
if (expressions
|
|
30
|
+
if (isTree(expressions)) {
|
|
30
31
|
const expressionsTree = expressions;
|
|
31
32
|
const operator = expressionsTree.operator;
|
|
32
33
|
let matchOperand;
|
|
@@ -188,4 +189,4 @@ export class FormattedValuesFilteringStrategy extends FilteringStrategy {
|
|
|
188
189
|
return !this.fields || this.fields.length === 0 || this.fields.some(f => f === column.field);
|
|
189
190
|
}
|
|
190
191
|
}
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBd0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sOEJBQThCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3JGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUN4QixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBRXhCLE1BQU0sT0FBTyxVQUFVO0lBQ1osTUFBTSxDQUFDLE1BQU0sQ0FBSSxJQUFTLEVBQUUsS0FBc0IsRUFBRSxJQUFlO1FBQ3RFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25HLENBQUM7Q0FDSjtBQWdCRCxnQkFBZ0I7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LFNBQVMsQ0FBQyxDQUFDO1FBRTlDLEtBQUssR0FBRyxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUUzRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztBQUVMLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxpQkFBaUI7SUFDbkU7Ozs7O09BS0c7SUFDSCxZQUFvQixNQUFpQjtRQUNqQyxLQUFLLEVBQUUsQ0FBQztRQURRLFdBQU0sR0FBTixNQUFNLENBQVc7SUFFckMsQ0FBQztJQUVrQix3QkFBd0IsQ0FBQyxNQUFrQjtRQUMxRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbHRlcmluZ0xvZ2ljLCBJRmlsdGVyaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4vZmlsdGVyaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4vZmlsdGVyaW5nLWV4cHJlc3Npb25zLXRyZWUnO1xuaW1wb3J0IHsgcmVzb2x2ZU5lc3RlZFBhdGgsIHBhcnNlRGF0ZSwgZm9ybWF0RGF0ZSwgZm9ybWF0Q3VycmVuY3kgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENvbHVtblR5cGUsIEdyaWRUeXBlIH0gZnJvbSAnLi4vZ3JpZHMvY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRDb2x1bW5EYXRhVHlwZSB9IGZyb20gJy4vZGF0YS11dGlsJztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyLCBmb3JtYXRQZXJjZW50LCBnZXRMb2NhbGVDdXJyZW5jeUNvZGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSUZpbHRlcmluZ1N0YXRlIH0gZnJvbSAnLi9maWx0ZXJpbmctc3RhdGUuaW50ZXJmYWNlJztcblxuY29uc3QgRGF0ZVR5cGUgPSAnZGF0ZSc7XG5jb25zdCBEYXRlVGltZVR5cGUgPSAnZGF0ZVRpbWUnO1xuY29uc3QgVGltZVR5cGUgPSAndGltZSc7XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJVdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIGZpbHRlcjxUPihkYXRhOiBUW10sIHN0YXRlOiBJRmlsdGVyaW5nU3RhdGUsIGdyaWQ/OiBHcmlkVHlwZSk6IFRbXSB7XG4gICAgICAgIGlmICghc3RhdGUuc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIHN0YXRlLnN0cmF0ZWd5ID0gbmV3IEZpbHRlcmluZ1N0cmF0ZWd5KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXRlLnN0cmF0ZWd5LmZpbHRlcihkYXRhLCBzdGF0ZS5leHByZXNzaW9uc1RyZWUsIHN0YXRlLmFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlLCBncmlkKTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZpbHRlcmluZ1N0cmF0ZWd5IHtcbiAgICBmaWx0ZXIoZGF0YTogYW55W10sIGV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgYWR2YW5jZWRFeHByZXNzaW9uc1RyZWU/OiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLFxuICAgICAgICBncmlkPzogR3JpZFR5cGUpOiBhbnlbXTtcbiAgICAvKiBjc1N1cHByZXNzICovXG4gICAgZ2V0RmlsdGVySXRlbXMoY29sdW1uOiBDb2x1bW5UeXBlLCB0cmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSA6IFByb21pc2U8SWd4RmlsdGVySXRlbVtdPjtcbn1cblxuLyogY3NTdXBwcmVzcyAqL1xuZXhwb3J0IGludGVyZmFjZSBJZ3hGaWx0ZXJJdGVtIHtcbiAgICB2YWx1ZTogYW55O1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogSWd4RmlsdGVySXRlbVtdO1xufVxuXG4vKiBjc1N1cHByZXNzICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZpbHRlcmluZ1N0cmF0ZWd5IGltcGxlbWVudHMgSUZpbHRlcmluZ1N0cmF0ZWd5ICB7XG4gICAgLy8gcHJvdGVjdGVkXG4gICAgcHVibGljIGZpbmRNYXRjaEJ5RXhwcmVzc2lvbihyZWM6IGFueSwgZXhwcjogSUZpbHRlcmluZ0V4cHJlc3Npb24sIGlzRGF0ZT86IGJvb2xlYW4sIGlzVGltZT86IGJvb2xlYW4sIGdyaWQ/OiBHcmlkVHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb25kID0gZXhwci5jb25kaXRpb247XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZ2V0RmllbGRWYWx1ZShyZWMsIGV4cHIuZmllbGROYW1lLCBpc0RhdGUsIGlzVGltZSwgZ3JpZCk7XG4gICAgICAgIHJldHVybiBjb25kLmxvZ2ljKHZhbCwgZXhwci5zZWFyY2hWYWwsIGV4cHIuaWdub3JlQ2FzZSk7XG4gICAgfVxuXG4gICAgLy8gcHJvdGVjdGVkXG4gICAgcHVibGljIG1hdGNoUmVjb3JkKHJlYzogYW55LCBleHByZXNzaW9uczogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8IElGaWx0ZXJpbmdFeHByZXNzaW9uLCBncmlkPzogR3JpZFR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGV4cHJlc3Npb25zKSB7XG4gICAgICAgICAgICBpZiAoZXhwcmVzc2lvbnMgaW5zdGFuY2VvZiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uc1RyZWUgPSBleHByZXNzaW9ucyBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yID0gZXhwcmVzc2lvbnNUcmVlLm9wZXJhdG9yIGFzIEZpbHRlcmluZ0xvZ2ljO1xuICAgICAgICAgICAgICAgIGxldCBtYXRjaE9wZXJhbmQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzICYmIGV4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcGVyYW5kIG9mIGV4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hPcGVyYW5kID0gdGhpcy5tYXRjaFJlY29yZChyZWMsIG9wZXJhbmQsIGdyaWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgZG9lcyBub3QgbWF0Y2ggYW5kIHRoZSBmaWx0ZXJpbmcgbG9naWMgaXMgQW5kXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoT3BlcmFuZCAmJiBvcGVyYXRvciA9PT0gRmlsdGVyaW5nTG9naWMuQW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBtYXRjaGVzIGFuZCB0aGUgZmlsdGVyaW5nIGxvZ2ljIGlzIE9yXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hPcGVyYW5kICYmIG9wZXJhdG9yID09PSBGaWx0ZXJpbmdMb2dpYy5Pcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoT3BlcmFuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25zIGFzIElGaWx0ZXJpbmdFeHByZXNzaW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGdyaWQgJiYgZ3JpZC5nZXRDb2x1bW5CeU5hbWUoZXhwcmVzc2lvbi5maWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRGF0ZSA9IGNvbHVtbiA/IGNvbHVtbi5kYXRhVHlwZSA9PT0gRGF0ZVR5cGUgfHwgY29sdW1uLmRhdGFUeXBlID09PSBEYXRlVGltZVR5cGUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1RpbWUgPSBjb2x1bW4gPyBjb2x1bW4uZGF0YVR5cGUgPT09IFRpbWVUeXBlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZE1hdGNoQnlFeHByZXNzaW9uKHJlYywgZXhwcmVzc2lvbiwgaXNEYXRlLCBpc1RpbWUsIGdyaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbHRlckl0ZW1zKGNvbHVtbjogQ29sdW1uVHlwZSwgdHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSk6IFByb21pc2U8SWd4RmlsdGVySXRlbVtdPiB7XG5cbiAgICAgICAgbGV0IGRhdGEgPSBjb2x1bW4uZ3JpZC5ncmlkQVBJLmZpbHRlckRhdGFCeUV4cHJlc3Npb25zKHRyZWUpO1xuICAgICAgICBkYXRhID0gY29sdW1uLmdyaWQuZ3JpZEFQSS5zb3J0RGF0YUJ5RXhwcmVzc2lvbnMoZGF0YSxcbiAgICAgICAgICAgIFt7IGZpZWxkTmFtZTogY29sdW1uLmZpZWxkLCBkaXI6IFNvcnRpbmdEaXJlY3Rpb24uQXNjLCBpZ25vcmVDYXNlOiBjb2x1bW4uc29ydGluZ0lnbm9yZUNhc2UgfV0pO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbkZpZWxkID0gY29sdW1uLmZpZWxkO1xuICAgICAgICBsZXQgZmlsdGVySXRlbXM6IElneEZpbHRlckl0ZW1bXSA9IGRhdGEubWFwKHJlY29yZCA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSByZXNvbHZlTmVzdGVkUGF0aChyZWNvcmQsIGNvbHVtbkZpZWxkKTtcbiAgICAgICAgICAgIGNvbnN0IGFwcGx5Rm9ybWF0dGVyID0gY29sdW1uLmZvcm1hdHRlciAmJiB0aGlzLnNob3VsZEZvcm1hdEZpbHRlclZhbHVlcyhjb2x1bW4pO1xuXG4gICAgICAgICAgICB2YWx1ZSA9IGFwcGx5Rm9ybWF0dGVyID9cbiAgICAgICAgICAgICAgICBjb2x1bW4uZm9ybWF0dGVyKHZhbHVlLCByZWNvcmQpIDpcbiAgICAgICAgICAgICAgICB2YWx1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRGaWx0ZXJJdGVtTGFiZWwoY29sdW1uLCB2YWx1ZSwgIWFwcGx5Rm9ybWF0dGVyLCByZWNvcmQpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgZmlsdGVySXRlbXMgPSB0aGlzLmdldFVuaXF1ZUZpbHRlckl0ZW1zKGNvbHVtbiwgZmlsdGVySXRlbXMpO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmlsdGVySXRlbXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWx0ZXJJdGVtTGFiZWwoY29sdW1uOiBDb2x1bW5UeXBlLCB2YWx1ZTogYW55LCBhcHBseUZvcm1hdHRlcjogYm9vbGVhbiwgZGF0YTogYW55KSB7XG4gICAgICAgIGlmIChjb2x1bW4uZm9ybWF0dGVyKSB7XG4gICAgICAgICAgICBpZiAoYXBwbHlGb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uLmZvcm1hdHRlcih2YWx1ZSwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRpc3BsYXksIGZvcm1hdCwgZGlnaXRzSW5mbywgY3VycmVuY3lDb2RlLCB0aW1lem9uZSB9ID0gY29sdW1uLnBpcGVBcmdzO1xuICAgICAgICBjb25zdCBsb2NhbGUgPSBjb2x1bW4uZ3JpZC5sb2NhbGU7XG5cbiAgICAgICAgc3dpdGNoIChjb2x1bW4uZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGU6XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlVGltZTpcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdERhdGUodmFsdWUsIGZvcm1hdCwgbG9jYWxlLCB0aW1lem9uZSk7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5DdXJyZW5jeTpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3kodmFsdWUsIGN1cnJlbmN5Q29kZSB8fCBnZXRMb2NhbGVDdXJyZW5jeUNvZGUobG9jYWxlKSwgZGlzcGxheSwgZGlnaXRzSW5mbywgbG9jYWxlKTtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLk51bWJlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKHZhbHVlLCBsb2NhbGUsIGRpZ2l0c0luZm8pO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuUGVyY2VudDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0UGVyY2VudCh2YWx1ZSwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFVuaXF1ZUZpbHRlckl0ZW1zKGNvbHVtbjogQ29sdW1uVHlwZSwgZmlsdGVySXRlbXM6IElneEZpbHRlckl0ZW1bXSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFVuaXF1ZVZhbHVlcyA9IGZpbHRlckl0ZW1zLnJlZHVjZSgobWFwLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBsZXQga2V5ID0gaXRlbS52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLlN0cmluZyAmJiBjb2x1bW4uZmlsdGVyaW5nSWdub3JlQ2FzZSkge1xuICAgICAgICAgICAgICAgIGtleSA9IGtleT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlVGltZSkge1xuICAgICAgICAgICAgICAgIGtleSA9IGl0ZW0udmFsdWU/LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IGtleSA/IG5ldyBEYXRlKGtleSkgOiBrZXk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLlRpbWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0ga2V5ID8gbmV3IERhdGUoa2V5KSA6IGtleTtcbiAgICAgICAgICAgICAgICBrZXkgPSBkYXRlID8gbmV3IERhdGUoKS5zZXRIb3VycyhkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSkgOiBrZXk7XG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IGtleSA/IG5ldyBEYXRlKGtleSkgOiBrZXk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLkRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0ga2V5ID8gbmV3IERhdGUoa2V5KSA6IGtleTtcbiAgICAgICAgICAgICAgICBrZXkgPSBkYXRlID8gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKS50b0lTT1N0cmluZygpIDoga2V5O1xuICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUgPSBkYXRlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbWFwLmhhcyhrZXkpID8gbWFwIDogbWFwLnNldChrZXksIGl0ZW0pXG4gICAgICAgIH0sIG5ldyBNYXAoKSk7XG4gICAgICAgIGNvbnN0IHVuaXF1ZVZhbHVlcyA9IEFycmF5LmZyb20oZmlsdGVyZWRVbmlxdWVWYWx1ZXMudmFsdWVzKCkpO1xuXG4gICAgICAgIHJldHVybiB1bmlxdWVWYWx1ZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNob3VsZEZvcm1hdEZpbHRlclZhbHVlcyhfY29sdW1uOiBDb2x1bW5UeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZmlsdGVyKGRhdGE6IGFueVtdLCBleHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsXG4gICAgICAgIGFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlPzogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgZ3JpZD86IEdyaWRUeXBlKTogYW55W107XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0RmllbGRWYWx1ZShyZWM6IGFueSwgZmllbGROYW1lOiBzdHJpbmcsIGlzRGF0ZT86IGJvb2xlYW4sIGlzVGltZT86IGJvb2xlYW4sIGdyaWQ/OiBHcmlkVHlwZSk6IGFueTtcbn1cblxuLyogY3NTdXBwcmVzcyAqL1xuZXhwb3J0IGNsYXNzIE5vb3BGaWx0ZXJpbmdTdHJhdGVneSBleHRlbmRzIEJhc2VGaWx0ZXJpbmdTdHJhdGVneSB7XG4gICAgcHJvdGVjdGVkIGdldEZpZWxkVmFsdWUocmVjOiBhbnksIF9maWVsZE5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcmVjO1xuICAgIH1cbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE5vb3BGaWx0ZXJpbmdTdHJhdGVneSA9IG51bGw7XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IE5vb3BGaWx0ZXJpbmdTdHJhdGVneSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsdGVyKGRhdGE6IGFueVtdLCBfOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBfXz86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgRmlsdGVyaW5nU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlRmlsdGVyaW5nU3RyYXRlZ3kge1xuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogRmlsdGVyaW5nU3RyYXRlZ3kgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyB0aGlzKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXI8VD4oZGF0YTogVFtdLCBleHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIGFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLFxuICAgICAgICBncmlkOiBHcmlkVHlwZSk6IFRbXSB7XG4gICAgICAgIGxldCBpO1xuICAgICAgICBsZXQgcmVjO1xuICAgICAgICBjb25zdCBsZW4gPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgY29uc3QgcmVzOiBUW10gPSBbXTtcblxuICAgICAgICBpZiAoKEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5lbXB0eShleHByZXNzaW9uc1RyZWUpICYmIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5lbXB0eShhZHZhbmNlZEV4cHJlc3Npb25zVHJlZSkpIHx8ICFsZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgcmVjID0gZGF0YVtpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoUmVjb3JkKHJlYywgZXhwcmVzc2lvbnNUcmVlLCBncmlkKSAmJiB0aGlzLm1hdGNoUmVjb3JkKHJlYywgYWR2YW5jZWRFeHByZXNzaW9uc1RyZWUsIGdyaWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2gocmVjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlKHJlYzogYW55LCBmaWVsZE5hbWU6IHN0cmluZywgaXNEYXRlID0gZmFsc2UsIGlzVGltZSA9IGZhbHNlLCBncmlkPzogR3JpZFR5cGUpOiBhbnkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBncmlkPy5nZXRDb2x1bW5CeU5hbWUoZmllbGROYW1lKTtcbiAgICAgICAgbGV0IHZhbHVlID0gcmVzb2x2ZU5lc3RlZFBhdGgocmVjLCBmaWVsZE5hbWUpO1xuXG4gICAgICAgIHZhbHVlID0gY29sdW1uPy5mb3JtYXR0ZXIgJiYgdGhpcy5zaG91bGRGb3JtYXRGaWx0ZXJWYWx1ZXMoY29sdW1uKSA/XG4gICAgICAgICAgICBjb2x1bW4uZm9ybWF0dGVyKHZhbHVlLCByZWMpIDpcbiAgICAgICAgICAgIHZhbHVlICYmIChpc0RhdGUgfHwgaXNUaW1lKSA/IHBhcnNlRGF0ZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEZvcm1hdHRlZFZhbHVlc0ZpbHRlcmluZ1N0cmF0ZWd5IGV4dGVuZHMgRmlsdGVyaW5nU3RyYXRlZ3kge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgRm9ybWF0dGVkVmFsdWVzRmlsdGVyaW5nU3RyYXRlZ3kuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmllbGRzIEFuIGFycmF5IG9mIGNvbHVtbiBmaWVsZCBuYW1lcyB0aGF0IHNob3VsZCBiZSBmb3JtYXR0ZWQuXG4gICAgICogSWYgb21pdHRlZCB0aGUgdmFsdWVzIG9mIGFsbCBjb2x1bW5zIHdoaWNoIGhhcyBmb3JtYXR0ZXIgd2lsbCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWVsZHM/OiBzdHJpbmdbXSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRGb3JtYXRGaWx0ZXJWYWx1ZXMoY29sdW1uOiBDb2x1bW5UeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5maWVsZHMgfHwgdGhpcy5maWVsZHMubGVuZ3RoID09PSAwIHx8IHRoaXMuZmllbGRzLnNvbWUoZiA9PiBmID09PSBjb2x1bW4uZmllbGQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBd0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sOEJBQThCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFDeEIsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDO0FBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUV4QixNQUFNLE9BQU8sVUFBVTtJQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUksSUFBUyxFQUFFLEtBQXNCLEVBQUUsSUFBZTtRQUN0RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxJ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QztRQUNoRCxJQUFJLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFOUMsS0FBSyxHQUFHLE1BQU0sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QixLQUFLLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRTNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O0FBRUwsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLGlCQUFpQjtJQUNuRTs7Ozs7T0FLRztJQUNILFlBQW9CLE1BQWlCO1FBQ2pDLEtBQUssRUFBRSxDQUFDO1FBRFEsV0FBTSxHQUFOLE1BQU0sQ0FBVztJQUVyQyxDQUFDO0lBRWtCLHdCQUF3QixDQUFDLE1BQWtCO1FBQzFELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyaW5nTG9naWMsIElGaWx0ZXJpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi9maWx0ZXJpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIH0gZnJvbSAnLi9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyByZXNvbHZlTmVzdGVkUGF0aCwgcGFyc2VEYXRlLCBmb3JtYXREYXRlLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQ29sdW1uVHlwZSwgR3JpZFR5cGUgfSBmcm9tICcuLi9ncmlkcy9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3JpZENvbHVtbkRhdGFUeXBlIH0gZnJvbSAnLi9kYXRhLXV0aWwnO1xuaW1wb3J0IHsgU29ydGluZ0RpcmVjdGlvbiB9IGZyb20gJy4vc29ydGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBlcmNlbnQsIGdldExvY2FsZUN1cnJlbmN5Q29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJRmlsdGVyaW5nU3RhdGUgfSBmcm9tICcuL2ZpbHRlcmluZy1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNUcmVlIH0gZnJvbSAnLi9leHByZXNzaW9ucy10cmVlLXV0aWwnO1xuXG5jb25zdCBEYXRlVHlwZSA9ICdkYXRlJztcbmNvbnN0IERhdGVUaW1lVHlwZSA9ICdkYXRlVGltZSc7XG5jb25zdCBUaW1lVHlwZSA9ICd0aW1lJztcblxuZXhwb3J0IGNsYXNzIEZpbHRlclV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgZmlsdGVyPFQ+KGRhdGE6IFRbXSwgc3RhdGU6IElGaWx0ZXJpbmdTdGF0ZSwgZ3JpZD86IEdyaWRUeXBlKTogVFtdIHtcbiAgICAgICAgaWYgKCFzdGF0ZS5zdHJhdGVneSkge1xuICAgICAgICAgICAgc3RhdGUuc3RyYXRlZ3kgPSBuZXcgRmlsdGVyaW5nU3RyYXRlZ3koKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGUuc3RyYXRlZ3kuZmlsdGVyKGRhdGEsIHN0YXRlLmV4cHJlc3Npb25zVHJlZSwgc3RhdGUuYWR2YW5jZWRFeHByZXNzaW9uc1RyZWUsIGdyaWQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyaW5nU3RyYXRlZ3kge1xuICAgIGZpbHRlcihkYXRhOiBhbnlbXSwgZXhwcmVzc2lvbnNUcmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBhZHZhbmNlZEV4cHJlc3Npb25zVHJlZT86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsXG4gICAgICAgIGdyaWQ/OiBHcmlkVHlwZSk6IGFueVtdO1xuICAgIC8qIGNzU3VwcHJlc3MgKi9cbiAgICBnZXRGaWx0ZXJJdGVtcyhjb2x1bW46IENvbHVtblR5cGUsIHRyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpIDogUHJvbWlzZTxJZ3hGaWx0ZXJJdGVtW10+O1xufVxuXG4vKiBjc1N1cHByZXNzICovXG5leHBvcnQgaW50ZXJmYWNlIElneEZpbHRlckl0ZW0ge1xuICAgIHZhbHVlOiBhbnk7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBJZ3hGaWx0ZXJJdGVtW107XG59XG5cbi8qIGNzU3VwcHJlc3MgKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlsdGVyaW5nU3RyYXRlZ3kgaW1wbGVtZW50cyBJRmlsdGVyaW5nU3RyYXRlZ3kgIHtcbiAgICAvLyBwcm90ZWN0ZWRcbiAgICBwdWJsaWMgZmluZE1hdGNoQnlFeHByZXNzaW9uKHJlYzogYW55LCBleHByOiBJRmlsdGVyaW5nRXhwcmVzc2lvbiwgaXNEYXRlPzogYm9vbGVhbiwgaXNUaW1lPzogYm9vbGVhbiwgZ3JpZD86IEdyaWRUeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNvbmQgPSBleHByLmNvbmRpdGlvbjtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5nZXRGaWVsZFZhbHVlKHJlYywgZXhwci5maWVsZE5hbWUsIGlzRGF0ZSwgaXNUaW1lLCBncmlkKTtcbiAgICAgICAgcmV0dXJuIGNvbmQubG9naWModmFsLCBleHByLnNlYXJjaFZhbCwgZXhwci5pZ25vcmVDYXNlKTtcbiAgICB9XG5cbiAgICAvLyBwcm90ZWN0ZWRcbiAgICBwdWJsaWMgbWF0Y2hSZWNvcmQocmVjOiBhbnksIGV4cHJlc3Npb25zOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIHwgSUZpbHRlcmluZ0V4cHJlc3Npb24sIGdyaWQ/OiBHcmlkVHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZXhwcmVzc2lvbnMpIHtcbiAgICAgICAgICAgIGlmIChpc1RyZWUoZXhwcmVzc2lvbnMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbnNUcmVlID0gZXhwcmVzc2lvbnM7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSBleHByZXNzaW9uc1RyZWUub3BlcmF0b3IgYXMgRmlsdGVyaW5nTG9naWM7XG4gICAgICAgICAgICAgICAgbGV0IG1hdGNoT3BlcmFuZDtcblxuICAgICAgICAgICAgICAgIGlmIChleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMgJiYgZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9wZXJhbmQgb2YgZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE9wZXJhbmQgPSB0aGlzLm1hdGNoUmVjb3JkKHJlYywgb3BlcmFuZCwgZ3JpZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiBmYWxzZSBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBkb2VzIG5vdCBtYXRjaCBhbmQgdGhlIGZpbHRlcmluZyBsb2dpYyBpcyBBbmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2hPcGVyYW5kICYmIG9wZXJhdG9yID09PSBGaWx0ZXJpbmdMb2dpYy5BbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBvcGVyYW5kIG1hdGNoZXMgYW5kIHRoZSBmaWx0ZXJpbmcgbG9naWMgaXMgT3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaE9wZXJhbmQgJiYgb3BlcmF0b3IgPT09IEZpbHRlcmluZ0xvZ2ljLk9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hPcGVyYW5kO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gZXhwcmVzc2lvbnM7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gZ3JpZCAmJiBncmlkLmdldENvbHVtbkJ5TmFtZShleHByZXNzaW9uLmZpZWxkTmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNEYXRlID0gY29sdW1uID8gY29sdW1uLmRhdGFUeXBlID09PSBEYXRlVHlwZSB8fCBjb2x1bW4uZGF0YVR5cGUgPT09IERhdGVUaW1lVHlwZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzVGltZSA9IGNvbHVtbiA/IGNvbHVtbi5kYXRhVHlwZSA9PT0gVGltZVR5cGUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTWF0Y2hCeUV4cHJlc3Npb24ocmVjLCBleHByZXNzaW9uLCBpc0RhdGUsIGlzVGltZSwgZ3JpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVySXRlbXMoY29sdW1uOiBDb2x1bW5UeXBlLCB0cmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKTogUHJvbWlzZTxJZ3hGaWx0ZXJJdGVtW10+IHtcblxuICAgICAgICBsZXQgZGF0YSA9IGNvbHVtbi5ncmlkLmdyaWRBUEkuZmlsdGVyRGF0YUJ5RXhwcmVzc2lvbnModHJlZSk7XG4gICAgICAgIGRhdGEgPSBjb2x1bW4uZ3JpZC5ncmlkQVBJLnNvcnREYXRhQnlFeHByZXNzaW9ucyhkYXRhLFxuICAgICAgICAgICAgW3sgZmllbGROYW1lOiBjb2x1bW4uZmllbGQsIGRpcjogU29ydGluZ0RpcmVjdGlvbi5Bc2MsIGlnbm9yZUNhc2U6IGNvbHVtbi5zb3J0aW5nSWdub3JlQ2FzZSB9XSk7XG5cbiAgICAgICAgY29uc3QgY29sdW1uRmllbGQgPSBjb2x1bW4uZmllbGQ7XG4gICAgICAgIGxldCBmaWx0ZXJJdGVtczogSWd4RmlsdGVySXRlbVtdID0gZGF0YS5tYXAocmVjb3JkID0+IHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlc29sdmVOZXN0ZWRQYXRoKHJlY29yZCwgY29sdW1uRmllbGQpO1xuICAgICAgICAgICAgY29uc3QgYXBwbHlGb3JtYXR0ZXIgPSBjb2x1bW4uZm9ybWF0dGVyICYmIHRoaXMuc2hvdWxkRm9ybWF0RmlsdGVyVmFsdWVzKGNvbHVtbik7XG5cbiAgICAgICAgICAgIHZhbHVlID0gYXBwbHlGb3JtYXR0ZXIgP1xuICAgICAgICAgICAgICAgIGNvbHVtbi5mb3JtYXR0ZXIodmFsdWUsIHJlY29yZCkgOlxuICAgICAgICAgICAgICAgIHZhbHVlO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldEZpbHRlckl0ZW1MYWJlbChjb2x1bW4sIHZhbHVlLCAhYXBwbHlGb3JtYXR0ZXIsIHJlY29yZClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICBmaWx0ZXJJdGVtcyA9IHRoaXMuZ2V0VW5pcXVlRmlsdGVySXRlbXMoY29sdW1uLCBmaWx0ZXJJdGVtcyk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmaWx0ZXJJdGVtcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZpbHRlckl0ZW1MYWJlbChjb2x1bW46IENvbHVtblR5cGUsIHZhbHVlOiBhbnksIGFwcGx5Rm9ybWF0dGVyOiBib29sZWFuLCBkYXRhOiBhbnkpIHtcbiAgICAgICAgaWYgKGNvbHVtbi5mb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgIGlmIChhcHBseUZvcm1hdHRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW4uZm9ybWF0dGVyKHZhbHVlLCBkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgZGlzcGxheSwgZm9ybWF0LCBkaWdpdHNJbmZvLCBjdXJyZW5jeUNvZGUsIHRpbWV6b25lIH0gPSBjb2x1bW4ucGlwZUFyZ3M7XG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IGNvbHVtbi5ncmlkLmxvY2FsZTtcblxuICAgICAgICBzd2l0Y2ggKGNvbHVtbi5kYXRhVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZTpcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGVUaW1lOlxuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuVGltZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZSh2YWx1ZSwgZm9ybWF0LCBsb2NhbGUsIHRpbWV6b25lKTtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkN1cnJlbmN5OlxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRDdXJyZW5jeSh2YWx1ZSwgY3VycmVuY3lDb2RlIHx8IGdldExvY2FsZUN1cnJlbmN5Q29kZShsb2NhbGUpLCBkaXNwbGF5LCBkaWdpdHNJbmZvLCBsb2NhbGUpO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXIodmFsdWUsIGxvY2FsZSwgZGlnaXRzSW5mbyk7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5QZXJjZW50OlxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRQZXJjZW50KHZhbHVlLCBsb2NhbGUsIGRpZ2l0c0luZm8pO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VW5pcXVlRmlsdGVySXRlbXMoY29sdW1uOiBDb2x1bW5UeXBlLCBmaWx0ZXJJdGVtczogSWd4RmlsdGVySXRlbVtdKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkVW5pcXVlVmFsdWVzID0gZmlsdGVySXRlbXMucmVkdWNlKChtYXAsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGxldCBrZXkgPSBpdGVtLnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuU3RyaW5nICYmIGNvbHVtbi5maWx0ZXJpbmdJZ25vcmVDYXNlKSB7XG4gICAgICAgICAgICAgICAga2V5ID0ga2V5Py50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLkRhdGVUaW1lKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gaXRlbS52YWx1ZT8udG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBpdGVtLnZhbHVlID0ga2V5ID8gbmV3IERhdGUoa2V5KSA6IGtleTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuVGltZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBrZXkgPyBuZXcgRGF0ZShrZXkpIDoga2V5O1xuICAgICAgICAgICAgICAgIGtleSA9IGRhdGUgPyBuZXcgRGF0ZSgpLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpKSA6IGtleTtcbiAgICAgICAgICAgICAgICBpdGVtLnZhbHVlID0ga2V5ID8gbmV3IERhdGUoa2V5KSA6IGtleTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBrZXkgPyBuZXcgRGF0ZShrZXkpIDoga2V5O1xuICAgICAgICAgICAgICAgIGtleSA9IGRhdGUgPyBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLnRvSVNPU3RyaW5nKCkgOiBrZXk7XG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IGRhdGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBtYXAuaGFzKGtleSkgPyBtYXAgOiBtYXAuc2V0KGtleSwgaXRlbSlcbiAgICAgICAgfSwgbmV3IE1hcCgpKTtcbiAgICAgICAgY29uc3QgdW5pcXVlVmFsdWVzID0gQXJyYXkuZnJvbShmaWx0ZXJlZFVuaXF1ZVZhbHVlcy52YWx1ZXMoKSk7XG5cbiAgICAgICAgcmV0dXJuIHVuaXF1ZVZhbHVlcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2hvdWxkRm9ybWF0RmlsdGVyVmFsdWVzKF9jb2x1bW46IENvbHVtblR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBmaWx0ZXIoZGF0YTogYW55W10sIGV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSxcbiAgICAgICAgYWR2YW5jZWRFeHByZXNzaW9uc1RyZWU/OiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBncmlkPzogR3JpZFR5cGUpOiBhbnlbXTtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRGaWVsZFZhbHVlKHJlYzogYW55LCBmaWVsZE5hbWU6IHN0cmluZywgaXNEYXRlPzogYm9vbGVhbiwgaXNUaW1lPzogYm9vbGVhbiwgZ3JpZD86IEdyaWRUeXBlKTogYW55O1xufVxuXG4vKiBjc1N1cHByZXNzICovXG5leHBvcnQgY2xhc3MgTm9vcEZpbHRlcmluZ1N0cmF0ZWd5IGV4dGVuZHMgQmFzZUZpbHRlcmluZ1N0cmF0ZWd5IHtcbiAgICBwcm90ZWN0ZWQgZ2V0RmllbGRWYWx1ZShyZWM6IGFueSwgX2ZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiByZWM7XG4gICAgfVxuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogTm9vcEZpbHRlcmluZ1N0cmF0ZWd5ID0gbnVsbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgTm9vcEZpbHRlcmluZ1N0cmF0ZWd5KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXIoZGF0YTogYW55W10sIF86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIF9fPzogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJpbmdTdHJhdGVneSBleHRlbmRzIEJhc2VGaWx0ZXJpbmdTdHJhdGVneSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBGaWx0ZXJpbmdTdHJhdGVneSA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IHRoaXMoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbHRlcjxUPihkYXRhOiBUW10sIGV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgYWR2YW5jZWRFeHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsXG4gICAgICAgIGdyaWQ6IEdyaWRUeXBlKTogVFtdIHtcbiAgICAgICAgbGV0IGk7XG4gICAgICAgIGxldCByZWM7XG4gICAgICAgIGNvbnN0IGxlbiA9IGRhdGEubGVuZ3RoO1xuICAgICAgICBjb25zdCByZXM6IFRbXSA9IFtdO1xuXG4gICAgICAgIGlmICgoRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLmVtcHR5KGV4cHJlc3Npb25zVHJlZSkgJiYgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLmVtcHR5KGFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlKSkgfHwgIWxlbikge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICByZWMgPSBkYXRhW2ldO1xuICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2hSZWNvcmQocmVjLCBleHByZXNzaW9uc1RyZWUsIGdyaWQpICYmIHRoaXMubWF0Y2hSZWNvcmQocmVjLCBhZHZhbmNlZEV4cHJlc3Npb25zVHJlZSwgZ3JpZCkpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaChyZWMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZpZWxkVmFsdWUocmVjOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nLCBpc0RhdGUgPSBmYWxzZSwgaXNUaW1lID0gZmFsc2UsIGdyaWQ/OiBHcmlkVHlwZSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGdyaWQ/LmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xuICAgICAgICBsZXQgdmFsdWUgPSByZXNvbHZlTmVzdGVkUGF0aChyZWMsIGZpZWxkTmFtZSk7XG5cbiAgICAgICAgdmFsdWUgPSBjb2x1bW4/LmZvcm1hdHRlciAmJiB0aGlzLnNob3VsZEZvcm1hdEZpbHRlclZhbHVlcyhjb2x1bW4pID9cbiAgICAgICAgICAgIGNvbHVtbi5mb3JtYXR0ZXIodmFsdWUsIHJlYykgOlxuICAgICAgICAgICAgdmFsdWUgJiYgKGlzRGF0ZSB8fCBpc1RpbWUpID8gcGFyc2VEYXRlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRm9ybWF0dGVkVmFsdWVzRmlsdGVyaW5nU3RyYXRlZ3kgZXh0ZW5kcyBGaWx0ZXJpbmdTdHJhdGVneSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBGb3JtYXR0ZWRWYWx1ZXNGaWx0ZXJpbmdTdHJhdGVneS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZHMgQW4gYXJyYXkgb2YgY29sdW1uIGZpZWxkIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBJZiBvbWl0dGVkIHRoZSB2YWx1ZXMgb2YgYWxsIGNvbHVtbnMgd2hpY2ggaGFzIGZvcm1hdHRlciB3aWxsIGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpZWxkcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNob3VsZEZvcm1hdEZpbHRlclZhbHVlcyhjb2x1bW46IENvbHVtblR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmZpZWxkcyB8fCB0aGlzLmZpZWxkcy5sZW5ndGggPT09IDAgfHwgdGhpcy5maWVsZHMuc29tZShmID0+IGYgPT09IGNvbHVtbi5maWVsZCk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isTree } from '../../../data-operations/expressions-tree-util';
|
|
2
2
|
/**
|
|
3
3
|
* @hidden @internal
|
|
4
4
|
*/
|
|
@@ -33,10 +33,9 @@ function generateExpressionsListRecursive(expressions, operator, expressionsUIs)
|
|
|
33
33
|
if (!expressions) {
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
|
-
if (expressions
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
generateExpressionsListRecursive(operand, expressionsTree.operator, expressionsUIs);
|
|
36
|
+
if (isTree(expressions)) {
|
|
37
|
+
for (const operand of expressions.filteringOperands) {
|
|
38
|
+
generateExpressionsListRecursive(operand, expressions.operator, expressionsUIs);
|
|
40
39
|
}
|
|
41
40
|
if (expressionsUIs.length) {
|
|
42
41
|
expressionsUIs[expressionsUIs.length - 1].afterOperator = operator;
|
|
@@ -53,4 +52,4 @@ function generateExpressionsListRecursive(expressions, operator, expressionsUIs)
|
|
|
53
52
|
expressionsUIs.push(exprUI);
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2ZpbHRlcmluZy9leGNlbC1zdHlsZS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBSXhFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFBM0I7UUFNVyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFHNUIsQ0FBQztDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUlXLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsY0FBUyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0NBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0NBSXpCO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFdBQTZELEVBQ2pHLFFBQXdCLEVBQ3hCLGNBQThCO0lBQzlCLGdDQUFnQyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFeEUseUdBQXlHO0lBQ3pHLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDbkUsQ0FBQztBQUNMLENBQUM7QUFHRCxTQUFTLGdDQUFnQyxDQUFDLFdBQTZELEVBQ25HLFFBQXdCLEVBQ3hCLGNBQThCO0lBQzlCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNmLE9BQU87SUFDWCxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUN0QixLQUFLLE1BQU0sT0FBTyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xELGdDQUFnQyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBQ3ZFLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNKLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7UUFDaEMsTUFBTSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFFaEMsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNyRCxDQUFDO1FBRUQsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzVHJlZSB9IGZyb20gJy4uLy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9leHByZXNzaW9ucy10cmVlLXV0aWwnO1xuaW1wb3J0IHsgRmlsdGVyaW5nTG9naWMsIElGaWx0ZXJpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcblxuLyoqXG4gKiBAaGlkZGVuIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgRmlsdGVyTGlzdEl0ZW0ge1xuICAgIHB1YmxpYyB2YWx1ZTogYW55O1xuICAgIHB1YmxpYyBsYWJlbDogYW55O1xuICAgIHB1YmxpYyBpc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBpbmRldGVybWluYXRlOiBib29sZWFuO1xuICAgIHB1YmxpYyBpc0ZpbHRlcmVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBpc1NwZWNpYWwgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNCbGFua3MgPSBmYWxzZTtcbiAgICBwdWJsaWMgY2hpbGRyZW4/OiBBcnJheTxGaWx0ZXJMaXN0SXRlbT47XG4gICAgcHVibGljIHBhcmVudD86IEZpbHRlckxpc3RJdGVtO1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNsYXNzIEV4cHJlc3Npb25VSSB7XG4gICAgcHVibGljIGV4cHJlc3Npb246IElGaWx0ZXJpbmdFeHByZXNzaW9uO1xuICAgIHB1YmxpYyBiZWZvcmVPcGVyYXRvcjogRmlsdGVyaW5nTG9naWM7XG4gICAgcHVibGljIGFmdGVyT3BlcmF0b3I6IEZpbHRlcmluZ0xvZ2ljO1xuICAgIHB1YmxpYyBpc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgcHVibGljIGlzVmlzaWJsZSA9IHRydWU7XG59XG5cbi8qKlxuICogQGhpZGRlbiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIEFjdGl2ZUVsZW1lbnQge1xuICAgIHB1YmxpYyBpbmRleDogbnVtYmVyO1xuICAgIHB1YmxpYyBpZDogc3RyaW5nO1xuICAgIHB1YmxpYyBjaGVja2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVFeHByZXNzaW9uc0xpc3QoZXhwcmVzc2lvbnM6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfCBJRmlsdGVyaW5nRXhwcmVzc2lvbixcbiAgICBvcGVyYXRvcjogRmlsdGVyaW5nTG9naWMsXG4gICAgZXhwcmVzc2lvbnNVSXM6IEV4cHJlc3Npb25VSVtdKTogdm9pZCB7XG4gICAgZ2VuZXJhdGVFeHByZXNzaW9uc0xpc3RSZWN1cnNpdmUoZXhwcmVzc2lvbnMsIG9wZXJhdG9yLCBleHByZXNzaW9uc1VJcyk7XG5cbiAgICAvLyBUaGUgYmVmb3JlT3BlcmF0b3Igb2YgdGhlIGZpcnN0IGV4cHJlc3Npb24gYW5kIHRoZSBhZnRlck9wZXJhdG9yIG9mIHRoZSBsYXN0IGV4cHJlc3Npb24gc2hvdWxkIGJlIG51bGxcbiAgICBpZiAoZXhwcmVzc2lvbnNVSXMubGVuZ3RoKSB7XG4gICAgICAgIGV4cHJlc3Npb25zVUlzW2V4cHJlc3Npb25zVUlzLmxlbmd0aCAtIDFdLmFmdGVyT3BlcmF0b3IgPSBudWxsO1xuICAgIH1cbn1cblxuXG5mdW5jdGlvbiBnZW5lcmF0ZUV4cHJlc3Npb25zTGlzdFJlY3Vyc2l2ZShleHByZXNzaW9uczogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8IElGaWx0ZXJpbmdFeHByZXNzaW9uLFxuICAgIG9wZXJhdG9yOiBGaWx0ZXJpbmdMb2dpYyxcbiAgICBleHByZXNzaW9uc1VJczogRXhwcmVzc2lvblVJW10pOiB2b2lkIHtcbiAgICBpZiAoIWV4cHJlc3Npb25zKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNUcmVlKGV4cHJlc3Npb25zKSkge1xuICAgICAgICBmb3IgKGNvbnN0IG9wZXJhbmQgb2YgZXhwcmVzc2lvbnMuZmlsdGVyaW5nT3BlcmFuZHMpIHtcbiAgICAgICAgICAgIGdlbmVyYXRlRXhwcmVzc2lvbnNMaXN0UmVjdXJzaXZlKG9wZXJhbmQsIGV4cHJlc3Npb25zLm9wZXJhdG9yLCBleHByZXNzaW9uc1VJcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cHJlc3Npb25zVUlzLmxlbmd0aCkge1xuICAgICAgICAgICAgZXhwcmVzc2lvbnNVSXNbZXhwcmVzc2lvbnNVSXMubGVuZ3RoIC0gMV0uYWZ0ZXJPcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZXhwclVJID0gbmV3IEV4cHJlc3Npb25VSSgpO1xuICAgICAgICBleHByVUkuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25zO1xuICAgICAgICBleHByVUkuYWZ0ZXJPcGVyYXRvciA9IG9wZXJhdG9yO1xuXG4gICAgICAgIGNvbnN0IHByZXZFeHByVUkgPSBleHByZXNzaW9uc1VJc1tleHByZXNzaW9uc1VJcy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHByZXZFeHByVUkpIHtcbiAgICAgICAgICAgIGV4cHJVSS5iZWZvcmVPcGVyYXRvciA9IHByZXZFeHByVUkuYWZ0ZXJPcGVyYXRvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4cHJlc3Npb25zVUlzLnB1c2goZXhwclVJKTtcbiAgICB9XG59XG4iXX0=
|