occam-nominal 1.0.353 → 1.0.354
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/type.js +14 -16
- package/lib/element/combinator/bracketed.js +3 -3
- package/lib/element/combinator.js +8 -12
- package/lib/element/constructor/bracketed.js +3 -4
- package/lib/element/constructor.js +8 -12
- package/lib/element/deduction.js +3 -3
- package/lib/element/statement.js +6 -5
- package/lib/element/term.js +4 -4
- package/lib/process/unify.js +3 -3
- package/lib/process/validation.js +66 -66
- package/package.json +3 -3
- package/src/element/assertion/type.js +13 -17
- package/src/element/combinator/bracketed.js +2 -2
- package/src/element/combinator.js +8 -12
- package/src/element/constructor/bracketed.js +2 -4
- package/src/element/constructor.js +8 -12
- package/src/element/deduction.js +2 -2
- package/src/element/statement.js +7 -5
- package/src/element/term.js +3 -3
- package/src/process/unify.js +2 -2
- package/src/process/validation.js +65 -65
|
@@ -40,25 +40,25 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
|
|
|
40
40
|
const node = this.getNode(), typeAssertionNode = node; ///
|
|
41
41
|
return typeAssertionNode;
|
|
42
42
|
}
|
|
43
|
-
validate(
|
|
43
|
+
validate(context, continuation) {
|
|
44
44
|
const typeAssertionString = this.getString(); ///
|
|
45
45
|
context.trace(`Validating the '${typeAssertionString}' type assertion...`);
|
|
46
46
|
const validAssertion = this.findValidAssertion(context);
|
|
47
47
|
if (validAssertion !== null) {
|
|
48
48
|
const typeAssertion = validAssertion; ///
|
|
49
49
|
context.debug(`...the '${typeAssertionString}' type assertion is already valid.`);
|
|
50
|
-
return
|
|
50
|
+
return continuation(typeAssertion, context);
|
|
51
51
|
}
|
|
52
52
|
return this.validateType(context, (typeValidates, context)=>{
|
|
53
53
|
if (!typeValidates) {
|
|
54
54
|
const typeAssertion = null;
|
|
55
|
-
return
|
|
55
|
+
return continuation(typeAssertion, context);
|
|
56
56
|
}
|
|
57
57
|
const validateWhenStated = this.validateWhenStated.bind(this), validateWhenDerived = this.validateWhenDerived.bind(this);
|
|
58
58
|
return (0, _continuation.exists)([
|
|
59
59
|
validateWhenStated,
|
|
60
60
|
validateWhenDerived
|
|
61
|
-
],
|
|
61
|
+
], context, (validates, context)=>{
|
|
62
62
|
let typeAssertion = null;
|
|
63
63
|
if (validates) {
|
|
64
64
|
const assertion = this; ///
|
|
@@ -109,15 +109,15 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
|
|
|
109
109
|
}
|
|
110
110
|
return continuation(typeValidates, context);
|
|
111
111
|
}
|
|
112
|
-
validateWhenStated(
|
|
112
|
+
validateWhenStated(context, continuation) {
|
|
113
113
|
const stated = context.isStated();
|
|
114
114
|
if (!stated) {
|
|
115
115
|
const validatesWhenStated = false;
|
|
116
|
-
return continuation(validatesWhenStated,
|
|
116
|
+
return continuation(validatesWhenStated, context);
|
|
117
117
|
}
|
|
118
118
|
const typeAssertionString = this.getString(); ///
|
|
119
119
|
context.trace(`Validating the '${typeAssertionString}' stated type assertion...`);
|
|
120
|
-
return this.term.validate((term, context
|
|
120
|
+
return this.term.validate(context, (term, context)=>{
|
|
121
121
|
let validatesWhenStated = false;
|
|
122
122
|
const termType = term.getType(), termTypeEqualToType = termType.isEqualTo(this.type), termTypeSuperTypeOfType = termType.isSuperTypeOf(this.type);
|
|
123
123
|
if (false) {
|
|
@@ -130,22 +130,20 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
|
|
|
130
130
|
validatesWhenStated = true;
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
-
if (
|
|
134
|
-
|
|
133
|
+
if (validatesWhenStated) {
|
|
134
|
+
this.term = term;
|
|
135
135
|
}
|
|
136
|
-
this.term = term;
|
|
137
|
-
const typeAssertion = this; ///
|
|
138
136
|
if (validatesWhenStated) {
|
|
139
137
|
context.debug(`...validated the '${typeAssertionString}' stated type assertion.`);
|
|
140
138
|
}
|
|
141
|
-
return
|
|
142
|
-
}
|
|
139
|
+
return continuation(validatesWhenStated, context);
|
|
140
|
+
});
|
|
143
141
|
}
|
|
144
|
-
validateWhenDerived(
|
|
142
|
+
validateWhenDerived(context, continuation) {
|
|
145
143
|
const stated = context.isStated();
|
|
146
144
|
if (stated) {
|
|
147
145
|
const validatesWhenDerived = false;
|
|
148
|
-
return continuation(validatesWhenDerived, context
|
|
146
|
+
return continuation(validatesWhenDerived, context);
|
|
149
147
|
}
|
|
150
148
|
const typeAssertionString = this.getString(); ///
|
|
151
149
|
context.trace(`Validating the '${typeAssertionString}' derived type assertion...`);
|
|
@@ -239,4 +237,4 @@ function validateWhenDerived(term, type, context, continuation) {
|
|
|
239
237
|
}, context, continuation);
|
|
240
238
|
}
|
|
241
239
|
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBleGlzdHMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVHlwZUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0eXBlRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9qc29uXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2Fzc2lnblwiO1xuaW1wb3J0IHsgdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSwgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VHlwZUFzc2VydGlvbk5Cb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoY2FsbGJhY2ssIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkQXNzZXJ0aW9uID0gdGhpcy5maW5kVmFsaWRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAodmFsaWRBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSB2YWxpZEFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaXMgYWxyZWFkeSB2YWxpZC5gKTtcblxuICAgICAgcmV0dXJuIGNhbGxiYWNrKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVUeXBlKGNvbnRleHQsICh0eXBlVmFsaWRhdGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICBpZiAoIXR5cGVWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5TdGF0ZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIGNhbGxiYWNrLCBjb250ZXh0LCAodmFsaWRhdGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB0eXBlQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgICAgICB0aGlzLmFzc2lnbihjb250ZXh0KTtcblxuICAgICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odHlwZUFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZShjb250ZXh0KSB7XG4gICAgbGV0IGRpc2NoYXJnZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0eXBlRXF1YWxUb1Rlcm1UeXBlID0gdGhpcy50eXBlLmlzRXF1YWxUbyh0ZXJtVHlwZSk7XG5cbiAgICAgIGlmICh0eXBlRXF1YWxUb1Rlcm1UeXBlKSB7XG4gICAgICAgIGNvbnN0IHRlcm1Fc3RhYmxpc2hlZCA9IHRlcm0uaXNFc3RhYmxpc2hlZCgpO1xuXG4gICAgICAgIGlmICh0ZXJtRXN0YWJsaXNoZWQpIHtcbiAgICAgICAgICBkaXNjaGFyZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkaXNjaGFyZ2VzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc2NoYXJnZXM7XG4gIH1cblxuICB2YWxpZGF0ZVR5cGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHR5cGVWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAgIHR5cGVWYWxpZGF0ZXMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uJ3MgdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHR5cGVWYWxpZGF0ZXMsIGNvbnRleHQpO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuU3RhdGVkKGNhbGxiYWNrLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5TdGF0ZWQsIGNhbGxiYWNrLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKCh0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9UeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvKHRoaXMudHlwZSksXG4gICAgICAgICAgICB0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzU3VwZXJUeXBlT2YodGhpcy50eXBlKTtcblxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIC8vL1xuICAgICAgfSBlbHNlIGlmICh0ZXJtVHlwZUVxdWFsVG9UeXBlKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5TdGF0ZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSkge1xuICAgICAgICBjb25zdCB0ZXJtRXN0YWJsaXNoZWQgPSB0ZXJtLmlzRXN0YWJsaXNoZWQoKTtcblxuICAgICAgICBpZiAodGVybUVzdGFibGlzaGVkKSB7XG4gICAgICAgICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odmFsaWRhdGVzV2hlblN0YXRlZCwgY2FsbGJhY2ssIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHN0YXRlZCB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbGxiYWNrKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY2FsbGJhY2ssIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN0YXRlZCA9IGNvbnRleHQuaXNTdGF0ZWQoKTtcblxuICAgIGlmIChzdGF0ZWQpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odmFsaWRhdGVzV2hlbkRlcml2ZWQsIGNvbnRleHQsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMudHlwZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuRGVyaXZlZCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuXG4gICAgZGVidWdnZXJcblxuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICBsZXQgdGVybTtcblxuICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICB0ZXJtID0gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLnR5cGUsIGNvbnRleHQpOyAvL1xuXG4gICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlmaWVzSW5kZXBlbmRlbnRseTtcbiAgfVxuXG4gIGFzc2lnbihjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKCFzdGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVBc3NpZ21lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCB0eXBlID0gdHlwZUpTT04sXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZUFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgdHlwZUFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUodHlwZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIHR5cGVBc3NlcnRpb24gPSBuZXcgVHlwZUFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHR5cGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBpZiAodGVybSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBjb250aW51YXRpb24odGVybSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybS52YWxpZGF0ZSgodGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgdGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSk7XG5cbiAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICBjb25zdCB0ZXJtRXN0YWJsaXNoZWQgPSB0ZXJtLmlzRXN0YWJsaXNoZWQoKTtcblxuICAgICAgaWYgKHRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgICB0ZXJtVmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRlcm1WYWxpZGF0ZXMpIHtcbiAgICAgIHRlcm0gPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odGVybSwgY29udGV4dCk7XG4gIH0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG4iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRUeXBlQXNzZXJ0aW9uTkJvZGUiLCJnZXROb2RlIiwidHlwZUFzc2VydGlvbk5vZGUiLCJ2YWxpZGF0ZSIsImNhbGxiYWNrIiwiY29udGludWF0aW9uIiwidHlwZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWRBc3NlcnRpb24iLCJmaW5kVmFsaWRBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVR5cGUiLCJ0eXBlVmFsaWRhdGVzIiwidmFsaWRhdGVXaGVuU3RhdGVkIiwiYmluZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJ2YWxpZGF0ZXMiLCJhc3NlcnRpb24iLCJhc3NpZ24iLCJhZGRBc3NlcnRpb24iLCJkaXNjaGFyZ2UiLCJkaXNjaGFyZ2VzIiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInRlcm1UeXBlIiwidHlwZUVxdWFsVG9UZXJtVHlwZSIsImlzRXF1YWxUbyIsInRlcm1Fc3RhYmxpc2hlZCIsImlzRXN0YWJsaXNoZWQiLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidHlwZVN0cmluZyIsInN0YXRlZCIsImlzU3RhdGVkIiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInRlcm1UeXBlRXF1YWxUb1R5cGUiLCJ0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSIsImlzU3VwZXJUeXBlT2YiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInVuaWZ5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidW5pZmllc0luZGVwZW5kZW50bHkiLCJ2YXJpYWJsZUFzc2lnbWVudCIsInZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQXNzZXJ0aW9uIiwiYWRkQXNzaWdubWVudCIsInRvSlNPTiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJuYW1lIiwiZ2V0TmFtZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIiwidGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVGcm9tSlNPTiIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybVZhbGlkYXRlcyIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFpQkE7OztlQUFBOzs7Z0NBZm9DO2tFQUVkOzBCQUVDOzhCQUNBO3lCQUNLOzZCQUNhO3NCQUNJOytCQUNBO3dCQUNPO3lCQUNzQjs7Ozs7O0FBRTFFLE1BQU0sRUFBRUEsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHNCQUFzQkMsa0JBQVM7SUFDekQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN6RCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7SUFDbEI7SUFFQUcsd0JBQXdCO1FBQ3RCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyxvQkFBb0JSLE1BQU0sR0FBRztRQUVuQyxPQUFPUTtJQUNUO0lBRUFDLFNBQVNDLFFBQVEsRUFBRVosT0FBTyxFQUFFYSxZQUFZLEVBQUU7UUFDeEMsTUFBTUMsc0JBQXNCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFbERmLFFBQVFnQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsb0JBQW9CLG1CQUFtQixDQUFDO1FBRXpFLE1BQU1HLGlCQUFp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
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBleGlzdHMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVHlwZUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0eXBlRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9qc29uXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2Fzc2lnblwiO1xuaW1wb3J0IHsgdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSwgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VHlwZUFzc2VydGlvbk5Cb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmFsaWRBc3NlcnRpb24gPSB0aGlzLmZpbmRWYWxpZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IHZhbGlkQXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpcyBhbHJlYWR5IHZhbGlkLmApO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHR5cGVBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlVHlwZShjb250ZXh0LCAodHlwZVZhbGlkYXRlcywgY29udGV4dCkgPT4ge1xuICAgICAgaWYgKCF0eXBlVmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odHlwZUFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5TdGF0ZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIGNvbnRleHQsICh2YWxpZGF0ZXMsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHR5cGVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICBjb25zdCBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgICAgICAgIHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICAgIHRoaXMuYXNzaWduKGNvbnRleHQpO1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0eXBlQXNzZXJ0aW9uLCBjb250ZXh0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGlzY2hhcmdlKGNvbnRleHQpIHtcbiAgICBsZXQgZGlzY2hhcmdlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHR5cGVFcXVhbFRvVGVybVR5cGUgPSB0aGlzLnR5cGUuaXNFcXVhbFRvKHRlcm1UeXBlKTtcblxuICAgICAgaWYgKHR5cGVFcXVhbFRvVGVybVR5cGUpIHtcbiAgICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgICAgaWYgKHRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgICAgIGRpc2NoYXJnZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRpc2NoYXJnZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzY2hhcmdlcztcbiAgfVxuXG4gIHZhbGlkYXRlVHlwZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdHlwZVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgICAgdHlwZVZhbGlkYXRlcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odHlwZVZhbGlkYXRlcywgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5TdGF0ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKCFzdGF0ZWQpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlc1doZW5TdGF0ZWQgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuU3RhdGVkLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUbyh0aGlzLnR5cGUpLFxuICAgICAgICAgICAgdGVybVR5cGVTdXBlclR5cGVPZlR5cGUgPSB0ZXJtVHlwZS5pc1N1cGVyVHlwZU9mKHRoaXMudHlwZSk7XG5cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAvLy9cbiAgICAgIH0gZWxzZSBpZiAodGVybVR5cGVFcXVhbFRvVHlwZSkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAodGVybVR5cGVTdXBlclR5cGVPZlR5cGUpIHtcbiAgICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgICAgaWYgKHRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgICAgIHZhbGlkYXRlc1doZW5TdGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHN0YXRlZCB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuU3RhdGVkLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKHN0YXRlZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuRGVyaXZlZCwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnR5cGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgdHlwZSBhc3NlcnRpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odmFsaWRhdGVzV2hlbkRlcml2ZWQsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcblxuICAgIGRlYnVnZ2VyXG5cbiAgICBsZXQgdW5pZmllc0luZGVwZW5kZW50bHkgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgbGV0IHRlcm07XG5cbiAgICB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpO1xuXG4gICAgdGVybSA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBjb250ZXh0KTsgLy9cblxuICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5pZmllc0luZGVwZW5kZW50bHk7XG4gIH1cblxuICBhc3NpZ24oY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlZCA9IGNvbnRleHQuaXNTdGF0ZWQoKTtcblxuICAgIGlmICghc3RhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IHRoaXMsIC8vL1xuICAgICAgICAgIHZhcmlhYmxlQXNzaWdtZW50ID0gdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQodmFyaWFibGVBc3NpZ21lbnQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgdHlwZSA9IHR5cGVKU09OLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHR5cGVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gbmV3IFR5cGVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0eXBlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgaWYgKHRlcm0gPT09IG51bGwpIHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm0udmFsaWRhdGUoKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgaWYgKHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSkge1xuICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgIGlmICh0ZXJtRXN0YWJsaXNoZWQpIHtcbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICB0ZXJtID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuICB9LCBjb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlR5cGVBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwidHlwZSIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0VHlwZUFzc2VydGlvbk5Cb2RlIiwiZ2V0Tm9kZSIsInR5cGVBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJjb250aW51YXRpb24iLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2YWxpZEFzc2VydGlvbiIsImZpbmRWYWxpZEFzc2VydGlvbiIsInR5cGVBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVHlwZSIsInR5cGVWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVdoZW5TdGF0ZWQiLCJiaW5kIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImV4aXN0cyIsInZhbGlkYXRlcyIsImFzc2VydGlvbiIsImFzc2lnbiIsImFkZEFzc2VydGlvbiIsImRpc2NoYXJnZSIsImRpc2NoYXJnZXMiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwidGVybVR5cGUiLCJ0eXBlRXF1YWxUb1Rlcm1UeXBlIiwiaXNFcXVhbFRvIiwidGVybUVzdGFibGlzaGVkIiwiaXNFc3RhYmxpc2hlZCIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwic3RhdGVkIiwiaXNTdGF0ZWQiLCJ2YWxpZGF0ZXNXaGVuU3RhdGVkIiwidGVybVR5cGVFcXVhbFRvVHlwZSIsInRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlIiwiaXNTdXBlclR5cGVPZiIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidW5pZnlJbmRlcGVuZGVudGx5IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsInZhcmlhYmxlQXNzaWdtZW50IiwidmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24iLCJhZGRBc3NpZ25tZW50IiwidG9KU09OIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsIm5hbWUiLCJnZXROYW1lIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24iLCJ0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUZyb21KU09OIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJ0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQUE7OztnQ0Fmb0M7a0VBRWQ7MEJBRUM7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
|
|
@@ -20,10 +20,10 @@ const _default = (0, _elements.define)(class BracketedCombinator extends _combin
|
|
|
20
20
|
const node = this.getNode(), bracketedCombinatorNode = node; ///
|
|
21
21
|
return bracketedCombinatorNode;
|
|
22
22
|
}
|
|
23
|
-
unifyStatement(statement,
|
|
23
|
+
unifyStatement(statement, context, continuation) {
|
|
24
24
|
const statementString = statement.getString();
|
|
25
25
|
context.trace(`Unifying the '${statementString}' statement with the bracketed combinator...`);
|
|
26
|
-
return super.unifyStatement(statement,
|
|
26
|
+
return super.unifyStatement(statement, context, (statementUnifies, context)=>{
|
|
27
27
|
if (statementUnifies) {
|
|
28
28
|
context.debug(`...unified the '${statementString}' statement with the bracketed combinator.`);
|
|
29
29
|
}
|
|
@@ -33,4 +33,4 @@ const _default = (0, _elements.define)(class BracketedCombinator extends _combin
|
|
|
33
33
|
static name = "BracketedCombinator";
|
|
34
34
|
});
|
|
35
35
|
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IvYnJhY2tldGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi4vY29tYmluYXRvclwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEJyYWNrZXRlZENvbWJpbmF0b3IgZXh0ZW5kcyBDb21iaW5hdG9yIHtcbiAgZ2V0QnJhY2tldGVkQ29tYmluYXRvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGJyYWNrZXRlZENvbWJpbmF0b3JOb2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gYnJhY2tldGVkQ29tYmluYXRvck5vZGU7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgYnJhY2tldGVkIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIHJldHVybiBzdXBlci51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzLCBjb250ZXh0KSA9PiB7XG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgYnJhY2tldGVkIGNvbWJpbmF0b3IuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VW5pZmllcywgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQnJhY2tldGVkQ29tYmluYXRvclwiO1xufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiQnJhY2tldGVkQ29tYmluYXRvciIsIkNvbWJpbmF0b3IiLCJnZXRCcmFja2V0ZWRDb21iaW5hdG9yTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwiYnJhY2tldGVkQ29tYmluYXRvck5vZGUiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudCIsImNvbnRleHQiLCJjb250aW51YXRpb24iLCJzdGF0ZW1lbnRTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInN0YXRlbWVudFVuaWZpZXMiLCJkZWJ1ZyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBQTs7O21FQUp1QjswQkFFQTs7Ozs7O01BRXZCLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsNEJBQTRCQyxtQkFBVTtJQUNoRUMsNkJBQTZCO1FBQzNCLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQywwQkFBMEJGLE1BQU0sR0FBRztRQUV6QyxPQUFPRTtJQUNUO0lBRUFDLGVBQWVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxZQUFZLEVBQUU7UUFDL0MsTUFBTUMsa0JBQWtCSCxVQUFVSSxTQUFTO1FBRTNDSCxRQUFRSSxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUVGLGdCQUFnQiw0Q0FBNEMsQ0FBQztRQUU1RixPQUFPLEtBQUssQ0FBQ0osZUFBZUMsV0FBV0MsU0FBUyxDQUFDSyxrQkFBa0JMO1lBQ2pFLElBQUlLLGtCQUFrQjtnQkFDcEJMLFFBQVFNLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFSixnQkFBZ0IsMENBQTBDLENBQUM7WUFDOUY7WUFFQSxPQUFPRCxhQUFhSSxrQkFBa0JMO1FBQ3hDO0lBQ0Y7SUFFQSxPQUFPTyxPQUFPLHNCQUFzQjtBQUN0QyJ9
|
|
@@ -59,26 +59,22 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
59
59
|
return continuation(statementValidates, context);
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
-
unifyStatement(statement,
|
|
62
|
+
unifyStatement(statement, context, continuation) {
|
|
63
63
|
const statementString = statement.getString(), combinatorString = this.getString(); ///
|
|
64
64
|
context.trace(`Unifying the '${statementString}' statement with the '${combinatorString}' combinator...`);
|
|
65
65
|
const combinator = this, combinatorContext = combinator.getContext(), generalContext = combinatorContext, specifiContext = context; ///
|
|
66
66
|
return (0, _unify.unifyStatementWithCombinator)(statement, combinator, generalContext, specifiContext, (statementUnifiesWithCombinator, generalContext, specifiContext)=>{
|
|
67
67
|
const context = specifiContext; ///
|
|
68
|
+
let statementUnifies;
|
|
68
69
|
if (!statementUnifiesWithCombinator) {
|
|
69
70
|
statement = null;
|
|
70
71
|
return continuation(statement, context);
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (statementUnifies) {
|
|
78
|
-
context.debug(`...unified the '${statementString}' statement with the '${combinatorString}' combinator.`);
|
|
79
|
-
}
|
|
80
|
-
return continuation(statement, context);
|
|
81
|
-
});
|
|
73
|
+
statementUnifies = true;
|
|
74
|
+
if (statementUnifies) {
|
|
75
|
+
context.debug(`...unified the '${statementString}' statement with the '${combinatorString}' combinator.`);
|
|
76
|
+
}
|
|
77
|
+
return continuation(statement, context);
|
|
82
78
|
});
|
|
83
79
|
}
|
|
84
80
|
toJSON() {
|
|
@@ -110,4 +106,4 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
110
106
|
}
|
|
111
107
|
});
|
|
112
108
|
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb21iaW5hdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3J5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29tYmluYXRvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29tYmluYXRvck5vZGU7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQsIChzdGF0ZW1lbnRWYWxpZGF0ZXMsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcywgY29udGV4dCk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KVxuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IodGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQsIChzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3IsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlc0FzQ29tYmluYXRvcikge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VmFsaWRhdGVzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY2FsbGJhY2ssIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmApO1xuXG4gICAgY29uc3QgY29tYmluYXRvciA9IHRoaXMsIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JDb250ZXh0ID0gY29tYmluYXRvci5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBjb21iaW5hdG9yQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIHJldHVybiB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yKHN0YXRlbWVudCwgY29tYmluYXRvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpQ29udGV4dDsgLy8vXG5cbiAgICAgIGlmICghc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yKSB7XG4gICAgICAgIHN0YXRlbWVudCA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnQsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FsbGJhY2soc3RhdGVtZW50LCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudCwgY29udGV4dCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb21iaW5hdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29tYmluYXRvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29tYmluYXRvck5vZGUgPSBpbnN0YW50aWF0ZUNvbWJpbmF0b3Ioc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbWJpbmF0b3JOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZShjb21iaW5hdG9yTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29tYmluYXRvciA9IG5ldyBDb21iaW5hdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbWJpbmF0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29tYmluYXRvcnlOb2RlIiwiZ2V0Tm9kZSIsImNvbWJpbmF0b3JOb2RlIiwidmVyaWZ5IiwiY29udGludWF0aW9uIiwiY29tYmluYXRvclN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50Iiwic3RhdGVtZW50VmFsaWRhdGVzIiwidmVyaWZpZXMiLCJjb21taXQiLCJkZWJ1ZyIsInZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIiwic3RhdGVtZW50VmFsaWRhdGVzQXNDb21iaW5hdG9yIiwidW5pZnlTdGF0ZW1lbnQiLCJjYWxsYmFjayIsInN0YXRlbWVudFN0cmluZyIsImNvbWJpbmF0b3IiLCJjb21iaW5hdG9yQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmlDb250ZXh0IiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciIsInN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvciIsInN0YXRlbWVudFVuaWZpZXMiLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3Rh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
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb21iaW5hdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3J5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29tYmluYXRvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29tYmluYXRvck5vZGU7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQsIChzdGF0ZW1lbnRWYWxpZGF0ZXMsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcywgY29udGV4dCk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KVxuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IodGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQsIChzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3IsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlc0FzQ29tYmluYXRvcikge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VmFsaWRhdGVzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLi4uYCk7XG5cbiAgICBjb25zdCBjb21iaW5hdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgY29tYmluYXRvckNvbnRleHQgPSBjb21iaW5hdG9yLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbWJpbmF0b3JDb250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmlDb250ZXh0OyAvLy9cblxuICAgICAgbGV0IHN0YXRlbWVudFVuaWZpZXM7XG5cbiAgICAgIGlmICghc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yKSB7XG4gICAgICAgIHN0YXRlbWVudCA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnQsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gdHJ1ZTtcblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbWJpbmF0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gaW5zdGFudGlhdGVDb21iaW5hdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5hdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUoY29tYmluYXRvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbWJpbmF0b3IgPSBuZXcgQ29tYmluYXRvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb21iaW5hdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldENvbWJpbmF0b3J5Tm9kZSIsImdldE5vZGUiLCJjb21iaW5hdG9yTm9kZSIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsImNvbWJpbmF0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZlcmlmaWVzIiwiY29tbWl0IiwiZGVidWciLCJ2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciIsInN0YXRlbWVudFZhbGlkYXRlc0FzQ29tYmluYXRvciIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwiY29tYmluYXRvciIsImNvbWJpbmF0b3JDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yIiwic3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yIiwic3RhdGVtZW50VW5pZmllcyIsInRvSlNPTiIsInNlcmlhbGlzZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb21iaW5hdG9yIiwic3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQUE7OztnQ0FYNkM7MEJBRXRCOzZCQUNlO3lCQUNNO3VCQUNDOzBCQUNDO3lCQUNlO0FBRTdELE1BQU0sRUFBRUEsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFF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
|
|
@@ -21,11 +21,10 @@ const _default = (0, _elements.define)(class BracketedConstructor extends _const
|
|
|
21
21
|
const node = this.getNode(), bracketedConstructorNode = node; ///
|
|
22
22
|
return bracketedConstructorNode;
|
|
23
23
|
}
|
|
24
|
-
unifyTerm(term,
|
|
24
|
+
unifyTerm(term, context, continuation) {
|
|
25
25
|
const termString = term.getString();
|
|
26
26
|
context.trace(`Unifying the '${termString}' term with the bracketed constructor...`);
|
|
27
|
-
|
|
28
|
-
return super.unifyTerm(term, callback, context, (termUnifies)=>{
|
|
27
|
+
return super.unifyTerm(term, context, (termUnifies)=>{
|
|
29
28
|
if (!termUnifies) {
|
|
30
29
|
return continuation(termUnifies);
|
|
31
30
|
}
|
|
@@ -55,4 +54,4 @@ const _default = (0, _elements.define)(class BracketedConstructor extends _const
|
|
|
55
54
|
static name = "BracketedConstructor";
|
|
56
55
|
});
|
|
57
56
|
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yL2JyYWNrZXRlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEJyYWNrZXRlZENvbnN0cnVjdG9yIGV4dGVuZHMgQ29uc3RydWN0b3Ige1xuICBnZXRCcmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGJyYWNrZXRlZENvbnN0cnVjdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBicmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGU7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgYnJhY2tldGVkIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gc3VwZXIudW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsICh0ZXJtVW5pZmllcykgPT4ge1xuICAgICAgaWYgKCF0ZXJtVW5pZmllcykge1xuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1VbmlmaWVzKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnJhY2tldGVkVGVybSA9IHRlcm0sIC8vL1xuICAgICAgICAgICAgYnJhY2tldGVkVGVybU5vZGUgPSBicmFja2V0ZWRUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICAgIHNpbmd1bGFyVGVybU5vZGUgPSBicmFja2V0ZWRUZXJtTm9kZS5nZXRTaW5ndWxhclRlcm1Ob2RlKCk7XG5cbiAgICAgIGlmIChzaW5ndWxhclRlcm1Ob2RlID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRlcm1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtVW5pZmllcyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJyYWNrZXRsZXNzVGVybU5vZGUgPSBzaW5ndWxhclRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgIGJyYWNrZXRsZXNzVGVybSA9IHRlcm1Gcm9tVGVybU5vZGUoYnJhY2tldGxlc3NUZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiBicmFja2V0bGVzc1Rlcm0udmFsaWRhdGUoY29udGV4dCwgKGJyYWNrZXRsZXNzVGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBpZiAoYnJhY2tldGxlc3NUZXJtID09PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24odGVybVVuaWZpZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRlcm1VbmlmaWVzO1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBicmFja2V0bGVzc1Rlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICBwcm92aXNpb25hbCA9IGJyYWNrZXRsZXNzVGVybS5pc1Byb3Zpc2lvbmFsKCk7XG5cbiAgICAgICAgYnJhY2tldGVkVGVybS5zZXRUeXBlKHR5cGUpO1xuXG4gICAgICAgIGJyYWNrZXRlZFRlcm0uc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1VbmlmaWVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkJyYWNrZXRlZENvbnN0cnVjdG9yXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJCcmFja2V0ZWRDb25zdHJ1Y3RvciIsIkNvbnN0cnVjdG9yIiwiZ2V0QnJhY2tldGVkQ29uc3RydWN0b3JOb2RlIiwibm9kZSIsImdldE5vZGUiLCJicmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUiLCJ1bmlmeVRlcm0iLCJ0ZXJtIiwiY29udGV4dCIsImNvbnRpbnVhdGlvbiIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInRlcm1VbmlmaWVzIiwiYnJhY2tldGVkVGVybSIsImJyYWNrZXRlZFRlcm1Ob2RlIiwic2luZ3VsYXJUZXJtTm9kZSIsImdldFNpbmd1bGFyVGVybU5vZGUiLCJicmFja2V0bGVzc1Rlcm1Ob2RlIiwiYnJhY2tldGxlc3NUZXJtIiwidGVybUZyb21UZXJtTm9kZSIsInZhbGlkYXRlIiwidHlwZSIsImdldFR5cGUiLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJzZXRUeXBlIiwic2V0UHJvdmlzaW9uYWwiLCJkZWJ1ZyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU9BOzs7ZUFBQTs7O29FQUx3QjswQkFFRDt5QkFDVTs7Ozs7O01BRWpDLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsNkJBQTZCQyxvQkFBVztJQUNsRUMsOEJBQThCO1FBQzVCLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQywyQkFBMkJGLE1BQU8sR0FBRztRQUUzQyxPQUFPRTtJQUNUO0lBRUFDLFVBQVVDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxZQUFZLEVBQUU7UUFDckMsTUFBTUMsYUFBYUgsS0FBS0ksU0FBUztRQUVqQ0gsUUFBUUksS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFRixXQUFXLHdDQUF3QyxDQUFDO1FBRW5GLE9BQU8sS0FBSyxDQUFDSixVQUFVQyxNQUFNQyxTQUFTLENBQUNLO1lBQ3JDLElBQUksQ0FBQ0EsYUFBYTtnQkFDaEIsT0FBT0osYUFBYUk7WUFDdEI7WUFFQSxNQUFNQyxnQkFBZ0JQLE1BQ2hCUSxvQkFBb0JELGNBQWNWLE9BQU8sSUFDekNZLG1CQUFtQkQsa0JBQWtCRSxtQkFBbUI7WUFFOUQsSUFBSUQscUJBQXFCLE1BQU07Z0JBQzdCLE1BQU1ILGNBQWM7Z0JBRXBCLE9BQU9KLGFBQWFJO1lBQ3RCO1lBRUEsTUFBTUssc0JBQXNCRixrQkFDdEJHLGtCQUFrQkMsSUFBQUEseUJBQWdCLEVBQUNGLHFCQUFxQlY7WUFFOUQsT0FBT1csZ0JBQWdCRSxRQUFRLENBQUNiLFNBQVMsQ0FBQ1csaUJBQWlCWDtnQkFDekQsSUFBSVcsb0JBQW9CLE1BQU07b0JBQzVCLE1BQU1OLGNBQWM7b0JBRXBCLE9BQU9KLGFBQWFJO2dCQUN0QjtnQkFFQSxJQUFJQTtnQkFFSixNQUFNUyxPQUFPSCxnQkFBZ0JJLE9BQU8sSUFDOUJDLGNBQWNMLGdCQUFnQk0sYUFBYTtnQkFFakRYLGNBQWNZLE9BQU8sQ0FBQ0o7Z0JBRXRCUixjQUFjYSxjQUFjLENBQUNIO2dCQUU3QlgsY0FBYztnQkFFZCxJQUFJQSxhQUFhO29CQUNmTCxRQUFRb0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVsQixXQUFXLHNDQUFzQyxDQUFDO2dCQUNyRjtnQkFFQSxPQUFPRCxhQUFhSTtZQUN0QjtRQUNGO0lBQ0Y7SUFFQSxPQUFPZ0IsT0FBTyx1QkFBdUI7QUFDdkMifQ==
|
|
@@ -128,7 +128,7 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
128
128
|
return continuation(termValidatesAsConstructor, context);
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
|
-
unifyTerm(term,
|
|
131
|
+
unifyTerm(term, context, continuation) {
|
|
132
132
|
const termString = term.getString(), includeType = true, constructorString = this.getString(includeType); ///
|
|
133
133
|
context.trace(`Unifying the '${termString}' term with the '${constructorString}' constructor...`);
|
|
134
134
|
return this.dischargeHypothesesGivenTerm(term, context, (hypothesesDiscardedGivenTerm, context)=>{
|
|
@@ -138,6 +138,7 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
138
138
|
}
|
|
139
139
|
const constructor = this, constructorContext = constructor.getContext(), generalContext = constructorContext, specifiContext = context; ///
|
|
140
140
|
return (0, _unify.unifyTermWithConstructor)(term, constructor, generalContext, specifiContext, (termUnifiesWithConstructor, generalContext, specifiContext)=>{
|
|
141
|
+
let termUnifies;
|
|
141
142
|
const context = specifiContext; ///
|
|
142
143
|
if (!termUnifiesWithConstructor) {
|
|
143
144
|
term = null;
|
|
@@ -146,16 +147,11 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
146
147
|
const provisional = this.type.isProvisional();
|
|
147
148
|
term.setProvisional(provisional);
|
|
148
149
|
term.setType(this.type);
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (termUnifies) {
|
|
155
|
-
context.debug(`...unified the '${termString}' term with the '${constructorString}' constructor.`);
|
|
156
|
-
}
|
|
157
|
-
return continuation(term, context);
|
|
158
|
-
});
|
|
150
|
+
termUnifies = continuation(term, context);
|
|
151
|
+
if (termUnifies) {
|
|
152
|
+
context.debug(`...unified the '${termString}' term with the '${constructorString}' constructor.`);
|
|
153
|
+
}
|
|
154
|
+
return termUnifies;
|
|
159
155
|
});
|
|
160
156
|
});
|
|
161
157
|
}
|
|
@@ -211,4 +207,4 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
211
207
|
}
|
|
212
208
|
});
|
|
213
209
|
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiwgaHlwb3RoZXNlc0Zyb21KU09OLCBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGV2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25zdHJ1Y3RvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3Rvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJ1Y3Rvck5vZGU7XG4gIH1cblxuICBnZXRTdHJpbmcoaW5jbHVkZVR5cGUgPSB0cnVlKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN0cmluZyA9IGAke3Rlcm1TdHJpbmd9LiR7dHlwZVN0cmluZ31gO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmcgPSBzdXBlci5nZXRTdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIHZlcmlmeShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVUZXJtKGNvbnRleHQsICh0ZXJtVmFsaWRhdGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlID0gdGhpcy52YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciA9IHRoaXMudmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLFxuICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclxuICAgIF0sIGNvbnRleHQsICh0ZXJtVmFsaWRhdGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1WYWxpZGF0ZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBoeXBvdGh0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RodGljYWwpIHtcbiAgICAgIGNvbnN0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odGVybVZhbGlkYXRlc0FzVmFyaWFibGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlVGVybUFzVmFyaWFibGUodGhpcy50ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgICBpZiAodHlwZSA9PT0gYmFzZVR5cGUpIHtcbiAgICAgICAgdGVybVZhbGlkYXRlc0FzVmFyaWFibGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzVmFyaWFibGUpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGh5cG90aHRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aHRpY2FsKSB7XG4gICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvciA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHRoaXMudGVybSwgY29udGV4dCwgKHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yKSA9PiB7XG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3IpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvciwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgY2FsbGJhY2ssIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGluY2x1ZGVUeXBlID0gdHJ1ZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgKGh5cG90aGVzZXNEaXNjYXJkZWRHaXZlblRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgIGlmICghaHlwb3RoZXNlc0Rpc2NhcmRlZEdpdmVuVGVybSkge1xuICAgICAgICB0ZXJtID0gbnVsbDtcblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb25zdHJ1Y3RvciA9IHRoaXMsIC8vL1xuICAgICAgICAgICAgY29uc3RydWN0b3JDb250ZXh0ID0gY29uc3RydWN0b3IuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBjb25zdHJ1Y3RvckNvbnRleHQsICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmlDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICAgIHJldHVybiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29uc3RydWN0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpQ29udGV4dCwgKHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmlDb250ZXh0OyAvLy9cblxuICAgICAgICBpZiAoIXRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgdGVybSA9IG51bGw7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvdmlzaW9uYWwgPSB0aGlzLnR5cGUuaXNQcm92aXNpb25hbCgpO1xuXG4gICAgICAgIHRlcm0uc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICAgIHJldHVybiBjYWxsYmFjayh0ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB0ZXJtVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtLCBjb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0oaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgZGVidWdnZXJcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBoeXBvdGhlc2lzLmRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIGlmIChoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSkge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm07XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RoZXRpY2FsKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSA9IHRydWU7ICAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuaHlwb3RoZXNlcywgY29udGV4dCwgKGh5cG90aGVzaXMsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtKGh5cG90aGVzaXMsIHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04sICAvLy9cbiAgICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RydWN0b3JcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJ1Y3RvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlKGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RydWN0b3IgPSBuZXcgQ29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cnVjdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiaHlwb3RoZXNlcyIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJnZXRDb25zdHJ1Y3Rvck5vZGUiLCJnZXROb2RlIiwiY29uc3RydWN0b3JOb2RlIiwiZ2V0U3RyaW5nIiwiaW5jbHVkZVR5cGUiLCJ0ZXJtU3RyaW5nIiwidHlwZVN0cmluZyIsInNldFR5cGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsImNvbnN0cnVjdG9yU3RyaW5nIiwidHJhY2UiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtIiwidGVybVZhbGlkYXRlcyIsImNvbW1pdCIsImRlYnVnIiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsImJpbmQiLCJ2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yIiwiZXhpc3RzIiwiaHlwb3RodGljYWwiLCJ0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yIiwidW5pZnlUZXJtIiwiY2FsbGJhY2siLCJkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtIiwiaHlwb3RoZXNlc0Rpc2NhcmRlZEdpdmVuVGVybSIsImNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciIsInByb3Zpc2lvbmFsIiwiaXNQcm92aXNpb25hbCIsInNldFByb3Zpc2lvbmFsIiwidGVybVVuaWZpZXMiLCJkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtIiwiaHlwb3RoZXNpcyIsImh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZUdpdmVuVGVybSIsImh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtIiwidG9KU09OIiwic2VyaWFsaXNlIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29uc3RydWN0b3IiLCJ0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZSIsInR5cGVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBQTs7O2dDQWhCb0U7MEJBRTdDOzhCQUNBO3NCQUNhOzZCQUNHOzRCQUNBO3lCQUNDO3VCQUNDOzBCQUNDO3lCQUNtQjtzQkFDZ0M7QUFFN0YsTUFBTSxFQUFFQSxLQUFLLEVBQUUsR0FBR0MscUNBQXFCLEVBQ2pDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxvQkFBb0JDLHVCQUFPO0lBQ3JELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsQ0FBRTtRQUNyRSxLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUksVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDSCxVQUFVO0lBQ3hCO0lBRUFJLGNBQWNKLFVBQVUsRUFBRTtRQUN4QixJQUFJLENBQUNBLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUssaUJBQWlCO1FBQ2YsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ04sVUFBVSxDQUFDTyxN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
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiwgaHlwb3RoZXNlc0Zyb21KU09OLCBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGV2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25zdHJ1Y3RvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3Rvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJ1Y3Rvck5vZGU7XG4gIH1cblxuICBnZXRTdHJpbmcoaW5jbHVkZVR5cGUgPSB0cnVlKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN0cmluZyA9IGAke3Rlcm1TdHJpbmd9LiR7dHlwZVN0cmluZ31gO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmcgPSBzdXBlci5nZXRTdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIHZlcmlmeShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVUZXJtKGNvbnRleHQsICh0ZXJtVmFsaWRhdGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlID0gdGhpcy52YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciA9IHRoaXMudmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLFxuICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclxuICAgIF0sIGNvbnRleHQsICh0ZXJtVmFsaWRhdGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1WYWxpZGF0ZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBoeXBvdGh0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RodGljYWwpIHtcbiAgICAgIGNvbnN0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odGVybVZhbGlkYXRlc0FzVmFyaWFibGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlVGVybUFzVmFyaWFibGUodGhpcy50ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgICBpZiAodHlwZSA9PT0gYmFzZVR5cGUpIHtcbiAgICAgICAgdGVybVZhbGlkYXRlc0FzVmFyaWFibGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzVmFyaWFibGUpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGh5cG90aHRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aHRpY2FsKSB7XG4gICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvciA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHRoaXMudGVybSwgY29udGV4dCwgKHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yKSA9PiB7XG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3IpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvciwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgaW5jbHVkZVR5cGUgPSB0cnVlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCAoaHlwb3RoZXNlc0Rpc2NhcmRlZEdpdmVuVGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgaWYgKCFoeXBvdGhlc2VzRGlzY2FyZGVkR2l2ZW5UZXJtKSB7XG4gICAgICAgIHRlcm0gPSBudWxsO1xuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odGVybSwgY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgICBjb25zdHJ1Y3RvckNvbnRleHQgPSBjb25zdHJ1Y3Rvci5nZXRDb250ZXh0KCksXG4gICAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnN0cnVjdG9yQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgICAgcmV0dXJuIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb25zdHJ1Y3RvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0LCAodGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdGVybVVuaWZpZXM7XG5cbiAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmlDb250ZXh0OyAvLy9cblxuICAgICAgICBpZiAoIXRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgdGVybSA9IG51bGw7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvdmlzaW9uYWwgPSB0aGlzLnR5cGUuaXNQcm92aXNpb25hbCgpO1xuXG4gICAgICAgIHRlcm0uc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICAgIHRlcm1VbmlmaWVzID0gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGVybVVuaWZpZXM7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0oaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgZGVidWdnZXJcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBoeXBvdGhlc2lzLmRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIGlmIChoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSkge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm07XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RoZXRpY2FsKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSA9IHRydWU7ICAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuaHlwb3RoZXNlcywgY29udGV4dCwgKGh5cG90aGVzaXMsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtKGh5cG90aGVzaXMsIHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04sICAvLy9cbiAgICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RydWN0b3JcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJ1Y3RvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlKGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RydWN0b3IgPSBuZXcgQ29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cnVjdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiaHlwb3RoZXNlcyIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJnZXRDb25zdHJ1Y3Rvck5vZGUiLCJnZXROb2RlIiwiY29uc3RydWN0b3JOb2RlIiwiZ2V0U3RyaW5nIiwiaW5jbHVkZVR5cGUiLCJ0ZXJtU3RyaW5nIiwidHlwZVN0cmluZyIsInNldFR5cGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsImNvbnN0cnVjdG9yU3RyaW5nIiwidHJhY2UiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtIiwidGVybVZhbGlkYXRlcyIsImNvbW1pdCIsImRlYnVnIiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsImJpbmQiLCJ2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yIiwiZXhpc3RzIiwiaHlwb3RodGljYWwiLCJ0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yIiwidW5pZnlUZXJtIiwiZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSIsImh5cG90aGVzZXNEaXNjYXJkZWRHaXZlblRlcm0iLCJjb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmlDb250ZXh0IiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwidGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllcyIsInByb3Zpc2lvbmFsIiwiaXNQcm92aXNpb25hbCIsInNldFByb3Zpc2lvbmFsIiwiZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybSIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSIsImh5cG90aGVzaXNTdHJpbmciLCJkaXNjaGFyZ2VHaXZlblRlcm0iLCJoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSIsInRvSlNPTiIsInNlcmlhbGlzZSIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIiwidGVybUZyb21Db25zdHJ1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
|
package/lib/element/deduction.js
CHANGED
|
@@ -75,7 +75,7 @@ const _default = (0, _elements.define)(class Deduction extends _occamlanguages.E
|
|
|
75
75
|
validateStatement(context, continuation) {
|
|
76
76
|
const deductionString = this.getString(); ///
|
|
77
77
|
context.trace(`Validating the '${deductionString}' deduction's statement...`);
|
|
78
|
-
return this.statement.validate((statement)=>{
|
|
78
|
+
return this.statement.validate(context, (statement)=>{
|
|
79
79
|
let statementValidates = false;
|
|
80
80
|
if (statement !== null) {
|
|
81
81
|
statementValidates = true;
|
|
@@ -84,7 +84,7 @@ const _default = (0, _elements.define)(class Deduction extends _occamlanguages.E
|
|
|
84
84
|
context.trace(`...validated the '${deductionString}' deduction's statement.`);
|
|
85
85
|
}
|
|
86
86
|
return continuation(statementValidates, context);
|
|
87
|
-
}
|
|
87
|
+
});
|
|
88
88
|
}
|
|
89
89
|
unifyStep(step, context, continuation) {
|
|
90
90
|
const stepString = step.getString(), deductionString = this.getString(); ///
|
|
@@ -148,4 +148,4 @@ function statementFromDeductionNode(deductionNode, context) {
|
|
|
148
148
|
return statement;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2RlZHVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZHVjdGlvbiB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlbGlkZSwgZGVyaXZlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlLCBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRGVkdWN0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldERlZHVjdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZHVjdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBkZWR1Y3Rpb25Ob2RlO1xuICB9XG5cbiAgaXNOb25CcmVha2FibGUoKSB7XG4gICAgY29uc3Qgbm9uc2Vuc2ljYWwgPSAodGhpcy5zdGF0ZW1lbnQgPT09IG51bGwpO1xuXG4gICAgcmV0dXJuIG5vbnNlbnNpY2FsO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgbm9uc2Vuc2ljYWwgPSB0aGlzLmlzTm9uQnJlYWthYmxlKCk7XG5cbiAgICBpZiAobm9uc2Vuc2ljYWwpIHtcbiAgICAgIGNvbnN0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiBiZWNhdXNlIGl0IGlzIG5vbnNlbnNlLmApO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBkZXJpdmUoKGNvbnRleHQpID0+IHtcbiAgICAgIGVsaWRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKGNvbnRleHQsICh2YWxpZGF0ZXMpID0+IHtcbiAgICAgICAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgKHN0YXRlbWVudFZhbGlkYXRlcykgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlcyk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFZhbGlkYXRlcywgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwQ29udGV4dCA9IHN0ZXAuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlZHVjdGlvbkNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZGVkdWN0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3RlcENvbnRleHQ7ICAvLy9cblxuICAgIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICBsZXQgc3RlcFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICBzdGVwVW5pZmllcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RlcFVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBVbmlmaWVzKTtcbiAgICAgIH0pO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VW5pZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVkdWN0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZGVkdWN0aW9uO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBkZWR1Y3Rpb25Ob2RlID0gaW5zdGFudGlhdGVEZWR1Y3Rpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGRlZHVjdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUoZGVkdWN0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgZGVkdWN0aW9uID0gbmV3IERlZHVjdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZWR1Y3Rpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tRGVkdWN0aW9uTm9kZShkZWR1Y3Rpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBkZWR1Y3Rpb25Ob2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVkdWN0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldERlZHVjdGlvbk5vZGUiLCJnZXROb2RlIiwiZGVkdWN0aW9uTm9kZSIsImlzTm9uQnJlYWthYmxlIiwibm9uc2Vuc2ljYWwiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmaWVzIiwiZGVidWciLCJkZXJpdmUiLCJlbGlkZSIsInZhbGlkYXRlIiwidmFsaWRhdGVzIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50Iiwic3RhdGVtZW50VmFsaWRhdGVzIiwiY29tbWl0IiwidW5pZnlTdGVwIiwic3RlcCIsInN0ZXBTdHJpbmciLCJzdGVwQ29udGV4dCIsImdldENvbnRleHQiLCJkZWR1Y3Rpb25Db250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWNvbmNpbGUiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJzdGVwVW5pZmllcyIsInN0YXRlbWVudFN0cmluZyIsInRvSlNPTiIsInNlcmlhbGlzZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJkZWR1Y3Rpb24iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVEZWR1Y3Rpb24iLCJzdGF0ZW1lbnRGcm9tRGVkdWN0aW9uTm9kZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFBOzs7Z0NBUjZDOzBCQUV0Qjs2QkFDYzt5QkFDa0Q7QUFFdkYsTUFBTSxFQUFFQSxTQUFTLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekYsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxrQkFBa0JDLHVCQUFPO0lBQ25ELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFF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
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2RlZHVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZHVjdGlvbiB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlbGlkZSwgZGVyaXZlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlLCBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRGVkdWN0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldERlZHVjdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZHVjdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBkZWR1Y3Rpb25Ob2RlO1xuICB9XG5cbiAgaXNOb25CcmVha2FibGUoKSB7XG4gICAgY29uc3Qgbm9uc2Vuc2ljYWwgPSAodGhpcy5zdGF0ZW1lbnQgPT09IG51bGwpO1xuXG4gICAgcmV0dXJuIG5vbnNlbnNpY2FsO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgbm9uc2Vuc2ljYWwgPSB0aGlzLmlzTm9uQnJlYWthYmxlKCk7XG5cbiAgICBpZiAobm9uc2Vuc2ljYWwpIHtcbiAgICAgIGNvbnN0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiBiZWNhdXNlIGl0IGlzIG5vbnNlbnNlLmApO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBkZXJpdmUoKGNvbnRleHQpID0+IHtcbiAgICAgIGVsaWRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKGNvbnRleHQsICh2YWxpZGF0ZXMpID0+IHtcbiAgICAgICAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgKHN0YXRlbWVudFZhbGlkYXRlcykgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlcyk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQsIChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFZhbGlkYXRlcywgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVN0ZXAoc3RlcCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3RlcENvbnRleHQgPSBzdGVwLmdldENvbnRleHQoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGRlZHVjdGlvbkNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHN0ZXBDb250ZXh0OyAgLy8vXG5cbiAgICByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgc3RlcFVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXBVbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwVW5pZmllcyk7XG4gICAgICB9KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkRlZHVjdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvbjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgZGVkdWN0aW9uTm9kZSA9IGluc3RhbnRpYXRlRGVkdWN0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBkZWR1Y3Rpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21EZWR1Y3Rpb25Ob2RlKGRlZHVjdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZHVjdGlvbiA9IG5ldyBEZWR1Y3Rpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVkdWN0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUoZGVkdWN0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gZGVkdWN0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkRlZHVjdGlvbiIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJnZXREZWR1Y3Rpb25Ob2RlIiwiZ2V0Tm9kZSIsImRlZHVjdGlvbk5vZGUiLCJpc05vbkJyZWFrYWJsZSIsIm5vbnNlbnNpY2FsIiwidmVyaWZ5IiwiY29udGludWF0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZmllcyIsImRlYnVnIiwiZGVyaXZlIiwiZWxpZGUiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlcyIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInN0YXRlbWVudFZhbGlkYXRlcyIsImNvbW1pdCIsInVuaWZ5U3RlcCIsInN0ZXAiLCJzdGVwU3RyaW5nIiwic3RlcENvbnRleHQiLCJnZXRDb250ZXh0IiwiZGVkdWN0aW9uQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwicmVjb25jaWxlIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwic3RlcFVuaWZpZXMiLCJzdGF0ZW1lbnRTdHJpbmciLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiZGVkdWN0aW9uIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlRGVkdWN0aW9uIiwic3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVVBOzs7ZUFBQTs7O2dDQVI2QzswQkFFdEI7NkJBQ2M7eUJBQ2tEO0FBRXZGLE1BQU0sRUFBRUEsU0FBUyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpGLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsa0JBQWtCQyx1QkFBTztJQUNuRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxV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
|