occam-furtle 2.0.63 → 2.0.64
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/_occam-grammars/furtle/bnf.js +2 -2
- package/lib/_occam-grammars/furtle/entries.js +2 -2
- package/lib/dom/condition.js +19 -12
- package/lib/dom/step.js +9 -12
- package/lib/dom/ternary.js +157 -0
- package/lib/dom/value.js +64 -52
- package/lib/index.js +2 -1
- package/lib/nullNode.js +48 -0
- package/package.json +4 -4
- package/src/_occam-grammars/furtle/bnf.js +5 -3
- package/src/_occam-grammars/furtle/entries.js +1 -1
- package/src/dom/condition.js +32 -32
- package/src/dom/step.js +9 -16
- package/src/dom/ternary.js +93 -0
- package/src/dom/value.js +68 -37
- package/src/index.js +1 -0
- package/src/nullNode.js +14 -0
package/lib/dom/value.js
CHANGED
|
@@ -2,22 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
default: function() {
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
13
8
|
return _default;
|
|
14
|
-
},
|
|
15
|
-
nullValue: function() {
|
|
16
|
-
return nullValue;
|
|
17
9
|
}
|
|
18
10
|
});
|
|
19
11
|
var _necessary = require("necessary");
|
|
20
12
|
var _dom = /*#__PURE__*/ _interop_require_wildcard(require("../dom"));
|
|
13
|
+
var _nullNode = /*#__PURE__*/ _interop_require_default(require("../nullNode"));
|
|
21
14
|
var _query = require("../utilities/query");
|
|
22
15
|
var _constants = require("../constants");
|
|
23
16
|
var _types = require("../types");
|
|
@@ -53,6 +46,11 @@ function _define_property(obj, key, value) {
|
|
|
53
46
|
}
|
|
54
47
|
return obj;
|
|
55
48
|
}
|
|
49
|
+
function _interop_require_default(obj) {
|
|
50
|
+
return obj && obj.__esModule ? obj : {
|
|
51
|
+
default: obj
|
|
52
|
+
};
|
|
53
|
+
}
|
|
56
54
|
function _getRequireWildcardCache(nodeInterop) {
|
|
57
55
|
if (typeof WeakMap !== "function") return null;
|
|
58
56
|
var cacheBabelInterop = new WeakMap();
|
|
@@ -98,13 +96,14 @@ var _Value;
|
|
|
98
96
|
var match = _necessary.arrayUtilities.match;
|
|
99
97
|
var numberTerminalNodeQuery = (0, _query.nodeQuery)("/value/@number"), conditionValueNodeQuery = (0, _query.nodeQuery)("/condition/value"), assignmentValueNodeQuery = (0, _query.nodeQuery)("/assignment/value"), primitiveTerminalNodeQuery = (0, _query.nodeQuery)("/value/@primitive"), returnStatementValueNodeQuery = (0, _query.nodeQuery)("/returnStatement/value"), stringLiteralTerminalNodeQuery = (0, _query.nodeQuery)("/value/@string-literal");
|
|
100
98
|
var _default = (0, _dom.domAssigned)((_Value = /*#__PURE__*/ function() {
|
|
101
|
-
function Value(node, nodes, number, string, boolean, variable, nodeQuery, nodesQuery, procedureCall) {
|
|
99
|
+
function Value(node, nodes, number, string, boolean, ternary, variable, nodeQuery, nodesQuery, procedureCall) {
|
|
102
100
|
_class_call_check(this, Value);
|
|
103
101
|
this.node = node;
|
|
104
102
|
this.nodes = nodes;
|
|
105
103
|
this.number = number;
|
|
106
104
|
this.string = string;
|
|
107
105
|
this.boolean = boolean;
|
|
106
|
+
this.ternary = ternary;
|
|
108
107
|
this.variable = variable;
|
|
109
108
|
this.nodeQuery = nodeQuery;
|
|
110
109
|
this.nodesQuery = nodesQuery;
|
|
@@ -141,6 +140,12 @@ var _default = (0, _dom.domAssigned)((_Value = /*#__PURE__*/ function() {
|
|
|
141
140
|
return this.boolean;
|
|
142
141
|
}
|
|
143
142
|
},
|
|
143
|
+
{
|
|
144
|
+
key: "getTernary",
|
|
145
|
+
value: function getTernary() {
|
|
146
|
+
return this.ternay;
|
|
147
|
+
}
|
|
148
|
+
},
|
|
144
149
|
{
|
|
145
150
|
key: "getVariable",
|
|
146
151
|
value: function getVariable() {
|
|
@@ -181,6 +186,8 @@ var _default = (0, _dom.domAssigned)((_Value = /*#__PURE__*/ function() {
|
|
|
181
186
|
type = _types.STRING_TYPE;
|
|
182
187
|
} else if (this.boolean !== null) {
|
|
183
188
|
type = _types.BOOLEAN_TYPE;
|
|
189
|
+
} else if (this.ternary !== null) {
|
|
190
|
+
type = this.ternary.getType();
|
|
184
191
|
} else if (this.variable !== null) {
|
|
185
192
|
type = this.variable.getType();
|
|
186
193
|
} else if (this.nodeQuery !== null) {
|
|
@@ -209,6 +216,8 @@ var _default = (0, _dom.domAssigned)((_Value = /*#__PURE__*/ function() {
|
|
|
209
216
|
string = stringAsString(this.string, context);
|
|
210
217
|
} else if (this.boolean !== null) {
|
|
211
218
|
string = booleanAsString(this.boolean, context);
|
|
219
|
+
} else if (this.ternary !== null) {
|
|
220
|
+
string = this.ternary.asString(context);
|
|
212
221
|
} else if (this.variable !== null) {
|
|
213
222
|
string = this.variable.asString(context);
|
|
214
223
|
} else if (this.nodeQuery !== null) {
|
|
@@ -229,6 +238,8 @@ var _default = (0, _dom.domAssigned)((_Value = /*#__PURE__*/ function() {
|
|
|
229
238
|
///
|
|
230
239
|
} else if (this.node !== null || this.nodes !== null || this.number !== null || this.string !== null || this.boolean !== null) {
|
|
231
240
|
value = this;
|
|
241
|
+
} else if (this.ternary !== null) {
|
|
242
|
+
value = this.ternary.evaluate(context);
|
|
232
243
|
} else if (this.variable !== null) {
|
|
233
244
|
value = this.variable.evaluate(context);
|
|
234
245
|
} else if (this.nodeQuery !== null) {
|
|
@@ -248,11 +259,21 @@ var _default = (0, _dom.domAssigned)((_Value = /*#__PURE__*/ function() {
|
|
|
248
259
|
if (false) {
|
|
249
260
|
///
|
|
250
261
|
} else if (this.node !== null) {
|
|
251
|
-
var node = value.getNode()
|
|
252
|
-
|
|
262
|
+
var node = value.getNode();
|
|
263
|
+
if (node === null) {
|
|
264
|
+
equalTo = false;
|
|
265
|
+
} else {
|
|
266
|
+
var nodeA = this.node, nodeB = node, nodeMatches = matchNode(nodeA, nodeB);
|
|
267
|
+
equalTo = nodeMatches; ///
|
|
268
|
+
}
|
|
253
269
|
} else if (this.nodes !== null) {
|
|
254
|
-
var nodes = value.getNode()
|
|
255
|
-
|
|
270
|
+
var nodes = value.getNode();
|
|
271
|
+
if (nodes === null) {
|
|
272
|
+
equalTo = false;
|
|
273
|
+
} else {
|
|
274
|
+
var nodesA = this.nodes, nodesB = nodes, nodesMatch = matchNodes(nodesA, nodesB);
|
|
275
|
+
equalTo = nodesMatch; ///
|
|
276
|
+
}
|
|
256
277
|
} else if (this.number !== null) {
|
|
257
278
|
var number = value.getNumber();
|
|
258
279
|
equalTo = this.number === number;
|
|
@@ -273,30 +294,30 @@ var _default = (0, _dom.domAssigned)((_Value = /*#__PURE__*/ function() {
|
|
|
273
294
|
key: "fromNode",
|
|
274
295
|
value: function fromNode(node, context) {
|
|
275
296
|
if (node === null) {
|
|
276
|
-
node =
|
|
297
|
+
node = _nullNode.default;
|
|
277
298
|
}
|
|
278
|
-
var nodes = null, number = null, string = null, boolean = null, variable = null, _$nodeQuery = null, nodesQuery = null, procedureCall = null, value = new Value(node, nodes, number, string, boolean, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
299
|
+
var nodes = null, number = null, string = null, boolean = null, ternary = null, variable = null, _$nodeQuery = null, nodesQuery = null, procedureCall = null, value = new Value(node, nodes, number, string, boolean, ternary, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
279
300
|
return value;
|
|
280
301
|
}
|
|
281
302
|
},
|
|
282
303
|
{
|
|
283
304
|
key: "fromNodes",
|
|
284
305
|
value: function fromNodes(nodes, context) {
|
|
285
|
-
var node = null, number = null, string = null, boolean = null, variable = null, _$nodeQuery = null, nodesQuery = null, procedureCall = null, value = new Value(node, nodes, number, string, boolean, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
306
|
+
var node = null, number = null, string = null, boolean = null, ternary = null, variable = null, _$nodeQuery = null, nodesQuery = null, procedureCall = null, value = new Value(node, nodes, number, string, boolean, ternary, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
286
307
|
return value;
|
|
287
308
|
}
|
|
288
309
|
},
|
|
289
310
|
{
|
|
290
311
|
key: "fromString",
|
|
291
312
|
value: function fromString(string, context) {
|
|
292
|
-
var node = null, nodes = null, number = null, boolean = null, variable = null, _$nodeQuery = null, nodesQuery = null, procedureCall = null, value = new Value(node, nodes, number, string, boolean, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
313
|
+
var node = null, nodes = null, number = null, boolean = null, ternary = null, variable = null, _$nodeQuery = null, nodesQuery = null, procedureCall = null, value = new Value(node, nodes, number, string, boolean, ternary, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
293
314
|
return value;
|
|
294
315
|
}
|
|
295
316
|
},
|
|
296
317
|
{
|
|
297
318
|
key: "fromBoolean",
|
|
298
319
|
value: function fromBoolean(boolean, context) {
|
|
299
|
-
var node = null, nodes = null, number = null, string = null, variable = null, _$nodeQuery = null, nodesQuery = null, procedureCall = null, value = new Value(node, nodes, number, string, boolean, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
320
|
+
var node = null, nodes = null, number = null, string = null, ternary = null, variable = null, _$nodeQuery = null, nodesQuery = null, procedureCall = null, value = new Value(node, nodes, number, string, boolean, ternary, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
300
321
|
return value;
|
|
301
322
|
}
|
|
302
323
|
},
|
|
@@ -348,7 +369,7 @@ var _default = (0, _dom.domAssigned)((_Value = /*#__PURE__*/ function() {
|
|
|
348
369
|
}(), _define_property(_Value, "name", "Value"), _Value));
|
|
349
370
|
function matchNode(nodeA, nodeB) {
|
|
350
371
|
var nodeMatches;
|
|
351
|
-
if (nodeA ===
|
|
372
|
+
if (nodeA === _nullNode.default || nodeB === _nullNode.default) {
|
|
352
373
|
nodeMatches = nodeA === nodeB;
|
|
353
374
|
} else {
|
|
354
375
|
var nodeAEqualToNodeA = nodeA.isEqualTo(nodeB);
|
|
@@ -358,21 +379,17 @@ function matchNode(nodeA, nodeB) {
|
|
|
358
379
|
}
|
|
359
380
|
function matchNodes(nodesA, nodesB) {
|
|
360
381
|
var nodesMatch;
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
return true;
|
|
368
|
-
}
|
|
369
|
-
});
|
|
370
|
-
}
|
|
382
|
+
nodesMatch = match(nodesA, nodesB, function(nodeA, nodeB) {
|
|
383
|
+
var nodeMatches = matchNode(nodeA, nodeB);
|
|
384
|
+
if (nodeMatches) {
|
|
385
|
+
return true;
|
|
386
|
+
}
|
|
387
|
+
});
|
|
371
388
|
return nodesMatch;
|
|
372
389
|
}
|
|
373
390
|
function nodeAsString(node, context) {
|
|
374
391
|
var string;
|
|
375
|
-
var nodeString = node ===
|
|
392
|
+
var nodeString = node === _nullNode.default ? _constants.NULL : context.nodeAsString(node);
|
|
376
393
|
string = "'".concat(nodeString, "'");
|
|
377
394
|
return string;
|
|
378
395
|
}
|
|
@@ -397,11 +414,22 @@ function booleanAsString(boolean, context) {
|
|
|
397
414
|
return string;
|
|
398
415
|
}
|
|
399
416
|
function valueFromValueNode(valueNode, context) {
|
|
400
|
-
var Value = _dom.default.Value, Variable = _dom.default.Variable, NodeQuery = _dom.default.NodeQuery, NodesQuery = _dom.default.NodesQuery, ProcedureCall = _dom.default.ProcedureCall, node = nodeFromValueNode(valueNode, context), nodes = nodesFromValueNode(valueNode, context), number = numberFromValueNode(valueNode, context), string = stringFromValueNode(valueNode, context), boolean = booleanFromValueNode(valueNode, context), variable = Variable.fromValueNode(valueNode, context), _$nodeQuery = NodeQuery.fromValueNode(valueNode, context), nodesQuery = NodesQuery.fromValueNode(valueNode, context), procedureCall = ProcedureCall.fromValueNode(valueNode, context), value = new Value(node, nodes, number, string, boolean, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
417
|
+
var Value = _dom.default.Value, Ternary = _dom.default.Ternary, Variable = _dom.default.Variable, NodeQuery = _dom.default.NodeQuery, NodesQuery = _dom.default.NodesQuery, ProcedureCall = _dom.default.ProcedureCall, node = nodeFromValueNode(valueNode, context), nodes = nodesFromValueNode(valueNode, context), number = numberFromValueNode(valueNode, context), string = stringFromValueNode(valueNode, context), boolean = booleanFromValueNode(valueNode, context), ternary = Ternary.fromValueNode(valueNode, context), variable = Variable.fromValueNode(valueNode, context), _$nodeQuery = NodeQuery.fromValueNode(valueNode, context), nodesQuery = NodesQuery.fromValueNode(valueNode, context), procedureCall = ProcedureCall.fromValueNode(valueNode, context), value = new Value(node, nodes, number, string, boolean, ternary, variable, _$nodeQuery, nodesQuery, procedureCall);
|
|
401
418
|
return value;
|
|
402
419
|
}
|
|
403
420
|
function nodeFromValueNode(valueNode, context) {
|
|
404
|
-
var node = null;
|
|
421
|
+
var node = null;
|
|
422
|
+
var primitiveTerminalNode = primitiveTerminalNodeQuery(valueNode);
|
|
423
|
+
if (primitiveTerminalNode !== null) {
|
|
424
|
+
var primitiveTerminalNodeContent = primitiveTerminalNode.getContent();
|
|
425
|
+
switch(primitiveTerminalNodeContent){
|
|
426
|
+
case _constants.NULL:
|
|
427
|
+
{
|
|
428
|
+
node = _nullNode.default;
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
405
433
|
return node;
|
|
406
434
|
}
|
|
407
435
|
function nodesFromValueNode(valueNode, context) {
|
|
@@ -450,21 +478,5 @@ function stringFromStringLiteral(stringLiteral, context) {
|
|
|
450
478
|
var string = stringLiteral.replace(/(^"|"$)/g, _constants.EMPTY_STRING);
|
|
451
479
|
return string;
|
|
452
480
|
}
|
|
453
|
-
var NullValue = /*#__PURE__*/ function() {
|
|
454
|
-
function NullValue() {
|
|
455
|
-
_class_call_check(this, NullValue);
|
|
456
|
-
}
|
|
457
|
-
_create_class(NullValue, null, [
|
|
458
|
-
{
|
|
459
|
-
key: "fromNothing",
|
|
460
|
-
value: function fromNothing() {
|
|
461
|
-
var nullValue = new NullValue();
|
|
462
|
-
return nullValue;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
]);
|
|
466
|
-
return NullValue;
|
|
467
|
-
}();
|
|
468
|
-
var nullValue = NullValue.fromNothing();
|
|
469
481
|
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb20vdmFsdWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgZG9tIGZyb20gXCIuLi9kb21cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgeyBOVUxMLCBUUlVFLCBGQUxTRSwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTk9ERV9UWVBFLCBOT0RFU19UWVBFLCBOVU1CRVJfVFlQRSwgU1RSSU5HX1RZUEUsIEJPT0xFQU5fVFlQRSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5jb25zdCB7IG1hdGNoIH0gPSBhcnJheVV0aWxpdGllcztcblxuY29uc3QgbnVtYmVyVGVybWluYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFsdWUvQG51bWJlclwiKSxcbiAgICAgIGNvbmRpdGlvblZhbHVlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2NvbmRpdGlvbi92YWx1ZVwiKSxcbiAgICAgIGFzc2lnbm1lbnRWYWx1ZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hc3NpZ25tZW50L3ZhbHVlXCIpLFxuICAgICAgcHJpbWl0aXZlVGVybWluYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFsdWUvQHByaW1pdGl2ZVwiKSxcbiAgICAgIHJldHVyblN0YXRlbWVudFZhbHVlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3JldHVyblN0YXRlbWVudC92YWx1ZVwiKSxcbiAgICAgIHN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi92YWx1ZS9Ac3RyaW5nLWxpdGVyYWxcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGRvbUFzc2lnbmVkKGNsYXNzIFZhbHVlIHtcbiAgY29uc3RydWN0b3Iobm9kZSwgbm9kZXMsIG51bWJlciwgc3RyaW5nLCBib29sZWFuLCB2YXJpYWJsZSwgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5LCBwcm9jZWR1cmVDYWxsKSB7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLm5vZGVzID0gbm9kZXM7XG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy5ib29sZWFuID0gYm9vbGVhbjtcbiAgICB0aGlzLnZhcmlhYmxlID0gdmFyaWFibGU7XG4gICAgdGhpcy5ub2RlUXVlcnkgPSBub2RlUXVlcnk7XG4gICAgdGhpcy5ub2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeTtcbiAgICB0aGlzLnByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsO1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgZ2V0Tm9kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXM7XG4gIH1cblxuICBnZXROdW1iZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMubnVtYmVyO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldEJvb2xlYW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuYm9vbGVhbjtcbiAgfVxuXG4gIGdldFZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0Tm9kZVF1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLm5vZGVRdWVyeTtcbiAgfVxuXG4gIGdldE5vZGVzUXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXNRdWVyeTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZUNhbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlQ2FsbDtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgbGV0IHR5cGU7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlICE9PSBudWxsKSB7XG4gICAgICB0eXBlID0gTk9ERV9UWVBFO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlcyAhPT0gbnVsbCkge1xuICAgICAgdHlwZSA9IE5PREVTX1RZUEU7XG4gICAgfSBlbHNlIGlmICh0aGlzLm51bWJlciAhPT0gbnVsbCkge1xuICAgICAgdHlwZSA9IE5VTUJFUl9UWVBFO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdHJpbmcgIT09IG51bGwpIHtcbiAgICAgIHR5cGUgPSBTVFJJTkdfVFlQRTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYm9vbGVhbiAhPT0gbnVsbCkge1xuICAgICAgdHlwZSA9IEJPT0xFQU5fVFlQRTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIHR5cGUgPSB0aGlzLnZhcmlhYmxlLmdldFR5cGUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubm9kZVF1ZXJ5ICE9PSBudWxsKSB7XG4gICAgICB0eXBlID0gdGhpcy5ub2RlUXVlcnkuZ2V0VHlwZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2Rlc1F1ZXJ5ICE9PSBudWxsKSB7XG4gICAgICB0eXBlID0gdGhpcy5ub2Rlc1F1ZXJ5LmdldFR5cGUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgICAgdHlwZSA9IHRoaXMucHJvY2VkdXJlQ2FsbC5nZXRUeXBlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBhc1N0cmluZyhjb250ZXh0KSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmICh0aGlzLm5vZGUgIT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IG5vZGVBc1N0cmluZyh0aGlzLm5vZGUsIGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlcyAhPT0gbnVsbCkge1xuICAgICAgc3RyaW5nID0gbm9kZXNBc1N0cmluZyh0aGlzLm5vZGVzLCBjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBzdHJpbmcgPSBudW1iZXJBc1N0cmluZyh0aGlzLm51bWJlciwgY29udGV4dCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0cmluZyAhPT0gbnVsbCkge1xuICAgICAgc3RyaW5nID0gc3RyaW5nQXNTdHJpbmcodGhpcy5zdHJpbmcsIGNvbnRleHQpXG4gICAgfSBlbHNlIGlmICh0aGlzLmJvb2xlYW4gIT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IGJvb2xlYW5Bc1N0cmluZyh0aGlzLmJvb2xlYW4sIGNvbnRleHQpXG4gICAgfSBlbHNlIGlmICh0aGlzLnZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBzdHJpbmcgPSB0aGlzLnZhcmlhYmxlLmFzU3RyaW5nKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlUXVlcnkgIT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IHRoaXMubm9kZVF1ZXJ5LmFzU3RyaW5nKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2Rlc1F1ZXJ5ICE9PSBudWxsKSB7XG4gICAgICBzdHJpbmcgPSB0aGlzLm5vZGVzUXVlcnkuYXNTdHJpbmcoY29udGV4dCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb2NlZHVyZUNhbGwgIT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IHRoaXMucHJvY2VkdXJlQ2FsbC5hc1N0cmluZyhjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgZXZhbHVhdGUoY29udGV4dCkge1xuICAgIGxldCB2YWx1ZTtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmICgodGhpcy5ub2RlICE9PSBudWxsKSAgfHxcbiAgICAgICAgICAgICAgICh0aGlzLm5vZGVzICE9PSBudWxsKSB8fFxuICAgICAgICAgICAgICAgKHRoaXMubnVtYmVyICE9PSBudWxsKSB8fFxuICAgICAgICAgICAgICAgKHRoaXMuc3RyaW5nICE9PSBudWxsKSB8fFxuICAgICAgICAgICAgICAgKHRoaXMuYm9vbGVhbiAhPT0gbnVsbCkpIHtcbiAgICAgIHZhbHVlID0gdGhpcztcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIHZhbHVlID0gdGhpcy52YXJpYWJsZS5ldmFsdWF0ZShjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubm9kZVF1ZXJ5ICE9PSBudWxsKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubm9kZVF1ZXJ5LmV2YWx1YXRlKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2Rlc1F1ZXJ5ICE9PSBudWxsKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubm9kZXNRdWVyeS5ldmFsdWF0ZShjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSB0aGlzLnByb2NlZHVyZUNhbGwuZXZhbHVhdGUoY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgaXNFcXVhbFRvKHZhbHVlKSB7XG4gICAgbGV0IGVxdWFsVG87XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlID0gdmFsdWUuZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgbm9kZU1hdGNoZXMgPSBtYXRjaE5vZGUodGhpcy5ub2RlLCBub2RlKTtcblxuICAgICAgZXF1YWxUbyA9IG5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIGlmICh0aGlzLm5vZGVzICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlcyA9IHZhbHVlLmdldE5vZGUoKSxcbiAgICAgICAgICAgIG5vZGVzTWF0Y2ggPSBtYXRjaE5vZGVzKHRoaXMubm9kZXMsIG5vZGVzKTtcblxuICAgICAgZXF1YWxUbyA9IG5vZGVzTWF0Y2g7IC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5udW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG51bWJlciA9IHZhbHVlLmdldE51bWJlcigpO1xuXG4gICAgICBlcXVhbFRvID0gKHRoaXMubnVtYmVyID09PSBudW1iZXIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdHJpbmcgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpO1xuXG4gICAgICBlcXVhbFRvID0gKHRoaXMuc3RyaW5nID09PSBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ib29sZWFuICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBib29sZWFuID0gdmFsdWUuZ2V0Qm9vbGVhbigpO1xuXG4gICAgICBlcXVhbFRvID0gKHRoaXMuYm9vbGVhbiA9PT0gYm9vbGVhbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnZ2VyXG4gICAgfVxuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVmFsdWVcIjtcblxuICBzdGF0aWMgZnJvbU5vZGUobm9kZSwgY29udGV4dCkge1xuICAgIGlmIChub2RlID09PSBudWxsKSB7XG4gICAgICBub2RlID0gbnVsbFZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVzID0gbnVsbCxcbiAgICAgICAgICBudW1iZXIgPSBudWxsLFxuICAgICAgICAgIHN0cmluZyA9IG51bGwsXG4gICAgICAgICAgYm9vbGVhbiA9IG51bGwsXG4gICAgICAgICAgdmFyaWFibGUgPSBudWxsLFxuICAgICAgICAgIG5vZGVRdWVyeSA9IG51bGwsXG4gICAgICAgICAgbm9kZXNRdWVyeSA9IG51bGwsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IG51bGwsXG4gICAgICAgICAgdmFsdWUgPSBuZXcgVmFsdWUobm9kZSwgbm9kZXMsIG51bWJlciwgc3RyaW5nLCBib29sZWFuLCB2YXJpYWJsZSwgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5LCBwcm9jZWR1cmVDYWxsKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm9kZXMobm9kZXMsIGNvbnRleHQpIHtcbiAgICBjb25zdCBub2RlID0gbnVsbCxcbiAgICAgICAgICBudW1iZXIgPSBudWxsLFxuICAgICAgICAgIHN0cmluZyA9IG51bGwsXG4gICAgICAgICAgYm9vbGVhbiA9IG51bGwsXG4gICAgICAgICAgdmFyaWFibGUgPSBudWxsLFxuICAgICAgICAgIG5vZGVRdWVyeSA9IG51bGwsXG4gICAgICAgICAgbm9kZXNRdWVyeSA9IG51bGwsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IG51bGwsXG4gICAgICAgICAgdmFsdWUgPSBuZXcgVmFsdWUobm9kZSwgbm9kZXMsIG51bWJlciwgc3RyaW5nLCBib29sZWFuLCB2YXJpYWJsZSwgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5LCBwcm9jZWR1cmVDYWxsKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RyaW5nKHN0cmluZywgY29udGV4dCkge1xuICAgIGNvbnN0IG5vZGUgPSBudWxsLFxuICAgICAgICAgIG5vZGVzID0gbnVsbCxcbiAgICAgICAgICBudW1iZXIgPSBudWxsLFxuICAgICAgICAgIGJvb2xlYW4gPSBudWxsLFxuICAgICAgICAgIHZhcmlhYmxlID0gbnVsbCxcbiAgICAgICAgICBub2RlUXVlcnkgPSBudWxsLFxuICAgICAgICAgIG5vZGVzUXVlcnkgPSBudWxsLFxuICAgICAgICAgIHByb2NlZHVyZUNhbGwgPSBudWxsLFxuICAgICAgICAgIHZhbHVlID0gbmV3IFZhbHVlKG5vZGUsIG5vZGVzLCBudW1iZXIsIHN0cmluZywgYm9vbGVhbiwgdmFyaWFibGUsIG5vZGVRdWVyeSwgbm9kZXNRdWVyeSwgcHJvY2VkdXJlQ2FsbCk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUJvb2xlYW4oYm9vbGVhbiwgY29udGV4dCkge1xuICAgIGNvbnN0IG5vZGUgPSBudWxsLFxuICAgICAgICAgIG5vZGVzID0gbnVsbCxcbiAgICAgICAgICBudW1iZXIgPSBudWxsLFxuICAgICAgICAgIHN0cmluZyA9IG51bGwsXG4gICAgICAgICAgdmFyaWFibGUgPSBudWxsLFxuICAgICAgICAgIG5vZGVRdWVyeSA9IG51bGwsXG4gICAgICAgICAgbm9kZXNRdWVyeSA9IG51bGwsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IG51bGwsXG4gICAgICAgICAgdmFsdWUgPSBuZXcgVmFsdWUobm9kZSwgbm9kZXMsIG51bWJlciwgc3RyaW5nLCBib29sZWFuLCB2YXJpYWJsZSwgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5LCBwcm9jZWR1cmVDYWxsKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHZhbHVlID0gdmFsdWVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNvbmRpdGlvbk5vZGUoY29uZGl0aW9uTm9kZSwgY29udGV4dCkge1xuICAgIGxldCB2YWx1ZSA9IG51bGw7XG5cbiAgICBjb25zdCBjb25kaXRpb25WYWx1ZU5vZGUgPSBjb25kaXRpb25WYWx1ZU5vZGVRdWVyeShjb25kaXRpb25Ob2RlKTtcblxuICAgIGlmIChjb25kaXRpb25WYWx1ZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZhbHVlTm9kZSA9IGNvbmRpdGlvblZhbHVlTm9kZTsgLy8vXG5cbiAgICAgIHZhbHVlID0gdmFsdWVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGZyb21Bc3NpZ25tZW50Tm9kZShhc3NpZ21lbnROb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHZhbHVlID0gbnVsbDtcblxuICAgIGNvbnN0IGFzc2lnbm1lbnRWYWx1ZU5vZGUgPSBhc3NpZ25tZW50VmFsdWVOb2RlUXVlcnkoYXNzaWdtZW50Tm9kZSk7XG5cbiAgICBpZiAoYXNzaWdubWVudFZhbHVlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmFsdWVOb2RlID0gYXNzaWdubWVudFZhbHVlTm9kZTsgIC8vL1xuXG4gICAgICB2YWx1ZSA9IHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUmV0dXJuU3RhdGVtZW50Tm9kZShyZXR1cm5TdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHZhbHVlID0gbnVsbDtcblxuICAgIGNvbnN0IHJldHVyblN0YXRlbWVudFZhbHVlTm9kZSA9IHJldHVyblN0YXRlbWVudFZhbHVlTm9kZVF1ZXJ5KHJldHVyblN0YXRlbWVudE5vZGUpO1xuXG4gICAgaWYgKHJldHVyblN0YXRlbWVudFZhbHVlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmFsdWVOb2RlID0gcmV0dXJuU3RhdGVtZW50VmFsdWVOb2RlOyAvLy9cblxuICAgICAgdmFsdWUgPSB2YWx1ZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBtYXRjaE5vZGUobm9kZUEsIG5vZGVCKSB7XG4gIGxldCBub2RlTWF0Y2hlcztcblxuICBpZiAoKG5vZGVBID09PSBudWxsKSB8fCAobm9kZUIgPT09IG51bGwpKSB7XG4gICAgbm9kZU1hdGNoZXMgPSAobm9kZUEgPT09IG5vZGVCKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBub2RlQUVxdWFsVG9Ob2RlQSA9IG5vZGVBLmlzRXF1YWxUbyhub2RlQik7XG5cbiAgICBub2RlTWF0Y2hlcyA9IG5vZGVBRXF1YWxUb05vZGVBOyAgLy8vXG4gIH1cblxuICByZXR1cm4gbm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoTm9kZXMobm9kZXNBLCBub2Rlc0IpIHtcbiAgbGV0IG5vZGVzTWF0Y2g7XG5cbiAgaWYgKChub2Rlc0EgPT09IG51bGwpIHx8IChub2Rlc0IgPT09IG51bGwpKSB7XG4gICAgbm9kZXNNYXRjaCA9IChub2Rlc0EgPT09IG5vZGVzQik7XG4gIH0gZWxzZSB7XG4gICAgbm9kZXNNYXRjaCA9IG1hdGNoKG5vZGVzQSwgbm9kZXNCLCAobm9kZUEsIG5vZGVCKSA9PiB7XG4gICAgICBjb25zdCBub2RlTWF0Y2hlcyA9IG1hdGNoTm9kZShub2RlQSwgbm9kZUIpO1xuXG4gICAgICBpZiAobm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbm9kZXNNYXRjaDtcbn1cblxuZnVuY3Rpb24gbm9kZUFzU3RyaW5nKG5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHN0cmluZztcblxuICBjb25zdCBub2RlU3RyaW5nICA9IChub2RlID09PSBudWxsVmFsdWUpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKTtcblxuICBzdHJpbmcgPSBgJyR7bm9kZVN0cmluZ30nYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBub2Rlc0FzU3RyaW5nKG5vZGVzLCBjb250ZXh0KSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgY29uc3Qgbm9kZXNTdHJpbmcgPSBjb250ZXh0Lm5vZGVzQXNTdHJpbmcobm9kZXMpO1xuXG4gIHN0cmluZyA9IGAnJHtub2Rlc1N0cmluZ30nYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBudW1iZXJBc1N0cmluZyhudW1iZXIsIGNvbnRleHQpIHtcbiAgbGV0IHN0cmluZztcblxuICBzdHJpbmcgPSBgJHtudW1iZXJ9YDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdBc1N0cmluZyhzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYFwiJHtzdHJpbmd9XCJgOyAvLy9cblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBib29sZWFuQXNTdHJpbmcoYm9vbGVhbiwgY29udGV4dCkge1xuICBsZXQgc3RyaW5nO1xuXG4gIHN0cmluZyA9IGAnJHtib29sZWFufSdgO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYWx1ZSwgVmFyaWFibGUsIE5vZGVRdWVyeSwgTm9kZXNRdWVyeSwgUHJvY2VkdXJlQ2FsbCB9ID0gZG9tLFxuICAgICAgICBub2RlID0gbm9kZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZXMgPSBub2Rlc0Zyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbnVtYmVyID0gbnVtYmVyRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBzdHJpbmcgPSBzdHJpbmdGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGJvb2xlYW4gPSBib29sZWFuRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZVF1ZXJ5ID0gTm9kZVF1ZXJ5LmZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZXNRdWVyeSA9IE5vZGVzUXVlcnkuZnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwcm9jZWR1cmVDYWxsID0gUHJvY2VkdXJlQ2FsbC5mcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhbHVlID0gbmV3IFZhbHVlKG5vZGUsIG5vZGVzLCBudW1iZXIsIHN0cmluZywgYm9vbGVhbiwgdmFyaWFibGUsIG5vZGVRdWVyeSwgbm9kZXNRdWVyeSwgcHJvY2VkdXJlQ2FsbCk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBub2RlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgbm9kZSA9IG51bGw7ICAvLy9cblxuICByZXR1cm4gbm9kZTtcbn1cblxuZnVuY3Rpb24gbm9kZXNGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBub2RlcyA9IG51bGw7ICAvLy9cblxuICByZXR1cm4gbm9kZXM7XG59XG5cbmZ1bmN0aW9uIG51bWJlckZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBudW1iZXIgPSBudWxsO1xuXG4gIGNvbnN0IG51bWJlclRlcm1pbmFsTm9kZSA9IG51bWJlclRlcm1pbmFsTm9kZVF1ZXJ5KHZhbHVlTm9kZSk7XG5cbiAgaWYgKG51bWJlclRlcm1pbmFsTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG51bWJlclRlcm1pbmFsTm9kZUNvbnRlbnQgPSBudW1iZXJUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpO1xuXG4gICAgbnVtYmVyID0gTnVtYmVyKG51bWJlclRlcm1pbmFsTm9kZUNvbnRlbnQpO1xuICB9XG5cbiAgcmV0dXJuIG51bWJlcjtcbn1cblxuZnVuY3Rpb24gc3RyaW5nRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHN0cmluZyA9IG51bGw7XG5cbiAgY29uc3Qgc3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZSA9IHN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVRdWVyeSh2YWx1ZU5vZGUpO1xuXG4gIGlmIChzdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZUNvbnRlbnQgPSBzdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlLmdldENvbnRlbnQoKSxcbiAgICAgICAgICBzdHJpbmdMaXRlcmFsID0gc3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZUNvbnRlbnQ7IC8vL1xuXG4gICAgc3RyaW5nID0gc3RyaW5nRnJvbVN0cmluZ0xpdGVyYWwoc3RyaW5nTGl0ZXJhbCwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBib29sZWFuRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGJvb2xlYW4gPSBudWxsO1xuXG4gIGNvbnN0IHByaW1pdGl2ZVRlcm1pbmFsTm9kZSA9IHByaW1pdGl2ZVRlcm1pbmFsTm9kZVF1ZXJ5KHZhbHVlTm9kZSk7XG5cbiAgaWYgKHByaW1pdGl2ZVRlcm1pbmFsTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHByaW1pdGl2ZVRlcm1pbmFsTm9kZUNvbnRlbnQgPSBwcmltaXRpdmVUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpO1xuXG4gICAgc3dpdGNoIChwcmltaXRpdmVUZXJtaW5hbE5vZGVDb250ZW50KSB7XG4gICAgICBjYXNlIFRSVUU6IHtcbiAgICAgICAgYm9vbGVhbiA9IHRydWU7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRkFMU0U6IHtcbiAgICAgICAgYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbChzdHJpbmdMaXRlcmFsLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0cmluZyA9IHN0cmluZ0xpdGVyYWwucmVwbGFjZSgvKF5cInxcIiQpL2csIEVNUFRZX1NUUklORyk7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuY2xhc3MgTnVsbFZhbHVlIHtcbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IG51bGxWYWx1ZSA9IG5ldyBOdWxsVmFsdWUoKTtcblxuICAgIHJldHVybiBudWxsVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG51bGxWYWx1ZSA9IE51bGxWYWx1ZS5mcm9tTm90aGluZygpO1xuIl0sIm5hbWVzIjpbIm51bGxWYWx1ZSIsIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJudW1iZXJUZXJtaW5hbE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImNvbmRpdGlvblZhbHVlTm9kZVF1ZXJ5IiwiYXNzaWdubWVudFZhbHVlTm9kZVF1ZXJ5IiwicHJpbWl0aXZlVGVybWluYWxOb2RlUXVlcnkiLCJyZXR1cm5TdGF0ZW1lbnRWYWx1ZU5vZGVRdWVyeSIsInN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVRdWVyeSIsImRvbUFzc2lnbmVkIiwiVmFsdWUiLCJub2RlIiwibm9kZXMiLCJudW1iZXIiLCJzdHJpbmciLCJib29sZWFuIiwidmFyaWFibGUiLCJub2Rlc1F1ZXJ5IiwicHJvY2VkdXJlQ2FsbCIsImdldE5vZGUiLCJnZXROb2RlcyIsImdldE51bWJlciIsImdldFN0cmluZyIsImdldEJvb2xlYW4iLCJnZXRWYXJpYWJsZSIsImdldE5vZGVRdWVyeSIsImdldE5vZGVzUXVlcnkiLCJnZXRQcm9jZWR1cmVDYWxsIiwiZ2V0VHlwZSIsInR5cGUiLCJOT0RFX1RZUEUiLCJOT0RFU19UWVBFIiwiTlVNQkVSX1RZUEUiLCJTVFJJTkdfVFlQRSIsIkJPT0xFQU5fVFlQRSIsImFzU3RyaW5nIiwiY29udGV4dCIsIm5vZGVBc1N0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJudW1iZXJBc1N0cmluZyIsInN0cmluZ0FzU3RyaW5nIiwiYm9vbGVhbkFzU3RyaW5nIiwiZXZhbHVhdGUiLCJ2YWx1ZSIsImlzRXF1YWxUbyIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsIm5vZGVzTWF0Y2giLCJtYXRjaE5vZGVzIiwiZnJvbU5vZGUiLCJmcm9tTm9kZXMiLCJmcm9tU3RyaW5nIiwiZnJvbUJvb2xlYW4iLCJmcm9tVmFsdWVOb2RlIiwidmFsdWVOb2RlIiwidmFsdWVGcm9tVmFsdWVOb2RlIiwiZnJvbUNvbmRpdGlvbk5vZGUiLCJjb25kaXRpb25Ob2RlIiwiY29uZGl0aW9uVmFsdWVOb2RlIiwiZnJvbUFzc2lnbm1lbnROb2RlIiwiYXNzaWdtZW50Tm9kZSIsImFzc2lnbm1lbnRWYWx1ZU5vZGUiLCJmcm9tUmV0dXJuU3RhdGVtZW50Tm9kZSIsInJldHVyblN0YXRlbWVudE5vZGUiLCJyZXR1cm5TdGF0ZW1lbnRWYWx1ZU5vZGUiLCJuYW1lIiwibm9kZUEiLCJub2RlQiIsIm5vZGVBRXF1YWxUb05vZGVBIiwibm9kZXNBIiwibm9kZXNCIiwibm9kZVN0cmluZyIsIk5VTEwiLCJub2Rlc1N0cmluZyIsImRvbSIsIlZhcmlhYmxlIiwiTm9kZVF1ZXJ5IiwiTm9kZXNRdWVyeSIsIlByb2NlZHVyZUNhbGwiLCJub2RlRnJvbVZhbHVlTm9kZSIsIm5vZGVzRnJvbVZhbHVlTm9kZSIsIm51bWJlckZyb21WYWx1ZU5vZGUiLCJzdHJpbmdGcm9tVmFsdWVOb2RlIiwiYm9vbGVhbkZyb21WYWx1ZU5vZGUiLCJudW1iZXJUZXJtaW5hbE5vZGUiLCJudW1iZXJUZXJtaW5hbE5vZGVDb250ZW50IiwiZ2V0Q29udGVudCIsIk51bWJlciIsInN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGUiLCJzdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlQ29udGVudCIsInN0cmluZ0xpdGVyYWwiLCJzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCIsInByaW1pdGl2ZVRlcm1pbmFsTm9kZSIsInByaW1pdGl2ZVRlcm1pbmFsTm9kZUNvbnRlbnQiLCJUUlVFIiwiRkFMU0UiLCJyZXBsYWNlIiwiRU1QVFlfU1RSSU5HIiwiTnVsbFZhbHVlIiwiZnJvbU5vdGhpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQW9CQSxPQWdSRztlQWhSSDs7SUErYmFBLFNBQVM7ZUFBVEE7Ozt5QkFqZGtCOzJEQUVmO3FCQUVVO3lCQUVzQjtxQkFDOEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5RSxJQUFNLEFBQUVDLFFBQVVDLHlCQUFjLENBQXhCRDtBQUVSLElBQU1FLDBCQUEwQkMsSUFBQUEsZ0JBQVMsRUFBQyxtQkFDcENDLDBCQUEwQkQsSUFBQUEsZ0JBQVMsRUFBQyxxQkFDcENFLDJCQUEyQkYsSUFBQUEsZ0JBQVMsRUFBQyxzQkFDckNHLDZCQUE2QkgsSUFBQUEsZ0JBQVMsRUFBQyxzQkFDdkNJLGdDQUFnQ0osSUFBQUEsZ0JBQVMsRUFBQywyQkFDMUNLLGlDQUFpQ0wsSUFBQUEsZ0JBQVMsRUFBQztJQUVqRCxXQUFlTSxJQUFBQSxnQkFBVywwQkFBQzthQUFNQyxNQUNuQkMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRWIsU0FBUyxFQUFFYyxVQUFVLEVBQUVDLGFBQWE7Z0NBRGpFUjtRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDYixTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ2MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLGFB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
|
|
482
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb20vdmFsdWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgZG9tIGZyb20gXCIuLi9kb21cIjtcbmltcG9ydCBudWxsTm9kZSBmcm9tIFwiLi4vbnVsbE5vZGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgeyBOVUxMLCBUUlVFLCBGQUxTRSwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTk9ERV9UWVBFLCBOT0RFU19UWVBFLCBOVU1CRVJfVFlQRSwgU1RSSU5HX1RZUEUsIEJPT0xFQU5fVFlQRSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5jb25zdCB7IG1hdGNoIH0gPSBhcnJheVV0aWxpdGllcztcblxuY29uc3QgbnVtYmVyVGVybWluYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFsdWUvQG51bWJlclwiKSxcbiAgICAgIGNvbmRpdGlvblZhbHVlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2NvbmRpdGlvbi92YWx1ZVwiKSxcbiAgICAgIGFzc2lnbm1lbnRWYWx1ZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hc3NpZ25tZW50L3ZhbHVlXCIpLFxuICAgICAgcHJpbWl0aXZlVGVybWluYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFsdWUvQHByaW1pdGl2ZVwiKSxcbiAgICAgIHJldHVyblN0YXRlbWVudFZhbHVlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3JldHVyblN0YXRlbWVudC92YWx1ZVwiKSxcbiAgICAgIHN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi92YWx1ZS9Ac3RyaW5nLWxpdGVyYWxcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGRvbUFzc2lnbmVkKGNsYXNzIFZhbHVlIHtcbiAgY29uc3RydWN0b3Iobm9kZSwgbm9kZXMsIG51bWJlciwgc3RyaW5nLCBib29sZWFuLCB0ZXJuYXJ5LCB2YXJpYWJsZSwgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5LCBwcm9jZWR1cmVDYWxsKSB7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLm5vZGVzID0gbm9kZXM7XG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy5ib29sZWFuID0gYm9vbGVhbjtcbiAgICB0aGlzLnRlcm5hcnkgPSB0ZXJuYXJ5O1xuICAgIHRoaXMudmFyaWFibGUgPSB2YXJpYWJsZTtcbiAgICB0aGlzLm5vZGVRdWVyeSA9IG5vZGVRdWVyeTtcbiAgICB0aGlzLm5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5O1xuICAgIHRoaXMucHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGw7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcztcbiAgfVxuXG4gIGdldE51bWJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXI7XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0Qm9vbGVhbigpIHtcbiAgICByZXR1cm4gdGhpcy5ib29sZWFuO1xuICB9XG5cbiAgZ2V0VGVybmFyeSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJuYXk7XG4gIH1cblxuICBnZXRWYXJpYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZTtcbiAgfVxuXG4gIGdldE5vZGVRdWVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlUXVlcnk7XG4gIH1cblxuICBnZXROb2Rlc1F1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzUXVlcnk7XG4gIH1cblxuICBnZXRQcm9jZWR1cmVDYWxsKCkge1xuICAgIHJldHVybiB0aGlzLnByb2NlZHVyZUNhbGw7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIGxldCB0eXBlO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKHRoaXMubm9kZSAhPT0gbnVsbCkge1xuICAgICAgdHlwZSA9IE5PREVfVFlQRTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubm9kZXMgIT09IG51bGwpIHtcbiAgICAgIHR5cGUgPSBOT0RFU19UWVBFO1xuICAgIH0gZWxzZSBpZiAodGhpcy5udW1iZXIgIT09IG51bGwpIHtcbiAgICAgIHR5cGUgPSBOVU1CRVJfVFlQRTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RyaW5nICE9PSBudWxsKSB7XG4gICAgICB0eXBlID0gU1RSSU5HX1RZUEU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmJvb2xlYW4gIT09IG51bGwpIHtcbiAgICAgIHR5cGUgPSBCT09MRUFOX1RZUEU7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRlcm5hcnkgIT09IG51bGwpIHtcbiAgICAgIHR5cGUgPSB0aGlzLnRlcm5hcnkuZ2V0VHlwZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy52YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgdHlwZSA9IHRoaXMudmFyaWFibGUuZ2V0VHlwZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlUXVlcnkgIT09IG51bGwpIHtcbiAgICAgIHR5cGUgPSB0aGlzLm5vZGVRdWVyeS5nZXRUeXBlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5vZGVzUXVlcnkgIT09IG51bGwpIHtcbiAgICAgIHR5cGUgPSB0aGlzLm5vZGVzUXVlcnkuZ2V0VHlwZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICB0eXBlID0gdGhpcy5wcm9jZWR1cmVDYWxsLmdldFR5cGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGFzU3RyaW5nKGNvbnRleHQpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKHRoaXMubm9kZSAhPT0gbnVsbCkge1xuICAgICAgc3RyaW5nID0gbm9kZUFzU3RyaW5nKHRoaXMubm9kZSwgY29udGV4dCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5vZGVzICE9PSBudWxsKSB7XG4gICAgICBzdHJpbmcgPSBub2Rlc0FzU3RyaW5nKHRoaXMubm9kZXMsIGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5udW1iZXIgIT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IG51bWJlckFzU3RyaW5nKHRoaXMubnVtYmVyLCBjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RyaW5nICE9PSBudWxsKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmdBc1N0cmluZyh0aGlzLnN0cmluZywgY29udGV4dClcbiAgICB9IGVsc2UgaWYgKHRoaXMuYm9vbGVhbiAhPT0gbnVsbCkge1xuICAgICAgc3RyaW5nID0gYm9vbGVhbkFzU3RyaW5nKHRoaXMuYm9vbGVhbiwgY29udGV4dClcbiAgICB9IGVsc2UgaWYgKHRoaXMudGVybmFyeSAhPT0gbnVsbCkge1xuICAgICAgc3RyaW5nID0gdGhpcy50ZXJuYXJ5LmFzU3RyaW5nKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy52YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgc3RyaW5nID0gdGhpcy52YXJpYWJsZS5hc1N0cmluZyhjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubm9kZVF1ZXJ5ICE9PSBudWxsKSB7XG4gICAgICBzdHJpbmcgPSB0aGlzLm5vZGVRdWVyeS5hc1N0cmluZyhjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubm9kZXNRdWVyeSAhPT0gbnVsbCkge1xuICAgICAgc3RyaW5nID0gdGhpcy5ub2Rlc1F1ZXJ5LmFzU3RyaW5nKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICBzdHJpbmcgPSB0aGlzLnByb2NlZHVyZUNhbGwuYXNTdHJpbmcoY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIGV2YWx1YXRlKGNvbnRleHQpIHtcbiAgICBsZXQgdmFsdWU7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAoKHRoaXMubm9kZSAhPT0gbnVsbCkgIHx8XG4gICAgICAgICAgICAgICAodGhpcy5ub2RlcyAhPT0gbnVsbCkgfHxcbiAgICAgICAgICAgICAgICh0aGlzLm51bWJlciAhPT0gbnVsbCkgfHxcbiAgICAgICAgICAgICAgICh0aGlzLnN0cmluZyAhPT0gbnVsbCkgfHxcbiAgICAgICAgICAgICAgICh0aGlzLmJvb2xlYW4gIT09IG51bGwpKSB7XG4gICAgICB2YWx1ZSA9IHRoaXM7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRlcm5hcnkgIT09IG51bGwpIHtcbiAgICAgIHZhbHVlID0gdGhpcy50ZXJuYXJ5LmV2YWx1YXRlKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy52YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSB0aGlzLnZhcmlhYmxlLmV2YWx1YXRlKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlUXVlcnkgIT09IG51bGwpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5ub2RlUXVlcnkuZXZhbHVhdGUoY29udGV4dCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5vZGVzUXVlcnkgIT09IG51bGwpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5ub2Rlc1F1ZXJ5LmV2YWx1YXRlKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucHJvY2VkdXJlQ2FsbC5ldmFsdWF0ZShjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBpc0VxdWFsVG8odmFsdWUpIHtcbiAgICBsZXQgZXF1YWxUbztcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmICh0aGlzLm5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSB2YWx1ZS5nZXROb2RlKCk7XG5cbiAgICAgIGlmIChub2RlID09PSBudWxsKSB7XG4gICAgICAgIGVxdWFsVG8gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5vZGVBID0gdGhpcy5ub2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vZGVNYXRjaGVzID0gbWF0Y2hOb2RlKG5vZGVBLCBub2RlQik7XG5cbiAgICAgICAgZXF1YWxUbyA9IG5vZGVNYXRjaGVzOyAgLy8vXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm5vZGVzICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlcyA9IHZhbHVlLmdldE5vZGUoKTtcblxuICAgICAgaWYgKG5vZGVzID09PSBudWxsKSB7XG4gICAgICAgIGVxdWFsVG8gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5vZGVzQSA9IHRoaXMubm9kZXMsICAvLy9cbiAgICAgICAgICAgICAgbm9kZXNCID0gbm9kZXMsIC8vL1xuICAgICAgICAgICAgICBub2Rlc01hdGNoID0gbWF0Y2hOb2Rlcyhub2Rlc0EsIG5vZGVzQik7XG5cbiAgICAgICAgZXF1YWxUbyA9IG5vZGVzTWF0Y2g7IC8vL1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5udW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG51bWJlciA9IHZhbHVlLmdldE51bWJlcigpO1xuXG4gICAgICBlcXVhbFRvID0gKHRoaXMubnVtYmVyID09PSBudW1iZXIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdHJpbmcgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpO1xuXG4gICAgICBlcXVhbFRvID0gKHRoaXMuc3RyaW5nID09PSBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ib29sZWFuICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBib29sZWFuID0gdmFsdWUuZ2V0Qm9vbGVhbigpO1xuXG4gICAgICBlcXVhbFRvID0gKHRoaXMuYm9vbGVhbiA9PT0gYm9vbGVhbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnZ2VyXG4gICAgfVxuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVmFsdWVcIjtcblxuICBzdGF0aWMgZnJvbU5vZGUobm9kZSwgY29udGV4dCkge1xuICAgIGlmIChub2RlID09PSBudWxsKSB7XG4gICAgICBub2RlID0gbnVsbE5vZGU7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZXMgPSBudWxsLFxuICAgICAgICAgIG51bWJlciA9IG51bGwsXG4gICAgICAgICAgc3RyaW5nID0gbnVsbCxcbiAgICAgICAgICBib29sZWFuID0gbnVsbCxcbiAgICAgICAgICB0ZXJuYXJ5ID0gbnVsbCxcbiAgICAgICAgICB2YXJpYWJsZSA9IG51bGwsXG4gICAgICAgICAgbm9kZVF1ZXJ5ID0gbnVsbCxcbiAgICAgICAgICBub2Rlc1F1ZXJ5ID0gbnVsbCxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gbnVsbCxcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBWYWx1ZShub2RlLCBub2RlcywgbnVtYmVyLCBzdHJpbmcsIGJvb2xlYW4sIHRlcm5hcnksIHZhcmlhYmxlLCBub2RlUXVlcnksIG5vZGVzUXVlcnksIHByb2NlZHVyZUNhbGwpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob2Rlcyhub2RlcywgY29udGV4dCkge1xuICAgIGNvbnN0IG5vZGUgPSBudWxsLFxuICAgICAgICAgIG51bWJlciA9IG51bGwsXG4gICAgICAgICAgc3RyaW5nID0gbnVsbCxcbiAgICAgICAgICBib29sZWFuID0gbnVsbCxcbiAgICAgICAgICB0ZXJuYXJ5ID0gbnVsbCxcbiAgICAgICAgICB2YXJpYWJsZSA9IG51bGwsXG4gICAgICAgICAgbm9kZVF1ZXJ5ID0gbnVsbCxcbiAgICAgICAgICBub2Rlc1F1ZXJ5ID0gbnVsbCxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gbnVsbCxcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBWYWx1ZShub2RlLCBub2RlcywgbnVtYmVyLCBzdHJpbmcsIGJvb2xlYW4sIHRlcm5hcnksIHZhcmlhYmxlLCBub2RlUXVlcnksIG5vZGVzUXVlcnksIHByb2NlZHVyZUNhbGwpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdHJpbmcoc3RyaW5nLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgbm9kZSA9IG51bGwsXG4gICAgICAgICAgbm9kZXMgPSBudWxsLFxuICAgICAgICAgIG51bWJlciA9IG51bGwsXG4gICAgICAgICAgYm9vbGVhbiA9IG51bGwsXG4gICAgICAgICAgdGVybmFyeSA9IG51bGwsXG4gICAgICAgICAgdmFyaWFibGUgPSBudWxsLFxuICAgICAgICAgIG5vZGVRdWVyeSA9IG51bGwsXG4gICAgICAgICAgbm9kZXNRdWVyeSA9IG51bGwsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IG51bGwsXG4gICAgICAgICAgdmFsdWUgPSBuZXcgVmFsdWUobm9kZSwgbm9kZXMsIG51bWJlciwgc3RyaW5nLCBib29sZWFuLCB0ZXJuYXJ5LCB2YXJpYWJsZSwgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5LCBwcm9jZWR1cmVDYWxsKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQm9vbGVhbihib29sZWFuLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgbm9kZSA9IG51bGwsXG4gICAgICAgICAgbm9kZXMgPSBudWxsLFxuICAgICAgICAgIG51bWJlciA9IG51bGwsXG4gICAgICAgICAgc3RyaW5nID0gbnVsbCxcbiAgICAgICAgICB0ZXJuYXJ5ID0gbnVsbCxcbiAgICAgICAgICB2YXJpYWJsZSA9IG51bGwsXG4gICAgICAgICAgbm9kZVF1ZXJ5ID0gbnVsbCxcbiAgICAgICAgICBub2Rlc1F1ZXJ5ID0gbnVsbCxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gbnVsbCxcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBWYWx1ZShub2RlLCBub2RlcywgbnVtYmVyLCBzdHJpbmcsIGJvb2xlYW4sIHRlcm5hcnksIHZhcmlhYmxlLCBub2RlUXVlcnksIG5vZGVzUXVlcnksIHByb2NlZHVyZUNhbGwpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdmFsdWUgPSB2YWx1ZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ29uZGl0aW9uTm9kZShjb25kaXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHZhbHVlID0gbnVsbDtcblxuICAgIGNvbnN0IGNvbmRpdGlvblZhbHVlTm9kZSA9IGNvbmRpdGlvblZhbHVlTm9kZVF1ZXJ5KGNvbmRpdGlvbk5vZGUpO1xuXG4gICAgaWYgKGNvbmRpdGlvblZhbHVlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmFsdWVOb2RlID0gY29uZGl0aW9uVmFsdWVOb2RlOyAvLy9cblxuICAgICAgdmFsdWUgPSB2YWx1ZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUFzc2lnbm1lbnROb2RlKGFzc2lnbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgdmFsdWUgPSBudWxsO1xuXG4gICAgY29uc3QgYXNzaWdubWVudFZhbHVlTm9kZSA9IGFzc2lnbm1lbnRWYWx1ZU5vZGVRdWVyeShhc3NpZ21lbnROb2RlKTtcblxuICAgIGlmIChhc3NpZ25tZW50VmFsdWVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YWx1ZU5vZGUgPSBhc3NpZ25tZW50VmFsdWVOb2RlOyAgLy8vXG5cbiAgICAgIHZhbHVlID0gdmFsdWVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgdmFsdWUgPSBudWxsO1xuXG4gICAgY29uc3QgcmV0dXJuU3RhdGVtZW50VmFsdWVOb2RlID0gcmV0dXJuU3RhdGVtZW50VmFsdWVOb2RlUXVlcnkocmV0dXJuU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBpZiAocmV0dXJuU3RhdGVtZW50VmFsdWVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YWx1ZU5vZGUgPSByZXR1cm5TdGF0ZW1lbnRWYWx1ZU5vZGU7IC8vL1xuXG4gICAgICB2YWx1ZSA9IHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG1hdGNoTm9kZShub2RlQSwgbm9kZUIpIHtcbiAgbGV0IG5vZGVNYXRjaGVzO1xuXG4gIGlmICgobm9kZUEgPT09IG51bGxOb2RlKSB8fCAobm9kZUIgPT09IG51bGxOb2RlKSkge1xuICAgIG5vZGVNYXRjaGVzID0gKG5vZGVBID09PSBub2RlQik7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9kZUFFcXVhbFRvTm9kZUEgPSBub2RlQS5pc0VxdWFsVG8obm9kZUIpO1xuXG4gICAgbm9kZU1hdGNoZXMgPSBub2RlQUVxdWFsVG9Ob2RlQTsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIG5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE5vZGVzKG5vZGVzQSwgbm9kZXNCKSB7XG4gIGxldCBub2Rlc01hdGNoO1xuXG4gIG5vZGVzTWF0Y2ggPSBtYXRjaChub2Rlc0EsIG5vZGVzQiwgKG5vZGVBLCBub2RlQikgPT4ge1xuICAgIGNvbnN0IG5vZGVNYXRjaGVzID0gbWF0Y2hOb2RlKG5vZGVBLCBub2RlQik7XG5cbiAgICBpZiAobm9kZU1hdGNoZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG5vZGVzTWF0Y2g7XG59XG5cbmZ1bmN0aW9uIG5vZGVBc1N0cmluZyhub2RlLCBjb250ZXh0KSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgY29uc3Qgbm9kZVN0cmluZyAgPSAobm9kZSA9PT0gbnVsbE5vZGUpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKTtcblxuICBzdHJpbmcgPSBgJyR7bm9kZVN0cmluZ30nYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBub2Rlc0FzU3RyaW5nKG5vZGVzLCBjb250ZXh0KSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgY29uc3Qgbm9kZXNTdHJpbmcgPSBjb250ZXh0Lm5vZGVzQXNTdHJpbmcobm9kZXMpO1xuXG4gIHN0cmluZyA9IGAnJHtub2Rlc1N0cmluZ30nYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBudW1iZXJBc1N0cmluZyhudW1iZXIsIGNvbnRleHQpIHtcbiAgbGV0IHN0cmluZztcblxuICBzdHJpbmcgPSBgJHtudW1iZXJ9YDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdBc1N0cmluZyhzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYFwiJHtzdHJpbmd9XCJgOyAvLy9cblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBib29sZWFuQXNTdHJpbmcoYm9vbGVhbiwgY29udGV4dCkge1xuICBsZXQgc3RyaW5nO1xuXG4gIHN0cmluZyA9IGAnJHtib29sZWFufSdgO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYWx1ZSwgVGVybmFyeSwgVmFyaWFibGUsIE5vZGVRdWVyeSwgTm9kZXNRdWVyeSwgUHJvY2VkdXJlQ2FsbCB9ID0gZG9tLFxuICAgICAgICBub2RlID0gbm9kZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZXMgPSBub2Rlc0Zyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbnVtYmVyID0gbnVtYmVyRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBzdHJpbmcgPSBzdHJpbmdGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGJvb2xlYW4gPSBib29sZWFuRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICB0ZXJuYXJ5ID0gVGVybmFyeS5mcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBub2RlUXVlcnkgPSBOb2RlUXVlcnkuZnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBub2Rlc1F1ZXJ5ID0gTm9kZXNRdWVyeS5mcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHByb2NlZHVyZUNhbGwgPSBQcm9jZWR1cmVDYWxsLmZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFsdWUgPSBuZXcgVmFsdWUobm9kZSwgbm9kZXMsIG51bWJlciwgc3RyaW5nLCBib29sZWFuLCB0ZXJuYXJ5LCB2YXJpYWJsZSwgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5LCBwcm9jZWR1cmVDYWxsKTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIG5vZGVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCkge1xuICBsZXQgbm9kZSA9IG51bGw7XG5cbiAgY29uc3QgcHJpbWl0aXZlVGVybWluYWxOb2RlID0gcHJpbWl0aXZlVGVybWluYWxOb2RlUXVlcnkodmFsdWVOb2RlKTtcblxuICBpZiAocHJpbWl0aXZlVGVybWluYWxOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcHJpbWl0aXZlVGVybWluYWxOb2RlQ29udGVudCA9IHByaW1pdGl2ZVRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCk7XG5cbiAgICBzd2l0Y2ggKHByaW1pdGl2ZVRlcm1pbmFsTm9kZUNvbnRlbnQpIHtcbiAgICAgIGNhc2UgTlVMTDoge1xuICAgICAgICBub2RlID0gbnVsbE5vZGU7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmZ1bmN0aW9uIG5vZGVzRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgbm9kZXMgPSBudWxsOyAgLy8vXG5cbiAgcmV0dXJuIG5vZGVzO1xufVxuXG5mdW5jdGlvbiBudW1iZXJGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCkge1xuICBsZXQgbnVtYmVyID0gbnVsbDtcblxuICBjb25zdCBudW1iZXJUZXJtaW5hbE5vZGUgPSBudW1iZXJUZXJtaW5hbE5vZGVRdWVyeSh2YWx1ZU5vZGUpO1xuXG4gIGlmIChudW1iZXJUZXJtaW5hbE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBudW1iZXJUZXJtaW5hbE5vZGVDb250ZW50ID0gbnVtYmVyVGVybWluYWxOb2RlLmdldENvbnRlbnQoKTtcblxuICAgIG51bWJlciA9IE51bWJlcihudW1iZXJUZXJtaW5hbE5vZGVDb250ZW50KTtcbiAgfVxuXG4gIHJldHVybiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBzdHJpbmcgPSBudWxsO1xuXG4gIGNvbnN0IHN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGUgPSBzdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlUXVlcnkodmFsdWVOb2RlKTtcblxuICBpZiAoc3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVDb250ZW50ID0gc3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgc3RyaW5nTGl0ZXJhbCA9IHN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVDb250ZW50OyAvLy9cblxuICAgIHN0cmluZyA9IHN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsKHN0cmluZ0xpdGVyYWwsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gYm9vbGVhbkZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBib29sZWFuID0gbnVsbDtcblxuICBjb25zdCBwcmltaXRpdmVUZXJtaW5hbE5vZGUgPSBwcmltaXRpdmVUZXJtaW5hbE5vZGVRdWVyeSh2YWx1ZU5vZGUpO1xuXG4gIGlmIChwcmltaXRpdmVUZXJtaW5hbE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBwcmltaXRpdmVUZXJtaW5hbE5vZGVDb250ZW50ID0gcHJpbWl0aXZlVGVybWluYWxOb2RlLmdldENvbnRlbnQoKTtcblxuICAgIHN3aXRjaCAocHJpbWl0aXZlVGVybWluYWxOb2RlQ29udGVudCkge1xuICAgICAgY2FzZSBUUlVFOiB7XG4gICAgICAgIGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEZBTFNFOiB7XG4gICAgICAgIGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gc3RyaW5nRnJvbVN0cmluZ0xpdGVyYWwoc3RyaW5nTGl0ZXJhbCwgY29udGV4dCkge1xuICBjb25zdCBzdHJpbmcgPSBzdHJpbmdMaXRlcmFsLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBFTVBUWV9TVFJJTkcpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG4iXSwibmFtZXMiOlsibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsIm51bWJlclRlcm1pbmFsTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwiY29uZGl0aW9uVmFsdWVOb2RlUXVlcnkiLCJhc3NpZ25tZW50VmFsdWVOb2RlUXVlcnkiLCJwcmltaXRpdmVUZXJtaW5hbE5vZGVRdWVyeSIsInJldHVyblN0YXRlbWVudFZhbHVlTm9kZVF1ZXJ5Iiwic3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZVF1ZXJ5IiwiZG9tQXNzaWduZWQiLCJWYWx1ZSIsIm5vZGUiLCJub2RlcyIsIm51bWJlciIsInN0cmluZyIsImJvb2xlYW4iLCJ0ZXJuYXJ5IiwidmFyaWFibGUiLCJub2Rlc1F1ZXJ5IiwicHJvY2VkdXJlQ2FsbCIsImdldE5vZGUiLCJnZXROb2RlcyIsImdldE51bWJlciIsImdldFN0cmluZyIsImdldEJvb2xlYW4iLCJnZXRUZXJuYXJ5IiwidGVybmF5IiwiZ2V0VmFyaWFibGUiLCJnZXROb2RlUXVlcnkiLCJnZXROb2Rlc1F1ZXJ5IiwiZ2V0UHJvY2VkdXJlQ2FsbCIsImdldFR5cGUiLCJ0eXBlIiwiTk9ERV9UWVBFIiwiTk9ERVNfVFlQRSIsIk5VTUJFUl9UWVBFIiwiU1RSSU5HX1RZUEUiLCJCT09MRUFOX1RZUEUiLCJhc1N0cmluZyIsImNvbnRleHQiLCJub2RlQXNTdHJpbmciLCJub2Rlc0FzU3RyaW5nIiwibnVtYmVyQXNTdHJpbmciLCJzdHJpbmdBc1N0cmluZyIsImJvb2xlYW5Bc1N0cmluZyIsImV2YWx1YXRlIiwidmFsdWUiLCJpc0VxdWFsVG8iLCJlcXVhbFRvIiwibm9kZUEiLCJub2RlQiIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwibm9kZXNBIiwibm9kZXNCIiwibm9kZXNNYXRjaCIsIm1hdGNoTm9kZXMiLCJmcm9tTm9kZSIsIm51bGxOb2RlIiwiZnJvbU5vZGVzIiwiZnJvbVN0cmluZyIsImZyb21Cb29sZWFuIiwiZnJvbVZhbHVlTm9kZSIsInZhbHVlTm9kZSIsInZhbHVlRnJvbVZhbHVlTm9kZSIsImZyb21Db25kaXRpb25Ob2RlIiwiY29uZGl0aW9uTm9kZSIsImNvbmRpdGlvblZhbHVlTm9kZSIsImZyb21Bc3NpZ25tZW50Tm9kZSIsImFzc2lnbWVudE5vZGUiLCJhc3NpZ25tZW50VmFsdWVOb2RlIiwiZnJvbVJldHVyblN0YXRlbWVudE5vZGUiLCJyZXR1cm5TdGF0ZW1lbnROb2RlIiwicmV0dXJuU3RhdGVtZW50VmFsdWVOb2RlIiwibmFtZSIsIm5vZGVBRXF1YWxUb05vZGVBIiwibm9kZVN0cmluZyIsIk5VTEwiLCJub2Rlc1N0cmluZyIsImRvbSIsIlRlcm5hcnkiLCJWYXJpYWJsZSIsIk5vZGVRdWVyeSIsIk5vZGVzUXVlcnkiLCJQcm9jZWR1cmVDYWxsIiwibm9kZUZyb21WYWx1ZU5vZGUiLCJub2Rlc0Zyb21WYWx1ZU5vZGUiLCJudW1iZXJGcm9tVmFsdWVOb2RlIiwic3RyaW5nRnJvbVZhbHVlTm9kZSIsImJvb2xlYW5Gcm9tVmFsdWVOb2RlIiwicHJpbWl0aXZlVGVybWluYWxOb2RlIiwicHJpbWl0aXZlVGVybWluYWxOb2RlQ29udGVudCIsImdldENvbnRlbnQiLCJudW1iZXJUZXJtaW5hbE5vZGUiLCJudW1iZXJUZXJtaW5hbE5vZGVDb250ZW50IiwiTnVtYmVyIiwic3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZSIsInN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVDb250ZW50Iiwic3RyaW5nTGl0ZXJhbCIsInN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsIiwiVFJVRSIsIkZBTFNFIiwicmVwbGFjZSIsIkVNUFRZX1NUUklORyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBcUJBOzs7ZUFBQTs7O3lCQW5CK0I7MkRBRWY7K0RBQ0s7cUJBRUs7eUJBRXNCO3FCQUM4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFOUUsSUFBTSxBQUFFQSxRQUFVQyx5QkFBYyxDQUF4QkQ7QUFFUixJQUFNRSwwQkFBMEJDLElBQUFBLGdCQUFTLEVBQUMsbUJBQ3BDQywwQkFBMEJELElBQUFBLGdCQUFTLEVBQUMscUJBQ3BDRSwyQkFBMkJGLElBQUFBLGdCQUFTLEVBQUMsc0JBQ3JDRyw2QkFBNkJILElBQUFBLGdCQUFTLEVBQUMsc0JBQ3ZDSSxnQ0FBZ0NKLElBQUFBLGdCQUFTLEVBQUMsMkJBQzFDSyxpQ0FBaUNMLElBQUFBLGdCQUFTLEVBQUM7SUFFakQsV0FBZU0sSUFBQUEsZ0JBQVcsMEJBQUM7YUFBTUMsTUFDbkJDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRWQsU0FBUyxFQUFFZSxVQUFVLEVBQUVDLGFBQWE7Z0NBRDFFVDtRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENB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
|
package/lib/index.js
CHANGED
|
@@ -25,6 +25,7 @@ var _block = /*#__PURE__*/ _interop_require_default(require("./dom/block"));
|
|
|
25
25
|
var _error = /*#__PURE__*/ _interop_require_default(require("./dom/error"));
|
|
26
26
|
var _value = /*#__PURE__*/ _interop_require_default(require("./dom/value"));
|
|
27
27
|
var _values = /*#__PURE__*/ _interop_require_default(require("./dom/values"));
|
|
28
|
+
var _ternary = /*#__PURE__*/ _interop_require_default(require("./dom/ternary"));
|
|
28
29
|
var _variable = /*#__PURE__*/ _interop_require_default(require("./dom/variable"));
|
|
29
30
|
var _condition = /*#__PURE__*/ _interop_require_default(require("./dom/condition"));
|
|
30
31
|
var _reference = /*#__PURE__*/ _interop_require_default(require("./dom/reference"));
|
|
@@ -57,4 +58,4 @@ function _interop_require_default(obj) {
|
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFN0ZXAgZnJvbSBcIi4vZG9tL3N0ZXBcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwiLi9kb20vbGFiZWxcIjtcbmltcG9ydCBCbG9jayBmcm9tIFwiLi9kb20vYmxvY2tcIjtcbmltcG9ydCBFcnJvciBmcm9tIFwiLi9kb20vZXJyb3JcIjtcbmltcG9ydCBWYWx1ZSBmcm9tIFwiLi9kb20vdmFsdWVcIjtcbmltcG9ydCBWYWx1ZXMgZnJvbSBcIi4vZG9tL3ZhbHVlc1wiO1xuaW1wb3J0IFRlcm5hcnkgZnJvbSBcIi4vZG9tL3Rlcm5hcnlcIjtcbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi9kb20vdmFyaWFibGVcIjtcbmltcG9ydCBDb25kaXRpb24gZnJvbSBcIi4vZG9tL2NvbmRpdGlvblwiO1xuaW1wb3J0IFJlZmVyZW5jZSBmcm9tIFwiLi9kb20vcmVmZXJlbmNlXCI7XG5pbXBvcnQgUHJvY2VkdXJlIGZyb20gXCIuL2RvbS9wcm9jZWR1cmVcIjtcbmltcG9ydCBOb2RlUXVlcnkgZnJvbSBcIi4vZG9tL3F1ZXJ5L25vZGVcIjtcbmltcG9ydCBQYXJhbWV0ZXIgZnJvbSBcIi4vZG9tL3BhcmFtZXRlclwiO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSBcIi4vZG9tL3BhcmFtZXRlcnNcIjtcbmltcG9ydCBOb2Rlc1F1ZXJ5IGZyb20gXCIuL2RvbS9xdWVyeS9ub2Rlc1wiO1xuaW1wb3J0IENvbXBhcmlzb24gZnJvbSBcIi4vZG9tL2NvbXBhcmlzb25cIjtcbmltcG9ydCBBc3NpZ25tZW50IGZyb20gXCIuL2RvbS9hc3NpZ25tZW50XCI7XG5pbXBvcnQgUmV0dXJuQmxvY2sgZnJvbSBcIi4vZG9tL2Jsb2NrL3JldHVyblwiO1xuaW1wb3J0IEZvckVhY2hMb29wIGZyb20gXCIuL2RvbS9mb3JFYWNoTG9vcFwiO1xuaW1wb3J0IFByb2NlZHVyZUNhbGwgZnJvbSBcIi4vZG9tL3Byb2NlZHVyZUNhbGxcIjtcbmltcG9ydCBBcnJheUFzc2lnbWVudCBmcm9tIFwiLi9kb20vYXNzaWdubWVudC9hcnJheVwiO1xuaW1wb3J0IFJldHVyblN0YXRlbWVudCBmcm9tIFwiLi9kb20vcmV0dXJuU3RhdGVtZW50XCI7XG5pbXBvcnQgTmVnYXRlZENvbmRpdGlvbiBmcm9tIFwiLi9kb20vY29uZGl0aW9uL25lZ2F0ZWRcIjtcbmltcG9ydCBPYmplY3RBc3NpZ25tZW50IGZyb20gXCIuL2RvbS9hc3NpZ25tZW50L29iamVjdFwiO1xuaW1wb3J0IEJpdHdpc2VDb25kaXRpb24gZnJvbSBcIi4vZG9tL2NvbmRpdGlvbi9iaXR3aXNlXCI7XG5pbXBvcnQgQ29uZGl0aW9uYWxCbG9ja3MgZnJvbSBcIi4vZG9tL2NvbmRpdGlvbmFsQmxvY2tzXCI7XG5pbXBvcnQgQnJhY2tldGVkQ29uZGl0aW9uIGZyb20gXCIuL2RvbS9jb25kaXRpb24vYnJhY2tldGVkXCI7XG5pbXBvcnQgQW5vbnltb3VzUHJvY2VkdXJlIGZyb20gXCIuL2RvbS9wcm9jZWR1cmUvYW5vbnltb3VzXCI7XG5pbXBvcnQgVmFyaWFibGVBc3NpZ25tZW50IGZyb20gXCIuL2RvbS9hc3NpZ25tZW50L3ZhcmlhYmxlXCI7XG5pbXBvcnQgUHJvY2VkdXJlRGVjbGFyYXRpb24gZnJvbSBcIi4vZG9tL2RlY2xhcmF0aW9uL3Byb2NlZHVyZVwiO1xuaW1wb3J0IFZhcmlhYmxlc0RlY2xhcmF0aW9uIGZyb20gXCIuL2RvbS9kZWNsYXJhdGlvbi92YXJpYWJsZXNcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBWYWx1ZXMgfSBmcm9tIFwiLi9kb20vdmFsdWVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZpbGVDb250ZXh0IH0gZnJvbSBcIi4vY29udGV4dC9maWxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0cmluZ1V0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuIl0sIm5hbWVzIjpbIkZpbGVDb250ZXh0IiwiVmFsdWVzIiwic3RyaW5nVXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFtQ29CQSxXQUFXO2VBQVhBLGFBQVc7O0lBRFhDLE1BQU07ZUFBTkEsZUFBTTs7SUFFTkMsZUFBZTtlQUFmQSxlQUFlOzs7MkRBbENsQjs0REFDQzs0REFDQTs0REFDQTs0REFDQTs2REFDQzs4REFDQzsrREFDQztnRUFDQztnRUFDQTtnRUFDQTsyREFDQTtnRUFDQTtpRUFDQzs0REFDQTtpRUFDQTtpRUFDQTs2REFDQztrRUFDQTtvRUFDRTs0REFDQztzRUFDQzs4REFDQzs2REFDQTs4REFDQTt3RUFDQztnRUFDQztnRUFDQTtnRUFDQTtpRUFDRTtnRUFDQTsyREFHTTs2REFDSSJ9
|
package/lib/nullNode.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function _class_call_check(instance, Constructor) {
|
|
12
|
+
if (!(instance instanceof Constructor)) {
|
|
13
|
+
throw new TypeError("Cannot call a class as a function");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function _defineProperties(target, props) {
|
|
17
|
+
for(var i = 0; i < props.length; i++){
|
|
18
|
+
var descriptor = props[i];
|
|
19
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
20
|
+
descriptor.configurable = true;
|
|
21
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
22
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
26
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
27
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
28
|
+
return Constructor;
|
|
29
|
+
}
|
|
30
|
+
var NullNode = /*#__PURE__*/ function() {
|
|
31
|
+
function NullNode() {
|
|
32
|
+
_class_call_check(this, NullNode);
|
|
33
|
+
}
|
|
34
|
+
_create_class(NullNode, null, [
|
|
35
|
+
{
|
|
36
|
+
key: "fromNothing",
|
|
37
|
+
value: function fromNothing() {
|
|
38
|
+
var nullNode = new NullNode();
|
|
39
|
+
return nullNode;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
]);
|
|
43
|
+
return NullNode;
|
|
44
|
+
}();
|
|
45
|
+
var nullNode = NullNode.fromNothing();
|
|
46
|
+
var _default = nullNode;
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9udWxsTm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuY2xhc3MgTnVsbE5vZGUge1xuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgbnVsbE5vZGUgPSBuZXcgTnVsbE5vZGUoKTtcblxuICAgIHJldHVybiBudWxsTm9kZTtcbiAgfVxufVxuXG5jb25zdCBudWxsTm9kZSA9IE51bGxOb2RlLmZyb21Ob3RoaW5nKCk7XG5cbmV4cG9ydCBkZWZhdWx0IG51bGxOb2RlO1xuXG4iXSwibmFtZXMiOlsiTnVsbE5vZGUiLCJmcm9tTm90aGluZyIsIm51bGxOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFWQSxJQUFBLEFBQU1BLHlCQUFOO2FBQU1BO2dDQUFBQTs7a0JBQUFBOztZQUNHQyxLQUFBQTttQkFBUCxTQUFPQTtnQkFDTCxJQUFNQyxXQUFXLElBRmZGO2dCQUlGLE9BQU9FO1lBQ1Q7OztXQUxJRjs7QUFRTixJQUFNRSxXQUFXRixTQUFTQyxXQUFXO0lBRXJDLFdBQWVDIn0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-furtle",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.64",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-furtle",
|
|
7
7
|
"description": "Occam's Furtle language.",
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^14.3.2",
|
|
14
|
-
"occam-grammars": "^1.3.
|
|
14
|
+
"occam-grammars": "^1.3.151"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@swc/core": "^1.5.6",
|
|
18
|
-
"occam-custom-grammars": "^5.0.
|
|
19
|
-
"occam-entities": "^1.0.
|
|
18
|
+
"occam-custom-grammars": "^5.0.1080",
|
|
19
|
+
"occam-entities": "^1.0.290",
|
|
20
20
|
"occam-grammar-utilities": "^8.0.258",
|
|
21
21
|
"occam-lexers": "^23.0.45",
|
|
22
22
|
"occam-parsers": "^23.0.50",
|
|
@@ -22,11 +22,11 @@ objectAssignment ::= "{" parameters "}" "=" variable ";" ;
|
|
|
22
22
|
|
|
23
23
|
arrayAssignment ::= "[" parameters "]" "=" variable ";" ;
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
someLoop ::= "Some"<NO_WHITESPACE>"(" variable "," anonymousProcedure ")" ";" ;
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
anonymousProcedure ::= "(" parameters? ")"
|
|
29
|
+
anonymousProcedure ::= "(" parameters? ")" returnBlock ;
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
|
|
@@ -71,7 +71,7 @@ step ::= variablesDeclaration
|
|
|
71
71
|
|
|
72
72
|
| arrayAssignment
|
|
73
73
|
|
|
74
|
-
|
|
|
74
|
+
| someLoop
|
|
75
75
|
|
|
76
76
|
;
|
|
77
77
|
|
|
@@ -91,6 +91,8 @@ value ::= procedureCall
|
|
|
91
91
|
|
|
92
92
|
| ternary
|
|
93
93
|
|
|
94
|
+
| [null]
|
|
95
|
+
|
|
94
96
|
| [number]
|
|
95
97
|
|
|
96
98
|
| [primitive]
|
package/src/dom/condition.js
CHANGED
|
@@ -7,7 +7,8 @@ import { nodeQuery } from "../utilities/query";
|
|
|
7
7
|
import { domAssigned } from "../dom";
|
|
8
8
|
import { BOOLEAN_TYPE } from "../types";
|
|
9
9
|
|
|
10
|
-
const
|
|
10
|
+
const ternaryConditionNodeQuery = nodeQuery("/ternary/condition"),
|
|
11
|
+
conditionalBlocksConditionNodeQuery = nodeQuery("/conditionalBlocks/condition");
|
|
11
12
|
|
|
12
13
|
export default domAssigned(class Condition {
|
|
13
14
|
constructor(string, value, comparison, bitwiseCondition, negatedCondition, bracketedCondition) {
|
|
@@ -62,21 +63,13 @@ export default domAssigned(class Condition {
|
|
|
62
63
|
|
|
63
64
|
throw exception;
|
|
64
65
|
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (this.comparison !== null) {
|
|
66
|
+
} else if (this.comparison !== null) {
|
|
68
67
|
value = this.comparison.evaluate(context);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (this.bitwiseCondition !== null) {
|
|
68
|
+
} else if (this.bitwiseCondition !== null) {
|
|
72
69
|
value = this.bitwiseCondition.evaluate(context);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (this.negatedCondition !== null) {
|
|
70
|
+
} else if (this.negatedCondition !== null) {
|
|
76
71
|
value = this.negatedCondition.evaluate(context);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (this.bracketedCondition !== null) {
|
|
72
|
+
} else if (this.bracketedCondition !== null) {
|
|
80
73
|
value = this.bracketedCondition.evaluate(context);
|
|
81
74
|
}
|
|
82
75
|
|
|
@@ -87,32 +80,39 @@ export default domAssigned(class Condition {
|
|
|
87
80
|
|
|
88
81
|
static name = "Condition";
|
|
89
82
|
|
|
83
|
+
static fromTernaryNode(ternaryNode, context) {
|
|
84
|
+
const ternaryConditionNode = ternaryConditionNodeQuery(ternaryNode),
|
|
85
|
+
conditionNode = ternaryConditionNode, ///
|
|
86
|
+
condition = conditionFromConditionNode(conditionNode, context);
|
|
87
|
+
|
|
88
|
+
return condition;
|
|
89
|
+
}
|
|
90
|
+
|
|
90
91
|
static fromConditionNode(conditionNode, context) {
|
|
91
|
-
const
|
|
92
|
-
node = conditionNode, ///
|
|
93
|
-
string = context.nodeAsString(node),
|
|
94
|
-
value = Value.fromConditionNode(conditionNode, context),
|
|
95
|
-
comparison = Comparison.fromConditionNode(conditionNode, context),
|
|
96
|
-
bitwiseCondition = BitwiseCondition.fromConditionNode(conditionNode, context),
|
|
97
|
-
negatedCondition = NegatedCondition.fromConditionNode(conditionNode, context),
|
|
98
|
-
bracketedCondition = BracketedCondition.fromConditionNode(conditionNode, context),
|
|
99
|
-
condition = new Condition(string, value, comparison, bitwiseCondition, negatedCondition, bracketedCondition);
|
|
92
|
+
const condition = conditionFromConditionNode(conditionNode, context);
|
|
100
93
|
|
|
101
94
|
return condition;
|
|
102
95
|
}
|
|
103
96
|
|
|
104
97
|
static fromConditionalBlocksNode(conditionalBlocksNode, context) {
|
|
105
|
-
const
|
|
106
|
-
conditionNode =
|
|
107
|
-
|
|
108
|
-
string = context.nodeAsString(node),
|
|
109
|
-
value = Value.fromConditionNode(conditionNode, context),
|
|
110
|
-
comparison = Comparison.fromConditionNode(conditionNode, context),
|
|
111
|
-
bitwiseCondition = BitwiseCondition.fromConditionNode(conditionNode, context),
|
|
112
|
-
negatedCondition = NegatedCondition.fromConditionNode(conditionNode, context),
|
|
113
|
-
bracketedCondition = BracketedCondition.fromConditionNode(conditionNode, context),
|
|
114
|
-
condition = new Condition(string, value, comparison, bitwiseCondition, negatedCondition, bracketedCondition);
|
|
98
|
+
const conditionalBlocksConditionNode = conditionalBlocksConditionNodeQuery(conditionalBlocksNode),
|
|
99
|
+
conditionNode = conditionalBlocksConditionNode, ///
|
|
100
|
+
condition = conditionFromConditionNode(conditionNode, context);
|
|
115
101
|
|
|
116
102
|
return condition;
|
|
117
103
|
}
|
|
118
104
|
});
|
|
105
|
+
|
|
106
|
+
function conditionFromConditionNode(conditionNode, context) {
|
|
107
|
+
const { Condition, Value, Comparison, BitwiseCondition, NegatedCondition, BracketedCondition } = dom,
|
|
108
|
+
node = conditionNode, ///
|
|
109
|
+
string = context.nodeAsString(node),
|
|
110
|
+
value = Value.fromConditionNode(conditionNode, context),
|
|
111
|
+
comparison = Comparison.fromConditionNode(conditionNode, context),
|
|
112
|
+
bitwiseCondition = BitwiseCondition.fromConditionNode(conditionNode, context),
|
|
113
|
+
negatedCondition = NegatedCondition.fromConditionNode(conditionNode, context),
|
|
114
|
+
bracketedCondition = BracketedCondition.fromConditionNode(conditionNode, context),
|
|
115
|
+
condition = new Condition(string, value, comparison, bitwiseCondition, negatedCondition, bracketedCondition);
|
|
116
|
+
|
|
117
|
+
return condition;
|
|
118
|
+
}
|