occam-nominal 1.0.420 → 1.0.423
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/lib/element/assertion/contained.js +27 -76
- package/lib/element/assertion/schema.js +7 -13
- package/lib/element/assumption.js +1 -1
- package/lib/element/fact/step.js +17 -13
- package/lib/element/frame.js +3 -43
- package/lib/node/assertion/contained.js +1 -5
- package/lib/utilities/element.js +3 -14
- package/package.json +1 -1
- package/src/element/assertion/contained.js +23 -90
- package/src/element/assertion/schema.js +8 -16
- package/src/element/assumption.js +2 -2
- package/src/element/fact/step.js +16 -12
- package/src/element/frame.js +3 -62
- package/src/node/assertion/contained.js +1 -8
- package/src/utilities/element.js +1 -14
- package/lib/element/binding/goal.js +0 -145
- package/lib/element/binding.js +0 -156
- package/lib/element/judgement.js +0 -296
- package/src/element/binding/goal.js +0 -207
- package/src/element/binding.js +0 -221
- package/src/element/judgement.js +0 -362
|
@@ -24,19 +24,15 @@ function _interop_require_default(obj) {
|
|
|
24
24
|
}
|
|
25
25
|
const { breakPointFromJSON } = _occamlanguages.breakPointUtilities;
|
|
26
26
|
const _default = (0, _elements.define)(class ContainedAssertion extends _assertion.default {
|
|
27
|
-
constructor(context, string, node, breakPoint, term,
|
|
27
|
+
constructor(context, string, node, breakPoint, term, negated, statement){
|
|
28
28
|
super(context, string, node, breakPoint);
|
|
29
29
|
this.term = term;
|
|
30
|
-
this.frame = frame;
|
|
31
30
|
this.negated = negated;
|
|
32
31
|
this.statement = statement;
|
|
33
32
|
}
|
|
34
33
|
getTerm() {
|
|
35
34
|
return this.term;
|
|
36
35
|
}
|
|
37
|
-
getFrame() {
|
|
38
|
-
return this.frame;
|
|
39
|
-
}
|
|
40
36
|
isNegated() {
|
|
41
37
|
return this.negated;
|
|
42
38
|
}
|
|
@@ -59,10 +55,9 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
59
55
|
validates = continuation(containedAssertion, context);
|
|
60
56
|
} else {
|
|
61
57
|
assertion = this; ///
|
|
62
|
-
const validateTerm = this.validateTerm.bind(this),
|
|
58
|
+
const validateTerm = this.validateTerm.bind(this), validateStatement = this.validateStatement.bind(this);
|
|
63
59
|
validates = (0, _continuation.all)([
|
|
64
60
|
validateTerm,
|
|
65
|
-
validateFrame,
|
|
66
61
|
validateStatement
|
|
67
62
|
], state, context, (state, context)=>{
|
|
68
63
|
let validates;
|
|
@@ -89,56 +84,25 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
89
84
|
let termValidates;
|
|
90
85
|
const containedAssertionString = this.getString(); ///
|
|
91
86
|
context.trace(`Validating the '${containedAssertionString}' contained assertion's term...`);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
});
|
|
101
|
-
} else {
|
|
102
|
-
const termString = this.term.getString() ///
|
|
103
|
-
;
|
|
104
|
-
termValidates = false;
|
|
105
|
-
context.debug(`The '${termString}' term is not singular.`);
|
|
106
|
-
}
|
|
87
|
+
const termSingular = this.term.isSingular();
|
|
88
|
+
if (termSingular) {
|
|
89
|
+
termValidates = this.term.validate(state, context, (term, context)=>{
|
|
90
|
+
let validates;
|
|
91
|
+
this.term = term;
|
|
92
|
+
validates = continuation(state, context);
|
|
93
|
+
return validates;
|
|
94
|
+
});
|
|
107
95
|
} else {
|
|
108
|
-
|
|
96
|
+
const termString = this.term.getString() ///
|
|
97
|
+
;
|
|
98
|
+
termValidates = false;
|
|
99
|
+
context.debug(`The '${termString}' term is not singular.`);
|
|
109
100
|
}
|
|
110
101
|
if (termValidates) {
|
|
111
102
|
context.debug(`...validates the '${containedAssertionString}' contained assertion's term.`);
|
|
112
103
|
}
|
|
113
104
|
return termValidates;
|
|
114
105
|
}
|
|
115
|
-
validateFrame(state, context, continuation) {
|
|
116
|
-
let frameValidates;
|
|
117
|
-
const containedAssertionString = this.getString(); ///
|
|
118
|
-
context.trace(`Validating the '${containedAssertionString}' contained assertion's frame...`);
|
|
119
|
-
if (this.frame !== null) {
|
|
120
|
-
const frameSingular = this.frame.isSingular();
|
|
121
|
-
if (frameSingular) {
|
|
122
|
-
frameValidates = this.frame.validate(state, context, (frame, context)=>{
|
|
123
|
-
let validates;
|
|
124
|
-
this.frame = frame;
|
|
125
|
-
validates = continuation(state, context);
|
|
126
|
-
return validates;
|
|
127
|
-
});
|
|
128
|
-
} else {
|
|
129
|
-
const frameString = this.frame.getString() ///
|
|
130
|
-
;
|
|
131
|
-
frameValidates = false;
|
|
132
|
-
context.debug(`The '${frameString}' frame is not singular.`);
|
|
133
|
-
}
|
|
134
|
-
} else {
|
|
135
|
-
frameValidates = continuation(state, context);
|
|
136
|
-
}
|
|
137
|
-
if (frameValidates) {
|
|
138
|
-
context.debug(`...validates the '${containedAssertionString}' contained assertion's frame.`);
|
|
139
|
-
}
|
|
140
|
-
return frameValidates;
|
|
141
|
-
}
|
|
142
106
|
validateStatement(state, context, continuation) {
|
|
143
107
|
let statementValidates;
|
|
144
108
|
const containedAssertionString = this.getString(); ///
|
|
@@ -181,7 +145,7 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
181
145
|
if (derived) {
|
|
182
146
|
const containedAssertionString = this.getString(); ///
|
|
183
147
|
context.trace(`Validating the '${containedAssertionString}' derived contained assertion...`);
|
|
184
|
-
validatesWhenDerived = validateWhenDerived(this.term, this.
|
|
148
|
+
validatesWhenDerived = validateWhenDerived(this.term, this.statement, this.negated, context, (context)=>{
|
|
185
149
|
continuation(state, context);
|
|
186
150
|
});
|
|
187
151
|
if (validatesWhenDerived) {
|
|
@@ -194,8 +158,8 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
194
158
|
let unifiesIndependently = false;
|
|
195
159
|
const context = specificContext, containedAssertionString = this.getString(); ///
|
|
196
160
|
context.trace(`Unifying the '${containedAssertionString}' contained assertion independently...`);
|
|
197
|
-
const term = (0, _substitutions.termFromTermAndSubstitutions)(this.term, context),
|
|
198
|
-
validateWhenDerived(term,
|
|
161
|
+
const term = (0, _substitutions.termFromTermAndSubstitutions)(this.term, context), statement = (0, _substitutions.statementFromStatementAndSubstitutions)(this.statement, context);
|
|
162
|
+
validateWhenDerived(term, statement, this.negated, context, (context)=>{
|
|
199
163
|
let validatesWhenDerived;
|
|
200
164
|
unifiesIndependently = true;
|
|
201
165
|
validatesWhenDerived = true;
|
|
@@ -212,9 +176,9 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
212
176
|
const { name } = json;
|
|
213
177
|
if (this.name === name) {
|
|
214
178
|
(0, _context.instantiate)((context)=>{
|
|
215
|
-
const { string } = json, containedAssertionNode = (0, _instantiate.instantiateContainedAssertion)(string, context), node = containedAssertionNode, breakPoint = breakPointFromJSON(json), term = (0, _element.termFromContainedAssertionNode)(containedAssertionNode, context),
|
|
179
|
+
const { string } = json, containedAssertionNode = (0, _instantiate.instantiateContainedAssertion)(string, context), node = containedAssertionNode, breakPoint = breakPointFromJSON(json), term = (0, _element.termFromContainedAssertionNode)(containedAssertionNode, context), negated = (0, _element.negatedFromContainedAssertionNode)(containedAssertionNode, context), statement = (0, _element.statementFromContainedAssertionNode)(containedAssertionNode, context);
|
|
216
180
|
context = null;
|
|
217
|
-
containedAssertion = new ContainedAssertion(context, string, node, breakPoint, term,
|
|
181
|
+
containedAssertion = new ContainedAssertion(context, string, node, breakPoint, term, negated, statement);
|
|
218
182
|
}, context);
|
|
219
183
|
}
|
|
220
184
|
return containedAssertion;
|
|
@@ -224,27 +188,14 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
224
188
|
return containedAssertion;
|
|
225
189
|
}
|
|
226
190
|
});
|
|
227
|
-
function validateWhenDerived(term,
|
|
191
|
+
function validateWhenDerived(term, statement, negated, context, continuation) {
|
|
228
192
|
let validatesWhenDerived = false;
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
if (negated && !termContained) {
|
|
236
|
-
validatesWhenDerived = true;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
if (frame !== null) {
|
|
240
|
-
const frameContained = statement.isFrameContained(frame, context);
|
|
241
|
-
if (!negated && frameContained) {
|
|
242
|
-
validatesWhenDerived = true;
|
|
243
|
-
}
|
|
244
|
-
if (negated && !frameContained) {
|
|
245
|
-
validatesWhenDerived = true;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
193
|
+
const termContained = statement.isTermContained(term, context);
|
|
194
|
+
if (!negated && termContained) {
|
|
195
|
+
validatesWhenDerived = true;
|
|
196
|
+
}
|
|
197
|
+
if (negated && !termContained) {
|
|
198
|
+
validatesWhenDerived = true;
|
|
248
199
|
}
|
|
249
200
|
if (validatesWhenDerived) {
|
|
250
201
|
validatesWhenDerived = continuation(context);
|
|
@@ -252,4 +203,4 @@ function validateWhenDerived(term, frame, statement, negated, context, continuat
|
|
|
252
203
|
return validatesWhenDerived;
|
|
253
204
|
}
|
|
254
205
|
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIGV4aXN0cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250YWluZWRBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgICAgY29uc3QgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZVRlcm0sXG4gICAgICAgIHZhbGlkYXRlRnJhbWUsXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50XG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250YWluZWRBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcztcblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLi4uYCk7XG5cbiAgICBpZiAodGhpcy50ZXJtICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtU2luZ3VsYXIgPSB0aGlzLnRlcm0uaXNTaW5ndWxhcigpO1xuXG4gICAgICBpZiAodGVybVNpbmd1bGFyKSB7XG4gICAgICAgIHRlcm1WYWxpZGF0ZXMgPSB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpIC8vL1xuXG4gICAgICAgIHRlcm1WYWxpZGF0ZXMgPSBmYWxzZVxuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBub3Qgc2luZ3VsYXIuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlcm1WYWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVGcmFtZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IGZyYW1lVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIGZyYW1lLi4uYCk7XG5cbiAgICBpZiAodGhpcy5mcmFtZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZnJhbWVTaW5ndWxhciA9IHRoaXMuZnJhbWUuaXNTaW5ndWxhcigpO1xuXG4gICAgICBpZiAoZnJhbWVTaW5ndWxhcikge1xuICAgICAgICBmcmFtZVZhbGlkYXRlcyA9IHRoaXMuZnJhbWUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG5cbiAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuZnJhbWUuZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgICAgZnJhbWVWYWxpZGF0ZXMgPSBmYWxzZVxuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIGlzIG5vdCBzaW5ndWxhci5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZnJhbWVWYWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmIChmcmFtZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRTaW5ndWxhciA9IHRoaXMuc3RhdGVtZW50LmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgaXMgbm90IHNpbmd1bGFyLmApO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVjbGFyZWQpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVjbGFyZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQ7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5mcmFtZSwgdGhpcy5zdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBmcmFtZSA9IGZyYW1lRnJvbUZyYW1lQW5kU3Vic3RpdHV0aW9ucyh0aGlzLmZyYW1lLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIGZyYW1lLCBzdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZFxuXG4gICAgICB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IHRydWU7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICAgIH0pO1xuXG4gICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29udGFpbmVkQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29udGFpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgZnJhbWUgPSBmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBuZXcgQ29udGFpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBmcmFtZSwgc3RhdGVtZW50LCBuZWdhdGVkLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtQ29udGFpbmVkID0gc3RhdGVtZW50LmlzVGVybUNvbnRhaW5lZCh0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgaWYgKCFuZWdhdGVkICYmIHRlcm1Db250YWluZWQpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVnYXRlZCAmJiAhdGVybUNvbnRhaW5lZCkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyYW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmcmFtZUNvbnRhaW5lZCA9IHN0YXRlbWVudC5pc0ZyYW1lQ29udGFpbmVkKGZyYW1lLCBjb250ZXh0KTtcblxuICAgICAgaWYgKCFuZWdhdGVkICYmIGZyYW1lQ29udGFpbmVkKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5lZ2F0ZWQgJiYgIWZyYW1lQ29udGFpbmVkKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbn0iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnRhaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJmcmFtZSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiZ2V0RnJhbWUiLCJpc05lZ2F0ZWQiLCJnZXRTdGF0ZW1lbnQiLCJnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVGcmFtZSIsInZhbGlkYXRlU3RhdGVtZW50IiwiYWxsIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZXhpc3RzIiwiYWRkQXNzZXJ0aW9uIiwidGVybVZhbGlkYXRlcyIsInRlcm1TaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ0ZXJtU3RyaW5nIiwiZnJhbWVWYWxpZGF0ZXMiLCJmcmFtZVNpbmd1bGFyIiwiZnJhbWVTdHJpbmciLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJzdGF0ZW1lbnRTaW5ndWxhciIsInN0YXRlbWVudFN0cmluZyIsInZhbGlkYXRlc1doZW5EZWNsYXJlZCIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInVuaWZ5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidW5pZmllc0luZGVwZW5kZW50bHkiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiIsInRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImZyYW1lRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJ0ZXJtQ29udGFpbmVkIiwiaXNUZXJtQ29udGFpbmVkIiwiZnJhbWVDb250YWluZWQiLCJpc0ZyYW1lQ29udGFpbmVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFvQkE7OztlQUFBOzs7Z0NBbEJvQztrRUFFZDswQkFFQzt5QkFDSzs4QkFDQTt1QkFDVTs2QkFDUTsrQkFDdUU7eUJBS2pFOzs7Ozs7QUFFcEQsTUFBTSxFQUFFQSxrQkFBa0IsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFbEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLGtCQUFTO0lBQzlELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsU0FBUyxDQUFFO1FBQzlFLEtBQUssQ0FBQ1AsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLFVBQVU7UUFDUixPQUFPLElB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
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIGV4aXN0cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbnRhaW5lZEFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlVGVybSxcbiAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb25zdCB2YWxpZGF0ZVdoZW5EZWNsYXJlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVjbGFyZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGV4aXN0cyhbXG4gICAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAodGVybVNpbmd1bGFyKSB7XG4gICAgICB0ZXJtVmFsaWRhdGVzID0gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIHRlcm1WYWxpZGF0ZXMgPSBmYWxzZVxuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuICAgIH1cblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRTaW5ndWxhciA9IHRoaXMuc3RhdGVtZW50LmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgaXMgbm90IHNpbmd1bGFyLmApO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVjbGFyZWQpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVjbGFyZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQ7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5zdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkXG5cbiAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgfSk7XG5cbiAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXNJbmRlcGVuZGVudGx5KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb250YWluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb250YWluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBuZXcgQ29udGFpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHN0YXRlbWVudCwgbmVnYXRlZCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1Db250YWluZWQgPSBzdGF0ZW1lbnQuaXNUZXJtQ29udGFpbmVkKHRlcm0sIGNvbnRleHQpO1xuXG4gIGlmICghbmVnYXRlZCAmJiB0ZXJtQ29udGFpbmVkKSB7XG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG5lZ2F0ZWQgJiYgIXRlcm1Db250YWluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbn0iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnRhaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJuZWdhdGVkIiwic3RhdGVtZW50IiwiZ2V0VGVybSIsImlzTmVnYXRlZCIsImdldFN0YXRlbWVudCIsImdldENvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsInZhbGlkYXRlIiwic3RhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJjb250YWluZWRBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJjb250YWluZWRBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVGVybSIsImJpbmQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImFsbCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImV4aXN0cyIsImFkZEFzc2VydGlvbiIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFZhbGlkYXRlcyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidW5pZnlJbmRlcGVuZGVudGx5IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRhaW5lZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBb0JBOzs7ZUFBQTs7O2dDQWxCb0M7a0VBRWQ7MEJBRUM7eUJBQ0s7OEJBQ0E7dUJBQ1U7NkJBQ1E7K0JBQ3VFO3lCQUtqRTs7Ozs7O0FBRXBELE1BQU0sRUFBRUEsa0JBQWtCLEVBQUUsR0FBR0MsbUNBQW1CO01BRWxELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMkJBQTJCQyxrQkFBUztJQUM5RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxTQUFTLENBQUU7UUFDdkUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0gsT0FBTztJQUNyQjtJQUVBSSxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNILFNBQVM7SUFDdkI7SUFFQUksNEJBQTRCO1FBQzFCLE1BQU1SLE9BQU8sSUFBSSxDQUFDUyxPQUFPLElBQ25CQyx5QkFBeUJWLE1BQU8sR0FBRztRQUV6QyxPQUFPVTtJQUNUO0lBRUFDLFNBQVNDLEtBQUssRUFBRWQsT0FBTyxFQUFFZSxZQUFZLEVBQUU7UUFDckMsSUFBSUM7UUFFSixNQUFNQywyQkFBMkIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUV2RGxCLFFBQVFtQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0Is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
|
|
@@ -8,10 +8,11 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return _default;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _occamlanguages = require("occam-languages");
|
|
11
12
|
const _assertion = /*#__PURE__*/ _interop_require_default(require("../assertion"));
|
|
12
13
|
const _elements = /*#__PURE__*/ _interop_require_wildcard(require("../../elements"));
|
|
13
|
-
const _state = require("../../utilities/state");
|
|
14
14
|
const _continuation = require("../../utilities/continuation");
|
|
15
|
+
const _state = require("../../utilities/state");
|
|
15
16
|
function _interop_require_default(obj) {
|
|
16
17
|
return obj && obj.__esModule ? obj : {
|
|
17
18
|
default: obj
|
|
@@ -58,6 +59,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
58
59
|
}
|
|
59
60
|
return newObj;
|
|
60
61
|
}
|
|
62
|
+
const { asynchronousSome } = _occamlanguages.continuationUtilities;
|
|
61
63
|
const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.default {
|
|
62
64
|
constructor(context, string, node, breakPoint, frame, reference){
|
|
63
65
|
super(context, string, node, breakPoint);
|
|
@@ -159,20 +161,12 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
|
|
|
159
161
|
return referenceValidates;
|
|
160
162
|
}
|
|
161
163
|
unifyStep(step, context, continuation) {
|
|
162
|
-
let stepUnifies;
|
|
163
164
|
const schemas = context.getSchemas(), statement = step.getStatement(), schemaAssertion = this; ///
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
if (schemaUnifies) {
|
|
168
|
-
success = true;
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
return success;
|
|
172
|
-
}, context, (context)=>true);
|
|
173
|
-
return continuation(stepUnifies);
|
|
165
|
+
return asynchronousSome(schemas, (schema, continuation)=>{
|
|
166
|
+
return schema.unifyStatementAndSchemaAssertion(statement, schemaAssertion, context, continuation);
|
|
167
|
+
}, continuation);
|
|
174
168
|
}
|
|
175
169
|
static name = "SchemaAssertion";
|
|
176
170
|
});
|
|
177
171
|
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGFsbCwgc29tZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGZyYW1lLCByZWZlcmVuY2UpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBzY2hlbWFBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbnMoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldEFzc3VtcHRpb25zKCk7IH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyhjb250ZXh0KSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9ucyA9IFtdLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IEltcGxpY2l0QXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgICAgZmFjdHMuZm9yRWFjaCgoZmFjdCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24gPSBJbXBsaWNpdEFzc3VtcHRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KSA9PiB0cnVlKVxuICAgICAgICB9KTtcblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25zLnB1c2goaW1wbGljaXRBc3N1bXB0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25zO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlUmVmZXJlbmNlID0gdGhpcy52YWxpZGF0ZVJlZmVyZW5jZS5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZVxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUZyYW1lKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgZnJhbWVWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgZnJhbWUuLi5gKTtcblxuICAgIGZyYW1lVmFsaWRhdGVzID0gdGhpcy5mcmFtZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGZyYW1lLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoZnJhbWVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlUmVmZXJlbmNlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgcmVmZXJlbmNlVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgcmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy5yZWZlcmVuY2UudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChyZWZlcmVuY2UsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgcmVmZXJlbmNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVN0ZXAoc3RlcCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHN0ZXBVbmlmaWVzO1xuXG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBzdGVwVW5pZmllcyA9IHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgc2NoZW1hLnVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uKHN0YXRlbWVudCwgc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCAoc2NoZW1hVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoc2NoZW1hVW5pZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQpID0+IHRydWUpO1xuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwVW5pZmllcyk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2NoZW1hQXNzZXJ0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJTY2hlbWFBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJmcmFtZSIsInJlZmVyZW5jZSIsImdldEZyYW1lIiwiZ2V0UmVmZXJlbmNlIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsImVsZW1lbnRzIiwiZmFjdHMiLCJnZXRGYWN0cyIsImZvckVhY2giLCJmYWN0Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiZnJvbVN0YXRlbWVudCIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwicHVzaCIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsInNwZWNpZmljQ29udGV4dCIsInNjaGFtZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInNjaGFtZUFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVGcmFtZSIsImJpbmQiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsImFsbCIsImFkZEFzc2VydGlvbiIsImZyYW1lVmFsaWRhdGVzIiwicmVmZXJlbmNlVmFsaWRhdGVzIiwidW5pZnlTdGVwIiwic3RlcCIsInN0ZXBVbmlmaWVzIiwic2NoZW1hcyIsImdldFNjaGVtYXMiLCJzY2hlbWFBc3NlcnRpb24iLCJzb21lIiwic2NoZW1hIiwic3VjY2VzcyIsInVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uIiwic2NoZW1hVW5pZmllcyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVVBOzs7ZUFBQTs7O2tFQVJzQjtrRUFFRDt1QkFHRzs4QkFDRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFFMUIsV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyx3QkFBd0JDLGtCQUFTO0lBQzNELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsS0FBSyxFQUFFQyxTQUFTLENBQUU7UUFDL0QsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDRixLQUFLO0lBQ25CO0lBRUFHLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQ0YsU0FBUztJQUN2QjtJQUVBRyx5QkFBeUI7UUFDdkIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLHNCQUFzQlIsTUFBTyxHQUFHO1FB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
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgYWxsIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcblxuY29uc3QgeyBhc3luY2hyb25vdXNTb21lIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGZyYW1lLCByZWZlcmVuY2UpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBzY2hlbWFBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbnMoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldEFzc3VtcHRpb25zKCk7IH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyhjb250ZXh0KSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9ucyA9IFtdLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IEltcGxpY2l0QXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgICAgZmFjdHMuZm9yRWFjaCgoZmFjdCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24gPSBJbXBsaWNpdEFzc3VtcHRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KSA9PiB0cnVlKVxuICAgICAgICB9KTtcblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25zLnB1c2goaW1wbGljaXRBc3N1bXB0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25zO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlUmVmZXJlbmNlID0gdGhpcy52YWxpZGF0ZVJlZmVyZW5jZS5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZVxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUZyYW1lKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgZnJhbWVWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgZnJhbWUuLi5gKTtcblxuICAgIGZyYW1lVmFsaWRhdGVzID0gdGhpcy5mcmFtZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGZyYW1lLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoZnJhbWVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlUmVmZXJlbmNlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgcmVmZXJlbmNlVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgcmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy5yZWZlcmVuY2UudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChyZWZlcmVuY2UsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgcmVmZXJlbmNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVN0ZXAoc3RlcCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICByZXR1cm4gYXN5bmNocm9ub3VzU29tZShzY2hlbWFzLCAoc2NoZW1hLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIHJldHVybiBzY2hlbWEudW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24oc3RhdGVtZW50LCBzY2hlbWFBc3NlcnRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTY2hlbWFBc3NlcnRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImFzeW5jaHJvbm91c1NvbWUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJTY2hlbWFBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJmcmFtZSIsInJlZmVyZW5jZSIsImdldEZyYW1lIiwiZ2V0UmVmZXJlbmNlIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsImVsZW1lbnRzIiwiZmFjdHMiLCJnZXRGYWN0cyIsImZvckVhY2giLCJmYWN0Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiZnJvbVN0YXRlbWVudCIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwicHVzaCIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsInNwZWNpZmljQ29udGV4dCIsInNjaGFtZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInNjaGFtZUFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVGcmFtZSIsImJpbmQiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsImFsbCIsImFkZEFzc2VydGlvbiIsImZyYW1lVmFsaWRhdGVzIiwicmVmZXJlbmNlVmFsaWRhdGVzIiwidW5pZnlTdGVwIiwic3RlcCIsInNjaGVtYXMiLCJnZXRTY2hlbWFzIiwic2NoZW1hQXNzZXJ0aW9uIiwic2NoZW1hIiwidW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0Fac0M7a0VBRWhCO2tFQUVEOzhCQUVEO3VCQUVJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV4QixNQUFNLEVBQUVBLGdCQUFnQixFQUFFLEdBQUdDLHFDQUFxQjtNQUVsRCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHdCQUF3QkMsa0JBQVM7SUFDM0QsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxLQUFLLEVBQUVDLFNBQVMsQ0FBRTtRQUMvRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNGLEtBQUs7SUFDbkI7SUFFQUcsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLHlCQUF5QjtRQUN2QixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMsc0JBQXNCUixNQUFPLEdBQUc7UUFFdEMsT0FBT1E7SUFDVDtJQUVBQyxpQkFBaUI7UUFBRSxPQUFPLElBQUksQ0FB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
|
|
@@ -287,4 +287,4 @@ function statementFromAssumptionNode(assumptionNode, context) {
|
|
|
287
287
|
return statement;
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgam9pbiwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIHNvbWUsIGV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUFzc3VtcHRpb24gfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuXG5jb25zdCB7IGFzeW5jaHJvbm91c0JhY2t3YXJkc0V2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmdldFN0YXRlbWVudE5vZGUoKTsgfVxuXG4gIGlzQ29uZGl0aW9uYWwoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5pc0NvbmRpdGlvbmFsKCkgfVxuXG4gIGdldEFzc3VtcHRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBhc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhhc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgYXNzdW1wdGlvbk5vZGUgPSBhc3N1bXB0aW9uLmdldE5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBhc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBhc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgYXNzdW1wdGlvbk5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRBc3N1bXB0aW9uKGNvbnRleHQpIHtcbiAgICBjb25zdCBhc3N1bXB0aW9uTm9kZSA9IHRoaXMuZ2V0QXNzdW1wdGlvbk5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uID0gY29udGV4dC5maW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH1cblxuICBmaW5kRGVkdWNlZFN0YXRlbWVudChjb250ZXh0KSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5maW5kRGVkdWNlZFN0YXRlbWVudChjb250ZXh0KTsgfVxuXG4gIGZpbmRTdXBwb3NlZFN0YXRlbWVudHMoY29udGV4dCkgeyByZXR1cm4gdGhpcy5zdGF0ZW1lbnQuZmluZFN1cHBvc2VkU3RhdGVtZW50cyhjb250ZXh0KTsgfVxuXG4gIGZpbmRTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0KSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5maW5kU3VicHJvb2ZBc3NlcnRpb24oY29udGV4dCk7IH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc3VtcHRpb247XG5cbiAgICBhc3N1bXB0aW9uID0gdGhpcy5maW5kQXNzdW1wdGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3N1bXB0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oYXNzdW1wdGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc3VtcHRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlUmVmZXJlbmNlID0gdGhpcy52YWxpZGF0ZVJlZmVyZW5jZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlUmVmZXJlbmNlLFxuICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKFtcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3N1bXB0aW9uKGFzc3VtcHRpb24pO1xuXG4gICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGFzc3VtcHRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlY2xhcmVkKSB7XG4gICAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZWNsYXJlZCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVjbGFyZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgZGVjbGFyZWQgYXNzdW1wdGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlY2xhcmVkO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZXJpdmVkIGFzc3VtcHRpb24uLi5gKTtcblxuICAgICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudW5pZnlTY2hlbWEoc2NoZW1hLCBjb250ZXh0LCAoc2NoZW1hVW5pZmllcykgPT4ge1xuICAgICAgICAgIGlmIChzY2hlbWFVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfSwgY29udGV4dCwgKGNvbnRleHQpID0+IHRydWUpO1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgZGVyaXZlZCBhc3N1bXB0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgfVxuXG4gIHZhbGlkYXRlUmVmZXJlbmNlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgcmVmZXJlbmNlVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJlZmVyZW5jZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgcmVmZXJlbmNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcztcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlTY2hlbWEoc2NoZW1hLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzY2hlbWFTdHJpbmcgPSBzY2hlbWEuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gc2NoZW1hLmdldExhYmVsKCk7XG5cbiAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZS51bmlmeUxhYmVsKGxhYmVsLCBjb250ZXh0LCAobGFiZWxVbmlmaWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICBpZiAoIWxhYmVsVW5pZmllcykge1xuICAgICAgICAgIGNvbnN0IHNjaGVtYVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWR1Y3Rpb24gPSBzY2hlbWEuZ2V0RGVkdWN0aW9uKCksXG4gICAgICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnQgPSB0aGlzLmZpbmREZWR1Y2VkU3RhdGVtZW50KGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5RGVkdWN0aW9uKGRlZHVjdGlvbiwgZGVkdWNlZFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGRlZHVjdGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc2NoZW1hVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKCFkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHNjaGVtYVVuaWZpZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbmFsID0gdGhpcy5pc0NvbmRpdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgc2NoZW1hQ29uZGl0aW9uYWwgPSBzY2hlbWEuaXNDb25kaXRpb25hbCgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbmFsICE9PSBzY2hlbWFDb25kaXRpb25hbCkge1xuICAgICAgICAgICAgY29udGV4dC50cmFjZShgRWl0aGVyIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgaXMgdW5jb25kaXRpb25hbCB3aGlsc3QgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIGlzIGNvbmRpdGlvbmFsIG9yIHZpY2UgdmVyc2UuYCk7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25zID0gc2NoZW1hLmdldFN1cHBvc2l0aW9ucygpLFxuICAgICAgICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50cyA9IHRoaXMuZmluZFN1cHBvc2VkU3RhdGVtZW50cyhjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgc3VwcG9zZWRTdGF0ZW1lbnRzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3VwcG9zaXRpb25zVW5pZnkpID0+IHtcbiAgICAgICAgICAgIGlmIChzdXBwb3NpdGlvbnNVbmlmeSkge1xuICAgICAgICAgICAgICBzY2hlbWFVbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNjaGVtYVVuaWZpZXMpIHtcbiAgICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHNjaGVtYVVuaWZpZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBkZWR1Y2VkU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50ICB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke2Fzc3VtcHRpb25TdHJpbmd9JyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IGRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Db250ZXh0ID0gZGVkdWN0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IGRlZHVjdGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBkZWR1Y2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgZGVkdWN0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyAnJHthc3N1bXB0aW9uU3RyaW5nfScgc3RhdGVtZW50LmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVkdWN0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgc3VwcG9zZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50U3RyaW5nID0gc3VwcG9zZWRTdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbidzIHN0YXRlbWVudCAgd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHN1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uQ29udGV4dCA9IHN1cHBvc2l0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgc3VwcG9zaXRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uJ3Mgc3RhdGVtZW50ICB3aXRoIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudC5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBzdXBwb3NlZFN0YXRlbWVudHMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHN1cHBvc2l0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoID0gc3VwcG9zZWRTdGF0ZW1lbnRzLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggIT09IHN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCkge1xuICAgICAgY29uc3Qgc3VwcG9zaXRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvbnNVbmlmeSk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gc3VwcG9zaXRpb25zTGVuZ3RoOyAvLy9cblxuICAgIHJldHVybiBhc3luY2hyb25vdXNCYWNrd2FyZHNFdmVyeShzdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICBpbmRleC0tO1xuXG4gICAgICBjb25zdCBzdXBwb3NlZFN0YXRlbWVudCA9IHN1cHBvc2VkU3RhdGVtZW50c1tpbmRleF07XG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIHN1cHBvc2VkU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sIGNvbnRpbnVhdGlvbik7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZyxcbiAgICAgIGJyZWFrUG9pbnRcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQXNzdW1wdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGFzc3VtcHRpb247XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBhc3N1bXB0aW9uTm9kZSA9IGluc3RhbnRpYXRlQXNzdW1wdGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IGFzc3VtcHRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Bc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGFzc3VtcHRpb24gPSBuZXcgQXNzdW1wdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHJlZmVyZW5jZSwgc3RhdGVtZW50KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gcmVmZXJlbmNlRnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBhc3N1bXB0aW9uTm9kZS5nZXRNZXRhdmFyaWFibGVOb2RlKGNvbnRleHQpLFxuICAgICAgICByZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBhc3N1bXB0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImFzeW5jaHJvbm91c0JhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQXNzdW1wdGlvbiIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJyZWZlcmVuY2UiLCJzdGF0ZW1lbnQiLCJnZXRSZWZlcmVuY2UiLCJnZXRTdGF0ZW1lbnQiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiaXNDb25kaXRpb25hbCIsImdldEFzc3VtcHRpb25Ob2RlIiwiZ2V0Tm9kZSIsImFzc3VtcHRpb25Ob2RlIiwiaXNFcXVhbFRvIiwiYXNzdW1wdGlvbiIsImFzc3VtcHRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoQXNzdW1wdGlvbk5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kQXNzdW1wdGlvbiIsImZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZSIsImZpbmREZWR1Y2VkU3RhdGVtZW50IiwiZmluZFN1cHBvc2VkU3RhdGVtZW50cyIsImZpbmRTdWJwcm9vZkFzc2VydGlvbiIsInZhbGlkYXRlIiwic3RhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJhc3N1bXB0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsInZhbGlkYXRlUmVmZXJlbmNlIiwiYmluZCIsInZhbGlkYXRlU3RhdGVtZW50IiwiYWxsIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZXhpc3RzIiwiYWRkQXNzdW1wdGlvbiIsInZhbGlkYXRlc1doZW5EZWNsYXJlZCIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInNjaGVtYXMiLCJnZXRTY2hlbWFzIiwic29tZSIsInNjaGVtYSIsInN1Y2Nlc3MiLCJ1bmlmeVNjaGVtYSIsInNjaGVtYVVuaWZpZXMiLCJyZWZlcmVuY2VWYWxpZGF0ZXMiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJzY2hlbWFTdHJpbmciLCJnZW5lcmFsQ29udGV4dCIsInJlY29uY2lsZSIsImxhYmVsIiwiZ2V0TGFiZWwiLCJ1bmlmeUxhYmVsIiwibGFiZWxVbmlmaWVzIiwic3BlY2lmaWNDb250ZXh0IiwiZGVkdWN0aW9uIiwiZ2V0RGVkdWN0aW9uIiwiZGVkdWNlZFN0YXRlbWVudCIsInVuaWZ5RGVkdWN0aW9uIiwiZGVkdWN0aW9uVW5pZmllcyIsImNvbmRpdGlvbmFsIiwic2NoZW1hQ29uZGl0aW9uYWwiLCJzdXBwb3NpdGlvbnMiLCJnZXRTdXBwb3NpdGlvbnMiLCJzdXBwb3NlZFN0YXRlbWVudHMiLCJ1bmlmeVN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1VuaWZ5IiwiZGVkdWN0aW9uU3RyaW5nIiwiZGVkdWN0aW9uQ29udGV4dCIsImdldENvbnRleHQiLCJqb2luIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwiY29tbWl0IiwidW5pZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwic3VwcG9zZWRTdGF0ZW1lbnQiLCJzdXBwb3NpdGlvblN0cmluZyIsInN1cHBvc2VkU3RhdGVtZW50U3RyaW5nIiwic3VwcG9zaXRpb25Db250ZXh0Iiwic3VwcG9zaXRpb25VbmlmaWVzIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwic3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoIiwiaW5kZXgiLCJ0b0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUFzc3VtcHRpb24iLCJyZWZlcmVuY2VGcm9tQXNzdW1wdGlvbk5vZGUiLCJzdGF0ZW1lbnRGcm9tQXNzdW1wdGlvbk5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsImZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWm9FOzBCQUU3Qzt5QkFDSzs4QkFFTTt1QkFDSTs2QkFDQTtBQUV0QyxNQUFNLEVBQUVBLDBCQUEwQixFQUFFLEdBQUdDLHFDQUFxQixFQUN0RCxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1CQyx1QkFBTztJQUNwRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsU0FBUyxDQUFFO1FBQ25FLEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNGLFNBQVM7SUFDdkI7SUFFQUcsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLGtCQUFrQjtRQUFFLE9BQU8sSUFBSSxDQUFDSixTQUFTLENBQUNJLGVBQWU7SUFBSTtJQUU3REMsbUJBQW1CO1FBQUUsT0FBTyxJQUFJLENBQUNKLFNBQVMsQ0FBQ0ksZ0JBQWdCO0lBQUk7SUFFL0RDLGdCQUFnQjtRQUFFLE9BQU8sSUFBSSxDQUFDTCxTQUFTLENBQUNLLGFBQWE7SUFBRztJQUV4REMsb0JBQW9CO1FBQ2xCLE1BQU1ULE9BQU8sSUFBSSxDQUFDVSxPQUFPLElBQ25CQyxpQkFBaUJYLE1BQU8sR0FBRztRQUVqQyxPQUFPVztJQUNUO0lBRUFDLFVBQVVDLFVBQVUsRUFBRTtRQUNwQixNQUFNRixpQkFBaUJFLFdBQVdILE9BQU8sSUFDbkNJLHdCQUF3QixJQUFJLENBQUNDLG1CQUFtQixDQUFDSixpQkFDakRLLFVBQVVGLHVCQUF3QixHQUFHO1FBRTNDLE9BQU9FO0lBQ1Q7SUFFQUQsb0JBQW9CSixjQUFjLEVBQUU7UUFDbEMsTUFBTVgsT0FBT1csZ0JBQ1hNLGNBQWMsSUFBSSxDQUFDQyxTQUFTLENBQUNsQixPQUM3QmMsd0JBQXdCRyxhQUFhLEdBQUc7UUFFMUMsT0FBT0g7SUFDVDtJQUVBSyxlQUFlckIsT0FBTyxFQUFFO1FBQ3RCLE1BQU1hLGlCQUFpQixJQUFJLENBQUNGLGlCQUFpQixJQUN2Q0ksYUFBYWYsUUFBUXNCLDhCQUE4QixDQUFDVDtRQUUxRCxPQUFPRTtJQUNUO0lBRUFRLHFCQUFxQnZCLE9BQU8sRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDSyxTQUFTLENBQUNrQixvQkFBb0IsQ0FBQ3ZCO0lBQVU7SUFFckZ3Qix1QkFBdUJ4QixPQUFPLEVBQUU7UUFBRSxPQUFPLElBQUksQ0FBQ0ssU0FBUyxDQUFDbUIsc0JBQXNCLENBQUN4QjtJQUFVO0lBRXpGeUIsc0JBQXNCekIsT0FBTyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUNLLFNBQVMsQ0FBQ29CLHFCQUFxQixDQUFDekI7SUFBVTtJQUV2RjBCLFNBQVNDLEtBQUssRUFBRTNCLE9BQU8sRUFBRTRCLFlBQVksRUFBRTtRQUNyQyxJQUFJQztRQUVKLE1BQU1DLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DL0IsUUFBUWdDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixpQkFBaUIsZUFBZSxDQUFDO1FBRWxFLElBQUlmO1FBRUpBLGFBQWEsSUFBSSxDQUFDTSxjQUFjLENBQUNyQjtRQUVqQyxJQUFJZSxlQUFlLE1BQU07WUFDdkJmLFFBQVFpQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUVILGlCQUFpQixnQ0FBZ0MsQ0FBQztZQUV4RUQsWUFBWUQsYUFBYWIsWUFBWWY7UUFDdkMsT0FBTztZQUNMZSxhQUFhLElBQUksRUFBRyxHQUFHO1lBRXZCLE1BQU1tQixvQkFBb0IsSUFBSSxDQUFDQSxpQkFBaUIsQ0FBQ0MsSUFBSSxDQUFDLElBQUksR0FDcERDLG9CQUFvQixJQUFJLENBQUNBLGlCQUFpQixDQUFDRCxJQUFJLENBQUMsSUFBSTtZQUUxRE4sWUFBWVEsSUFBQUEsaUJBQUcsRUFBQztnQkFDZEg7Z0JBQ0FFO2FBQ0QsRUFBRVQsT0FBTzNCLFNBQVMsQ0FBQzJCLE9BQU8zQjtnQkFDekIsSUFBSTZCO2dCQUVKLE1BQU1TLHVCQUF1QixJQUFJLENBQUNBLG9CQUFvQixDQUFDSCxJQUFJLENBQUMsSUFBSSxHQUMxREksc0JBQXNCLElBQUksQ0FBQ0EsbUJBQW1CLENBQUNKLElBQUksQ0FBQyxJQUFJO2dCQUU5RE4sWUFBWVcsSUFBQUEsb0JBQU0sRUFBQztvQkFDakJGO29CQUNBQztpQkFDRCxFQUFFWixPQUFPM0IsU0FBUyxDQUFDMkIsT0FBTzNCO29CQUN6QixJQUFJNkI7b0JBRUo3QixRQUFReUMsYUFBYSxDQUFDMUI7b0JBRXRCYyxZQUFZRCxhQUFhYixZQUFZZjtvQkFFckMsT0FBTzZCO2dCQUNUO2dCQUVBLE9BQU9BO1lBQ1Q7UUFDRjtRQUVBLElBQUlBLFdBQVc7WUFDYjdCLFFBQVFpQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUgsaUJBQWlCLGFBQWEsQ0FBQztRQUNwRTtRQUVBLE9BQU9EO0lBQ1Q7SUFFQVMscUJBQXFCWCxLQUFLLEVBQUUzQixPQUFPLEVBQUU0QixZQUFZLEVBQUU7UUFDakQsSUFBSWMsd0JBQXdCO1FBRTVCLE1BQU1DLFdBQVdDLElBQUFBLGlCQUFVLEVBQUNqQjtRQUU1QixJQUFJZ0IsVUFBVTtZQUNaLE1BQU1iLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1lBRTlDL0IsUUFBUWdDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixpQkFBaUIsd0JBQXdCLENBQUM7WUFFM0VZLHdCQUF3QmQsYUFBYUQsT0FBTzNCO1lBRTVDLElBQUkwQyx1QkFBdUI7Z0JBQ3pCMUMsUUFBUWlDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFSCxpQkFBaUIsc0JBQXNCLENBQUM7WUFDN0U7UUFDRjtRQUVBLE9BQU9ZO0lBQ1Q7SUFFQUgsb0JBQW9CWixLQUFLLEVBQUUzQixPQUFPLEVBQUU0QixZQUFZLEVBQUU7UUFDaEQsSUFBSWlCLHVCQUF1QjtRQUUzQixNQUFNQyxVQUFVQyxJQUFBQSxnQkFBUyxFQUFDcEI7UUFFMUIsSUFBSW1CLFNBQVM7WUFDWCxNQUFNaEIsbUJBQW1CLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7WUFFOUMvQixRQUFRZ0MsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLGlCQUFpQix1QkFBdUIsQ0FBQztZQUUxRSxNQUFNa0IsVUFBVWhELFFBQVFpRCxVQUFVO1lBRWxDSix1QkFBdUJLLElBQUFBLGtCQUFJLEVBQUNGLFNBQVMsQ0FBQ0csUUFBUW5EO2dCQUM1QyxJQUFJb0QsVUFBVTtnQkFFZCxJQUFJLENBQUNDLFdBQVcsQ0FBQ0YsUUFBUW5ELFNBQVMsQ0FBQ3NEO29CQUNqQyxJQUFJQSxlQUFlO3dCQUNqQkYsVUFBVTtvQkFDWjtnQkFDRjtnQkFFQSxPQUFPQTtZQUNULEdBQUdwRCxTQUFTLENBQUNBLFVBQVk7WUFFekIsSUFBSTZDLHNCQUFzQjtnQkFDeEJBLHVCQUF1QmpCLGFBQWFELE9BQU8zQjtZQUM3QztZQUVBLElBQUk2QyxzQkFBc0I7Z0JBQ3hCN0MsUUFBUWlDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFSCxpQkFBaUIscUJBQXFCLENBQUM7WUFDNUU7UUFDRjtRQUVBLE9BQU9lO0lBQ1Q7SUFFQVgsa0JBQWtCUCxLQUFLLEVBQUUzQixPQUFPLEVBQUU0QixZQUFZLEVBQUU7UUFDOUMsSUFBSTJCO1FBRUosTUFBTXpCLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DL0IsUUFBUWdDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixpQkFBaUIsMkJBQTJCLENBQUM7UUFFOUV5QixxQkFBcUIsSUFBSSxDQUFDbkQsU0FBUyxDQUFDc0IsUUFBUSxDQUFDQyxPQUFPM0IsU0FBUyxDQUFDSSxXQUFXSjtZQUN2RSxJQUFJNkI7WUFFSixJQUFJLENBQUN6QixTQUFTLEdBQUdBO1lBRWpCeUIsWUFBWUQsYUFBYUQsT0FBTzNCO1lBRWhDLE9BQU82QjtRQUNUO1FBRUEsSUFBSTBCLG9CQUFvQjtZQUN0QnZELFFBQVFpQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUgsaUJBQWlCLHlCQUF5QixDQUFDO1FBQ2hGO1FBRUEsT0FBT3lCO0lBQ1Q7SUFFQW5CLGtCQUFrQlQsS0FBSyxFQUFFM0IsT0FBTyxFQUFFNEIsWUFBWSxFQUFFO1FBQzlDLElBQUk0QjtRQUVKLE1BQU0xQixtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUvQy9CLFFBQVFnQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsaUJBQWlCLDJCQUEyQixDQUFDO1FBRTlFMEIscUJBQXFCLElBQUksQ0FBQ25ELFNBQVMsQ0FBQ3FCLFFBQVEsQ0FBQ0MsT0FBTzNCLFNBQVMsQ0FBQ0ssV0FBV0w7WUFDdkUsSUFBSTZCO1lBRUosSUFBSSxDQUFDeEIsU0FBUyxHQUFHQTtZQUVqQndCLFlBQVlELGFBQWFELE9BQU8zQjtZQUVoQyxPQUFPNkI7UUFDVDtRQUVBLElBQUkyQixvQkFBb0I7WUFDdEJ4RCxRQUFRaUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVILGlCQUFpQix5QkFBeUIsQ0FBQztRQUNoRjtRQUVBLE9BQU8wQjtJQUNUO0lBRUFILFlBQVlGLE1BQU0sRUFBRW5ELE9BQU8sRUFBRTRCLFlBQVksRUFBRTtRQUN6QyxNQUFNRSxtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQ2pDMEIsZUFBZU4sT0FBT3BCLFNBQVM7UUFFckMvQixRQUFRZ0MsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFeUIsYUFBYSxtQkFBbUIsRUFBRTNCLGlCQUFpQixlQUFlLENBQUM7UUFFbEcsTUFBTTRCLGlCQUFpQjFELFNBQVUsR0FBRztRQUVwQyxPQUFPMkQsSUFBQUEsa0JBQVMsRUFBQyxDQUFDM0Q7WUFDaEIsTUFBTTRELFFBQVFULE9BQU9VLFFBQVE7WUFFN0IsT0FBTyxJQUFJLENBQUN6RCxTQUFTLENBQUMwRCxVQUFVLENBQUNGLE9BQU81RCxTQUFTLENBQUMrRDtnQkFDaEQsTUFBTUMsa0JBQWtCaEUsU0FBVSxHQUFHO2dCQUVyQyxJQUFJLENBQUMrRCxjQUFjO29CQUNqQixNQUFNVCxnQkFBZ0I7b0JBRXRCLE9BQU8xQixhQUFhMEI7Z0JBQ3RCO2dCQUVBLE1BQU1XLFlBQVlkLE9BQU9lLFlBQVksSUFDL0JDLG1CQUFtQixJQUFJLENBQUM1QyxvQkFBb0IsQ0FBQ3ZCO2dCQUVuRCxPQUFPLElBQUksQ0FBQ29FLGNBQWMsQ0FBQ0gsV0FBV0Usa0JBQWtCVCxnQkFBZ0JNLGlCQUFpQixDQUFDSztvQkFDeEYsSUFBSWYsZ0JBQWdCO29CQUVwQixJQUFJLENBQUNlLGtCQUFrQjt3QkFDckIsT0FBT3pDLGFBQWEwQjtvQkFDdEI7b0JBRUEsTUFBTWdCLGNBQWMsSUFBSSxDQUFDNUQsYUFBYSxJQUNoQzZELG9CQUFvQnBCLE9BQU96QyxhQUFhO29CQUU5QyxJQUFJNEQsZ0JBQWdCQyxtQkFBbUI7d0JBQ3JDdkUsUUFBUWdDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRXlCLGFBQWEsc0NBQXNDLEVBQUUzQixpQkFBaUIsMENBQTBDLENBQUM7d0JBRTlJLE9BQU9GLGFBQWEwQjtvQkFDdEI7b0JBRUEsTUFBTWtCLGVBQWVyQixPQUFPc0IsZUFBZSxJQUNyQ0MscUJBQXFCLElBQUksQ0FBQ2xELHNCQUFzQixDQUFDeEI7b0JBRXZELE9BQU8sSUFBSSxDQUFDMkUsaUJBQWlCLENBQUNILGNBQWNFLG9CQUFvQmhCLGdCQUFnQk0saUJBQWlCLENBQUNZO3dCQUNoRyxJQUFJQSxtQkFBbUI7NEJBQ3JCdEIsZ0JBQWdCO3dCQUNsQjt3QkFFQSxJQUFJQSxlQUFlOzRCQUNqQnRELFFBQVFpQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRXdCLGFBQWEsbUJBQW1CLEVBQUUzQixpQkFBaUIsYUFBYSxDQUFDO3dCQUNwRzt3QkFFQSxPQUFPRixhQUFhMEI7b0JBQ3RCO2dCQUNGO1lBQ0Y7UUFDRixHQUFHdEQ7SUFDTDtJQUVBb0UsZUFBZUgsU0FBUyxFQUFFRSxnQkFBZ0IsRUFBRVQsY0FBYyxFQUFFTSxlQUFlLEVBQUVwQyxZQUFZLEVBQUU7UUFDekYsTUFBTTVCLFVBQVVnRSxpQkFDVmxDLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFDakM4QyxrQkFBa0JaLFVBQVVsQyxTQUFTO1FBRTNDL0IsUUFBUWdDLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRTZDLGdCQUFnQixtQ0FBbUMsRUFBRS9DLGlCQUFpQixnQkFBZ0IsRUFBRUEsaUJBQWlCLGNBQWMsQ0FBQztRQUV2SixNQUFNekIsWUFBWTRELFVBQVUxRCxZQUFZLElBQ2xDdUUsbUJBQW1CYixVQUFVYyxVQUFVO1FBRTdDZixrQkFBa0JjLGtCQUFrQixHQUFHO1FBRXZDLE9BQU9FLElBQUFBLGFBQUksRUFBQyxDQUFDaEI7WUFDWCxPQUFPTCxJQUFBQSxrQkFBUyxFQUFDLENBQUNLO2dCQUNoQixPQUFPRyxpQkFBaUJjLGNBQWMsQ0FBQzVFLFdBQVdxRCxnQkFBZ0JNLGlCQUFpQixDQUFDa0I7b0JBQ2xGLElBQUliLG1CQUFtQjtvQkFFdkIsSUFBSWEsa0JBQWtCO3dCQUNwQmxCLGdCQUFnQm1CLE1BQU0sQ0FBQ25GO3dCQUV2QnFFLG1CQUFtQjtvQkFDckI7b0JBRUEsSUFBSUEsa0JBQWtCO3dCQUNwQnJFLFFBQVFpQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRTRDLGdCQUFnQixrQ0FBa0MsRUFBRS9DLGlCQUFpQixnQkFBZ0IsRUFBRUEsaUJBQWlCLFlBQVksQ0FBQztvQkFDeEo7b0JBRUEsT0FBT0YsYUFBYXlDO2dCQUN0QjtZQUNGLEdBQUdMO1FBQ0wsR0FBR0EsaUJBQWlCaEU7SUFDdEI7SUFFQW9GLGlCQUFpQkMsV0FBVyxFQUFFQyxpQkFBaUIsRUFBRTVCLGNBQWMsRUFBRU0sZUFBZSxFQUFFcEMsWUFBWSxFQUFFO1FBQzlGLE1BQU01QixVQUFVZ0UsaUJBQ1Z1QixvQkFBb0JGLFlBQVl0RCxTQUFTLElBQ3pDeUQsMEJBQTBCRixrQkFBa0J2RCxTQUFTO1FBRTNEL0IsUUFBUWdDLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRXVELGtCQUFrQixxQ0FBcUMsRUFBRUMsd0JBQXdCLHVCQUF1QixDQUFDO1FBRXhJLE1BQU1uRixZQUFZZ0YsWUFBWTlFLFlBQVksSUFDcENrRixxQkFBcUJKLFlBQVlOLFVBQVU7UUFFakRmLGtCQUFrQnlCLG9CQUFvQixHQUFHO1FBRXpDLE9BQU9ULElBQUFBLGFBQUksRUFBQyxDQUFDaEI7WUFDWCxPQUFPTCxJQUFBQSxrQkFBUyxFQUFDLENBQUNLO2dCQUNoQixPQUFPc0Isa0JBQWtCTCxjQUFjLENBQUM1RSxXQUFXcUQsZ0JBQWdCTSxpQkFBaUIsQ0FBQ2tCO29CQUNuRixJQUFJUSxxQkFBcUI7b0JBRXpCLElBQUlSLGtCQUFrQjt3QkFDcEJsQixnQkFBZ0JtQixNQUFNLENBQUNuRjt3QkFFdkIwRixxQkFBcUI7b0JBQ3ZCO29CQUVBLElBQUlBLG9CQUFvQjt3QkFDdEIxRixRQUFRaUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVzRCxrQkFBa0IscUNBQXFDLEVBQUVDLHdCQUF3QixxQkFBcUIsQ0FBQztvQkFDMUk7b0JBRUEsT0FBTzVELGFBQWE4RDtnQkFDdEI7WUFDRixHQUFHMUI7UUFDTCxHQUFHQSxpQkFBaUJoRTtJQUN0QjtJQUVBMkUsa0JBQWtCSCxZQUFZLEVBQUVFLGtCQUFrQixFQUFFaEIsY0FBYyxFQUFFTSxlQUFlLEVBQUVwQyxZQUFZLEVBQUU7UUFDakcsTUFBTStELHFCQUFxQm5CLGFBQWFvQixNQUFNLEVBQ3hDQywyQkFBMkJuQixtQkFBbUJrQixNQUFNO1FBRTFELElBQUlELHVCQUF1QkUsMEJBQTBCO1lBQ25ELE1BQU1qQixvQkFBb0I7WUFFMUIsT0FBT2hELGFBQWFnRDtRQUN0QjtRQUVBLElBQUlrQixRQUFRSCxvQkFBb0IsR0FBRztRQUVuQyxPQUFPbkcsMkJBQTJCZ0YsY0FBYyxDQUFDYSxhQUFhekQ7WUFDNURrRTtZQUVBLE1BQU1SLG9CQUFvQlosa0JBQWtCLENBQUNvQixNQUFNO1lBRW5ELE9BQU8sSUFBSSxDQUFDVixnQkFBZ0IsQ0FBQ0MsYUFBYUMsbUJBQW1CNUIsZ0JBQWdCTSxpQkFBaUJwQztRQUNoRyxHQUFHQTtJQUNMO0lBRUFtRSxTQUFTO1FBQ1AsTUFBTTlGLFNBQVMsSUFBSSxDQUFDOEIsU0FBUztRQUU3QixJQUFJNUI7UUFFSkEsYUFBYSxJQUFJLENBQUM2RixhQUFhO1FBRS9CLE1BQU1DLGlCQUFpQnRHLDJCQUEyQlE7UUFFbERBLGFBQWE4RixnQkFBaUIsR0FBRztRQUVqQyxNQUFNQyxPQUFPO1lBQ1hqRztZQUNBRTtRQUNGO1FBRUEsT0FBTytGO0lBQ1Q7SUFFQSxPQUFPQyxPQUFPLGFBQWE7SUFFM0IsT0FBT0MsU0FBU0YsSUFBSSxFQUFFbEcsT0FBTyxFQUFFO1FBQzdCLElBQUllO1FBRUpzRixJQUFBQSxvQkFBVyxFQUFDLENBQUNyRztZQUNYLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdpRyxNQUNickYsaUJBQWlCeUYsSUFBQUEsa0NBQXFCLEVBQUNyRyxRQUFRRCxVQUMvQ0UsT0FBT1csZ0JBQ1BWLGFBQWFULG1CQUFtQndHLE9BQ2hDOUYsWUFBWW1HLDRCQUE0QjFGLGdCQUFnQmIsVUFDeERLLFlBQVltRyw0QkFBNEIzRixnQkFBZ0JiO1lBRTlEZSxhQUFhLElBQUlqQixXQUFXRSxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxXQUFXQztRQUM1RSxHQUFHTDtRQUVILE9BQU9lO0lBQ1Q7QUFDRjtBQUVBLFNBQVN3Riw0QkFBNEIxRixjQUFjLEVBQUViLE9BQU87SUFDMUQsTUFBTXlHLG1CQUFtQjVGLGVBQWU2RixtQkFBbUIsQ0FBQzFHLFVBQ3RESSxZQUFZSixRQUFRMkcsK0JBQStCLENBQUNGO0lBRTFELE9BQU9yRztBQUNUO0FBRUEsU0FBU29HLDRCQUE0QjNGLGNBQWMsRUFBRWIsT0FBTztJQUMxRCxNQUFNNEcsZ0JBQWdCL0YsZUFBZUosZ0JBQWdCLElBQy9DSixZQUFZTCxRQUFRNkcsNEJBQTRCLENBQUNEO0lBRXZELE9BQU92RztBQUNUIn0=
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgam9pbiwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIHNvbWUsIGV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUFzc3VtcHRpb24gfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuXG5jb25zdCB7IGFzeW5jaHJvbm91c0JhY2t3YXJkc0V2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmdldFN0YXRlbWVudE5vZGUoKTsgfVxuXG4gIGlzQ29uZGl0aW9uYWwoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5pc0NvbmRpdGlvbmFsKCkgfVxuXG4gIGdldEFzc3VtcHRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBhc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhhc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgYXNzdW1wdGlvbk5vZGUgPSBhc3N1bXB0aW9uLmdldE5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBhc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBhc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbk5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZEFzc3VtcHRpb24oY29udGV4dCkge1xuICAgIGNvbnN0IGFzc3VtcHRpb25Ob2RlID0gdGhpcy5nZXRBc3N1bXB0aW9uTm9kZSgpLFxuICAgICAgICAgIGFzc3VtcHRpb24gPSBjb250ZXh0LmZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfVxuXG4gIGZpbmREZWR1Y2VkU3RhdGVtZW50KGNvbnRleHQpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmZpbmREZWR1Y2VkU3RhdGVtZW50KGNvbnRleHQpOyB9XG5cbiAgZmluZFN1cHBvc2VkU3RhdGVtZW50cyhjb250ZXh0KSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5maW5kU3VwcG9zZWRTdGF0ZW1lbnRzKGNvbnRleHQpOyB9XG5cbiAgZmluZFN1YnByb29mQXNzZXJ0aW9uKGNvbnRleHQpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmZpbmRTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0KTsgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBsZXQgYXNzdW1wdGlvbjtcblxuICAgIGFzc3VtcHRpb24gPSB0aGlzLmZpbmRBc3N1bXB0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc3VtcHRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzdW1wdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29uc3QgdmFsaWRhdGVSZWZlcmVuY2UgPSB0aGlzLnZhbGlkYXRlUmVmZXJlbmNlLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2UsXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50XG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICBjb250ZXh0LmFkZEFzc3VtcHRpb24oYXNzdW1wdGlvbik7XG5cbiAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oYXNzdW1wdGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVjbGFyZWQpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlY2xhcmVkIGFzc3VtcHRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZWNsYXJlZCBhc3N1bXB0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQ7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlcml2ZWQgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgICBjb25zdCBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy51bmlmeVNjaGVtYShzY2hlbWEsIGNvbnRleHQsIChzY2hlbWFVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKHNjaGVtYVVuaWZpZXMpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9LCBjb250ZXh0LCAoY29udGV4dCkgPT4gdHJ1ZSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZXJpdmVkIGFzc3VtcHRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyByZWZlcmVuY2UuLi5gKTtcblxuICAgIHJlZmVyZW5jZVZhbGlkYXRlcyA9IHRoaXMucmVmZXJlbmNlLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocmVmZXJlbmNlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChyZWZlcmVuY2VWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50KHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVNjaGVtYShzY2hlbWEsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIHNjaGVtYVN0cmluZyA9IHNjaGVtYS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSBzY2hlbWEuZ2V0TGFiZWwoKTtcblxuICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlLnVuaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIChsYWJlbFVuaWZpZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGlmICghbGFiZWxVbmlmaWVzKSB7XG4gICAgICAgICAgY29uc3Qgc2NoZW1hVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFVbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlZHVjdGlvbiA9IHNjaGVtYS5nZXREZWR1Y3Rpb24oKSxcbiAgICAgICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IHRoaXMuZmluZERlZHVjZWRTdGF0ZW1lbnQoY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBkZWR1Y2VkU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZGVkdWN0aW9uVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzY2hlbWFVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoIWRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uYWwgPSB0aGlzLmlzQ29uZGl0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICBzY2hlbWFDb25kaXRpb25hbCA9IHNjaGVtYS5pc0NvbmRpdGlvbmFsKCk7XG5cbiAgICAgICAgICBpZiAoY29uZGl0aW9uYWwgIT09IHNjaGVtYUNvbmRpdGlvbmFsKSB7XG4gICAgICAgICAgICBjb250ZXh0LnRyYWNlKGBFaXRoZXIgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSBpcyB1bmNvbmRpdGlvbmFsIHdoaWxzdCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gaXMgY29uZGl0aW9uYWwgb3IgdmljZSB2ZXJzZS5gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFVbmlmaWVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzdXBwb3NpdGlvbnMgPSBzY2hlbWEuZ2V0U3VwcG9zaXRpb25zKCksXG4gICAgICAgICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzID0gdGhpcy5maW5kU3VwcG9zZWRTdGF0ZW1lbnRzKGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBzdXBwb3NlZFN0YXRlbWVudHMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvbnNVbmlmeSkgPT4ge1xuICAgICAgICAgICAgaWYgKHN1cHBvc2l0aW9uc1VuaWZ5KSB7XG4gICAgICAgICAgICAgIHNjaGVtYVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2NoZW1hVW5pZmllcykge1xuICAgICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGRlZHVjZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQgIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgJyR7YXNzdW1wdGlvblN0cmluZ30nIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gZGVkdWN0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjdGlvbkNvbnRleHQgPSBkZWR1Y3Rpb24uZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gZGVkdWN0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGRlZHVjZWRTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBkZWR1Y3Rpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgZGVkdWN0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudCB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke2Fzc3VtcHRpb25TdHJpbmd9JyBzdGF0ZW1lbnQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihkZWR1Y3Rpb25VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBzdXBwb3NlZFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmcgPSBzdXBwb3NlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uJ3Mgc3RhdGVtZW50ICB3aXRoIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gc3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc3VwcG9zaXRpb25Db250ZXh0ID0gc3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gc3VwcG9zaXRpb25Db250ZXh0OyAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICByZXR1cm4gc3VwcG9zZWRTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdXBwb3NpdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICBzdXBwb3NpdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24ncyBzdGF0ZW1lbnQgIHdpdGggdGhlICcke3N1cHBvc2VkU3RhdGVtZW50U3RyaW5nfScgc3VwcG9zZWQgc3RhdGVtZW50LmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VwcG9zaXRpb25VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIHN1cHBvc2VkU3RhdGVtZW50cywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25zTGVuZ3RoID0gc3VwcG9zaXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGggPSBzdXBwb3NlZFN0YXRlbWVudHMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc0xlbmd0aCAhPT0gc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdXBwb3NpdGlvbnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uc1VuaWZ5KTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSBzdXBwb3NpdGlvbnNMZW5ndGg7IC8vL1xuXG4gICAgcmV0dXJuIGFzeW5jaHJvbm91c0JhY2t3YXJkc0V2ZXJ5KHN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIGluZGV4LS07XG5cbiAgICAgIGNvbnN0IHN1cHBvc2VkU3RhdGVtZW50ID0gc3VwcG9zZWRTdGF0ZW1lbnRzW2luZGV4XTtcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgc3VwcG9zZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgYnJlYWtQb2ludFxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJBc3N1bXB0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgYXNzdW1wdGlvbjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIGFzc3VtcHRpb25Ob2RlID0gaW5zdGFudGlhdGVBc3N1bXB0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gYXNzdW1wdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgYXNzdW1wdGlvbiA9IG5ldyBBc3N1bXB0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiByZWZlcmVuY2VGcm9tQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IGFzc3VtcHRpb25Ob2RlLmdldE1ldGF2YXJpYWJsZU5vZGUoY29udGV4dCksXG4gICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IGFzc3VtcHRpb25Ob2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiYXN5bmNocm9ub3VzQmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJBc3N1bXB0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInJlZmVyZW5jZSIsInN0YXRlbWVudCIsImdldFJlZmVyZW5jZSIsImdldFN0YXRlbWVudCIsImdldE1ldGF2YXJpYWJsZSIsImdldFN0YXRlbWVudE5vZGUiLCJpc0NvbmRpdGlvbmFsIiwiZ2V0QXNzdW1wdGlvbk5vZGUiLCJnZXROb2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJpc0VxdWFsVG8iLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hBc3N1bXB0aW9uTm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRBc3N1bXB0aW9uIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiZmluZERlZHVjZWRTdGF0ZW1lbnQiLCJmaW5kU3VwcG9zZWRTdGF0ZW1lbnRzIiwiZmluZFN1YnByb29mQXNzZXJ0aW9uIiwidmFsaWRhdGUiLCJzdGF0ZSIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsImFzc3VtcHRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJhbGwiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJhZGRBc3N1bXB0aW9uIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwic2NoZW1hcyIsImdldFNjaGVtYXMiLCJzb21lIiwic2NoZW1hIiwic3VjY2VzcyIsInVuaWZ5U2NoZW1hIiwic2NoZW1hVW5pZmllcyIsInJlZmVyZW5jZVZhbGlkYXRlcyIsInN0YXRlbWVudFZhbGlkYXRlcyIsInNjaGVtYVN0cmluZyIsImdlbmVyYWxDb250ZXh0IiwicmVjb25jaWxlIiwibGFiZWwiLCJnZXRMYWJlbCIsInVuaWZ5TGFiZWwiLCJsYWJlbFVuaWZpZXMiLCJzcGVjaWZpY0NvbnRleHQiLCJkZWR1Y3Rpb24iLCJnZXREZWR1Y3Rpb24iLCJkZWR1Y2VkU3RhdGVtZW50IiwidW5pZnlEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25VbmlmaWVzIiwiY29uZGl0aW9uYWwiLCJzY2hlbWFDb25kaXRpb25hbCIsInN1cHBvc2l0aW9ucyIsImdldFN1cHBvc2l0aW9ucyIsInN1cHBvc2VkU3RhdGVtZW50cyIsInVuaWZ5U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zVW5pZnkiLCJkZWR1Y3Rpb25TdHJpbmciLCJkZWR1Y3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dCIsImpvaW4iLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJjb21taXQiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJzdXBwb3NlZFN0YXRlbWVudCIsInN1cHBvc2l0aW9uU3RyaW5nIiwic3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmciLCJzdXBwb3NpdGlvbkNvbnRleHQiLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJzdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgiLCJpbmRleCIsInRvSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQXNzdW1wdGlvbiIsInJlZmVyZW5jZUZyb21Bc3N1bXB0aW9uTm9kZSIsInN0YXRlbWVudEZyb21Bc3N1bXB0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZSIsInN0YXRlbWVudE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7Oztn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
|