occam-verify-cli 1.0.955 → 1.0.972
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/context/bounded.js +11 -7
- package/lib/context.js +17 -5
- package/lib/element/assertion/signature.js +17 -19
- package/lib/element/assertion/subproof.js +36 -39
- package/lib/element/assertion/type.js +20 -1
- package/lib/element/assumption/metaLevel.js +18 -17
- package/lib/element/assumption.js +52 -3
- package/lib/element/combinator.js +10 -12
- package/lib/element/conclusion.js +33 -33
- package/lib/element/constructor.js +8 -12
- package/lib/element/deduction.js +33 -33
- package/lib/element/equivalence.js +11 -7
- package/lib/element/hypothesis.js +45 -19
- package/lib/element/judgement.js +1 -1
- package/lib/element/label.js +9 -11
- package/lib/element/parameter.js +2 -2
- package/lib/element/procedureCall.js +1 -1
- package/lib/element/proofAssertion/premise.js +98 -87
- package/lib/element/proofAssertion/step.js +27 -27
- package/lib/element/proofAssertion/supposition.js +99 -88
- package/lib/element/proofAssertion.js +3 -3
- package/lib/element/property.js +1 -2
- package/lib/element/reference.js +30 -38
- package/lib/element/section.js +1 -1
- package/lib/element/signature.js +38 -47
- package/lib/element/statement.js +18 -58
- package/lib/element/substitution/frame.js +33 -38
- package/lib/element/substitution/reference.js +12 -13
- package/lib/element/substitution/statement.js +26 -31
- package/lib/element/substitution/term.js +32 -37
- package/lib/element/term.js +2 -2
- package/lib/element/topLevelAssertion/axiom.js +33 -34
- package/lib/element/topLevelAssertion.js +30 -7
- package/lib/element/topLevelMetaAssertion.js +2 -2
- package/lib/process/discharge.js +38 -0
- package/lib/process/unification.js +228 -0
- package/lib/process/unify.js +9 -5
- package/lib/process/validation.js +291 -0
- package/lib/utilities/context.js +69 -101
- package/lib/utilities/element.js +2 -4
- package/lib/utilities/string.js +4 -4
- package/package.json +4 -4
- package/src/context/bounded.js +19 -7
- package/src/context.js +26 -6
- package/src/element/assertion/signature.js +21 -26
- package/src/element/assertion/subproof.js +43 -46
- package/src/element/assertion/type.js +30 -1
- package/src/element/assumption/metaLevel.js +26 -22
- package/src/element/assumption.js +80 -2
- package/src/element/combinator.js +11 -14
- package/src/element/conclusion.js +38 -37
- package/src/element/constructor.js +9 -14
- package/src/element/deduction.js +38 -37
- package/src/element/equivalence.js +17 -13
- package/src/element/hypothesis.js +59 -19
- package/src/element/judgement.js +1 -1
- package/src/element/label.js +10 -12
- package/src/element/parameter.js +1 -1
- package/src/element/procedureCall.js +1 -1
- package/src/element/proofAssertion/premise.js +123 -107
- package/src/element/proofAssertion/step.js +29 -29
- package/src/element/proofAssertion/supposition.js +124 -108
- package/src/element/proofAssertion.js +2 -2
- package/src/element/property.js +0 -1
- package/src/element/reference.js +36 -47
- package/src/element/section.js +1 -1
- package/src/element/signature.js +42 -53
- package/src/element/statement.js +18 -89
- package/src/element/substitution/frame.js +37 -47
- package/src/element/substitution/reference.js +13 -16
- package/src/element/substitution/statement.js +27 -34
- package/src/element/substitution/term.js +37 -46
- package/src/element/term.js +1 -1
- package/src/element/topLevelAssertion/axiom.js +43 -45
- package/src/element/topLevelAssertion.js +42 -6
- package/src/element/topLevelMetaAssertion.js +2 -2
- package/src/process/discharge.js +33 -0
- package/src/{utilities → process}/unification.js +21 -27
- package/src/process/unify.js +9 -5
- package/src/{utilities → process}/validation.js +2 -2
- package/src/utilities/context.js +78 -123
- package/src/utilities/element.js +2 -5
- package/src/utilities/string.js +6 -6
- package/lib/context/ephemeral.js +0 -28
- package/lib/context/synoptic.js +0 -255
- package/lib/utilities/unification.js +0 -233
- package/lib/utilities/validation.js +0 -291
- package/src/context/ephemeral.js +0 -17
- package/src/context/synoptic.js +0 -361
package/lib/utilities/string.js
CHANGED
|
@@ -218,9 +218,9 @@ function topLevelMetaAssertionStringFromLabelSuppositionsAndDeduction(label, sup
|
|
|
218
218
|
function topLevelAssertionStringFromLabelsSignatureSuppositionsAndDeduction(labels, signature, suppositions, deduction) {
|
|
219
219
|
let topLevelAssertionString = _constants.EMPTY_STRING;
|
|
220
220
|
const deductionString = deduction.getString(), labelsString = labelsStringFromLabels(labels), signatureString = signatureStringFromSignature(signature), suppositionsString = suppositionsStringFromSuppositions(suppositions);
|
|
221
|
-
topLevelAssertionString = labelsString !== null ? `${topLevelAssertionString}${labelsString}
|
|
222
|
-
topLevelAssertionString = signatureString !== null ? `${topLevelAssertionString}
|
|
223
|
-
topLevelAssertionString = suppositionsString !== null ? `${topLevelAssertionString}[${suppositionsString}]...${deductionString}` : `${topLevelAssertionString}${deductionString}`;
|
|
221
|
+
topLevelAssertionString = labelsString !== null ? `${topLevelAssertionString}${labelsString}` : `${topLevelAssertionString}`;
|
|
222
|
+
topLevelAssertionString = signatureString !== null ? `${topLevelAssertionString}${signatureString}` : `${topLevelAssertionString}`;
|
|
223
|
+
topLevelAssertionString = suppositionsString !== null ? `${topLevelAssertionString} :: [${suppositionsString}]...${deductionString}` : `${topLevelAssertionString} :: ${deductionString}`;
|
|
224
224
|
return topLevelAssertionString;
|
|
225
225
|
}
|
|
226
226
|
function statementSubstitutionStringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution) {
|
|
@@ -228,4 +228,4 @@ function statementSubstitutionStringFromStatementMetavariableAndSubstitution(sta
|
|
|
228
228
|
return statementSubstitutionString;
|
|
229
229
|
}
|
|
230
230
|
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFBST1ZJU0lPTkFMLCBQUk9WSVNJT05BTExZIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtcy5yZWR1Y2UoKHRlcm1zU3RyaW5nLCB0ZXJtKSA9PiB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICB0ZXJtc1N0cmluZyA9ICh0ZXJtc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgIGAke3Rlcm1zU3RyaW5nfSwgJHt0ZXJtU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgIHRlcm1TdHJpbmc7XG5cbiAgICByZXR1cm4gdGVybXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiB0ZXJtc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc1N0cmluZyA9IGxhYmVscy5yZWR1Y2UoKGxhYmVsc1N0cmluZywgbGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpO1xuXG4gICAgbGFiZWxzU3RyaW5nID0gKGxhYmVsc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsc1N0cmluZ30sICR7bGFiZWxTdHJpbmd9YDtcblxuICAgIHJldHVybiBsYWJlbHNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBsYWJlbHNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1N0cmluZ0Zyb21QcmVtaXNlcyhwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzLnJlZHVjZSgocHJlbWlzZXNTdHJpbmcsIHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlU3RyaW5nID0gcHJlbWlzZS5nZXRTdHJpbmcoKTtcblxuICAgIHByZW1pc2VzU3RyaW5nID0gKHByZW1pc2VzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGAke3ByZW1pc2VzU3RyaW5nfSwgJHtwcmVtaXNlU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgIHByZW1pc2VTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBwcmVtaXNlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc1N0cmluZyA9IGh5cG90aGVzZXMucmVkdWNlKChoeXBvdGhlc2VzU3RyaW5nLCBoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBoeXBvdGhlc2VzU3RyaW5nID0gKGh5cG90aGVzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7aHlwb3RoZXNlc1N0cmluZ30sICR7aHlwb3RoZXNpc1N0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nOyAgLy8vXG5cbiAgICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMoc3VwZXJUeXBlcykge1xuICBsZXQgc3VwZXJUeXBlc1N0cmluZztcblxuICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBlclR5cGVzU3RyaW5nfSwgJyR7c3VwZXJUeXBlU3RyaW5nfSdgO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICBzdXBlclR5cGVzU3RyaW5nID0gKHN1cGVyVHlwZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYDoke3N1cGVyVHlwZXNTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICByZXR1cm4gc3VwZXJUeXBlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLnJlZHVjZSgocGFyYW1ldGVyc1N0cmluZywgcGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVyU3RyaW5nID0gcGFyYW1ldGVyLmdldFN0cmluZygpO1xuXG4gICAgcGFyYW1ldGVyc1N0cmluZyA9IChwYXJhbWV0ZXJzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyU3RyaW5nIDogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke3BhcmFtZXRlcnNTdHJpbmd9LCAke3BhcmFtZXRlclN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlzaW5hbFN0cmluZ0Zyb21Qcm92aXNpb25hbChwcm92aXNpb25hbCkge1xuICBjb25zdCBwcm92aXNpbmFsU3RyaW5nID0gcHJvdmlzaW9uYWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke1BST1ZJU0lPTkFMfSBgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICByZXR1cm4gcHJvdmlzaW5hbFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsbHlTdHJpbmdGcm9tUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW5hbGx5U3RyaW5nID0gcHJvdmlzaW9uYWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCAke1BST1ZJU0lPTkFMTFl9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIHByb3Zpc2luYWxseVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9ucy5yZWR1Y2UoKHN1cHBvc2l0aW9uc1N0cmluZywgc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3VwcG9zaXRpb25zU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgc3VwcG9zaXRpb25TdHJpbmc6IC8vL1xuICAgICAgYCR7c3VwcG9zaXRpb25zU3RyaW5nfSwgJHtzdXBwb3NpdGlvblN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWl2YWxlbmNlU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zU3RyaW5nID0gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMpLFxuICAgICAgICBlcXVpdmFsZW5jZVN0cmluZyA9IGBbJHt0ZXJtc1N0cmluZ31dYDtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVTdHJpbmdGcm9tU2lnbmF0dXJlKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVTdHJpbmcgPSAoc2lnbmF0dXJlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLmdldFN0cmluZygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVTdHJpbmdGcm9tTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICBjb25zdCB0eXBlU3RyaW5nID0gbm9taW5hbFR5cGVOYW1lOyAgLy8vXG5cbiAgcmV0dXJuIHR5cGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSkge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdGVybVN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHt0ZXJtU3RyaW5nfSBmb3IgJHt2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gdGVybVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bHNTdHJpbmdGcm9tTGFiZWxzUHJlbWlzZXNBbmRDb25jbHVzaW9uKGxhYmVscywgcHJlbWlzZXMsIGNvbmNsdXNpb24pIHtcbiAgbGV0IHJ1bGVTdHJpbmcgPSBFTVBUWV9TVFJJTkc7XG5cbiAgY29uc3QgY29uY2x1c2lvblN0cmluZyA9IGNvbmNsdXNpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIHByZW1pc2VzU3RyaW5nID0gcHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMocHJlbWlzZXMpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscyk7XG5cbiAgcnVsZVN0cmluZyA9IGAke3J1bGVTdHJpbmd9JHtsYWJlbHNTdHJpbmd9IDo6IGA7XG5cbiAgcnVsZVN0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICBgJHtydWxlU3RyaW5nfVske3ByZW1pc2VzU3RyaW5nfV0uLi4ke2NvbmNsdXNpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgYCR7cnVsZVN0cmluZ30ke2NvbmNsdXNpb25TdHJpbmd9YDtcblxuICByZXR1cm4gcnVsZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnByb29mU3RyaW5nRnJvbVN1cHBvc2l0aW9uc0FuZFN1YkRlcml2YXRpb24oc3VwcG9zaXRpb25zLCBzdWJEZXJpdmF0aW9uKSB7XG4gIGNvbnN0IGxhc3RTdGVwID0gc3ViRGVyaXZhdGlvbi5nZXRMYXN0U3RlcCgpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGxhc3RTdGVwU3RyaW5nID0gbGFzdFN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnByb29mU3RyaW5nID0gYFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtsYXN0U3RlcFN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7ZnJhbWVTdHJpbmd9IGZvciBbJHttZXRhdmFyaWFibGVTdHJpbmd9XV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNBbmRUb3BMZXZlbEFzc2VydGlvbihoeXBvdGhlc2VzLCB0b3BMZXZlbEFzc2VydGlvbikge1xuICBjb25zdCB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpLFxuICAgICAgICBzZWN0aW9uU3RyaW5nID0gYFske2h5cG90aGVzZXNTdHJpbmd9XTo6OiAke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHNlY3Rpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhTGV2ZWxBc3N1bXB0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudChyZWZlcmVuY2UsIHN0YXRlbWVudCkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJlZmVybmVjZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvblN0cmluZyA9IGAke3JlZmVybmVjZVN0cmluZ30gOjogJHtzdGF0ZW1lbnRTdHJpbmd9YDtcblxuICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxTdHJpbmdGcm9tUHJvY2VkdXJlUmVmZXJlbmNlQW5kUGFyYW1ldGVycyhwcm9jZWR1cmVSZWZlcmVuY2UsIHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlTmFtZSA9IHByb2NlZHVyZVJlZmVyZW5jZS5nZXROYW1lKCksXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzU3RyaW5nRnJvbVBhcmFtZXRlcnMocGFyYW1ldGVycyksXG4gICAgICAgIHByb2NlZHVyZUNhbGxTdHJpbmcgPSBgQCR7cHJvY2VkdXJlUmVmZXJlbmNlTmFtZX0oJHtwYXJhbWV0ZXJzU3RyaW5nfSlgO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlKHJlZmVyZW5jZSwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7cmVmZXJlbmNlU3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsZXhUeXBlRGVjbGFyYXRpb25TdHJpbmdGcm9tVHlwZVN1cGVyVHlwZXNBbmRQcm92aXNpb25hbCh0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCkge1xuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VwZXJUeXBlc1N0cmluZyA9IHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyhzdXBlclR5cGVzKSxcbiAgICAgICAgcHJvdmlzaW9uYWxTdHJpbmcgPSBwcm92aXNpbmFsU3RyaW5nRnJvbVByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKSxcbiAgICAgICAgY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZyA9IGAke3Byb3Zpc2lvbmFsU3RyaW5nfSR7dHlwZVN0cmluZ30ke3N1cGVyVHlwZXNTdHJpbmd9YDtcblxuICByZXR1cm4gY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pIHtcbiAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsU3RyaW5nfSA6OiBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XS4uLiR7ZGVkdWN0aW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbFN0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcblxuICByZXR1cm4gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVscywgc2lnbmF0dXJlLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBsZXQgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSBFTVBUWV9TVFJJTkc7XG5cbiAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscyksXG4gICAgICAgIHNpZ25hdHVyZVN0cmluZyA9IHNpZ25hdHVyZVN0cmluZ0Zyb21TaWduYXR1cmUoc2lnbmF0dXJlKSxcbiAgICAgICAgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpO1xuXG4gIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gKGxhYmVsc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JHtsYWJlbHNTdHJpbmd9IDo6IGAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ31gO1xuXG4gIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gKHNpZ25hdHVyZVN0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30gJHtzaWduYXR1cmVTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9YDtcblxuICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9WyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30ke2RlZHVjdGlvblN0cmluZ31gO1xuXG4gIHJldHVybiB0b3BMZXZlbEFzc2VydGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7c3RhdGVtZW50U3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9JHtzdWJzdGl0dXRpb25TdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJjb21wbGV4VHlwZURlY2xhcmF0aW9uU3RyaW5nRnJvbVR5cGVTdXBlclR5cGVzQW5kUHJvdmlzaW9uYWwiLCJlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyIsImZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlIiwiaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzIiwibGFiZWxzU3RyaW5nRnJvbUxhYmVscyIsIm1ldGFMZXZlbEFzc3VtcHRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50IiwicGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzIiwicHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMiLCJwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMiLCJwcm92aXNpbmFsU3RyaW5nRnJvbVByb3Zpc2lvbmFsIiwicHJvdmlzaW9uYWxseVN0cmluZ0Zyb21Qcm92aXNpb25hbCIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUiLCJydWxzU3RyaW5nRnJvbUxhYmVsc1ByZW1pc2VzQW5kQ29uY2x1c2lvbiIsInNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc0FuZFRvcExldmVsQXNzZXJ0aW9uIiwic2lnbmF0dXJlU3RyaW5nRnJvbVNpZ25hdHVyZSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwic3VicHJvb2ZTdHJpbmdGcm9tU3VwcG9zaXRpb25zQW5kU3ViRGVyaXZhdGlvbiIsInN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyIsInN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMiLCJ0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSIsInRlcm1zU3RyaW5nRnJvbVRlcm1zIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwidG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwidHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUiLCJ0ZXJtcyIsInRlcm1zU3RyaW5nIiwicmVkdWNlIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJsYWJlbHMiLCJsYWJlbHNTdHJpbmciLCJsYWJlbCIsImxhYmVsU3RyaW5nIiwicHJlbWlzZXMiLCJwcmVtaXNlc1N0cmluZyIsInByZW1pc2UiLCJwcmVtaXNlU3RyaW5nIiwiaHlwb3RoZXNlcyIsImh5cG90aGVzZXNTdHJpbmciLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzU3RyaW5nIiwiYmFzZVR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwic3VwZXJUeXBlIiwic3VwZXJUeXBlU3RyaW5nIiwiRU1QVFlfU1RSSU5HIiwicGFyYW1ldGVycyIsInBhcmFtZXRlcnNTdHJpbmciLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJTdHJpbmciLCJwcm92aXNpb25hbCIsInByb3Zpc2luYWxTdHJpbmciLCJQUk9WSVNJT05BTCIsInByb3Zpc2luYWxseVN0cmluZyIsIlBST1ZJU0lPTkFMTFkiLCJzdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbnNTdHJpbmciLCJzdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwiZXF1aXZhbGVuY2VTdHJpbmciLCJzaWduYXR1cmUiLCJzaWduYXR1cmVTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwidmFyaWFibGUiLCJ2YXJpYWJsZVN0cmluZyIsInRlcm1TdWJzdGl0dXRpb25TdHJpbmciLCJjb25jbHVzaW9uIiwicnVsZVN0cmluZyIsImNvbmNsdXNpb25TdHJpbmciLCJzdWJEZXJpdmF0aW9uIiwibGFzdFN0ZXAiLCJnZXRMYXN0U3RlcCIsImxhc3RTdGVwU3RyaW5nIiwic3VicHJvb2ZTdHJpbmciLCJmcmFtZSIsIm1ldGF2YXJpYWJsZSIsImZyYW1lU3RyaW5nIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwic3RyaW5nIiwidG9wTGV2ZWxBc3NlcnRpb24iLCJ0b3BMZXZlbEFzc2VydGlvblN0cmluZyIsInNlY3Rpb25TdHJpbmciLCJyZWZlcmVuY2UiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJyZWZlcm5lY2VTdHJpbmciLCJtZXRhTGV2ZWxBc3N1bXB0aW9uU3RyaW5nIiwicHJvY2VkdXJlUmVmZXJlbmNlIiwicHJvY2VkdXJlUmVmZXJlbmNlTmFtZSIsImdldE5hbWUiLCJwcm9jZWR1cmVDYWxsU3RyaW5nIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nIiwicmVmZXJlbmNlU3RyaW5nIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nIiwidHlwZSIsInByb3Zpc2lvbmFsU3RyaW5nIiwiY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZyIsImRlZHVjdGlvbiIsImRlZHVjdGlvblN0cmluZyIsInRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZyIsInN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBdU9nQkE7ZUFBQUE7O1FBdEdBQztlQUFBQTs7UUFzREFDO2VBQUFBOztRQXhJQUM7ZUFBQUE7O1FBNUJBQztlQUFBQTs7UUFvTEFDO2VBQUFBOztRQWxIQUM7ZUFBQUE7O1FBcERBQztlQUFBQTs7UUE4S0FDO2VBQUFBOztRQTVHQUM7ZUFBQUE7O1FBUUFDO2VBQUFBOztRQW9IQUM7ZUFBQUE7O1FBakVBQztlQUFBQTs7UUFpQ0FDO2VBQUFBOztRQXZEQUM7ZUFBQUE7O1FBK0VBQztlQUFBQTs7UUEyREFDO2VBQUFBOztRQXBHQUM7ZUFBQUE7O1FBakhBQztlQUFBQTs7UUFzREFDO2VBQUFBOztRQW1DQUM7ZUFBQUE7O1FBakpBQztlQUFBQTs7UUFzUEFDO2VBQUFBOztRQVhBQztlQUFBQTs7UUFoR0FDO2VBQUFBOzs7c0JBOUlvQjsyQkFDcUI7QUFFbEQsU0FBU0gscUJBQXFCSSxLQUFLO0lBQ3hDLE1BQU1DLGNBQWNELE1BQU1FLE1BQU0sQ0FBQyxDQUFDRCxhQUFhRTtRQUM3QyxNQUFNQyxhQUFhRCxLQUFLRSxTQUFTO1FBRWpDSixjQUFjLEFBQUNBLGdCQUFnQixPQUNoQixHQUFHQSxZQUFZLEVBQUUsRUFBRUcsWUFBWSxHQUM1QkE7UUFFbEIsT0FBT0g7SUFDVCxHQUFHO0lBRUgsT0FBT0E7QUFDVDtBQUVPLFNBQVN0Qix1QkFBdUIyQixNQUFNO0lBQzNDLE1BQU1DLGVBQWVELE9BQU9KLE1BQU0sQ0FBQyxDQUFDSyxjQUFjQztRQUNoRCxNQUFNQyxjQUFjRCxNQUFNSCxTQUFTO1FBRW5DRSxlQUFlLEFBQUNBLGlCQUFpQixPQUNoQkUsY0FDQyxHQUFHRixhQUFhLEVBQUUsRUFBRUUs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
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFBST1ZJU0lPTkFMLCBQUk9WSVNJT05BTExZIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtcy5yZWR1Y2UoKHRlcm1zU3RyaW5nLCB0ZXJtKSA9PiB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICB0ZXJtc1N0cmluZyA9ICh0ZXJtc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgIGAke3Rlcm1zU3RyaW5nfSwgJHt0ZXJtU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgIHRlcm1TdHJpbmc7XG5cbiAgICByZXR1cm4gdGVybXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiB0ZXJtc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc1N0cmluZyA9IGxhYmVscy5yZWR1Y2UoKGxhYmVsc1N0cmluZywgbGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpO1xuXG4gICAgbGFiZWxzU3RyaW5nID0gKGxhYmVsc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsc1N0cmluZ30sICR7bGFiZWxTdHJpbmd9YDtcblxuICAgIHJldHVybiBsYWJlbHNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBsYWJlbHNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1N0cmluZ0Zyb21QcmVtaXNlcyhwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzLnJlZHVjZSgocHJlbWlzZXNTdHJpbmcsIHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlU3RyaW5nID0gcHJlbWlzZS5nZXRTdHJpbmcoKTtcblxuICAgIHByZW1pc2VzU3RyaW5nID0gKHByZW1pc2VzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGAke3ByZW1pc2VzU3RyaW5nfSwgJHtwcmVtaXNlU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgIHByZW1pc2VTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBwcmVtaXNlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc1N0cmluZyA9IGh5cG90aGVzZXMucmVkdWNlKChoeXBvdGhlc2VzU3RyaW5nLCBoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBoeXBvdGhlc2VzU3RyaW5nID0gKGh5cG90aGVzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7aHlwb3RoZXNlc1N0cmluZ30sICR7aHlwb3RoZXNpc1N0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nOyAgLy8vXG5cbiAgICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMoc3VwZXJUeXBlcykge1xuICBsZXQgc3VwZXJUeXBlc1N0cmluZztcblxuICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBlclR5cGVzU3RyaW5nfSwgJyR7c3VwZXJUeXBlU3RyaW5nfSdgO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICBzdXBlclR5cGVzU3RyaW5nID0gKHN1cGVyVHlwZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYDoke3N1cGVyVHlwZXNTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICByZXR1cm4gc3VwZXJUeXBlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLnJlZHVjZSgocGFyYW1ldGVyc1N0cmluZywgcGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVyU3RyaW5nID0gcGFyYW1ldGVyLmdldFN0cmluZygpO1xuXG4gICAgcGFyYW1ldGVyc1N0cmluZyA9IChwYXJhbWV0ZXJzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyU3RyaW5nIDogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke3BhcmFtZXRlcnNTdHJpbmd9LCAke3BhcmFtZXRlclN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlzaW5hbFN0cmluZ0Zyb21Qcm92aXNpb25hbChwcm92aXNpb25hbCkge1xuICBjb25zdCBwcm92aXNpbmFsU3RyaW5nID0gcHJvdmlzaW9uYWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke1BST1ZJU0lPTkFMfSBgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICByZXR1cm4gcHJvdmlzaW5hbFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsbHlTdHJpbmdGcm9tUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW5hbGx5U3RyaW5nID0gcHJvdmlzaW9uYWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCAke1BST1ZJU0lPTkFMTFl9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIHByb3Zpc2luYWxseVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9ucy5yZWR1Y2UoKHN1cHBvc2l0aW9uc1N0cmluZywgc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3VwcG9zaXRpb25zU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgc3VwcG9zaXRpb25TdHJpbmc6IC8vL1xuICAgICAgYCR7c3VwcG9zaXRpb25zU3RyaW5nfSwgJHtzdXBwb3NpdGlvblN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWl2YWxlbmNlU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zU3RyaW5nID0gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMpLFxuICAgICAgICBlcXVpdmFsZW5jZVN0cmluZyA9IGBbJHt0ZXJtc1N0cmluZ31dYDtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVTdHJpbmdGcm9tU2lnbmF0dXJlKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVTdHJpbmcgPSAoc2lnbmF0dXJlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLmdldFN0cmluZygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVTdHJpbmdGcm9tTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICBjb25zdCB0eXBlU3RyaW5nID0gbm9taW5hbFR5cGVOYW1lOyAgLy8vXG5cbiAgcmV0dXJuIHR5cGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSkge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdGVybVN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHt0ZXJtU3RyaW5nfSBmb3IgJHt2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gdGVybVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bHNTdHJpbmdGcm9tTGFiZWxzUHJlbWlzZXNBbmRDb25jbHVzaW9uKGxhYmVscywgcHJlbWlzZXMsIGNvbmNsdXNpb24pIHtcbiAgbGV0IHJ1bGVTdHJpbmcgPSBFTVBUWV9TVFJJTkc7XG5cbiAgY29uc3QgY29uY2x1c2lvblN0cmluZyA9IGNvbmNsdXNpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIHByZW1pc2VzU3RyaW5nID0gcHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMocHJlbWlzZXMpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscyk7XG5cbiAgcnVsZVN0cmluZyA9IGAke3J1bGVTdHJpbmd9JHtsYWJlbHNTdHJpbmd9IDo6IGA7XG5cbiAgcnVsZVN0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICBgJHtydWxlU3RyaW5nfVske3ByZW1pc2VzU3RyaW5nfV0uLi4ke2NvbmNsdXNpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgYCR7cnVsZVN0cmluZ30ke2NvbmNsdXNpb25TdHJpbmd9YDtcblxuICByZXR1cm4gcnVsZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnByb29mU3RyaW5nRnJvbVN1cHBvc2l0aW9uc0FuZFN1YkRlcml2YXRpb24oc3VwcG9zaXRpb25zLCBzdWJEZXJpdmF0aW9uKSB7XG4gIGNvbnN0IGxhc3RTdGVwID0gc3ViRGVyaXZhdGlvbi5nZXRMYXN0U3RlcCgpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGxhc3RTdGVwU3RyaW5nID0gbGFzdFN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnByb29mU3RyaW5nID0gYFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtsYXN0U3RlcFN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7ZnJhbWVTdHJpbmd9IGZvciBbJHttZXRhdmFyaWFibGVTdHJpbmd9XV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNBbmRUb3BMZXZlbEFzc2VydGlvbihoeXBvdGhlc2VzLCB0b3BMZXZlbEFzc2VydGlvbikge1xuICBjb25zdCB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpLFxuICAgICAgICBzZWN0aW9uU3RyaW5nID0gYFske2h5cG90aGVzZXNTdHJpbmd9XTo6OiAke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHNlY3Rpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhTGV2ZWxBc3N1bXB0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudChyZWZlcmVuY2UsIHN0YXRlbWVudCkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJlZmVybmVjZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvblN0cmluZyA9IGAke3JlZmVybmVjZVN0cmluZ30gOjogJHtzdGF0ZW1lbnRTdHJpbmd9YDtcblxuICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxTdHJpbmdGcm9tUHJvY2VkdXJlUmVmZXJlbmNlQW5kUGFyYW1ldGVycyhwcm9jZWR1cmVSZWZlcmVuY2UsIHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlTmFtZSA9IHByb2NlZHVyZVJlZmVyZW5jZS5nZXROYW1lKCksXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzU3RyaW5nRnJvbVBhcmFtZXRlcnMocGFyYW1ldGVycyksXG4gICAgICAgIHByb2NlZHVyZUNhbGxTdHJpbmcgPSBgQCR7cHJvY2VkdXJlUmVmZXJlbmNlTmFtZX0oJHtwYXJhbWV0ZXJzU3RyaW5nfSlgO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlKHJlZmVyZW5jZSwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7cmVmZXJlbmNlU3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsZXhUeXBlRGVjbGFyYXRpb25TdHJpbmdGcm9tVHlwZVN1cGVyVHlwZXNBbmRQcm92aXNpb25hbCh0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCkge1xuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VwZXJUeXBlc1N0cmluZyA9IHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyhzdXBlclR5cGVzKSxcbiAgICAgICAgcHJvdmlzaW9uYWxTdHJpbmcgPSBwcm92aXNpbmFsU3RyaW5nRnJvbVByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKSxcbiAgICAgICAgY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZyA9IGAke3Byb3Zpc2lvbmFsU3RyaW5nfSR7dHlwZVN0cmluZ30ke3N1cGVyVHlwZXNTdHJpbmd9YDtcblxuICByZXR1cm4gY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pIHtcbiAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsU3RyaW5nfSA6OiBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XS4uLiR7ZGVkdWN0aW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbFN0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcblxuICByZXR1cm4gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVscywgc2lnbmF0dXJlLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBsZXQgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSBFTVBUWV9TVFJJTkc7XG5cbiAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscyksXG4gICAgICAgIHNpZ25hdHVyZVN0cmluZyA9IHNpZ25hdHVyZVN0cmluZ0Zyb21TaWduYXR1cmUoc2lnbmF0dXJlKSxcbiAgICAgICAgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpO1xuXG4gIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gKGxhYmVsc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30ke2xhYmVsc1N0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ31gO1xuICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IChzaWduYXR1cmVTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JHtzaWduYXR1cmVTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9YDtcblxuXG4gIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30gOjogWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcblxuICByZXR1cm4gdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZ0Zyb21UeXBlU3VwZXJUeXBlc0FuZFByb3Zpc2lvbmFsIiwiZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXMiLCJmcmFtZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsImh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyIsImxhYmVsc1N0cmluZ0Zyb21MYWJlbHMiLCJtZXRhTGV2ZWxBc3N1bXB0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCIsInBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyIsInByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzIiwicHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzIiwicHJvdmlzaW5hbFN0cmluZ0Zyb21Qcm92aXNpb25hbCIsInByb3Zpc2lvbmFsbHlTdHJpbmdGcm9tUHJvdmlzaW9uYWwiLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlIiwicnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24iLCJzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNBbmRUb3BMZXZlbEFzc2VydGlvbiIsInNpZ25hdHVyZVN0cmluZ0Zyb21TaWduYXR1cmUiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsInN1YnByb29mU3RyaW5nRnJvbVN1cHBvc2l0aW9uc0FuZFN1YkRlcml2YXRpb24iLCJzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMiLCJzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zIiwidGVybVN1YnN0aXR1dGlvblN0cmluZ0Zyb21UZXJtQW5kVmFyaWFibGUiLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInR5cGVTdHJpbmdGcm9tTm9taW5hbFR5cGVOYW1lIiwidGVybXMiLCJ0ZXJtc1N0cmluZyIsInJlZHVjZSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwibGFiZWxzIiwibGFiZWxzU3RyaW5nIiwibGFiZWwiLCJsYWJlbFN0cmluZyIsInByZW1pc2VzIiwicHJlbWlzZXNTdHJpbmciLCJwcmVtaXNlIiwicHJlbWlzZVN0cmluZyIsImh5cG90aGVzZXMiLCJoeXBvdGhlc2VzU3RyaW5nIiwiaHlwb3RoZXNpcyIsImh5cG90aGVzaXNTdHJpbmciLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc1N0cmluZyIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVN0cmluZyIsIkVNUFRZX1NUUklORyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzU3RyaW5nIiwicGFyYW1ldGVyIiwicGFyYW1ldGVyU3RyaW5nIiwicHJvdmlzaW9uYWwiLCJwcm92aXNpbmFsU3RyaW5nIiwiUFJPVklTSU9OQUwiLCJwcm92aXNpbmFsbHlTdHJpbmciLCJQUk9WSVNJT05BTExZIiwic3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zU3RyaW5nIiwic3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsImVxdWl2YWxlbmNlU3RyaW5nIiwic2lnbmF0dXJlIiwic2lnbmF0dXJlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwidHlwZVN0cmluZyIsInZhcmlhYmxlIiwidmFyaWFibGVTdHJpbmciLCJ0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nIiwiY29uY2x1c2lvbiIsInJ1bGVTdHJpbmciLCJjb25jbHVzaW9uU3RyaW5nIiwic3ViRGVyaXZhdGlvbiIsImxhc3RTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJsYXN0U3RlcFN0cmluZyIsInN1YnByb29mU3RyaW5nIiwiZnJhbWUiLCJtZXRhdmFyaWFibGUiLCJmcmFtZVN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInN0cmluZyIsInRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJzZWN0aW9uU3RyaW5nIiwicmVmZXJlbmNlIiwic3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwicmVmZXJuZWNlU3RyaW5nIiwibWV0YUxldmVsQXNzdW1wdGlvblN0cmluZyIsInByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZU5hbWUiLCJnZXROYW1lIiwicHJvY2VkdXJlQ2FsbFN0cmluZyIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyIsInJlZmVyZW5jZVN0cmluZyIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZyIsInR5cGUiLCJwcm92aXNpb25hbFN0cmluZyIsImNvbXBsZXhUeXBlRGVjbGFyYXRpb25TdHJpbmciLCJkZWR1Y3Rpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmciLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXVPZ0JBO2VBQUFBOztRQXRHQUM7ZUFBQUE7O1FBc0RBQztlQUFBQTs7UUF4SUFDO2VBQUFBOztRQTVCQUM7ZUFBQUE7O1FBb0xBQztlQUFBQTs7UUFsSEFDO2VBQUFBOztRQXBEQUM7ZUFBQUE7O1FBOEtBQztlQUFBQTs7UUE1R0FDO2VBQUFBOztRQVFBQztlQUFBQTs7UUFvSEFDO2VBQUFBOztRQWpFQUM7ZUFBQUE7O1FBaUNBQztlQUFBQTs7UUF2REFDO2VBQUFBOztRQStFQUM7ZUFBQUE7O1FBMkRBQztlQUFBQTs7UUFwR0FDO2VBQUFBOztRQWpIQUM7ZUFBQUE7O1FBc0RBQztlQUFBQTs7UUFtQ0FDO2VBQUFBOztRQWpKQUM7ZUFBQUE7O1FBc1BBQztlQUFBQTs7UUFYQUM7ZUFBQUE7O1FBaEdBQztlQUFBQTs7O3NCQTlJb0I7MkJBQ3FCO0FBRWxELFNBQVNILHFCQUFxQkksS0FBSztJQUN4QyxNQUFNQyxjQUFjRCxNQUFNRSxNQUFNLENBQUMsQ0FBQ0QsYUFBYUU7UUFDN0MsTUFBTUMsYUFBYUQsS0FBS0UsU0FBUztRQUVqQ0osY0FBYyxBQUFDQSxnQkFBZ0IsT0FDaEIsR0FBR0EsWUFBWSxFQUFFLEVBQUVHLFlBQVksR0FDNUJBO1FBRWxCLE9BQU9IO0lBQ1QsR0FBRztJQUVILE9BQU9BO0FBQ1Q7QUFFTyxTQUFTdEIsdUJBQXVCMkIsTUFBTTtJQUMzQyxNQUFNQyxlQUFlRCxPQUFPSixNQUFNLENBQUMsQ0FBQ0ssY0FBY0M7UUFDaEQsTUFBTUMsY0FBY0QsTUFBTUgsU0FBUztRQUVuQ0UsZUFBZSxBQUFDQSxpQkFBaUIsT0FDaEJFLGNBQ0MsR0FBR0YsYUFBYSxFQUFFLEVBQUVF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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.972",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.47",
|
|
14
14
|
"necessary": "^17.1.7",
|
|
15
|
-
"occam-furtle": "^3.0.
|
|
15
|
+
"occam-furtle": "^3.0.207",
|
|
16
16
|
"occam-grammars": "^1.3.524",
|
|
17
|
-
"occam-languages": "^0.0.
|
|
17
|
+
"occam-languages": "^0.0.214",
|
|
18
18
|
"occam-lexers": "^23.1.44",
|
|
19
19
|
"occam-model": "^1.0.506",
|
|
20
|
-
"occam-nominal": "^1.0.
|
|
20
|
+
"occam-nominal": "^1.0.111",
|
|
21
21
|
"occam-parsers": "^23.1.50",
|
|
22
22
|
"occam-server": "^7.0.7"
|
|
23
23
|
},
|
package/src/context/bounded.js
CHANGED
|
@@ -9,15 +9,15 @@ import { mergeEquivalences, equivalencesFromEquality, separateGroundedTermsAndDe
|
|
|
9
9
|
const { last, clear, filter } = arrayUtilities;
|
|
10
10
|
|
|
11
11
|
class BoundedContext extends Context {
|
|
12
|
-
constructor(context, assignments, equivalences, declaredVariables, declaredJudgements,
|
|
12
|
+
constructor(context, assignments, equivalences, declaredVariables, declaredJudgements, subproofOrProofAssertions, metaLevelAssumptions) {
|
|
13
13
|
super(context);
|
|
14
14
|
|
|
15
15
|
this.assignments = assignments;
|
|
16
16
|
this.equivalences = equivalences;
|
|
17
17
|
this.declaredVariables = declaredVariables;
|
|
18
18
|
this.declaredJudgements = declaredJudgements;
|
|
19
|
-
this.metaLevelAssumptions = metaLevelAssumptions;
|
|
20
19
|
this.subproofOrProofAssertions = subproofOrProofAssertions;
|
|
20
|
+
this.metaLevelAssumptions = metaLevelAssumptions;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
getAssignments() {
|
|
@@ -70,10 +70,6 @@ class BoundedContext extends Context {
|
|
|
70
70
|
return declaredJudgements;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
getMetaLevelAssumptions() {
|
|
74
|
-
return this.metaLevelAssumptions;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
73
|
getSubproofOrProofAssertions() {
|
|
78
74
|
let subproofOrProofAssertions;
|
|
79
75
|
|
|
@@ -89,6 +85,10 @@ class BoundedContext extends Context {
|
|
|
89
85
|
return subproofOrProofAssertions;
|
|
90
86
|
}
|
|
91
87
|
|
|
88
|
+
getMetaLevelAssumptions() {
|
|
89
|
+
return this.metaLevelAssumptions;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
92
|
getProofAssertions() {
|
|
93
93
|
const subproofOrProofAssertions = this.getSubproofOrProofAssertions(),
|
|
94
94
|
proofAssertions = subproofOrProofAssertions.filter((subproofOrProofAssertion) => {
|
|
@@ -335,13 +335,25 @@ class BoundedContext extends Context {
|
|
|
335
335
|
return termGrounded;
|
|
336
336
|
}
|
|
337
337
|
|
|
338
|
+
static fromNothing(context) {
|
|
339
|
+
const assignments = [],
|
|
340
|
+
equivalences = [],
|
|
341
|
+
declaredVariables = [],
|
|
342
|
+
declaredJudgements = [],
|
|
343
|
+
metaLevelAssumptions = null,
|
|
344
|
+
subproofOrProofAssertions = [],
|
|
345
|
+
boundedContext = new BoundedContext(context, assignments, equivalences, declaredVariables, declaredJudgements, subproofOrProofAssertions, metaLevelAssumptions);
|
|
346
|
+
|
|
347
|
+
return boundedContext;
|
|
348
|
+
}
|
|
349
|
+
|
|
338
350
|
static fromMetaLevelAssumptions(metaLevelAssumptions, context) {
|
|
339
351
|
const assignments = [],
|
|
340
352
|
equivalences = [],
|
|
341
353
|
declaredVariables = [],
|
|
342
354
|
declaredJudgements = [],
|
|
343
355
|
subproofOrProofAssertions = [],
|
|
344
|
-
boundedContext = new BoundedContext(context, assignments, equivalences, declaredVariables, declaredJudgements,
|
|
356
|
+
boundedContext = new BoundedContext(context, assignments, equivalences, declaredVariables, declaredJudgements, subproofOrProofAssertions, metaLevelAssumptions);
|
|
345
357
|
|
|
346
358
|
return boundedContext;
|
|
347
359
|
}
|
package/src/context.js
CHANGED
|
@@ -24,6 +24,19 @@ export default class Context extends ContextBase {
|
|
|
24
24
|
return filePath;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
getTokens() {
|
|
28
|
+
const context = this.getContext(),
|
|
29
|
+
tokens = context.getTokens();
|
|
30
|
+
|
|
31
|
+
return tokens;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
setTokens(tokens) {
|
|
35
|
+
const context = this.getContext();
|
|
36
|
+
|
|
37
|
+
context.setTokens(tokens);
|
|
38
|
+
}
|
|
39
|
+
|
|
27
40
|
getTerms(terms = []) {
|
|
28
41
|
const context = this.getContext();
|
|
29
42
|
|
|
@@ -339,6 +352,13 @@ export default class Context extends ContextBase {
|
|
|
339
352
|
return propertyRelation;
|
|
340
353
|
}
|
|
341
354
|
|
|
355
|
+
findDerivedSubstitutionByVariableNode(variableNode) {
|
|
356
|
+
const context = this.getContext(),
|
|
357
|
+
derivedSubstitution = context.findDerivedSubstitutionByVariableNode(variableNode);
|
|
358
|
+
|
|
359
|
+
return derivedSubstitution;
|
|
360
|
+
}
|
|
361
|
+
|
|
342
362
|
findDeclaredJudgementsByMetavariableNode(metavariableNode) {
|
|
343
363
|
const context = this.getContext(),
|
|
344
364
|
declaredJudgements = context.findDeclaredJudgementsByMetavariableNode(metavariableNode);
|
|
@@ -542,18 +562,18 @@ export default class Context extends ContextBase {
|
|
|
542
562
|
return derivedSubstitutionPresent;
|
|
543
563
|
}
|
|
544
564
|
|
|
545
|
-
|
|
565
|
+
isStated() {
|
|
546
566
|
const context = this.getContext(),
|
|
547
|
-
|
|
567
|
+
stated = context.isStated();
|
|
548
568
|
|
|
549
|
-
return
|
|
569
|
+
return stated;
|
|
550
570
|
}
|
|
551
571
|
|
|
552
|
-
|
|
572
|
+
isMetaLevel() {
|
|
553
573
|
const context = this.getContext(),
|
|
554
|
-
|
|
574
|
+
metaLevel = context.isMetaLevel();
|
|
555
575
|
|
|
556
|
-
return
|
|
576
|
+
return metaLevel;
|
|
557
577
|
}
|
|
558
578
|
|
|
559
579
|
addTerms(terms) {
|
|
@@ -4,7 +4,7 @@ import Assertion from "../assertion";
|
|
|
4
4
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
6
|
import { breakPointFromJSON } from "../../utilities/breakPoint";
|
|
7
|
-
import {
|
|
7
|
+
import { reconcile, instantiate } from "../../utilities/context";
|
|
8
8
|
import { instantiateSignatureAssertion } from "../../process/instantiate";
|
|
9
9
|
import { signatureFromSignatureAssertionNode, referenceFromSignatureAssertionNode, signatureAssertionFromStatementNode } from "../../utilities/element";
|
|
10
10
|
|
|
@@ -148,11 +148,9 @@ export default define(class SignatureAssertion extends Assertion {
|
|
|
148
148
|
|
|
149
149
|
context.trace(`Unifying the '${signatureAssertionString}' signature assertion's signature...`);
|
|
150
150
|
|
|
151
|
-
const axiom = context.findAxiomByReference(this.reference);
|
|
152
|
-
|
|
153
|
-
context = this.signature.getContext();
|
|
154
|
-
|
|
155
151
|
reconcile((context) => {
|
|
152
|
+
const axiom = context.findAxiomByReference(this.reference);
|
|
153
|
+
|
|
156
154
|
signatureUnifies = axiom.unifySignature(this.signature, context);
|
|
157
155
|
}, context);
|
|
158
156
|
|
|
@@ -166,19 +164,22 @@ export default define(class SignatureAssertion extends Assertion {
|
|
|
166
164
|
async unifyTopLevelAssertion(topLevelAssertion, context) {
|
|
167
165
|
let topLevelAssertionUnifies;
|
|
168
166
|
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
specificContext = signatureContext; ///
|
|
167
|
+
const topLevelAssertionString = topLevelAssertion.getString(),
|
|
168
|
+
signatureAssertionString = this.getString();
|
|
172
169
|
|
|
173
|
-
|
|
174
|
-
const context = specificContext; ///
|
|
170
|
+
context.trace(`Unifying the '${topLevelAssertionString}' top-level assertion with the '${signatureAssertionString}' signature assertion...`);
|
|
175
171
|
|
|
176
|
-
|
|
177
|
-
|
|
172
|
+
await reconcile(async (context) => {
|
|
173
|
+
const axiom = context.findAxiomByReference(this.reference);
|
|
178
174
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
axiom.unifySignature(this.signature, context);
|
|
176
|
+
|
|
177
|
+
topLevelAssertionUnifies = await axiom.unifyTopLevelAssertion(topLevelAssertion, context);
|
|
178
|
+
}, context);
|
|
179
|
+
|
|
180
|
+
if (topLevelAssertionUnifies) {
|
|
181
|
+
context.trace(`...unified the '${topLevelAssertionString}' top-level assertion with the '${signatureAssertionString}' signature assertion...`);
|
|
182
|
+
}
|
|
182
183
|
|
|
183
184
|
return topLevelAssertionUnifies;
|
|
184
185
|
}
|
|
@@ -186,19 +187,13 @@ export default define(class SignatureAssertion extends Assertion {
|
|
|
186
187
|
async unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context) {
|
|
187
188
|
let stepAndSubproofOrProofAssertionsUnify;
|
|
188
189
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
specificContext = signatureContext; ///
|
|
192
|
-
|
|
193
|
-
await join(async (specificContext) => {
|
|
194
|
-
const context = specificContext; ///
|
|
190
|
+
await reconcile(async (context) => {
|
|
191
|
+
const axiom = context.findAxiomByReference(this.reference);
|
|
195
192
|
|
|
196
|
-
|
|
197
|
-
axiom.unifySignature(this.signature, context);
|
|
193
|
+
axiom.unifySignature(this.signature, context);
|
|
198
194
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}, specificContext, context);
|
|
195
|
+
stepAndSubproofOrProofAssertionsUnify = await axiom.unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context);
|
|
196
|
+
}, context);
|
|
202
197
|
|
|
203
198
|
return stepAndSubproofOrProofAssertionsUnify;
|
|
204
199
|
}
|
|
@@ -5,10 +5,9 @@ import { arrayUtilities } from "necessary";
|
|
|
5
5
|
import Assertion from "../assertion";
|
|
6
6
|
|
|
7
7
|
import { define } from "../../elements";
|
|
8
|
-
import { reconcile } from "../../utilities/context";
|
|
9
8
|
import { breakPointFromJSON } from "../../utilities/breakPoint";
|
|
10
|
-
import { join, descend, instantiate } from "../../utilities/context";
|
|
11
9
|
import { instantiateSubproofAssertion } from "../../process/instantiate";
|
|
10
|
+
import { descend, reconcile, instantiate } from "../../utilities/context";
|
|
12
11
|
import { subproofAssertionFromStatementNode } from "../../utilities/element";
|
|
13
12
|
|
|
14
13
|
const { last, front, backwardsEvery } = arrayUtilities;
|
|
@@ -153,22 +152,20 @@ export default define(class SubproofAssertion extends Assertion {
|
|
|
153
152
|
|
|
154
153
|
context.trace(`Unifying the '${lastStepString}' last step with the '${lastStatementString}' last statement...`)
|
|
155
154
|
|
|
156
|
-
const lastStepContext = lastStep.getContext()
|
|
157
|
-
lastStepStatement = lastStep.getStatement();
|
|
155
|
+
const lastStepContext = lastStep.getContext();
|
|
158
156
|
|
|
159
157
|
specificContext = lastStepContext; ///
|
|
160
158
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
159
|
+
reconcile((specificContext) => {
|
|
160
|
+
const lastStepStatement = lastStep.getStatement(),
|
|
161
|
+
lastStepStatementUnifies = lastStatement.unifyStatement(lastStepStatement, generalContext, specificContext);
|
|
164
162
|
|
|
165
|
-
|
|
166
|
-
|
|
163
|
+
if (lastStepStatementUnifies) {
|
|
164
|
+
specificContext.commit(context);
|
|
167
165
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}, specificContext, context);
|
|
166
|
+
lastStepUnifies = true;
|
|
167
|
+
}
|
|
168
|
+
}, specificContext);
|
|
172
169
|
|
|
173
170
|
if (lastStepUnifies) {
|
|
174
171
|
context.debug(`...unified the '${lastStepString}' last step with the '${lastStatementString}' last statement.`)
|
|
@@ -187,22 +184,20 @@ export default define(class SubproofAssertion extends Assertion {
|
|
|
187
184
|
|
|
188
185
|
context.trace(`Unifying the '${deductionString}' deduction with the '${lastStatementString}' last statement...`)
|
|
189
186
|
|
|
190
|
-
const deductionContext = deduction.getContext()
|
|
191
|
-
deductionStatement = deduction.getStatement();
|
|
187
|
+
const deductionContext = deduction.getContext();
|
|
192
188
|
|
|
193
189
|
specificContext = deductionContext; ///
|
|
194
190
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
191
|
+
reconcile((specificContext) => {
|
|
192
|
+
const deductionStatement = deduction.getStatement(),
|
|
193
|
+
deductionStatementUnifies = lastStatement.unifyStatement(deductionStatement, generalContext, specificContext);
|
|
198
194
|
|
|
199
|
-
|
|
200
|
-
|
|
195
|
+
if (deductionStatementUnifies) {
|
|
196
|
+
specificContext.commit(context);
|
|
201
197
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}, specificContext, context);
|
|
198
|
+
deductionUnifies = true;
|
|
199
|
+
}
|
|
200
|
+
}, specificContext);
|
|
206
201
|
|
|
207
202
|
if (deductionUnifies) {
|
|
208
203
|
context.debug(`...unified the '${deductionString}' deduction with the '${lastStatementString}' last statement.`)
|
|
@@ -221,22 +216,20 @@ export default define(class SubproofAssertion extends Assertion {
|
|
|
221
216
|
|
|
222
217
|
context.trace(`Unifying the '${suppositionString}' supposition with the '${supposedStatementString}' supposed statement...`)
|
|
223
218
|
|
|
224
|
-
const suppositionContext = supposition.getContext()
|
|
225
|
-
suppositionStatement = supposition.getStatement();
|
|
219
|
+
const suppositionContext = supposition.getContext();
|
|
226
220
|
|
|
227
221
|
specificContext = suppositionContext; ///
|
|
228
222
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
223
|
+
reconcile((specificContext) => {
|
|
224
|
+
const suppositionStatement = supposition.getStatement(),
|
|
225
|
+
suppositionStatementUnifies = supposedStatement.unifyStatement(suppositionStatement, generalContext, specificContext);
|
|
232
226
|
|
|
233
|
-
|
|
234
|
-
|
|
227
|
+
if (suppositionStatementUnifies) {
|
|
228
|
+
specificContext.commit(context);
|
|
235
229
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
}, specificContext, context);
|
|
230
|
+
suppositionUnifies = true;
|
|
231
|
+
}
|
|
232
|
+
}, specificContext);
|
|
240
233
|
|
|
241
234
|
if (suppositionUnifies) {
|
|
242
235
|
context.debug(`...unified the '${suppositionString}' supposition with the '${supposedStatementString}' supposed statement.`)
|
|
@@ -268,24 +261,28 @@ export default define(class SubproofAssertion extends Assertion {
|
|
|
268
261
|
unifyTopLevelMetaAssertion(topLevelMetaAssertion, context) {
|
|
269
262
|
let topLevelMetaAssertionUnifies = false;
|
|
270
263
|
|
|
271
|
-
const
|
|
272
|
-
specificContext = context, ///
|
|
273
|
-
subproofAssertionString = this.getString(), ///
|
|
264
|
+
const subproofAssertionString = this.getString(), ///
|
|
274
265
|
topLevelMetaAssertionString = topLevelMetaAssertion.getString();
|
|
275
266
|
|
|
276
267
|
context.trace(`Unifying the '${topLevelMetaAssertionString}' top level meta-assertion with the '${subproofAssertionString}' subproof assertion...`);
|
|
277
268
|
|
|
278
|
-
|
|
279
|
-
|
|
269
|
+
reconcile((context) => {
|
|
270
|
+
const deduction = topLevelMetaAssertion.getDeduction(),
|
|
271
|
+
generalContext = context, ///
|
|
272
|
+
specificContext = context, ///
|
|
273
|
+
deductionUnifies = this.unifyDeduction(deduction, generalContext, specificContext);
|
|
280
274
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
275
|
+
if (deductionUnifies) {
|
|
276
|
+
const suppositions = topLevelMetaAssertion.getSuppositions(),
|
|
277
|
+
suppositionsUnify = this.unifySuppositions(suppositions, generalContext, specificContext);
|
|
284
278
|
|
|
285
|
-
|
|
286
|
-
|
|
279
|
+
if (suppositionsUnify) {
|
|
280
|
+
specificContext.commit();
|
|
281
|
+
|
|
282
|
+
topLevelMetaAssertionUnifies = true;
|
|
283
|
+
}
|
|
287
284
|
}
|
|
288
|
-
}
|
|
285
|
+
}, context);
|
|
289
286
|
|
|
290
287
|
if (topLevelMetaAssertionUnifies) {
|
|
291
288
|
context.debug(`...unified the '${topLevelMetaAssertionString}' top level meta-assertion with the '${subproofAssertionString}' subproof assertion.`);
|
|
@@ -58,7 +58,7 @@ export default define(class TypeAssertion extends Assertion {
|
|
|
58
58
|
const stated = context.isStated();
|
|
59
59
|
|
|
60
60
|
let validatesWhenStated = false,
|
|
61
|
-
|
|
61
|
+
validatesWhenDerived = false;
|
|
62
62
|
|
|
63
63
|
if (stated) {
|
|
64
64
|
validatesWhenStated = this.validateWhenStated(context);
|
|
@@ -89,6 +89,35 @@ export default define(class TypeAssertion extends Assertion {
|
|
|
89
89
|
return typeAssertion;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
discharge(context) {
|
|
93
|
+
let discharges = false;
|
|
94
|
+
|
|
95
|
+
const typeAssertionString = this.getString(); ///
|
|
96
|
+
|
|
97
|
+
context.trace(`Discharging the '${typeAssertionString}' type assertion...`);
|
|
98
|
+
|
|
99
|
+
const term = termFromTermAndSubstitutions(this.term, context);
|
|
100
|
+
|
|
101
|
+
if (term !== null) {
|
|
102
|
+
const termType = term.getType(),
|
|
103
|
+
typeEqualToTermType = this.type.isEqualTo(termType);
|
|
104
|
+
|
|
105
|
+
if (typeEqualToTermType) {
|
|
106
|
+
const termEstablished = term.isEstablished();
|
|
107
|
+
|
|
108
|
+
if (termEstablished) {
|
|
109
|
+
discharges = true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (discharges) {
|
|
115
|
+
context.debug(`...discharged the '${typeAssertionString}' type assertion.`);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return discharges;
|
|
119
|
+
}
|
|
120
|
+
|
|
92
121
|
validateType(context) {
|
|
93
122
|
let typeValidates;
|
|
94
123
|
|