occam-nominal 1.0.477 → 1.0.479
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 +2 -1
- package/lib/element/constructor.js +4 -4
- package/lib/element/fact/supposition.js +4 -4
- package/lib/element/label.js +4 -4
- package/lib/element/resolution/deduction.js +4 -4
- package/package.json +2 -2
- package/src/element/assertion/type.js +2 -0
- package/src/element/constructor.js +3 -3
- package/src/element/fact/supposition.js +3 -3
- package/src/element/label.js +3 -3
- package/src/element/resolution/deduction.js +5 -4
|
@@ -80,6 +80,7 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
|
|
|
80
80
|
validateWhenDerived
|
|
81
81
|
], state, context, (state, context, back)=>{
|
|
82
82
|
assertion = this; ///
|
|
83
|
+
this.assign(state, context);
|
|
83
84
|
context.addAssertion(assertion);
|
|
84
85
|
const typeAssertion = assertion; ///
|
|
85
86
|
context.debug(`...validated the '${typeAssertionString}' type assertion.`);
|
|
@@ -220,4 +221,4 @@ function validateWhenDerived(term, type, state, context, forward, back) {
|
|
|
220
221
|
}, back);
|
|
221
222
|
}
|
|
222
223
|
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IGRlcml2ZSwgaXNEZXJpdmVkLCBpc0RlY2xhcmVkLCBpc1RyYW5zaWVudH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSwgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VHlwZUFzc2VydGlvbk5Cb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZGlzY2hhcmdlKGNvbnRleHQpIHtcbiAgICBsZXQgZGlzY2hhcmdlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuXG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGRpc2NoYXJnZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGRpc2NoYXJnZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzY2hhcmdlcztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodHlwZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVUeXBlID0gdGhpcy52YWxpZGF0ZVR5cGUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUeXBlXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVR5cGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uJ3MgdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uJ3MgdHlwZS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKVxuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gZmFsc2U7XG5cbiAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb1R5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG8odGhpcy50eXBlKSxcbiAgICAgICAgICAgICAgdGVybVR5cGVTdXBlclR5cGVPZlR5cGUgPSB0ZXJtVHlwZS5pc1N1cGVyVHlwZU9mKHRoaXMudHlwZSk7XG5cbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgLy8vXG4gICAgICAgIH0gZWxzZSBpZiAodGVybVR5cGVFcXVhbFRvVHlwZSkge1xuICAgICAgICAgIHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGVybVR5cGVTdXBlclR5cGVPZlR5cGUpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtRXN0YWJsaXNoZWQgPSB0ZXJtLmlzRXN0YWJsaXNoZWQoKTtcblxuICAgICAgICAgIGlmICh0ZXJtRXN0YWJsaXNoZWQpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghdmFsaWRhdGVzV2hlbkRlY2xhcmVkKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgdHlwZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHRoaXMudHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcblxuICAgICAgICB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IHRydWU7XG5cbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXNJbmRlcGVuZGVudGx5KTtcbiAgfVxuXG4gIGFzc2lnbihzdGF0ZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpLFxuICAgICAgICAgIHRyYW5zaWVudCA9IGlzVHJhbnNpZW50KHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkIHx8IHRyYW5zaWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSB0aGlzLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZUFzc2lnbWVudCA9IHZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdtZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IHR5cGUgPSB0eXBlSlNPTixcbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlR5cGVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCB0eXBlQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlVHlwZUFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gdHlwZUFzc2VydGlvbk5vZGUsIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgdHlwZUFzc2VydGlvbiA9IG5ldyBUeXBlQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdHlwZSwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgcmV0dXJuIHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgIGNvbnN0IHRlcm1Fc3RhYmxpc2hlZCA9IHRlcm0uaXNFc3RhYmxpc2hlZCgpO1xuXG4gICAgICAgIGlmICh0ZXJtRXN0YWJsaXNoZWQpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICB9LCBiYWNrKTtcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJUeXBlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJnZXRUZXJtIiwiZ2V0VHlwZSIsImdldFR5cGVBc3NlcnRpb25OQm9kZSIsImdldE5vZGUiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImRpc2NoYXJnZSIsImRpc2NoYXJnZXMiLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiZGVyaXZlIiwic3RhdGUiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJkZWJ1ZyIsInZhbGlkYXRlIiwiZm9yd2FyZCIsImJhY2siLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInZhbGlkYXRlVHlwZSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsImFkZEFzc2VydGlvbiIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwidGVybVR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9UeXBlIiwiaXNFcXVhbFRvIiwidGVybVR5cGVTdXBlclR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwidGVybUVzdGFibGlzaGVkIiwiaXNFc3RhYmxpc2hlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwiY29udGludWF0aW9uIiwiYXNzaWduIiwidHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJ2YXJpYWJsZUFzc2lnbWVudCIsInZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQXNzZXJ0aW9uIiwiYWRkQXNzaWdubWVudCIsInRvSlNPTiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJuYW1lIiwiZ2V0TmFtZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIiwidGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVGcm9tSlNPTiIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWtCQTs7O2VBQUE7OztnQ0FoQjJEO2tFQUVyQzswQkFFQzt5QkFDSzs2QkFDYTtzQkFDSTsrQkFDQTt3QkFDTzt1QkFDTTt5QkFDZ0I7Ozs7OztBQUUxRSxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQixFQUN2QyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFN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
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IGRlcml2ZSwgaXNEZXJpdmVkLCBpc0RlY2xhcmVkLCBpc1RyYW5zaWVudH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSwgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VHlwZUFzc2VydGlvbk5Cb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZGlzY2hhcmdlKGNvbnRleHQpIHtcbiAgICBsZXQgZGlzY2hhcmdlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuXG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGRpc2NoYXJnZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGRpc2NoYXJnZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzY2hhcmdlcztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodHlwZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVUeXBlID0gdGhpcy52YWxpZGF0ZVR5cGUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUeXBlXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmFzc2lnbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUeXBlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjaylcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9UeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvKHRoaXMudHlwZSksXG4gICAgICAgICAgICAgIHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNTdXBlclR5cGVPZih0aGlzLnR5cGUpO1xuXG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIC8vL1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlRXF1YWxUb1R5cGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgICAgICBpZiAodGVybUVzdGFibGlzaGVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMudHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpO1xuXG4gICAgZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG5cbiAgICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuXG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKSxcbiAgICAgICAgICB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCB8fCB0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVBc3NpZ21lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCB0eXBlID0gdHlwZUpTT04sXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZUFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgdHlwZUFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUodHlwZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIHR5cGVBc3NlcnRpb24gPSBuZXcgVHlwZUFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHR5cGUsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIHJldHVybiB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgaWYgKHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICBjb25zdCB0ZXJtRXN0YWJsaXNoZWQgPSB0ZXJtLmlzRXN0YWJsaXNoZWQoKTtcblxuICAgICAgICBpZiAodGVybUVzdGFibGlzaGVkKSB7XG4gICAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgfSwgYmFjayk7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRUeXBlQXNzZXJ0aW9uTkJvZGUiLCJnZXROb2RlIiwidHlwZUFzc2VydGlvbk5vZGUiLCJkaXNjaGFyZ2UiLCJkaXNjaGFyZ2VzIiwidHlwZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsImRlcml2ZSIsInN0YXRlIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZGVidWciLCJ2YWxpZGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInR5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZVR5cGUiLCJiaW5kIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJhc3NpZ24iLCJhZGRBc3NlcnRpb24iLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidHlwZVN0cmluZyIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsInZhbGlkYXRlc1doZW5EZWNsYXJlZCIsInRlcm1UeXBlIiwidGVybVR5cGVFcXVhbFRvVHlwZSIsImlzRXF1YWxUbyIsInRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlIiwiaXNTdXBlclR5cGVPZiIsInRlcm1Fc3RhYmxpc2hlZCIsImlzRXN0YWJsaXNoZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidW5pZnlJbmRlcGVuZGVudGx5IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsImNvbnRpbnVhdGlvbiIsInRyYW5zaWVudCIsImlzVHJhbnNpZW50IiwidmFyaWFibGVBc3NpZ21lbnQiLCJ2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbiIsImFkZEFzc2lnbm1lbnQiLCJ0b0pTT04iLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwibmFtZSIsImdldE5hbWUiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlVHlwZUFzc2VydGlvbiIsInRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUiLCJ0eXBlRnJvbUpTT04iLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrQkE7OztlQUFBOzs7Z0NBaEIyRDtrRUFFckM7MEJBRUM7eUJBQ0s7NkJBQ2E7c0JBQ0k7K0JBQ0E7d0JBQ087dUJBQ007eUJBQ2dCOzs7Ozs7QUFFMUUsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyxxQ0FBcUIsRUFDdkMsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixF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
|
|
@@ -18,7 +18,7 @@ const _unify = require("../process/unify");
|
|
|
18
18
|
const _validate = require("../process/validate");
|
|
19
19
|
const _context = require("../utilities/context");
|
|
20
20
|
const _json = require("../utilities/json");
|
|
21
|
-
const { all, exists } = _occamlanguages.continuationUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
21
|
+
const { cut, all, exists } = _occamlanguages.continuationUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
22
22
|
const _default = (0, _elements.define)(class Constructor extends _occamlanguages.Element {
|
|
23
23
|
constructor(context, string, node, breakPoint, term, type, hypotheses){
|
|
24
24
|
super(context, string, node, breakPoint);
|
|
@@ -73,10 +73,10 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
73
73
|
}
|
|
74
74
|
return (0, _state.declare)((state)=>{
|
|
75
75
|
return (0, _state.desist)((state)=>{
|
|
76
|
-
return this.validate(state, context, (constructor, _, back)=>{
|
|
76
|
+
return this.validate(state, context, cut((constructor, _, back)=>{
|
|
77
77
|
context.debug(`...verified the '${constructorString}' constructor.`);
|
|
78
78
|
return forward(context, back);
|
|
79
|
-
}, back);
|
|
79
|
+
}, back), back);
|
|
80
80
|
}, state);
|
|
81
81
|
});
|
|
82
82
|
}
|
|
@@ -207,4 +207,4 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
207
207
|
}
|
|
208
208
|
});
|
|
209
209
|
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSwgZGVzaXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIGh5cG90aGVzZXNGcm9tSlNPTiwgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3IgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0SHlwb3RoZXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5oeXBvdGhlc2VzO1xuICB9XG5cbiAgc2V0SHlwb3RoZXNlcyhoeXBvdGhlc2VzKSB7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGlzSHlwb3RoZXRpY2FsKCkge1xuICAgIGNvbnN0IGh5cG90aGVzZXNMZW5ndGggPSB0aGlzLmh5cG90aGVzZXMubGVuZ3RoLFxuICAgICAgICAgIGh5cG90aGV0aWNhbCA9IChoeXBvdGhlc2VzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXRpY2FsO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JOb2RlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKGluY2x1ZGVUeXBlID0gdHJ1ZSkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBpZiAoaW5jbHVkZVR5cGUpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgICBzdHJpbmcgPSBgJHt0ZXJtU3RyaW5nfS4ke3R5cGVTdHJpbmd9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyaW5nID0gc3VwZXIuZ2V0U3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBjb25zdHJ1Y3Rvck5vZGUgPSB0aGlzLmdldENvbnN0cnVjdG9yTm9kZSgpLFxuICAgICAgbWFsZm9ybWVkID0gY29uc3RydWN0b3JOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIGRlc2lzdCgoc3RhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChjb25zdHJ1Y3RvciwgXyAsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGNvbnN0cnVjdG9yO1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0cnVjdG9yID0gdGhpcztcblxuICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlID0gdGhpcy52YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yID0gdGhpcy52YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLFxuICAgICAgICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29uc3RydWN0b3IsIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKCFoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0gYXMgYSB2YXJpYWJsZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMudGVybS52YWxpZGF0ZUFzVmFyaWFibGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB0eXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICAgICAgaWYgKHR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0gYXMgYSB2YXJpYWJsZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IodGhpcy50ZXJtLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yID0gdGhpcy51bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IuYmluZCh0aGlzKSxcbiAgICAgICAgICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0sXG4gICAgICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JcbiAgICBdLCB0ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgcHJvdmlzaW9uYWwgPSB0aGlzLnR5cGUuaXNQcm92aXNpb25hbCgpO1xuXG4gICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgdGVybS5zZXRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgaW5jbHVkZVR5cGUgPSB0cnVlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIHJldHVybiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29uc3RydWN0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpQ29udGV4dCwgKCBfICwgc3BlY2lmaUNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpQ29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYoIWh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGhoeXBvdGhlc2VzLi4uYCk7XG5cbiAgICBjb25zdCBkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtLmJpbmQodGhpcyk7XG5cbiAgICBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSA9IGV2ZXJ5KHRoaXMuaHlwb3RoZXNlcywgZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybSwgdGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG5cbiAgICBpZiAoaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyBoaHlwb3RoZXNlcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm07XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtKGh5cG90aGVzaXMsIHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm07XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gaHlwb3RoZXNpcy5kaXNjaGFyZ2VHaXZlblRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG5cbiAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm0pIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZXMgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgICB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKHRoaXMuaHlwb3RoZXNlcyksXG4gICAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTiwgIC8vL1xuICAgICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICBoeXBvdGhlc2VzXG4gICAgICAgICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25zdHJ1Y3RvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnN0cnVjdG9yO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb25zdHJ1Y3Rvck5vZGUsIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db25zdHJ1Y3Rvck5vZGUoY29uc3RydWN0b3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgICBjb25zdHJ1Y3RvciA9IG5ldyBDb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUsIGh5cG90aGVzZXMpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImFsbCIsImV4aXN0cyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cnVjdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiaHlwb3RoZXNlcyIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJnZXRDb25zdHJ1Y3Rvck5vZGUiLCJnZXROb2RlIiwiY29uc3RydWN0b3JOb2RlIiwiZ2V0U3RyaW5nIiwiaW5jbHVkZVR5cGUiLCJ0ZXJtU3RyaW5nIiwidHlwZVN0cmluZyIsInNldFR5cGUiLCJpc01hbGZvcm1lZCIsIm1hbGZvcm1lZCIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwiY29uc3RydWN0b3JTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGUiLCJjb25zdHJ1Y3RvciIsIl8iLCJzcGVjaWZpY0NvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsImJpbmQiLCJ2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yIiwiY29tbWl0IiwidmFsaWRhdGVBc1ZhcmlhYmxlIiwiYmFzZVR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwidW5pZnlUZXJtIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwiZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSIsInByb3Zpc2lvbmFsIiwiaXNQcm92aXNpb25hbCIsInNldFByb3Zpc2lvbmFsIiwiZ2VuZXJhbENvbnRleHQiLCJnZXRDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSIsImRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0iLCJldmVyeSIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSIsImh5cG90aGVzaXNTdHJpbmciLCJkaXNjaGFyZ2VHaXZlblRlcm0iLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwiaHlwb3RoZXNlc0pTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsInRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIiwidHlwZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFpQkE7OztlQUFBOzs7Z0NBZm9FOzBCQUU3Qzt1QkFDUztzQkFDSTs2QkFDRzt5QkFDQzt1QkFDQzswQkFDQzt5QkFDbUI7c0JBQ2dDO0FBRTdGLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3ZDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxvQkFBb0JDLHVCQUFPO0lBQ3JELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsQ0FBRTtRQUNyRSxLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUksVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lB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
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSwgZGVzaXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIGh5cG90aGVzZXNGcm9tSlNPTiwgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBjdXQsIGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25zdHJ1Y3RvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3Rvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJ1Y3Rvck5vZGU7XG4gIH1cblxuICBnZXRTdHJpbmcoaW5jbHVkZVR5cGUgPSB0cnVlKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN0cmluZyA9IGAke3Rlcm1TdHJpbmd9LiR7dHlwZVN0cmluZ31gO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmcgPSBzdXBlci5nZXRTdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yTm9kZSA9IHRoaXMuZ2V0Q29uc3RydWN0b3JOb2RlKCksXG4gICAgICBtYWxmb3JtZWQgPSBjb25zdHJ1Y3Rvck5vZGUuaXNNYWxmb3JtZWQoKTtcblxuICAgIHJldHVybiBtYWxmb3JtZWQ7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvciBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gZGVzaXN0KChzdGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgY3V0KChjb25zdHJ1Y3RvciwgXyAsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKSwgYmFjayk7XG4gICAgICB9LCBzdGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBjb25zdHJ1Y3RvcjtcblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICBjb25zdHJ1Y3RvciA9IHRoaXM7XG5cbiAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSA9IHRoaXMudmFsaWRhdGVUZXJtQXNWYXJpYWJsZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciA9IHRoaXMudmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSxcbiAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnN0cnVjdG9yLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RoZXRpY2FsKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGVBc1ZhcmlhYmxlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvcihzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmIChoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHRoaXMudGVybSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciA9IHRoaXMudW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yLmJpbmQodGhpcyksXG4gICAgICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtLFxuICAgICAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yXG4gICAgXSwgdGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgdGVybS5zZXRQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGluY2x1ZGVUeXBlID0gdHJ1ZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgIC8vL1xuICAgICAgICAgIHNwZWNpZmlDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yKHRlcm0sIGNvbnN0cnVjdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQsICggXyAsIHNwZWNpZmlDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaUNvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybTtcblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmKCFoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyBoaHlwb3RoZXNlcy4uLmApO1xuXG4gICAgY29uc3QgZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybSA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBldmVyeSh0aGlzLmh5cG90aGVzZXMsIGRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0sIHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuXG4gICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgaGh5cG90aGVzZXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJkaW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSA9IGh5cG90aGVzaXMuZGlzY2hhcmdlR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuXG4gICAgaWYgKGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VzIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04sICAvLy9cbiAgICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RydWN0b3JcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJ1Y3RvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlKGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RydWN0b3IgPSBuZXcgQ29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb25zdHJ1Y3RvciIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwidHlwZSIsImh5cG90aGVzZXMiLCJnZXRUZXJtIiwiZ2V0VHlwZSIsImdldEh5cG90aGVzZXMiLCJzZXRIeXBvdGhlc2VzIiwiaXNIeXBvdGhldGljYWwiLCJoeXBvdGhlc2VzTGVuZ3RoIiwibGVuZ3RoIiwiaHlwb3RoZXRpY2FsIiwiZ2V0Q29uc3RydWN0b3JOb2RlIiwiZ2V0Tm9kZSIsImNvbnN0cnVjdG9yTm9kZSIsImdldFN0cmluZyIsImluY2x1ZGVUeXBlIiwidGVybVN0cmluZyIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImNvbnN0cnVjdG9yU3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImRlY2xhcmUiLCJzdGF0ZSIsImRlc2lzdCIsInZhbGlkYXRlIiwiY29uc3RydWN0b3IiLCJfIiwic3BlY2lmaWNDb250ZXh0IiwiYXR0ZW1wdCIsInZhbGlkYXRlVGVybUFzVmFyaWFibGUiLCJiaW5kIiwidmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciIsImNvbW1pdCIsInZhbGlkYXRlQXNWYXJpYWJsZSIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInVuaWZ5VGVybSIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciIsImRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0iLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJzZXRQcm92aXNpb25hbCIsImdlbmVyYWxDb250ZXh0IiwiZ2V0Q29udGV4dCIsInNwZWNpZmlDb250ZXh0IiwiaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0iLCJkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtIiwiZXZlcnkiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm0iLCJoeXBvdGhlc2lzU3RyaW5nIiwiZGlzY2hhcmdlR2l2ZW5UZXJtIiwidG9KU09OIiwic2VyaWFsaXNlIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29uc3RydWN0b3IiLCJ0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZSIsInR5cGVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaUJBOzs7ZUFBQTs7O2dDQWZvRTswQkFFN0M7dUJBQ1M7c0JBQ0k7NkJBQ0c7eUJBQ0M7dUJBQ0M7MEJBQ0M7eUJBQ21CO3NCQUNnQztBQUU3RixNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCLEVBQzVDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxvQkFBb0JDLHVCQUFPO0lBQ3JELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsQ0FBRTtRQUNyRSxLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUks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
|
|
@@ -20,7 +20,7 @@ function _interop_require_default(obj) {
|
|
|
20
20
|
default: obj
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
-
const { all } = _occamlanguages.continuationUtilities, { breakable, breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
23
|
+
const { cut, all } = _occamlanguages.continuationUtilities, { breakable, breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
24
24
|
const _default = (0, _elements.define)(class Supposition extends _fact.default {
|
|
25
25
|
getSuppositionNode() {
|
|
26
26
|
const node = this.getNode(), suppositionNode = node; ///
|
|
@@ -55,10 +55,10 @@ const _default = (0, _elements.define)(class Supposition extends _fact.default {
|
|
|
55
55
|
return back();
|
|
56
56
|
}
|
|
57
57
|
return (0, _state.declare)((state)=>{
|
|
58
|
-
return this.validate(state, context, (supposition, _, back)=>{
|
|
58
|
+
return this.validate(state, context, cut((supposition, _, back)=>{
|
|
59
59
|
context.debug(`...verified the '${suppositionString}' supposition.`);
|
|
60
60
|
return forward(context, back);
|
|
61
|
-
}, back);
|
|
61
|
+
}, back), back);
|
|
62
62
|
});
|
|
63
63
|
});
|
|
64
64
|
validate(state, context, forward, back) {
|
|
@@ -191,4 +191,4 @@ function statementFromSuppositionNode(suppositionNode, context) {
|
|
|
191
191
|
return statement;
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3Qvc3VwcG9zaXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEZhY3QgZnJvbSBcIi4uL2ZhY3RcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTdXBwb3NpdGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyByZWZlcmVuY2VGcm9tU3VwcG9zaXRpb25Ob2RlLCBwcm9jZWR1cmVDYWxsRnJvbVN1cHBvc2l0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGFsbCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTdXBwb3NpdGlvbiBleHRlbmRzIEZhY3Qge1xuICBnZXRTdXBwb3NpdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25Ob2RlID0gdGhpcy5nZXRTdXBwb3NpdGlvbk5vZGUoKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3VwcG9zaXRpb25Ob2RlLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZmluZFN1YnByb29mQXNzZXJ0aW9uKCkge1xuICAgIGxldCBzdWJwcm9vZkFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gdGhpcy5nZXRTdGF0ZW1lbnROb2RlKCk7XG5cbiAgICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUoKTtcblxuICAgICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbk5vZGUgPSB0aGlzLmdldFN1cHBvc2l0aW9uTm9kZSgpLFxuICAgICAgICAgIG1hbGZvcm1lZCA9IHN1cHBvc2l0aW9uTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN1cHBvc2l0aW9uLCBfICwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVByb2NlZHVyZUNhbGwgPSB0aGlzLnZhbGlkYXRlUHJvY2VkdXJlQ2FsbC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQsXG4gICAgICAgIHZhbGlkYXRlUHJvY2VkdXJlQ2FsbFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChzdXBwb3NpdGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gdGhpcy5nZXRQcm9jZWR1cmVDYWxsKCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHN0YXRlbWVudC51bmlmeUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5KSA9PiB7XG4gICAgICAgICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gaW5kZXBlbmRlbnRseS5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXNJbmRlcGVuZGVudGx5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBwcm9jZWR1cmVDYWxsLnVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0LCAocHJvY2VkdXJlQ2FsbFVuaWZpZWRJbmRlcGVuZGVudGx5KSA9PiB7XG4gICAgICAgICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAocHJvY2VkdXJlQ2FsbFVuaWZpZWRJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgICAgICB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIGluZGVwZW5kZW50bHkuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlGYWN0KGZhY3QsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBmYWN0U3RyaW5nID0gZmFjdC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0IHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGNvbnN0IGZhY3RDb250ZXh0ID0gZmFjdC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3VwcG9zaXRpb25Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gc3VwcG9zaXRpb25Db250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBmYWN0Q29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpO1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgIGxldCBmYWN0VW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgZmFjdFVuaWZpZXMgPSB0cnVlO1xuXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmYWN0VW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0IHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGZhY3RVbmlmaWVzKTtcbiAgICAgIH0pO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1YnByb29mKHN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb24gPSB0aGlzLmZpbmRTdWJwcm9vZkFzc2VydGlvbigpO1xuXG4gICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZlVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWJwcm9vZlVuaWZpZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb24udW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN1YnByb29mVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoc3VicHJvb2ZVbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5jb21taXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJwcm9vZlVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1YnByb29mVW5pZmllcyk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2YoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBmYWN0T3JTdWJwcm9vZkZhY3QgPSBmYWN0T3JTdWJwcm9vZi5pc0ZhY3QoKTtcblxuICAgIGlmIChmYWN0T3JTdWJwcm9vZkZhY3QpIHtcbiAgICAgIGNvbnN0IGZhY3QgPSBmYWN0T3JTdWJwcm9vZjsgIC8vL1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeUZhY3QoZmFjdCwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJwcm9vZiA9IGZhY3RPclN1YnByb29mOyAgLy8vXG5cbiAgICByZXR1cm4gdGhpcy51bmlmeVN1YnByb29mKHN1YnByb29mLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlN1cHBvc2l0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zaXRpb247XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHN1cHBvc2l0aW9uTm9kZSA9IGluc3RhbnRpYXRlU3VwcG9zaXRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHN1cHBvc2l0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3VwcG9zaXRpb25Ob2RlKHN1cHBvc2l0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21TdXBwb3NpdGlvbk5vZGUoc3VwcG9zaXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGxGcm9tU3VwcG9zaXRpb25Ob2RlKHN1cHBvc2l0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgc3VwcG9zaXRpb24gPSBuZXcgU3VwcG9zaXRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgcHJvY2VkdXJlQ2FsbCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHN0YXRlbWVudEZyb21TdXBwb3NpdGlvbk5vZGUoc3VwcG9zaXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdXBwb3NpdGlvbk5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlN1cHBvc2l0aW9uIiwiRmFjdCIsImdldFN1cHBvc2l0aW9uTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwic3VwcG9zaXRpb25Ob2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJmaW5kU3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbiIsInN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwiZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZSIsImlzTWFsZm9ybWVkIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJzdXBwb3NpdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInN1cHBvc2l0aW9uIiwiXyIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJ2YWxpZGF0ZVByb2NlZHVyZUNhbGwiLCJjb21taXQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJyZWNvbmNpbGUiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJwcm9jZWR1cmVDYWxsIiwiZ2V0UHJvY2VkdXJlQ2FsbCIsInN1cHBvc2l0aW9uQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic3RhdGVtZW50VW5pZmllc0luZGVwZW5kZW50bHkiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsImNvbnRpbnVhdGlvbiIsInByb2NlZHVyZUNhbGxVbmlmaWVkSW5kZXBlbmRlbnRseSIsInVuaWZ5RmFjdCIsImZhY3QiLCJmYWN0U3RyaW5nIiwiZmFjdENvbnRleHQiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJmYWN0VW5pZmllcyIsInVuaWZ5U3VicHJvb2YiLCJzdWJwcm9vZiIsInN1YnByb29mU3RyaW5nIiwic3VicHJvb2ZVbmlmaWVzIiwidW5pZnlGYWN0T3JTdWJwcm9vZiIsImZhY3RPclN1YnByb29mIiwiZmFjdE9yU3VicHJvb2ZGYWN0IiwiaXNGYWN0IiwidG9KU09OIiwic2VyaWFsaXNlIiwic3RyaW5nIiwiYnJlYWtQb2ludCIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVTdXBwb3NpdGlvbiIsInN0YXRlbWVudEZyb21TdXBwb3NpdGlvbk5vZGUiLCJyZWZlcmVuY2UiLCJyZWZlcmVuY2VGcm9tU3VwcG9zaXRpb25Ob2RlIiwicHJvY2VkdXJlQ2FsbEZyb21TdXBwb3NpdGlvbk5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OztnQ0FiMkQ7NkRBRTFDOzBCQUVNO3VCQUNDOzZCQUNlO3lCQUNpQzt5QkFDTzs7Ozs7O0FBRS9FLE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUMvQixFQUFFQyxTQUFTLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekYsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxvQkFBb0JDLGFBQUk7SUFDbERDLHFCQUFxQjtRQUNuQixNQUFNQyxPQUFPLElBQUksQ0FBQ0MsT0FBTyxJQUNuQkMsa0JBQWtCRixNQUFNLEdBQUc7UUFFakMsT0FBT0U7SUFDVDtJQUVBQyxtQkFBbUI7UUFDakIsTUFBTUQsa0JBQWtCLElBQUksQ0FBQ0gsa0JBQWtCLElBQ3pDSyxnQkFBZ0JGLGdCQUFnQkMsZ0JBQWdCO1FBRXRELE9BQU9DO0lBQ1Q7SUFFQUMsd0JBQXdCO1FBQ3RCLElBQUlDLG9CQUFvQjtRQUV4QixNQUFNRixnQkFBZ0IsSUFBSSxDQUFDRCxnQkFBZ0I7UUFFM0MsSUFBSUMsa0JBQWtCLE1BQU07WUFDMUIsTUFBTUcsd0JBQXdCSCxjQUFjSSx3QkFBd0I7WUFFcEUsSUFBSUQsMEJBQTBCLE1BQU07Z0JBQ2xDLE1BQU1FLFVBQVUsSUFBSSxDQUFDQyxVQUFVO2dCQUUvQkosb0JBQW9CRyxRQUFRRSw0QkFBNEIsQ0FBQ0o7WUFDM0Q7UUFDRjtRQUVBLE9BQU9EO0lBQ1Q7SUFFQU0sY0FBYztRQUNa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
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3Qvc3VwcG9zaXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEZhY3QgZnJvbSBcIi4uL2ZhY3RcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTdXBwb3NpdGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyByZWZlcmVuY2VGcm9tU3VwcG9zaXRpb25Ob2RlLCBwcm9jZWR1cmVDYWxsRnJvbVN1cHBvc2l0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSwgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN1cHBvc2l0aW9uIGV4dGVuZHMgRmFjdCB7XG4gIGdldFN1cHBvc2l0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3VwcG9zaXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbk5vZGUgPSB0aGlzLmdldFN1cHBvc2l0aW9uTm9kZSgpLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdXBwb3NpdGlvbk5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBmaW5kU3VicHJvb2ZBc3NlcnRpb24oKSB7XG4gICAgbGV0IHN1YnByb29mQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSB0aGlzLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICAgIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSgpO1xuXG4gICAgICBpZiAoc3VicHJvb2ZBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgICBzdWJwcm9vZkFzc2VydGlvbiA9IGNvbnRleHQuZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZShzdWJwcm9vZkFzc2VydGlvbk5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZkFzc2VydGlvbjtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uTm9kZSA9IHRoaXMuZ2V0U3VwcG9zaXRpb25Ob2RlKCksXG4gICAgICAgICAgbWFsZm9ybWVkID0gc3VwcG9zaXRpb25Ob2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjdXQoKHN1cHBvc2l0aW9uLCBfICwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spLCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVQcm9jZWR1cmVDYWxsID0gdGhpcy52YWxpZGF0ZVByb2NlZHVyZUNhbGwuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50LFxuICAgICAgICB2YWxpZGF0ZVByb2NlZHVyZUNhbGxcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9zaXRpb24gPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoc3VwcG9zaXRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHRoaXMuZ2V0UHJvY2VkdXJlQ2FsbCgpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1cHBvc2l0aW9uQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBzdXBwb3NpdGlvbkNvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIHJldHVybiBzdGF0ZW1lbnQudW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzSW5kZXBlbmRlbnRseSkgPT4ge1xuICAgICAgICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgICAgICB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIGluZGVwZW5kZW50bHkuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcHJvY2VkdXJlQ2FsbC51bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCwgKHByb2NlZHVyZUNhbGxVbmlmaWVkSW5kZXBlbmRlbnRseSkgPT4ge1xuICAgICAgICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHByb2NlZHVyZUNhbGxVbmlmaWVkSW5kZXBlbmRlbnRseSkge1xuICAgICAgICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBpbmRlcGVuZGVudGx5LmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24odW5pZmllc0luZGVwZW5kZW50bHkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5RmFjdChmYWN0LCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZmFjdFN0cmluZyA9IGZhY3QuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtmYWN0U3RyaW5nfScgZmFjdCB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBmYWN0Q29udGV4dCA9IGZhY3QuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gZmFjdENvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZmFjdC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICBsZXQgZmFjdFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgIGZhY3RVbmlmaWVzID0gdHJ1ZTtcblxuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmFjdFVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtmYWN0U3RyaW5nfScgZmFjdCB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihmYWN0VW5pZmllcyk7XG4gICAgICB9KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBzdWJwcm9vZi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uID0gdGhpcy5maW5kU3VicHJvb2ZBc3NlcnRpb24oKTtcblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbiA9PT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VicHJvb2ZVbmlmaWVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvbkNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBzdXBwb3NpdGlvbkNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uLnVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdWJwcm9vZlVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKHN1YnByb29mVW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VicHJvb2ZVbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWJwcm9vZlVuaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZGYWN0ID0gZmFjdE9yU3VicHJvb2YuaXNGYWN0KCk7XG5cbiAgICBpZiAoZmFjdE9yU3VicHJvb2ZGYWN0KSB7XG4gICAgICBjb25zdCBmYWN0ID0gZmFjdE9yU3VicHJvb2Y7ICAvLy9cblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0KGZhY3QsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3Qgc3VicHJvb2YgPSBmYWN0T3JTdWJwcm9vZjsgIC8vL1xuXG4gICAgcmV0dXJuIHRoaXMudW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdXBwb3NpdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1cHBvc2l0aW9uO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBzdXBwb3NpdGlvbk5vZGUgPSBpbnN0YW50aWF0ZVN1cHBvc2l0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzdXBwb3NpdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN1cHBvc2l0aW9uTm9kZShzdXBwb3NpdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tU3VwcG9zaXRpb25Ob2RlKHN1cHBvc2l0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsRnJvbVN1cHBvc2l0aW9uTm9kZShzdXBwb3NpdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHN1cHBvc2l0aW9uID0gbmV3IFN1cHBvc2l0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50LCByZWZlcmVuY2UsIHByb2NlZHVyZUNhbGwpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tU3VwcG9zaXRpb25Ob2RlKHN1cHBvc2l0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3VwcG9zaXRpb25Ob2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJTdXBwb3NpdGlvbiIsIkZhY3QiLCJnZXRTdXBwb3NpdGlvbk5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsInN1cHBvc2l0aW9uTm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZmluZFN1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJnZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJpc01hbGZvcm1lZCIsIm1hbGZvcm1lZCIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwic3VwcG9zaXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJzdXBwb3NpdGlvbiIsIl8iLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwidmFsaWRhdGVQcm9jZWR1cmVDYWxsIiwiY29tbWl0IiwidW5pZnlJbmRlcGVuZGVudGx5IiwicmVjb25jaWxlIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwicHJvY2VkdXJlQ2FsbCIsImdldFByb2NlZHVyZUNhbGwiLCJzdXBwb3NpdGlvbkNvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5IiwidW5pZmllc0luZGVwZW5kZW50bHkiLCJjb250aW51YXRpb24iLCJwcm9jZWR1cmVDYWxsVW5pZmllZEluZGVwZW5kZW50bHkiLCJ1bmlmeUZhY3QiLCJmYWN0IiwiZmFjdFN0cmluZyIsImZhY3RDb250ZXh0IiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwiZmFjdFVuaWZpZXMiLCJ1bmlmeVN1YnByb29mIiwic3VicHJvb2YiLCJzdWJwcm9vZlN0cmluZyIsInN1YnByb29mVW5pZmllcyIsInVuaWZ5RmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZiIsImZhY3RPclN1YnByb29mRmFjdCIsImlzRmFjdCIsInRvSlNPTiIsInNlcmlhbGlzZSIsInN0cmluZyIsImJyZWFrUG9pbnQiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlU3VwcG9zaXRpb24iLCJzdGF0ZW1lbnRGcm9tU3VwcG9zaXRpb25Ob2RlIiwicmVmZXJlbmNlIiwicmVmZXJlbmNlRnJvbVN1cHBvc2l0aW9uTm9kZSIsInByb2NlZHVyZUNhbGxGcm9tU3VwcG9zaXRpb25Ob2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFBOzs7Z0NBYjJEOzZEQUUxQzswQkFFTTt1QkFDQzs2QkFDZTt5QkFDaUM7eUJBQ087Ozs7OztBQUUvRSxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxTQUFTLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekYsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxvQkFBb0JDLGFBQUk7SUFDbERDLHFCQUFxQjtRQUNuQixNQUFNQyxPQUFPLElBQUksQ0FBQ0MsT0FBTyxJQUNuQkMsa0JBQWtCRixNQUFNLEdBQUc7UUFFakMsT0FBT0U7SUFDVDtJQUVBQyxtQkFBbUI7UUFDakIsTUFBTUQsa0JBQWtCLElBQUksQ0FBQ0gsa0JBQWtCLElBQ3pDSyxnQkFBZ0JGLGdCQUFnQkMsZ0JBQWdCO1FBRXRELE9BQU9DO0lBQ1Q7SUFFQUMsd0JBQXdCO1FBQ3RCLElBQUlDLG9CQUFvQjtRQUV4QixNQUFNRixnQkFBZ0IsSUFBSSxDQUFDRCxnQkFBZ0I7UUFFM0MsSUFBSUMsa0JBQWtCLE1BQU07WUFDMUIsTUFBTUcsd0JBQXdCSCxjQUFjSSx3QkFBd0I7WUFFcEUsSUFBSUQsMEJBQTBCLE1BQU07Z0JBQ2xDLE1BQU1FLFVBQVUsSUFBSSxDQUFDQyxVQUFVO2dCQUUvQkosb0JBQW9CRyxRQUFRRSw0QkFBNEIsQ0FBQ0o7WUFDM0Q7UUFD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
|
package/lib/element/label.js
CHANGED
|
@@ -14,7 +14,7 @@ const _state = require("../utilities/state");
|
|
|
14
14
|
const _instantiate = require("../process/instantiate");
|
|
15
15
|
const _element = require("../utilities/element");
|
|
16
16
|
const _context = require("../utilities/context");
|
|
17
|
-
const { all } = _occamlanguages.continuationUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
17
|
+
const { cut, all } = _occamlanguages.continuationUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
18
18
|
const _default = (0, _elements.define)(class Label extends _occamlanguages.Element {
|
|
19
19
|
constructor(context, string, node, breakPoint, metavariable){
|
|
20
20
|
super(context, string, node, breakPoint);
|
|
@@ -53,10 +53,10 @@ const _default = (0, _elements.define)(class Label extends _occamlanguages.Eleme
|
|
|
53
53
|
return back();
|
|
54
54
|
}
|
|
55
55
|
return (0, _state.declare)((state)=>{
|
|
56
|
-
return this.validate(state, context, (label, context, back)=>{
|
|
56
|
+
return this.validate(state, context, cut((label, context, back)=>{
|
|
57
57
|
context.debug(`...verified the '${labelString}' label.`);
|
|
58
58
|
return forward(back);
|
|
59
|
-
}, back);
|
|
59
|
+
}, back), back);
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
validate(state, context, forward, back) {
|
|
@@ -152,4 +152,4 @@ const _default = (0, _elements.define)(class Label extends _occamlanguages.Eleme
|
|
|
152
152
|
}
|
|
153
153
|
});
|
|
154
154
|
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2xhYmVsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlTGFiZWwgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgbGFiZWxGcm9tTGFiZWxOb2RlLCBtZXRhdmFyaWFibGVGcm9tTGFiZWxOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBqb2luLCBhYmxhdGUsIGF0dGVtcHQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGV9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGFsbCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgTGFiZWwgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBtZXRhdmFyaWFibGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5tZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0TGFiZWxOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBsYWJlbE5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBsYWJlbE5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVOb2RlKCkgeyByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGUuZ2V0Tm9kZSgpOyB9XG5cbiAgbWF0Y2hMYWJlbE5vZGUobGFiZWxOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGxhYmVsTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBsYWJlbE5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGxhYmVsTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGUubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgY29tcGFyZVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlQ29tcGFyZXNUb01ldGF2YXJpYWJsZSA9IHRoaXMuY29tcGFyZU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpLFxuICAgICAgICAgIGNvbXBhcmVzVG9SZWZlcmVuY2UgPSBtZXRhdmFyaWFibGVDb21wYXJlc1RvTWV0YXZhcmlhYmxlOyAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvUmVmZXJlbmNlO1xuICB9XG5cbiAgY29tcGFyZU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLmNvbXBhcmVNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTsgfVxuXG4gIHZlcmlmeShmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGxhYmVsU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwuLi5gKTtcblxuICAgIGNvbnN0IGxhYmVsTm9kZSA9IHRoaXMuZ2V0TGFiZWxOb2RlKCksXG4gICAgICAgICAgbGFiZWxQcmVzZW50ID0gY29udGV4dC5pc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlKGxhYmVsTm9kZSk7XG5cbiAgICBpZiAobGFiZWxQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbCBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxhYmVsLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbC4uLmApO1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlTWV0YXZhcmlhYmxlID0gdGhpcy52YWxpZGF0ZU1ldGF2YXJpYWJsZS5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVNZXRhdmFyaWFibGVcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQobGFiZWwsIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZU1ldGF2YXJpYWJsZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsJ3MgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChtZXRhdmFyaWFibGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwncyBtZXRhdmFyaWFibGUuJ2ApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2Ugd2l0aCB0aGUgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbC4uLmApO1xuXG4gICAgY29uc3QgbGFiZWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZUNvbnRleHQgPSByZWZlcmVuY2UuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gbGFiZWxDb250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSByZWZlcmVuY2VDb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGJhY2spID0+IHtcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlIHdpdGggdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgbGFiZWxTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdpdGggdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS51bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkobWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAobWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHkpID0+IHtcbiAgICAgIGxldCBtZXRhdmFyaWFibGVVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVVbmlmaWVzSW50cmluc2ljYWxseSkge1xuICAgICAgICBtZXRhdmFyaWFibGVVbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZVVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdpdGggdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24obWV0YXZhcmlhYmxlVW5pZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiTGFiZWxcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBsYWJlbDtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgbGFiZWxOb2RlID0gaW5zdGFudGlhdGVMYWJlbChzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gbGFiZWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGxhYmVsID0gbmV3IExhYmVsKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbWV0YXZhcmlhYmxlKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgc3RhdGljIGZyb21MYWJlbFN0cmluZyhsYWJlbFN0cmluZywgY29udGV4dCkge1xuICAgIGxldCBsYWJlbDtcblxuICAgIGFibGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RyaW5nID0gbGFiZWxTdHJpbmcsICAvLy9cbiAgICAgICAgICAgICAgbGFiZWxOb2RlID0gaW5zdGFudGlhdGVMYWJlbChzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIGxhYmVsID0gbGFiZWxGcm9tTGFiZWxOb2RlKGxhYmVsTm9kZSwgY29udGV4dCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiTGFiZWwiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0TGFiZWxOb2RlIiwiZ2V0Tm9kZSIsImxhYmVsTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtYXRjaExhYmVsTm9kZSIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwibGFiZWxOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJjb21wYXJlUmVmZXJlbmNlIiwicmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlQ29tcGFyZXNUb01ldGF2YXJpYWJsZSIsImNvbXBhcmVNZXRhdmFyaWFibGUiLCJjb21wYXJlc1RvUmVmZXJlbmNlIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJnZXRDb250ZXh0IiwibGFiZWxTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImxhYmVsUHJlc2VudCIsImlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUiLCJkZWJ1ZyIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwibGFiZWwiLCJhdHRlbXB0IiwidmFsaWRhdGVNZXRhdmFyaWFibGUiLCJiaW5kIiwiY29tbWl0IiwidW5pZnlSZWZlcmVuY2UiLCJyZWZlcmVuY2VTdHJpbmciLCJsYWJlbENvbnRleHQiLCJyZWZlcmVuY2VDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJqb2luIiwicmVjb25jaWxlIiwidW5pZnlNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJ1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkiLCJtZXRhdmFyaWFibGVVbmlmaWVzSW50cmluc2ljYWxseSIsIm1ldGF2YXJpYWJsZVVuaWZpZXMiLCJjb250aW51YXRpb24iLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlTGFiZWwiLCJtZXRhdmFyaWFibGVGcm9tTGFiZWxOb2RlIiwiZnJvbUxhYmVsU3RyaW5nIiwiYWJsYXRlIiwibGFiZWxGcm9tTGFiZWxOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQUE7OztnQ0FYb0U7MEJBRTdDO3VCQUNDOzZCQUNTO3lCQUM2Qjt5QkFDdUI7QUFFckYsTUFBTSxFQUFF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
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2xhYmVsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlTGFiZWwgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgbGFiZWxGcm9tTGFiZWxOb2RlLCBtZXRhdmFyaWFibGVGcm9tTGFiZWxOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBqb2luLCBhYmxhdGUsIGF0dGVtcHQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGV9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBMYWJlbCBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG1ldGF2YXJpYWJsZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGU7XG4gIH1cblxuICBnZXRMYWJlbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGxhYmVsTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGxhYmVsTm9kZTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZU5vZGUoKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5nZXROb2RlKCk7IH1cblxuICBtYXRjaExhYmVsTm9kZShsYWJlbE5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gbGFiZWxOb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIGxhYmVsTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gbGFiZWxOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICBjb21wYXJlUmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVDb21wYXJlc1RvTWV0YXZhcmlhYmxlID0gdGhpcy5jb21wYXJlTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgY29tcGFyZXNUb1JlZmVyZW5jZSA9IG1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGU7IC8vL1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9SZWZlcmVuY2U7XG4gIH1cblxuICBjb21wYXJlTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkgeyByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGUuY29tcGFyZU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpOyB9XG5cbiAgdmVyaWZ5KGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGFiZWxTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbC4uLmApO1xuXG4gICAgY29uc3QgbGFiZWxOb2RlID0gdGhpcy5nZXRMYWJlbE5vZGUoKSxcbiAgICAgICAgICBsYWJlbFByZXNlbnQgPSBjb250ZXh0LmlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUobGFiZWxOb2RlKTtcblxuICAgIGlmIChsYWJlbFByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjdXQoKGxhYmVsLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgfSwgYmFjayksIGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwuLi5gKTtcblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZU1ldGF2YXJpYWJsZSA9IHRoaXMudmFsaWRhdGVNZXRhdmFyaWFibGUuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgIHZhbGlkYXRlTWV0YXZhcmlhYmxlXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpczsgLy8vXG5cbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGxhYmVsLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmFsaWRhdGVNZXRhdmFyaWFibGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbCdzIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobWV0YXZhcmlhYmxlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsJ3MgbWV0YXZhcmlhYmxlLidgKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlIHdpdGggdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwuLi5gKTtcblxuICAgIGNvbnN0IGxhYmVsQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICByZWZlcmVuY2VDb250ZXh0ID0gcmVmZXJlbmNlLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGxhYmVsQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gcmVmZXJlbmNlQ29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy51bmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChiYWNrKSA9PiB7XG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZSB3aXRoIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGxhYmVsU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aXRoIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGUudW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5KG1ldGF2YXJpYWJsZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKG1ldGF2YXJpYWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5KSA9PiB7XG4gICAgICBsZXQgbWV0YXZhcmlhYmxlVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHkpIHtcbiAgICAgICAgbWV0YXZhcmlhYmxlVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVVbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aXRoIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKG1ldGF2YXJpYWJsZVVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkxhYmVsXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgbGFiZWw7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGxhYmVsTm9kZSA9IGluc3RhbnRpYXRlTGFiZWwoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGxhYmVsTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21MYWJlbE5vZGUobGFiZWxOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBsYWJlbCA9IG5ldyBMYWJlbChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG1ldGF2YXJpYWJsZSk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxTdHJpbmcobGFiZWxTdHJpbmcsIGNvbnRleHQpIHtcbiAgICBsZXQgbGFiZWw7XG5cbiAgICBhYmxhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0cmluZyA9IGxhYmVsU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIGxhYmVsTm9kZSA9IGluc3RhbnRpYXRlTGFiZWwoc3RyaW5nLCBjb250ZXh0KTtcblxuICAgICAgICBsYWJlbCA9IGxhYmVsRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkxhYmVsIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm1ldGF2YXJpYWJsZSIsImdldE1ldGF2YXJpYWJsZSIsImdldExhYmVsTm9kZSIsImdldE5vZGUiLCJsYWJlbE5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwibWF0Y2hMYWJlbE5vZGUiLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImxhYmVsTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwiY29tcGFyZVJlZmVyZW5jZSIsInJlZmVyZW5jZSIsIm1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGUiLCJjb21wYXJlTWV0YXZhcmlhYmxlIiwiY29tcGFyZXNUb1JlZmVyZW5jZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwiZ2V0Q29udGV4dCIsImxhYmVsU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJsYWJlbFByZXNlbnQiLCJpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlIiwiZGVidWciLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsImxhYmVsIiwiYXR0ZW1wdCIsInZhbGlkYXRlTWV0YXZhcmlhYmxlIiwiYmluZCIsImNvbW1pdCIsInVuaWZ5UmVmZXJlbmNlIiwicmVmZXJlbmNlU3RyaW5nIiwibGFiZWxDb250ZXh0IiwicmVmZXJlbmNlQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwiam9pbiIsInJlY29uY2lsZSIsInVuaWZ5TWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwidW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5IiwibWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHkiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwiY29udGludWF0aW9uIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUxhYmVsIiwibWV0YXZhcmlhYmxlRnJvbUxhYmVsTm9kZSIsImZyb21MYWJlbFN0cmluZyIsImFibGF0ZSIsImxhYmVsRnJvbUxhYmVsTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWG9FOzBCQUU3Qzt1QkFDQzs2QkFDUzt5QkFDNkI7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
|
|
@@ -19,7 +19,7 @@ function _interop_require_default(obj) {
|
|
|
19
19
|
default: obj
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
const { breakable, breakPointFromJSON } = _occamlanguages.breakPointUtilities;
|
|
22
|
+
const { cut } = _occamlanguages.continuationUtilities, { breakable, breakPointFromJSON } = _occamlanguages.breakPointUtilities;
|
|
23
23
|
const _default = (0, _elements.define)(class Deduction extends _resolution.default {
|
|
24
24
|
getDeductionNode() {
|
|
25
25
|
const node = this.getNode(), deductionNode = node; ///
|
|
@@ -39,10 +39,10 @@ const _default = (0, _elements.define)(class Deduction extends _resolution.defau
|
|
|
39
39
|
}
|
|
40
40
|
(0, _state.declare)((state)=>{
|
|
41
41
|
(0, _state.desist)((state)=>{
|
|
42
|
-
return this.validate(state, context, (deduction, _, back)=>{
|
|
42
|
+
return this.validate(state, context, cut((deduction, _, back)=>{
|
|
43
43
|
context.debug(`...verified the '${deductionString}' deduction.`);
|
|
44
44
|
return forward(context, back);
|
|
45
|
-
}, back);
|
|
45
|
+
}, back), back);
|
|
46
46
|
}, state);
|
|
47
47
|
});
|
|
48
48
|
});
|
|
@@ -63,4 +63,4 @@ function statementFromDeductionNode(deductionNode, context) {
|
|
|
63
63
|
return statement;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Jlc29sdXRpb24vZGVkdWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBSZXNvbHV0aW9uIGZyb20gXCIuLi9yZXNvbHV0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVzaXN0LCBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVEZWR1Y3Rpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgY3V0IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSwgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRGVkdWN0aW9uIGV4dGVuZHMgUmVzb2x1dGlvbiB7XG4gIGdldERlZHVjdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZHVjdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBkZWR1Y3Rpb25Ob2RlO1xuICB9XG5cbiAgaXNNYWxmb3JtZWQoKSB7XG4gICAgY29uc3QgZGVkdWN0aW9uTm9kZSA9IHRoaXMuZ2V0RGVkdWN0aW9uTm9kZSgpLFxuICAgICAgICAgIG1hbGZvcm1lZCA9IGRlZHVjdGlvbk5vZGUuaXNNYWxmb3JtZWQoKTtcblxuICAgIHJldHVybiBtYWxmb3JtZWQ7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlY3VkdGlvbi4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVjdWR0aW9uIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjdXQoKGRlZHVjdGlvbiwgXyAsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spLCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc3RhdGljIG5hbWUgPSBcIkRlZHVjdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvbjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgZGVkdWN0aW9uTm9kZSA9IGluc3RhbnRpYXRlRGVkdWN0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBkZWR1Y3Rpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21EZWR1Y3Rpb25Ob2RlKGRlZHVjdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZHVjdGlvbiA9IG5ldyBEZWR1Y3Rpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVkdWN0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUoZGVkdWN0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gZGVkdWN0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJEZWR1Y3Rpb24iLCJSZXNvbHV0aW9uIiwiZ2V0RGVkdWN0aW9uTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwiZGVkdWN0aW9uTm9kZSIsImlzTWFsZm9ybWVkIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiY29udGV4dCIsImZvcndhcmQiLCJiYWNrIiwiZGVkdWN0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImRlY2xhcmUiLCJzdGF0ZSIsImRlc2lzdCIsInZhbGlkYXRlIiwiZGVkdWN0aW9uIiwiXyIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwic3RyaW5nIiwiaW5zdGFudGlhdGVEZWR1Y3Rpb24iLCJicmVha1BvaW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVoyRDttRUFFcEM7MEJBRUE7dUJBQ1M7NkJBQ0s7eUJBQ0k7Ozs7OztBQUV6QyxNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDL0IsRUFBRUMsU0FBUyxFQUFFQyxrQkFBa0IsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFN0QsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxrQkFBa0JDLG1CQUFVO0lBQ3REQyxtQkFBbUI7UUFDakIsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLGdCQUFnQkYsTUFBTSxHQUFHO1FBRS9CLE9BQU9FO0lBQ1Q7SUFFQUMsY0FBYztRQUNaLE1BQU1ELGdCQUFnQixJQUFJLENBQUNILGdCQUFnQixJQUNyQ0ssWUFBWUYsY0FBY0MsV0FBVztRQUUzQyxPQUFPQztJQUNUO0lBRUFDLFNBQVNaLFVBQVUsU0FBVWEsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7UUFDakQsTUFBTUMsa0JBQWtCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFOUNKLFFBQVFLLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsZ0JBQWdCLGNBQWMsQ0FBQztRQUUvRCxNQUFNTCxZQUFZLElBQUksQ0FBQ0QsV0FBVztRQUVsQyxJQUFJQyxXQUFXO1lBQ2JFLFFBQVFNLEtBQUssQ0FBQyxDQUFDLHNCQUFzQixFQUFFSCxnQkFBZ0Isb0NBQW9DLENBQUM7WUFFNUYsT0FBT0Q7UUFDVDtRQUVBSyxJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7WUFDUEMsSUFBQUEsYUFBTSxFQUFDLENBQUNEO2dCQUNOLE9BQU8sSUFBSSxDQUFDRSxRQUFRLENBQUNGLE9BQU9SLFNBQVNmLElBQUksQ0FBQzBCLFdBQVdDLEdBQUlWO29CQUN2REYsUUFBUU0sS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVILGdCQUFnQixZQUFZLENBQUM7b0JBRS9ELE9BQU9GLFFBQVFELFNBQVNFO2dCQUMxQixHQUFHQSxPQUFPQTtZQUNaLEdBQUdNO1FBQ0w7SUFDRixHQUFHO0lBRUgsT0FBT0ssT0FBTyxZQUFZO0lBRTFCLE9BQU9DLFNBQVNDLElBQUksRUFBRWYsT0FBTyxFQUFFO1FBQzdCLElBQUlXO1FBRUpLLElBQUFBLG9CQUFXLEVBQUMsQ0FBQ2hCO1lBQ1hpQixJQUFBQSxvQkFBVyxFQUFDLENBQUNGLE1BQU1mO2dCQUNqQixNQUFNLEVBQUVrQixNQUFNLEVBQUUsR0FBR0gsTUFDYm5CLGdCQUFnQnVCLElBQUFBLGlDQUFvQixFQUFDRCxRQUFRbEIsVUFDN0NOLE9BQU9FLGVBQ1B3QixhQUFhaEMsbUJBQW1CMkIsT0FDaENNLFlBQVlDLDJCQUEyQjFCLGVBQWVJO2dCQUU1RFcsWUFBWSxJQUFJcEIsVUFBVVMsU0FBU2tCLFFBQVF4QixNQUFNMEIsWUFBWUM7WUFDL0QsR0FBR04sTUFBTWY7UUFDWCxHQUFHQTtRQUVILE9BQU9XO0lBQ1Q7QUFDRjtBQUVBLFNBQVNXLDJCQUEyQjFCLGFBQWEsRUFBRUksT0FBTztJQUN4RCxNQUFNdUIsZ0JBQWdCM0IsY0FBYzRCLGdCQUFnQixJQUM5Q0gsWUFBWXJCLFFBQVF5Qiw0QkFBNEIsQ0FBQ0Y7SUFFdkQsT0FBT0Y7QUFDVCJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-nominal",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.479",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.6.3",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.480",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.22",
|
|
16
16
|
"occam-languages": "^3.0.38",
|
|
17
17
|
"occam-query": "^4.1.206"
|
|
@@ -100,6 +100,8 @@ export default define(class TypeAssertion extends Assertion {
|
|
|
100
100
|
], state, context, (state, context, back) => {
|
|
101
101
|
assertion = this; ///
|
|
102
102
|
|
|
103
|
+
this.assign(state, context);
|
|
104
|
+
|
|
103
105
|
context.addAssertion(assertion);
|
|
104
106
|
|
|
105
107
|
const typeAssertion = assertion; ///
|
|
@@ -12,7 +12,7 @@ import { validateTermAsConstructor } from "../process/validate";
|
|
|
12
12
|
import { attempt, serialise, unserialise, instantiate } from "../utilities/context";
|
|
13
13
|
import { typeFromJSON, typeToTypeJSON, hypothesesFromJSON, hypothesesToHypothesesJSON } from "../utilities/json";
|
|
14
14
|
|
|
15
|
-
const { all, exists } = continuationUtilities,
|
|
15
|
+
const { cut, all, exists } = continuationUtilities,
|
|
16
16
|
{ breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;
|
|
17
17
|
|
|
18
18
|
export default define(class Constructor extends Element {
|
|
@@ -96,11 +96,11 @@ export default define(class Constructor extends Element {
|
|
|
96
96
|
|
|
97
97
|
return declare((state) => {
|
|
98
98
|
return desist((state) => {
|
|
99
|
-
return this.validate(state, context, (constructor, _ , back) => {
|
|
99
|
+
return this.validate(state, context, cut((constructor, _ , back) => {
|
|
100
100
|
context.debug(`...verified the '${constructorString}' constructor.`);
|
|
101
101
|
|
|
102
102
|
return forward(context, back);
|
|
103
|
-
}, back);
|
|
103
|
+
}, back), back);
|
|
104
104
|
}, state);
|
|
105
105
|
});
|
|
106
106
|
}
|
|
@@ -10,7 +10,7 @@ import { instantiateSupposition } from "../../process/instantiate";
|
|
|
10
10
|
import { attempt, reconcile, serialise, unserialise, instantiate } from "../../utilities/context";
|
|
11
11
|
import { referenceFromSuppositionNode, procedureCallFromSuppositionNode } from "../../utilities/element";
|
|
12
12
|
|
|
13
|
-
const { all } = continuationUtilities,
|
|
13
|
+
const { cut, all } = continuationUtilities,
|
|
14
14
|
{ breakable, breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;
|
|
15
15
|
|
|
16
16
|
export default define(class Supposition extends Fact {
|
|
@@ -67,11 +67,11 @@ export default define(class Supposition extends Fact {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
return declare((state) => {
|
|
70
|
-
return this.validate(state, context, (supposition, _ , back) => {
|
|
70
|
+
return this.validate(state, context, cut((supposition, _ , back) => {
|
|
71
71
|
context.debug(`...verified the '${suppositionString}' supposition.`);
|
|
72
72
|
|
|
73
73
|
return forward(context, back);
|
|
74
|
-
}, back);
|
|
74
|
+
}, back), back);
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
77
|
|
package/src/element/label.js
CHANGED
|
@@ -8,7 +8,7 @@ import { instantiateLabel } from "../process/instantiate";
|
|
|
8
8
|
import { labelFromLabelNode, metavariableFromLabelNode } from "../utilities/element";
|
|
9
9
|
import { join, ablate, attempt, reconcile, serialise, unserialise, instantiate} from "../utilities/context";
|
|
10
10
|
|
|
11
|
-
const { all } = continuationUtilities,
|
|
11
|
+
const { cut, all } = continuationUtilities,
|
|
12
12
|
{ breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;
|
|
13
13
|
|
|
14
14
|
export default define(class Label extends Element {
|
|
@@ -67,11 +67,11 @@ export default define(class Label extends Element {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
return declare((state) => {
|
|
70
|
-
return this.validate(state, context, (label, context, back) => {
|
|
70
|
+
return this.validate(state, context, cut((label, context, back) => {
|
|
71
71
|
context.debug(`...verified the '${labelString}' label.`);
|
|
72
72
|
|
|
73
73
|
return forward(back);
|
|
74
|
-
}, back);
|
|
74
|
+
}, back), back);
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { breakPointUtilities } from "occam-languages";
|
|
3
|
+
import { breakPointUtilities, continuationUtilities } from "occam-languages";
|
|
4
4
|
|
|
5
5
|
import Resolution from "../resolution";
|
|
6
6
|
|
|
@@ -9,7 +9,8 @@ import { desist, declare } from "../../utilities/state";
|
|
|
9
9
|
import { instantiateDeduction } from "../../process/instantiate";
|
|
10
10
|
import { unserialise, instantiate } from "../../utilities/context";
|
|
11
11
|
|
|
12
|
-
const {
|
|
12
|
+
const { cut } = continuationUtilities,
|
|
13
|
+
{ breakable, breakPointFromJSON } = breakPointUtilities;
|
|
13
14
|
|
|
14
15
|
export default define(class Deduction extends Resolution {
|
|
15
16
|
getDeductionNode() {
|
|
@@ -41,11 +42,11 @@ export default define(class Deduction extends Resolution {
|
|
|
41
42
|
|
|
42
43
|
declare((state) => {
|
|
43
44
|
desist((state) => {
|
|
44
|
-
return this.validate(state, context, (deduction, _ , back) => {
|
|
45
|
+
return this.validate(state, context, cut((deduction, _ , back) => {
|
|
45
46
|
context.debug(`...verified the '${deductionString}' deduction.`);
|
|
46
47
|
|
|
47
48
|
return forward(context, back);
|
|
48
|
-
}, back);
|
|
49
|
+
}, back), back);
|
|
49
50
|
}, state);
|
|
50
51
|
});
|
|
51
52
|
});
|