occam-verify-cli 0.0.865 → 0.0.867

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.
Files changed (85) hide show
  1. package/lib/axiomLemmaTheoremConjecture.js +7 -7
  2. package/lib/context/file.js +128 -68
  3. package/lib/context/local.js +4 -4
  4. package/lib/context/release.js +13 -1
  5. package/lib/label.js +6 -6
  6. package/lib/metaConsequent.js +88 -0
  7. package/lib/metaLemma.js +126 -0
  8. package/lib/metaLemmaMetatheorem.js +196 -0
  9. package/lib/metaSupposition.js +140 -0
  10. package/lib/metaType.js +33 -3
  11. package/lib/metaTypeNames.js +13 -4
  12. package/lib/metaTypes.js +9 -4
  13. package/lib/metatheorem.js +9 -9
  14. package/lib/mixins/context.js +30 -22
  15. package/lib/rule.js +7 -7
  16. package/lib/ruleNames.js +5 -1
  17. package/lib/step/metaproof.js +18 -4
  18. package/lib/type.js +9 -1
  19. package/lib/utilities/name.js +52 -0
  20. package/lib/utilities/query.js +1 -38
  21. package/lib/verifier/node/metastatement.js +3 -3
  22. package/lib/verifier/nodes/statementAgainstCombinator.js +4 -4
  23. package/lib/verifier/nodes/termAgainstConstructor.js +3 -3
  24. package/lib/verify/declaration/topLevel.js +11 -3
  25. package/lib/verify/givenMetavariable.js +31 -0
  26. package/lib/verify/givenType.js +2 -3
  27. package/lib/verify/label.js +3 -4
  28. package/lib/verify/metaConsequent.js +36 -0
  29. package/lib/verify/metaDerivation.js +111 -0
  30. package/lib/verify/metaLemma.js +51 -0
  31. package/lib/verify/metaSupposition.js +40 -0
  32. package/lib/verify/metaSuppositions.js +28 -0
  33. package/lib/verify/metaproof.js +34 -0
  34. package/lib/verify/metastatement/qualified.js +2 -2
  35. package/lib/verify/metatheorem.js +50 -0
  36. package/lib/verify/metavariable.js +30 -10
  37. package/lib/verify/proof.js +3 -3
  38. package/lib/verify/statement/qualified.js +28 -28
  39. package/lib/verify/termAsConstructor.js +4 -5
  40. package/lib/verify/type.js +18 -20
  41. package/lib/verify/variable.js +13 -16
  42. package/package.json +4 -4
  43. package/src/axiomLemmaTheoremConjecture.js +6 -6
  44. package/src/context/file.js +132 -61
  45. package/src/context/local.js +1 -1
  46. package/src/context/release.js +13 -0
  47. package/src/label.js +4 -6
  48. package/src/metaConsequent.js +58 -0
  49. package/src/metaLemma.js +9 -0
  50. package/src/metaLemmaMetatheorem.js +194 -0
  51. package/src/metaSupposition.js +103 -0
  52. package/src/metaType.js +23 -3
  53. package/src/metaTypeNames.js +1 -0
  54. package/src/metaTypes.js +8 -1
  55. package/src/metatheorem.js +4 -4
  56. package/src/mixins/context.js +20 -14
  57. package/src/rule.js +6 -6
  58. package/src/ruleNames.js +1 -0
  59. package/src/step/metaproof.js +20 -4
  60. package/src/type.js +10 -0
  61. package/src/utilities/name.js +50 -0
  62. package/src/utilities/query.js +0 -47
  63. package/src/verifier/node/metastatement.js +2 -1
  64. package/src/verifier/nodes/statementAgainstCombinator.js +3 -3
  65. package/src/verifier/nodes/termAgainstConstructor.js +3 -4
  66. package/src/verify/declaration/topLevel.js +14 -0
  67. package/src/verify/givenMetavariable.js +31 -0
  68. package/src/verify/givenType.js +1 -4
  69. package/src/verify/label.js +2 -5
  70. package/src/verify/metaConsequent.js +36 -0
  71. package/src/verify/metaDerivation.js +151 -0
  72. package/src/verify/metaLemma.js +67 -0
  73. package/src/verify/metaSupposition.js +44 -0
  74. package/src/verify/metaSuppositions.js +17 -0
  75. package/src/verify/metaproof.js +32 -0
  76. package/src/verify/metastatement/qualified.js +2 -3
  77. package/src/verify/metatheorem.js +62 -0
  78. package/src/verify/metavariable.js +46 -16
  79. package/src/verify/proof.js +2 -2
  80. package/src/verify/statement/qualified.js +27 -23
  81. package/src/verify/termAsConstructor.js +4 -6
  82. package/src/verify/type.js +20 -22
  83. package/src/verify/variable.js +14 -17
  84. package/lib/ruleMetatheorem.js +0 -253
  85. package/src/ruleMetatheorem.js +0 -274
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return verifyMetaSupposition;
9
+ }
10
+ });
11
+ var _metaproof = /*#__PURE__*/ _interop_require_default(require("../step/metaproof"));
12
+ var _metaSupposition = /*#__PURE__*/ _interop_require_default(require("../metaSupposition"));
13
+ var _unqualified = /*#__PURE__*/ _interop_require_default(require("../verify/metastatement/unqualified"));
14
+ var _query = require("../utilities/query");
15
+ var _assignments = require("../utilities/assignments");
16
+ function _interop_require_default(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
21
+ var metastatementNodeQuery = (0, _query.nodeQuery)("/unqualifiedMetastatement/metastatement!"), unqualifiedMetastatementNodeQuery = (0, _query.nodeQuery)("/metaSupposition/unqualifiedMetastatement!");
22
+ function verifyMetaSupposition(metaSuppositionNode, metaSuppositions, localContext) {
23
+ var metaSuppositionVerified = false;
24
+ var metaSuppositionString = localContext.nodeAsString(metaSuppositionNode);
25
+ localContext.trace("Verifying the '".concat(metaSuppositionString, "' meta-supposition..."), metaSuppositionNode);
26
+ var derived = false, assignments = [], unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaSuppositionNode), unqualifiedMetastatementVerified = (0, _unqualified.default)(unqualifiedMetastatementNode, assignments, derived, localContext);
27
+ if (unqualifiedMetastatementVerified) {
28
+ var assignmentAssigned = (0, _assignments.assignAssignment)(assignments, localContext);
29
+ metaSuppositionVerified = assignmentAssigned; ///
30
+ }
31
+ if (metaSuppositionVerified) {
32
+ var metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode), metaSupposition = _metaSupposition.default.fromMetastatementNode(metastatementNode), metaproofStep = _metaproof.default.fromMetastatementNode(metastatementNode);
33
+ metaSuppositions.push(metaSupposition);
34
+ localContext.addMetaproofStep(metaproofStep);
35
+ localContext.debug("...verified the '".concat(metaSuppositionString, "' meta-supposition."), metaSuppositionNode);
36
+ }
37
+ return metaSuppositionVerified;
38
+ }
39
+
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YVN1cHBvc2l0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXByb29mU3RlcCBmcm9tIFwiLi4vc3RlcC9tZXRhcHJvb2ZcIjtcbmltcG9ydCBNZXRhU3VwcG9zaXRpb24gZnJvbSBcIi4uL21ldGFTdXBwb3NpdGlvblwiO1xuaW1wb3J0IHZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCBmcm9tIFwiLi4vdmVyaWZ5L21ldGFzdGF0ZW1lbnQvdW5xdWFsaWZpZWRcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgYXNzaWduQXNzaWdubWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXNzaWdubWVudHNcIjtcblxuY29uc3QgbWV0YXN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi91bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQvbWV0YXN0YXRlbWVudCFcIiksXG4gICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YVN1cHBvc2l0aW9uL3VucXVhbGlmaWVkTWV0YXN0YXRlbWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeU1ldGFTdXBwb3NpdGlvbihtZXRhU3VwcG9zaXRpb25Ob2RlLCBtZXRhU3VwcG9zaXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IG1ldGFTdXBwb3NpdGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YVN1cHBvc2l0aW9uU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhU3VwcG9zaXRpb25Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YVN1cHBvc2l0aW9uU3RyaW5nfScgbWV0YS1zdXBwb3NpdGlvbi4uLmAsIG1ldGFTdXBwb3NpdGlvbk5vZGUpO1xuXG4gIGNvbnN0IGRlcml2ZWQgPSBmYWxzZSxcbiAgICAgICAgYXNzaWdubWVudHMgPSBbXSxcbiAgICAgICAgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSA9IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeShtZXRhU3VwcG9zaXRpb25Ob2RlKSxcbiAgICAgICAgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgY29uc3QgYXNzaWdubWVudEFzc2lnbmVkID0gYXNzaWduQXNzaWdubWVudChhc3NpZ25tZW50cywgbG9jYWxDb250ZXh0KTtcblxuICAgIG1ldGFTdXBwb3NpdGlvblZlcmlmaWVkID0gYXNzaWdubWVudEFzc2lnbmVkOyAvLy9cbiAgfVxuXG4gIGlmIChtZXRhU3VwcG9zaXRpb25WZXJpZmllZCkge1xuICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhU3VwcG9zaXRpb24gPSBNZXRhU3VwcG9zaXRpb24uZnJvbU1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhcHJvb2ZTdGVwID0gTWV0YXByb29mU3RlcC5mcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgbWV0YVN1cHBvc2l0aW9ucy5wdXNoKG1ldGFTdXBwb3NpdGlvbik7XG5cbiAgICBsb2NhbENvbnRleHQuYWRkTWV0YXByb29mU3RlcChtZXRhcHJvb2ZTdGVwKTtcblxuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGFTdXBwb3NpdGlvblN0cmluZ30nIG1ldGEtc3VwcG9zaXRpb24uYCwgbWV0YVN1cHBvc2l0aW9uTm9kZSk7XG4gIH1cblxuICByZXR1cm4gbWV0YVN1cHBvc2l0aW9uVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5TWV0YVN1cHBvc2l0aW9uIiwibWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsIm1ldGFTdXBwb3NpdGlvbk5vZGUiLCJtZXRhU3VwcG9zaXRpb25zIiwibG9jYWxDb250ZXh0IiwibWV0YVN1cHBvc2l0aW9uVmVyaWZpZWQiLCJtZXRhU3VwcG9zaXRpb25TdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsImRlcml2ZWQiLCJhc3NpZ25tZW50cyIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCIsImFzc2lnbm1lbnRBc3NpZ25lZCIsImFzc2lnbkFzc2lnbm1lbnQiLCJtZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFTdXBwb3NpdGlvbiIsIk1ldGFTdXBwb3NpdGlvbiIsImZyb21NZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFwcm9vZlN0ZXAiLCJNZXRhcHJvb2ZTdGVwIiwicHVzaCIsImFkZE1ldGFwcm9vZlN0ZXAiLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUF3QkE7OztnRUFWRTtzRUFDRTtrRUFDZTtxQkFFakI7MkJBQ087Ozs7OztBQUVqQyxJQUFNQyx5QkFBeUJDLElBQUFBLGdCQUFTLEVBQUMsNkNBQ25DQyxvQ0FBb0NELElBQUFBLGdCQUFTLEVBQUM7QUFFckMsU0FBU0Ysc0JBQXNCSSxtQkFBbUIsRUFBRUMsZ0JBQWdCLEVBQUVDLFlBQVk7SUFDL0YsSUFBSUMsMEJBQTBCO0lBRTlCLElBQU1DLHdCQUF3QkYsYUFBYUcsWUFBWSxDQUFDTDtJQUV4REUsYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQXVDLE9BQXRCRix1QkFBc0IsMEJBQXdCSjtJQUVuRixJQUFNTyxVQUFVLE9BQ1ZDLGNBQWMsRUFBRSxFQUNoQkMsK0JBQStCVixrQ0FBa0NDLHNCQUNqRVUsbUNBQW1DQyxJQUFBQSxvQkFBOEIsRUFBQ0YsOEJBQThCRCxhQUFhRCxTQUFTTDtJQUU1SCxJQUFJUSxrQ0FBa0M7UUFDcEMsSUFBTUUscUJBQXFCQyxJQUFBQSw2QkFBZ0IsRUFBQ0wsYUFBYU47UUFFekRDLDBCQUEwQlMsb0JBQW9CLEdBQUc7SUFDbkQ7SUFFQSxJQUFJVCx5QkFBeUI7UUFDM0IsSUFBTVcsb0JBQW9CakIsdUJBQXVCWSwrQkFDM0NNLGtCQUFrQkMsd0JBQWUsQ0FBQ0MscUJBQXFCLENBQUNILG9CQUN4REksZ0JBQWdCQyxrQkFBYSxDQUFDRixxQkFBcUIsQ0FBQ0g7UUFFMURiLGlCQUFpQm1CLElBQUksQ0FBQ0w7UUFFdEJiLGFBQWFtQixnQkFBZ0IsQ0FBQ0g7UUFFOUJoQixhQUFhb0IsS0FBSyxDQUFDLEFBQUMsb0JBQXlDLE9BQXRCbEIsdUJBQXNCLHdCQUFzQko7SUFDckY7SUFFQSxPQUFPRztBQUNUIn0=
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return verifyMetaSuppositions;
9
+ }
10
+ });
11
+ var _metaSupposition = /*#__PURE__*/ _interop_require_default(require("../verify/metaSupposition"));
12
+ function _interop_require_default(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }
17
+ function verifyMetaSuppositions(metaSuppositionNodes, metaSuppositions, localContext) {
18
+ var metaSuppositionsVerified;
19
+ metaSuppositionsVerified = metaSuppositionNodes.every(function(metaSuppositionNode) {
20
+ var metaSuppositionVerified = (0, _metaSupposition.default)(metaSuppositionNode, metaSuppositions, localContext);
21
+ if (metaSuppositionVerified) {
22
+ return true;
23
+ }
24
+ });
25
+ return metaSuppositionsVerified;
26
+ }
27
+
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YVN1cHBvc2l0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeU1ldGFTdXBwb3NpdGlvbiBmcm9tIFwiLi4vdmVyaWZ5L21ldGFTdXBwb3NpdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhU3VwcG9zaXRpb25zKG1ldGFTdXBwb3NpdGlvbk5vZGVzLCBtZXRhU3VwcG9zaXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IG1ldGFTdXBwb3NpdGlvbnNWZXJpZmllZDtcblxuICBtZXRhU3VwcG9zaXRpb25zVmVyaWZpZWQgPSBtZXRhU3VwcG9zaXRpb25Ob2Rlcy5ldmVyeSgobWV0YVN1cHBvc2l0aW9uTm9kZSkgPT4ge1xuICAgIGNvbnN0IG1ldGFTdXBwb3NpdGlvblZlcmlmaWVkID0gdmVyaWZ5TWV0YVN1cHBvc2l0aW9uKG1ldGFTdXBwb3NpdGlvbk5vZGUsIG1ldGFTdXBwb3NpdGlvbnMsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBpZiAobWV0YVN1cHBvc2l0aW9uVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFTdXBwb3NpdGlvbnNWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhU3VwcG9zaXRpb25zIiwibWV0YVN1cHBvc2l0aW9uTm9kZXMiLCJtZXRhU3VwcG9zaXRpb25zIiwibG9jYWxDb250ZXh0IiwibWV0YVN1cHBvc2l0aW9uc1ZlcmlmaWVkIiwiZXZlcnkiLCJtZXRhU3VwcG9zaXRpb25Ob2RlIiwibWV0YVN1cHBvc2l0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhU3VwcG9zaXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBd0JBOzs7c0VBRlU7Ozs7OztBQUVuQixTQUFTQSx1QkFBdUJDLG9CQUFvQixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWTtJQUNqRyxJQUFJQztJQUVKQSwyQkFBMkJILHFCQUFxQkksS0FBSyxDQUFDLFNBQUNDO1FBQ3JELElBQU1DLDBCQUEwQkMsSUFBQUEsd0JBQXFCLEVBQUNGLHFCQUFxQkosa0JBQWtCQztRQUU3RixJQUFJSSx5QkFBeUI7WUFDM0IsT0FBTztRQUNUO0lBQ0Y7SUFFQSxPQUFPSDtBQUNUIn0=
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return verifyMetaproof;
9
+ }
10
+ });
11
+ var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
12
+ var _metaDerivation = /*#__PURE__*/ _interop_require_default(require("../verify/metaDerivation"));
13
+ var _query = require("../utilities/query");
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ var metaDerivationNodeQuery = (0, _query.nodeQuery)("/metaproof/metaDerivation!");
20
+ function verifyMetaproof(metaproofNode, conclusion, localContext) {
21
+ var metaproofVerified = false;
22
+ localContext = _local.default.fromLocalContext(localContext); ///
23
+ var metaDerivationNode = metaDerivationNodeQuery(metaproofNode), metaDerivationVerified = (0, _metaDerivation.default)(metaDerivationNode, localContext);
24
+ if (metaDerivationVerified) {
25
+ var lastMetaproofStep = localContext.getLastMetaproofStep();
26
+ if (lastMetaproofStep !== null) {
27
+ var metaproofStep = lastMetaproofStep, metastatementNode = metaproofStep.getMetastatementNode(), conclusionMetastatementNode = conclusion.getMetastatementNode(), metastatementNodeMatchesConclusionMetastatementNode = metastatementNode.match(conclusionMetastatementNode);
28
+ metaproofVerified = metastatementNodeMatchesConclusionMetastatementNode; ///
29
+ }
30
+ }
31
+ return metaproofVerified;
32
+ }
33
+
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXByb29mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgdmVyaWZ5TWV0YURlcml2YXRpb24gZnJvbSBcIi4uL3ZlcmlmeS9tZXRhRGVyaXZhdGlvblwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IG1ldGFEZXJpdmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFwcm9vZi9tZXRhRGVyaXZhdGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeU1ldGFwcm9vZihtZXRhcHJvb2ZOb2RlLCBjb25jbHVzaW9uLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IG1ldGFwcm9vZlZlcmlmaWVkID0gZmFsc2U7XG5cbiAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21Mb2NhbENvbnRleHQobG9jYWxDb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgbWV0YURlcml2YXRpb25Ob2RlID0gbWV0YURlcml2YXRpb25Ob2RlUXVlcnkobWV0YXByb29mTm9kZSksXG4gICAgICAgIG1ldGFEZXJpdmF0aW9uVmVyaWZpZWQgPSB2ZXJpZnlNZXRhRGVyaXZhdGlvbihtZXRhRGVyaXZhdGlvbk5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKG1ldGFEZXJpdmF0aW9uVmVyaWZpZWQpIHtcbiAgICBjb25zdCBsYXN0TWV0YXByb29mU3RlcCA9IGxvY2FsQ29udGV4dC5nZXRMYXN0TWV0YXByb29mU3RlcCgpO1xuXG4gICAgaWYgKGxhc3RNZXRhcHJvb2ZTdGVwICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhcHJvb2ZTdGVwID0gbGFzdE1ldGFwcm9vZlN0ZXAsIC8vL1xuICAgICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhcHJvb2ZTdGVwLmdldE1ldGFzdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUgPSBjb25jbHVzaW9uLmdldE1ldGFzdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXNDb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZS5tYXRjaChjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBtZXRhcHJvb2ZWZXJpZmllZCA9IG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlc0NvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZTsgIC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXRhcHJvb2ZWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhcHJvb2YiLCJtZXRhRGVyaXZhdGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGFwcm9vZk5vZGUiLCJjb25jbHVzaW9uIiwibG9jYWxDb250ZXh0IiwibWV0YXByb29mVmVyaWZpZWQiLCJMb2NhbENvbnRleHQiLCJmcm9tTG9jYWxDb250ZXh0IiwibWV0YURlcml2YXRpb25Ob2RlIiwibWV0YURlcml2YXRpb25WZXJpZmllZCIsInZlcmlmeU1ldGFEZXJpdmF0aW9uIiwibGFzdE1ldGFwcm9vZlN0ZXAiLCJnZXRMYXN0TWV0YXByb29mU3RlcCIsIm1ldGFwcm9vZlN0ZXAiLCJtZXRhc3RhdGVtZW50Tm9kZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwiY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzQ29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlIiwibWF0Y2giXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBd0JBOzs7NERBUEM7cUVBQ1E7cUJBRVA7Ozs7OztBQUUxQixJQUFNQywwQkFBMEJDLElBQUFBLGdCQUFTLEVBQUM7QUFFM0IsU0FBU0YsZ0JBQWdCRyxhQUFhLEVBQUVDLFVBQVUsRUFBRUMsWUFBWTtJQUM3RSxJQUFJQyxvQkFBb0I7SUFFeEJELGVBQWVFLGNBQVksQ0FBQ0MsZ0JBQWdCLENBQUNILGVBQWUsR0FBRztJQUUvRCxJQUFNSSxxQkFBcUJSLHdCQUF3QkUsZ0JBQzdDTyx5QkFBeUJDLElBQUFBLHVCQUFvQixFQUFDRixvQkFBb0JKO0lBRXhFLElBQUlLLHdCQUF3QjtRQUMxQixJQUFNRSxvQkFBb0JQLGFBQWFRLG9CQUFvQjtRQUUzRCxJQUFJRCxzQkFBc0IsTUFBTTtZQUM5QixJQUFNRSxnQkFBZ0JGLG1CQUNoQkcsb0JBQW9CRCxjQUFjRSxvQkFBb0IsSUFDdERDLDhCQUE4QmIsV0FBV1ksb0JBQW9CLElBQzdERSxzREFBc0RILGtCQUFrQkksS0FBSyxDQUFDRjtZQUVwRlgsb0JBQW9CWSxxREFBc0QsR0FBRztRQUMvRTtJQUNGO0lBRUEsT0FBT1o7QUFDVCJ9
@@ -16,7 +16,7 @@ function verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, d
16
16
  if (metastatementNode !== null) {
17
17
  var metastatementString = localMetaContext.nodeAsString(metastatementNode), metastatementLocalMetaContext = localMetaContext; ///
18
18
  localMetaContext.trace("Verifying the '".concat(metastatementString, "' qualified metastatement..."), qualifiedMetastatementNode);
19
- var referenceNode = referenceNodeQuery(qualifiedMetastatementNode), referenceName = (0, _query.referenceNameFromReferenceNode)(referenceNode), rule = localMetaContext.findRuleByReferenceName(referenceName);
19
+ var referenceNode = referenceNodeQuery(qualifiedMetastatementNode), rule = localMetaContext.findRuleByReferenceNode(referenceNode);
20
20
  if (rule !== null) {
21
21
  var ruleMatchesMetastatement = rule.matchMetastatement(metastatementNode, metastatementLocalMetaContext);
22
22
  qualifiedMetastatementVerified = ruleMatchesMetastatement; ///
@@ -28,4 +28,4 @@ function verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, d
28
28
  return qualifiedMetastatementVerified;
29
29
  }
30
30
 
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSwgcmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCByZWZlcmVuY2VOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkTWV0YXN0YXRlbWVudC9xdWFsaWZpY2F0aW9uIS9yZWZlcmVuY2UhXCIpLFxuICAgICAgbWV0YXN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRNZXRhc3RhdGVtZW50L21ldGFzdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRNZXRhc3RhdGVtZW50KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxNZXRhQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAobWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBtZXRhc3RhdGVtZW50U3RyaW5nID0gbG9jYWxNZXRhQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnRMb2NhbE1ldGFDb250ZXh0ID0gbG9jYWxNZXRhQ29udGV4dDsgLy8vXG5cbiAgICBsb2NhbE1ldGFDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke21ldGFzdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgbWV0YXN0YXRlbWVudC4uLmAsIHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZU5vZGUgPSByZWZlcmVuY2VOb2RlUXVlcnkocXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSByZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSksXG4gICAgICAgICAgcnVsZSA9IGxvY2FsTWV0YUNvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgICBpZiAocnVsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcnVsZU1hdGNoZXNNZXRhc3RhdGVtZW50ID0gcnVsZS5tYXRjaE1ldGFzdGF0ZW1lbnQobWV0YXN0YXRlbWVudE5vZGUsIG1ldGFzdGF0ZW1lbnRMb2NhbE1ldGFDb250ZXh0KTtcblxuICAgICAgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gcnVsZU1hdGNoZXNNZXRhc3RhdGVtZW50OyAgLy8vXG4gICAgfVxuXG4gICAgaWYgKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgbG9jYWxNZXRhQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGFzdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgbWV0YXN0YXRlbWVudC5gLCBxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlRdWFsaWZpZWRNZXRhc3RhdGVtZW50IiwicmVmZXJlbmNlTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwibWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsInF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlIiwiYXNzaWdubWVudHMiLCJkZXJpdmVkIiwibG9jYWxNZXRhQ29udGV4dCIsInF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCIsIm1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YXN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsIm1ldGFzdGF0ZW1lbnRMb2NhbE1ldGFDb250ZXh0IiwidHJhY2UiLCJyZWZlcmVuY2VOb2RlIiwicmVmZXJlbmNlTmFtZSIsInJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSIsInJ1bGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlTmFtZSIsInJ1bGVNYXRjaGVzTWV0YXN0YXRlbWVudCIsIm1hdGNoTWV0YXN0YXRlbWVudCIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFPQTs7O2VBQXdCQTs7O3FCQUxrQztBQUUxRCxJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsc0RBQy9CQyx5QkFBeUJELElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsNkJBQTZCSSwwQkFBMEIsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLGdCQUFnQjtJQUNySCxJQUFJQyxpQ0FBaUM7SUFFckMsSUFBTUMsb0JBQW9CTix1QkFBdUJDO0lBRWpELElBQUlLLHNCQUFzQixNQUFNO1FBQzlCLElBQU1DLHNCQUFzQkgsaUJBQWlCSSxZQUFZLENBQUNGLG9CQUNwREcsZ0NBQWdDTCxrQkFBa0IsR0FBRztRQUUzREEsaUJBQWlCTSxLQUFLLENBQUMsQUFBQyxrQkFBcUMsT0FBcEJILHFCQUFvQixpQ0FBK0JOO1FBRTVGLElBQU1VLGdCQUFnQmIsbUJBQW1CRyw2QkFDbkNXLGdCQUFnQkMsSUFBQUEscUNBQThCLEVBQUNGLGdCQUMvQ0csT0FBT1YsaUJBQWlCVyx1QkFBdUIsQ0FBQ0g7UUFFdEQsSUFBSUUsU0FBUyxNQUFNO1lBQ2pCLElBQU1FLDJCQUEyQkYsS0FBS0csa0JBQWtCLENBQUNYLG1CQUFtQkc7WUFFNUVKLGlDQUFpQ1csMEJBQTJCLEdBQUc7UUFDakU7UUFFQSxJQUFJWCxnQ0FBZ0M7WUFDbENELGlCQUFpQmMsS0FBSyxDQUFDLEFBQUMsb0JBQXVDLE9BQXBCWCxxQkFBb0IsK0JBQTZCTjtRQUM5RjtJQUNGO0lBRUEsT0FBT0k7QUFDVCJ9
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnQvcXVhbGlmaWNhdGlvbiEvcmVmZXJlbmNlIVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkTWV0YXN0YXRlbWVudC9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudChxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsTWV0YUNvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKG1ldGFzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YXN0YXRlbWVudFN0cmluZyA9IGxvY2FsTWV0YUNvbnRleHQubm9kZUFzU3RyaW5nKG1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhc3RhdGVtZW50TG9jYWxNZXRhQ29udGV4dCA9IGxvY2FsTWV0YUNvbnRleHQ7IC8vL1xuXG4gICAgbG9jYWxNZXRhQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhc3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIG1ldGFzdGF0ZW1lbnQuLi5gLCBxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBydWxlID0gbG9jYWxNZXRhQ29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICAgIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBydWxlTWF0Y2hlc01ldGFzdGF0ZW1lbnQgPSBydWxlLm1hdGNoTWV0YXN0YXRlbWVudChtZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudExvY2FsTWV0YUNvbnRleHQpO1xuXG4gICAgICBxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQgPSBydWxlTWF0Y2hlc01ldGFzdGF0ZW1lbnQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAocXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBsb2NhbE1ldGFDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBtZXRhc3RhdGVtZW50LmAsIHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5IiwicXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbE1ldGFDb250ZXh0IiwicXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkIiwibWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhc3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwibWV0YXN0YXRlbWVudExvY2FsTWV0YUNvbnRleHQiLCJ0cmFjZSIsInJlZmVyZW5jZU5vZGUiLCJydWxlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZU5vZGUiLCJydWxlTWF0Y2hlc01ldGFzdGF0ZW1lbnQiLCJtYXRjaE1ldGFzdGF0ZW1lbnQiLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBT0E7OztlQUF3QkE7OztxQkFMRTtBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsc0RBQy9CQyx5QkFBeUJELElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsNkJBQTZCSSwwQkFBMEIsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLGdCQUFnQjtJQUNySCxJQUFJQyxpQ0FBaUM7SUFFckMsSUFBTUMsb0JBQW9CTix1QkFBdUJDO0lBRWpELElBQUlLLHNCQUFzQixNQUFNO1FBQzlCLElBQU1DLHNCQUFzQkgsaUJBQWlCSSxZQUFZLENBQUNGLG9CQUNwREcsZ0NBQWdDTCxrQkFBa0IsR0FBRztRQUUzREEsaUJBQWlCTSxLQUFLLENBQUMsQUFBQyxrQkFBcUMsT0FBcEJILHFCQUFvQixpQ0FBK0JOO1FBRTVGLElBQU1VLGdCQUFnQmIsbUJBQW1CRyw2QkFDbkNXLE9BQU9SLGlCQUFpQlMsdUJBQXVCLENBQUNGO1FBRXRELElBQUlDLFNBQVMsTUFBTTtZQUNqQixJQUFNRSwyQkFBMkJGLEtBQUtHLGtCQUFrQixDQUFDVCxtQkFBbUJHO1lBRTVFSixpQ0FBaUNTLDBCQUEyQixHQUFHO1FBQ2pFO1FBRUEsSUFBSVQsZ0NBQWdDO1lBQ2xDRCxpQkFBaUJZLEtBQUssQ0FBQyxBQUFDLG9CQUF1QyxPQUFwQlQscUJBQW9CLCtCQUE2Qk47UUFDOUY7SUFDRjtJQUVBLE9BQU9JO0FBQ1QifQ==
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return verifyMetatheorem;
9
+ }
10
+ });
11
+ var _metatheorem = /*#__PURE__*/ _interop_require_default(require("../metatheorem"));
12
+ var _labels = /*#__PURE__*/ _interop_require_default(require("../verify/labels"));
13
+ var _metaproof = /*#__PURE__*/ _interop_require_default(require("../verify/metaproof"));
14
+ var _localMeta = /*#__PURE__*/ _interop_require_default(require("../context/localMeta"));
15
+ var _metaConsequent = /*#__PURE__*/ _interop_require_default(require("../verify/metaConsequent"));
16
+ var _metaSuppositions = /*#__PURE__*/ _interop_require_default(require("../verify/metaSuppositions"));
17
+ var _array = require("../utilities/array");
18
+ var _query = require("../utilities/query");
19
+ function _interop_require_default(obj) {
20
+ return obj && obj.__esModule ? obj : {
21
+ default: obj
22
+ };
23
+ }
24
+ var labelNodesQuery = (0, _query.nodesQuery)("/metatheorem//labels/label"), metaproofNodeQuery = (0, _query.nodeQuery)("/metatheorem/metaproof!"), metaConsequentNodeQuery = (0, _query.nodeQuery)("/metatheorem/metaConsequent!"), metaSuppositionsNodeQuery = (0, _query.nodesQuery)("/metatheorem/metaSupposition");
25
+ function verifyMetatheorem(metatheoremNode, fileContext) {
26
+ var metatheoremVerified = false;
27
+ var labelNodes = labelNodesQuery(metatheoremNode), labelsString = fileContext.nodesAsString(labelNodes), localMetaContext = _localMeta.default.fromFileContext(fileContext);
28
+ fileContext.trace("Verifying the '".concat(labelsString, "' metatheorem..."), metatheoremNode);
29
+ var labels = [], labelsVerified = (0, _labels.default)(labelNodes, labels, fileContext);
30
+ if (labelsVerified) {
31
+ var metaSuppositions = [], metaSuppositionNodes = metaSuppositionsNodeQuery(metatheoremNode), metaSuppositionsVerified = (0, _metaSuppositions.default)(metaSuppositionNodes, metaSuppositions, localMetaContext);
32
+ if (metaSuppositionsVerified) {
33
+ var metaConsequents = [], metaConsequentNode = metaConsequentNodeQuery(metatheoremNode), metaConsequentVerified = (0, _metaConsequent.default)(metaConsequentNode, metaConsequents, localMetaContext);
34
+ if (metaConsequentVerified) {
35
+ var metaproofNode = metaproofNodeQuery(metatheoremNode), firstMetaConsequent = (0, _array.first)(metaConsequents), metaConsequent = firstMetaConsequent, metaproofVerified = (0, _metaproof.default)(metaproofNode, metaConsequent, localMetaContext);
36
+ if (metaproofVerified) {
37
+ var metatheorem = _metatheorem.default.fromLabelsMetaSuppositionsMetaConsequentAndLocalMetaContext(labels, metaSuppositions, metaConsequent, localMetaContext);
38
+ fileContext.addMetatheorem(metatheorem);
39
+ metatheoremVerified = true;
40
+ }
41
+ }
42
+ }
43
+ }
44
+ if (metatheoremVerified) {
45
+ fileContext.debug("...verified the '".concat(labelsString, "' metatheorem."), metatheoremNode);
46
+ }
47
+ return metatheoremVerified;
48
+ }
49
+
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXRoZW9yZW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBNZXRhdGhlb3JlbSBmcm9tIFwiLi4vbWV0YXRoZW9yZW1cIjtcbmltcG9ydCB2ZXJpZnlMYWJlbHMgZnJvbSBcIi4uL3ZlcmlmeS9sYWJlbHNcIjtcbmltcG9ydCB2ZXJpZnlNZXRhcHJvb2YgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhcHJvb2ZcIjtcbmltcG9ydCBMb2NhbE1ldGFDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xvY2FsTWV0YVwiO1xuaW1wb3J0IHZlcmlmeU1ldGFDb25zZXF1ZW50IGZyb20gXCIuLi92ZXJpZnkvbWV0YUNvbnNlcXVlbnRcIjtcbmltcG9ydCB2ZXJpZnlNZXRhU3VwcG9zaXRpb25zIGZyb20gXCIuLi92ZXJpZnkvbWV0YVN1cHBvc2l0aW9uc1wiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgbGFiZWxOb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9tZXRhdGhlb3JlbS8vbGFiZWxzL2xhYmVsXCIpLFxuICAgICAgbWV0YXByb29mTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF0aGVvcmVtL21ldGFwcm9vZiFcIiksXG4gICAgICBtZXRhQ29uc2VxdWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdGhlb3JlbS9tZXRhQ29uc2VxdWVudCFcIiksXG4gICAgICBtZXRhU3VwcG9zaXRpb25zTm9kZVF1ZXJ5ID0gbm9kZXNRdWVyeShcIi9tZXRhdGhlb3JlbS9tZXRhU3VwcG9zaXRpb25cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeU1ldGF0aGVvcmVtKG1ldGF0aGVvcmVtTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IG1ldGF0aGVvcmVtVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBsYWJlbE5vZGVzID0gbGFiZWxOb2Rlc1F1ZXJ5KG1ldGF0aGVvcmVtTm9kZSksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVzQXNTdHJpbmcobGFiZWxOb2RlcyksXG4gICAgICAgIGxvY2FsTWV0YUNvbnRleHQgPSBMb2NhbE1ldGFDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bGFiZWxzU3RyaW5nfScgbWV0YXRoZW9yZW0uLi5gLCBtZXRhdGhlb3JlbU5vZGUpO1xuXG4gIGNvbnN0IGxhYmVscyA9IFtdLFxuICAgICAgICBsYWJlbHNWZXJpZmllZCA9IHZlcmlmeUxhYmVscyhsYWJlbE5vZGVzLCBsYWJlbHMsIGZpbGVDb250ZXh0KTtcblxuICBpZiAobGFiZWxzVmVyaWZpZWQpIHtcbiAgICBjb25zdCBtZXRhU3VwcG9zaXRpb25zID0gW10sXG4gICAgICAgICAgbWV0YVN1cHBvc2l0aW9uTm9kZXMgPSBtZXRhU3VwcG9zaXRpb25zTm9kZVF1ZXJ5KG1ldGF0aGVvcmVtTm9kZSksXG4gICAgICAgICAgbWV0YVN1cHBvc2l0aW9uc1ZlcmlmaWVkID0gdmVyaWZ5TWV0YVN1cHBvc2l0aW9ucyhtZXRhU3VwcG9zaXRpb25Ob2RlcywgbWV0YVN1cHBvc2l0aW9ucywgbG9jYWxNZXRhQ29udGV4dCk7XG5cbiAgICBpZiAobWV0YVN1cHBvc2l0aW9uc1ZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBtZXRhQ29uc2VxdWVudHMgPSBbXSxcbiAgICAgICAgICAgIG1ldGFDb25zZXF1ZW50Tm9kZSA9IG1ldGFDb25zZXF1ZW50Tm9kZVF1ZXJ5KG1ldGF0aGVvcmVtTm9kZSksXG4gICAgICAgICAgICBtZXRhQ29uc2VxdWVudFZlcmlmaWVkID0gdmVyaWZ5TWV0YUNvbnNlcXVlbnQobWV0YUNvbnNlcXVlbnROb2RlLCBtZXRhQ29uc2VxdWVudHMsIGxvY2FsTWV0YUNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YUNvbnNlcXVlbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBtZXRhcHJvb2ZOb2RlID0gbWV0YXByb29mTm9kZVF1ZXJ5KG1ldGF0aGVvcmVtTm9kZSksXG4gICAgICAgICAgICAgIGZpcnN0TWV0YUNvbnNlcXVlbnQgPSBmaXJzdChtZXRhQ29uc2VxdWVudHMpLFxuICAgICAgICAgICAgICBtZXRhQ29uc2VxdWVudCA9IGZpcnN0TWV0YUNvbnNlcXVlbnQsIC8vL1xuICAgICAgICAgICAgICBtZXRhcHJvb2ZWZXJpZmllZCA9IHZlcmlmeU1ldGFwcm9vZihtZXRhcHJvb2ZOb2RlLCBtZXRhQ29uc2VxdWVudCwgbG9jYWxNZXRhQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKG1ldGFwcm9vZlZlcmlmaWVkKSB7XG4gICAgICAgICAgY29uc3QgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tTGFiZWxzTWV0YVN1cHBvc2l0aW9uc01ldGFDb25zZXF1ZW50QW5kTG9jYWxNZXRhQ29udGV4dChsYWJlbHMsIG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFDb25zZXF1ZW50LCBsb2NhbE1ldGFDb250ZXh0KTtcblxuICAgICAgICAgIGZpbGVDb250ZXh0LmFkZE1ldGF0aGVvcmVtKG1ldGF0aGVvcmVtKTtcblxuICAgICAgICAgIG1ldGF0aGVvcmVtVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG1ldGF0aGVvcmVtVmVyaWZpZWQpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2xhYmVsc1N0cmluZ30nIG1ldGF0aGVvcmVtLmAsIG1ldGF0aGVvcmVtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gbWV0YXRoZW9yZW1WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhdGhlb3JlbSIsImxhYmVsTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJtZXRhcHJvb2ZOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJtZXRhQ29uc2VxdWVudE5vZGVRdWVyeSIsIm1ldGFTdXBwb3NpdGlvbnNOb2RlUXVlcnkiLCJtZXRhdGhlb3JlbU5vZGUiLCJmaWxlQ29udGV4dCIsIm1ldGF0aGVvcmVtVmVyaWZpZWQiLCJsYWJlbE5vZGVzIiwibGFiZWxzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsImxvY2FsTWV0YUNvbnRleHQiLCJMb2NhbE1ldGFDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0IiwidHJhY2UiLCJsYWJlbHMiLCJsYWJlbHNWZXJpZmllZCIsInZlcmlmeUxhYmVscyIsIm1ldGFTdXBwb3NpdGlvbnMiLCJtZXRhU3VwcG9zaXRpb25Ob2RlcyIsIm1ldGFTdXBwb3NpdGlvbnNWZXJpZmllZCIsInZlcmlmeU1ldGFTdXBwb3NpdGlvbnMiLCJtZXRhQ29uc2VxdWVudHMiLCJtZXRhQ29uc2VxdWVudE5vZGUiLCJtZXRhQ29uc2VxdWVudFZlcmlmaWVkIiwidmVyaWZ5TWV0YUNvbnNlcXVlbnQiLCJtZXRhcHJvb2ZOb2RlIiwiZmlyc3RNZXRhQ29uc2VxdWVudCIsImZpcnN0IiwibWV0YUNvbnNlcXVlbnQiLCJtZXRhcHJvb2ZWZXJpZmllZCIsInZlcmlmeU1ldGFwcm9vZiIsIm1ldGF0aGVvcmVtIiwiTWV0YXRoZW9yZW0iLCJmcm9tTGFiZWxzTWV0YVN1cHBvc2l0aW9uc01ldGFDb25zZXF1ZW50QW5kTG9jYWxNZXRhQ29udGV4dCIsImFkZE1ldGF0aGVvcmVtIiwiZGVidWciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQXdCQTs7O2tFQWZBOzZEQUNDO2dFQUNHO2dFQUNDO3FFQUNJO3VFQUNFO3FCQUViO3FCQUNnQjs7Ozs7O0FBRXRDLElBQU1DLGtCQUFrQkMsSUFBQUEsaUJBQVUsRUFBQywrQkFDN0JDLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQyw0QkFDL0JDLDBCQUEwQkQsSUFBQUEsZ0JBQVMsRUFBQyxpQ0FDcENFLDRCQUE0QkosSUFBQUEsaUJBQVUsRUFBQztBQUU5QixTQUFTRixrQkFBa0JPLGVBQWUsRUFBRUMsV0FBVztJQUNwRSxJQUFJQyxzQkFBc0I7SUFFMUIsSUFBTUMsYUFBYVQsZ0JBQWdCTSxrQkFDN0JJLGVBQWVILFlBQVlJLGFBQWEsQ0FBQ0YsYUFDekNHLG1CQUFtQkMsa0JBQWdCLENBQUNDLGVBQWUsQ0FBQ1A7SUFFMURBLFlBQVlRLEtBQUssQ0FBQyxBQUFDLGtCQUE4QixPQUFiTCxjQUFhLHFCQUFtQko7SUFFcEUsSUFBTVUsU0FBUyxFQUFFLEVBQ1hDLGlCQUFpQkMsSUFBQUEsZUFBWSxFQUFDVCxZQUFZTyxRQUFRVDtJQUV4RCxJQUFJVSxnQkFBZ0I7UUFDbEIsSUFBTUUsbUJBQW1CLEVBQUUsRUFDckJDLHVCQUF1QmYsMEJBQTBCQyxrQkFDakRlLDJCQUEyQkMsSUFBQUEseUJBQXNCLEVBQUNGLHNCQUFzQkQsa0JBQWtCUDtRQUVoRyxJQUFJUywwQkFBMEI7WUFDNUIsSUFBTUUsa0JBQWtCLEVBQUUsRUFDcEJDLHFCQUFxQnBCLHdCQUF3QkUsa0JBQzdDbUIseUJBQXlCQyxJQUFBQSx1QkFBb0IsRUFBQ0Ysb0JBQW9CRCxpQkFBaUJYO1lBRXpGLElBQUlhLHdCQUF3QjtnQkFDMUIsSUFBTUUsZ0JBQWdCekIsbUJBQW1CSSxrQkFDbkNzQixzQkFBc0JDLElBQUFBLFlBQUssRUFBQ04sa0JBQzVCTyxpQkFBaUJGLHFCQUNqQkcsb0JBQW9CQyxJQUFBQSxrQkFBZSxFQUFDTCxlQUFlRyxnQkFBZ0JsQjtnQkFFekUsSUFBSW1CLG1CQUFtQjtvQkFDckIsSUFBTUUsY0FBY0Msb0JBQVcsQ0FBQ0MsMkRBQTJELENBQUNuQixRQUFRRyxrQkFBa0JXLGdCQUFnQmxCO29CQUV0SUwsWUFBWTZCLGNBQWMsQ0FBQ0g7b0JBRTNCekIsc0JBQXNCO2dCQUN4QjtZQUNGO1FBQ0Y7SUFDRjtJQUVBLElBQUlBLHFCQUFxQjtRQUN2QkQsWUFBWThCLEtBQUssQ0FBQyxBQUFDLG9CQUFnQyxPQUFiM0IsY0FBYSxtQkFBaUJKO0lBQ3RFO0lBRUEsT0FBT0U7QUFDVCJ9
@@ -18,12 +18,14 @@ _export(exports, {
18
18
  });
19
19
  var _metavariable = /*#__PURE__*/ _interop_require_default(require("../metavariable"));
20
20
  var _metavariable1 = /*#__PURE__*/ _interop_require_default(require("../assignment/metavariable"));
21
+ var _givenMetavariable = /*#__PURE__*/ _interop_require_default(require("../verify/givenMetavariable"));
21
22
  var _query = require("../utilities/query");
22
23
  function _interop_require_default(obj) {
23
24
  return obj && obj.__esModule ? obj : {
24
25
  default: obj
25
26
  };
26
27
  }
28
+ var typeNodeQuery = (0, _query.nodeQuery)("/argument/type"), argumentNodeQuery = (0, _query.nodeQuery)("/metavariable/argument!");
27
29
  function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
28
30
  var metavariableVerified = false;
29
31
  var metavariableString = fileContext.nodeAsString(metavariableNode);
@@ -32,9 +34,12 @@ function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
32
34
  if (metavariablePresent) {
33
35
  fileContext.debug("The metavariable '".concat(metavariableString, "' is already present."), metavariableNode);
34
36
  } else {
35
- var metaTypeName = (0, _query.metaTypeNameFromMetaTypeNode)(metaTypeNode), metaType = fileContext.findMetaTypeByMetaTypeName(metaTypeName), metavariable = _metavariable.default.fromMetavariableNodeAndMetaType(metavariableNode, metaType), metavariableAssignment = _metavariable1.default.fromMetavariable(metavariable), metavariableAssigned = metavariableAssignment.assign(fileContext);
36
- if (metavariableAssigned) {
37
- metavariableVerified = true;
37
+ var argumentNode = argumentNodeQuery(metavariableNode), argumentVerified = verifyArgument(metavariableNode, argumentNode, fileContext);
38
+ if (argumentVerified) {
39
+ var metaType = fileContext.findMetaTypeByMetaTypeNode(metaTypeNode), metavariable = _metavariable.default.fromMetavariableNodeAndMetaType(metavariableNode, metaType), metavariableAssignment = _metavariable1.default.fromMetavariable(metavariable), metavariableAssigned = metavariableAssignment.assign(fileContext);
40
+ if (metavariableAssigned) {
41
+ metavariableVerified = true;
42
+ }
38
43
  }
39
44
  }
40
45
  if (metavariableVerified) {
@@ -43,18 +48,33 @@ function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
43
48
  return metavariableVerified;
44
49
  }
45
50
  function verifyStandaloneMetavariable(metavariableNode, localMetaContext, verifyAhead) {
46
- var standaloneMetavariableVerified = false;
51
+ var standaloneMetavariableVerified;
47
52
  var metavariableString = localMetaContext.nodeAsString(metavariableNode);
48
53
  localMetaContext.trace("Verifying the '".concat(metavariableString, "' standalone metavariable..."), metavariableNode);
49
- var metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode);
50
- if (metavariablePresent) {
51
- var verifiedAhead = verifyAhead();
52
- standaloneMetavariableVerified = verifiedAhead; ///
53
- }
54
+ var metavariables = [], givenMetavariableVerified = (0, _givenMetavariable.default)(metavariableNode, metavariables, localMetaContext, verifyAhead);
55
+ standaloneMetavariableVerified = givenMetavariableVerified; ///
54
56
  if (standaloneMetavariableVerified) {
55
57
  localMetaContext.debug("...verified the '".concat(metavariableString, "' standalone metavariable."), metavariableNode);
56
58
  }
57
59
  return standaloneMetavariableVerified;
58
60
  }
61
+ function verifyArgument(metavariableNode, argumentNode, fileContext) {
62
+ var argumentVerified = false;
63
+ if (argumentNode === null) {
64
+ argumentVerified = true;
65
+ } else {
66
+ var typeNode = typeNodeQuery(argumentNode);
67
+ if (typeNode !== null) {
68
+ var type = fileContext.findTypeByTypeNode(typeNode);
69
+ if (type !== null) {
70
+ argumentVerified = true;
71
+ } else {
72
+ var typeString = fileContext.nodeAsString(typeNode), metavariableString = fileContext.nodeAsString(metavariableNode);
73
+ fileContext.debug("The '".concat(metavariableString, "' metavariable's '").concat(typeString, "' type is not present."), metavariableNode);
74
+ }
75
+ }
76
+ }
77
+ return argumentVerified;
78
+ }
59
79
 
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXZhcmlhYmxlIGZyb20gXCIuLi9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCBNZXRhdmFyaWFibGVBc3NpZ25tZW50IGZyb20gXCIuLi9hc3NpZ25tZW50L21ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YVR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgbWV0YXZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgbWV0YXZhcmlhYmxlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGlzIGFscmVhZHkgcHJlc2VudC5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlKG1ldGFUeXBlTm9kZSksXG4gICAgICAgICAgbWV0YVR5cGUgPSBmaWxlQ29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZUFuZE1ldGFUeXBlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFUeXBlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVBc3NpZ25tZW50ID0gTWV0YXZhcmlhYmxlQXNzaWdubWVudC5mcm9tTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlQXNzaWduZWQgPSBtZXRhdmFyaWFibGVBc3NpZ25tZW50LmFzc2lnbihmaWxlQ29udGV4dCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlQXNzaWduZWQpIHtcbiAgICAgIG1ldGF2YXJpYWJsZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZWQpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVN0YW5kYWxvbmVNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsTWV0YUNvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGxvY2FsTWV0YUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgc3RhbmRhbG9uZSBtZXRhdmFyaWFibGUuLi5gLCBtZXRhdmFyaWFibGVOb2RlKTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVQcmVzZW50ID0gbG9jYWxNZXRhQ29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgIHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCA9IHZlcmlmaWVkQWhlYWQ7IC8vL1xuICB9XG5cbiAgaWYgKHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCkge1xuICAgIGxvY2FsTWV0YUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBzdGFuZGFsb25lIG1ldGF2YXJpYWJsZS5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5TWV0YXZhcmlhYmxlIiwidmVyaWZ5U3RhbmRhbG9uZU1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhVHlwZU5vZGUiLCJmaWxlQ29udGV4dCIsIm1ldGF2YXJpYWJsZVZlcmlmaWVkIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwiZGVidWciLCJtZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWVGcm9tTWV0YVR5cGVOb2RlIiwibWV0YVR5cGUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsImZyb21NZXRhdmFyaWFibGVOb2RlQW5kTWV0YVR5cGUiLCJtZXRhdmFyaWFibGVBc3NpZ25tZW50IiwiTWV0YXZhcmlhYmxlQXNzaWdubWVudCIsImZyb21NZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVBc3NpZ25lZCIsImFzc2lnbiIsImxvY2FsTWV0YUNvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsInN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCIsInZlcmlmaWVkQWhlYWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQU9BLE9BNEJDO2VBNUJ1QkE7O0lBOEJSQyw0QkFBNEI7ZUFBNUJBOzs7bUVBbkNTO29FQUNVO3FCQUVVOzs7Ozs7QUFFOUIsU0FBU0QsbUJBQW1CRSxnQkFBZ0IsRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQ3BGLElBQUlDLHVCQUF1QjtJQUUzQixJQUFNQyxxQkFBcUJGLFlBQVlHLFlBQVksQ0FBQ0w7SUFFcERFLFlBQVlJLEtBQUssQ0FBQyxBQUFDLGtCQUFvQyxPQUFuQkYsb0JBQW1CLHNCQUFvQko7SUFFM0UsSUFBTU8sc0JBQXNCTCxZQUFZTSx1Q0FBdUMsQ0FBQ1I7SUFFaEYsSUFBSU8scUJBQXFCO1FBQ3ZCTCxZQUFZTyxLQUFLLENBQUMsQUFBQyxxQkFBdUMsT0FBbkJMLG9CQUFtQiwwQkFBd0JKO0lBQ3BGLE9BQU87UUFDTCxJQUFNVSxlQUFlQyxJQUFBQSxtQ0FBNEIsRUFBQ1YsZUFDNUNXLFdBQVdWLFlBQVlXLDBCQUEwQixDQUFDSCxlQUNsREksZUFBZUMscUJBQVksQ0FBQ0MsK0JBQStCLENBQUNoQixrQkFBa0JZLFdBQzlFSyx5QkFBeUJDLHNCQUFzQixDQUFDQyxnQkFBZ0IsQ0FBQ0wsZUFDakVNLHVCQUF1QkgsdUJBQXVCSSxNQUFNLENBQUNuQjtRQUUzRCxJQUFJa0Isc0JBQXNCO1lBQ3hCakIsdUJBQXVCO1FBQ3pCO0lBQ0Y7SUFFQSxJQUFJQSxzQkFBc0I7UUFDeEJELFlBQVlPLEtBQUssQ0FBQyxBQUFDLG9CQUFzQyxPQUFuQkwsb0JBQW1CLG9CQUFrQko7SUFDN0U7SUFFQSxPQUFPRztBQUNUO0FBRU8sU0FBU0osNkJBQTZCQyxnQkFBZ0IsRUFBRXNCLGdCQUFnQixFQUFFQyxXQUFXO0lBQzFGLElBQUlDLGlDQUFpQztJQUVyQyxJQUFNcEIscUJBQXFCa0IsaUJBQWlCakIsWUFBWSxDQUFDTDtJQUV6RHNCLGlCQUFpQmhCLEtBQUssQ0FBQyxBQUFDLGtCQUFvQyxPQUFuQkYsb0JBQW1CLGlDQUErQko7SUFFM0YsSUFBTU8sc0JBQXNCZSxpQkFBaUJkLHVDQUF1QyxDQUFDUjtJQUVyRixJQUFJTyxxQkFBcUI7UUFDdkIsSUFBTWtCLGdCQUFnQkY7UUFFdEJDLGlDQUFpQ0MsZUFBZSxHQUFHO0lBQ3JEO0lBRUEsSUFBSUQsZ0NBQWdDO1FBQ2xDRixpQkFBaUJiLEtBQUssQ0FBQyxBQUFDLG9CQUFzQyxPQUFuQkwsb0JBQW1CLCtCQUE2Qko7SUFDN0Y7SUFFQSxPQUFPd0I7QUFDVCJ9
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXZhcmlhYmxlIGZyb20gXCIuLi9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCBNZXRhdmFyaWFibGVBc3NpZ25tZW50IGZyb20gXCIuLi9hc3NpZ25tZW50L21ldGF2YXJpYWJsZVwiO1xuaW1wb3J0IHZlcmlmeUdpdmVuTWV0YXZhcmlhYmxlIGZyb20gXCIuLi92ZXJpZnkvZ2l2ZW5NZXRhdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3R5cGVcIiksXG4gICAgICBhcmd1bWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdmFyaWFibGUvYXJndW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YVR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgbWV0YXZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgbWV0YXZhcmlhYmxlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGlzIGFscmVhZHkgcHJlc2VudC5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhcmd1bWVudE5vZGUgPSBhcmd1bWVudE5vZGVRdWVyeShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBhcmd1bWVudFZlcmlmaWVkID0gdmVyaWZ5QXJndW1lbnQobWV0YXZhcmlhYmxlTm9kZSwgYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICBpZiAoYXJndW1lbnRWZXJpZmllZCkge1xuICAgICAgY29uc3QgbWV0YVR5cGUgPSBmaWxlQ29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21NZXRhdmFyaWFibGVOb2RlQW5kTWV0YVR5cGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YVR5cGUpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQXNzaWdubWVudCA9IE1ldGF2YXJpYWJsZUFzc2lnbm1lbnQuZnJvbU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQXNzaWduZWQgPSBtZXRhdmFyaWFibGVBc3NpZ25tZW50LmFzc2lnbihmaWxlQ29udGV4dCk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVBc3NpZ25lZCkge1xuICAgICAgICBtZXRhdmFyaWFibGVWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVZlcmlmaWVkKSB7XG4gICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gbWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTdGFuZGFsb25lTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxNZXRhQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgbG9jYWxNZXRhQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBzdGFuZGFsb25lIG1ldGF2YXJpYWJsZS4uLmAsIG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgZ2l2ZW5NZXRhdmFyaWFibGVWZXJpZmllZCA9IHZlcmlmeUdpdmVuTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGF2YXJpYWJsZXMsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQgPSBnaXZlbk1ldGF2YXJpYWJsZVZlcmlmaWVkOyAvLy9cblxuICBpZiAoc3RhbmRhbG9uZU1ldGF2YXJpYWJsZVZlcmlmaWVkKSB7XG4gICAgbG9jYWxNZXRhQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHN0YW5kYWxvbmUgbWV0YXZhcmlhYmxlLmAsIG1ldGF2YXJpYWJsZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXJndW1lbnQobWV0YXZhcmlhYmxlTm9kZSwgYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgYXJndW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmIChhcmd1bWVudE5vZGUgPT09IG51bGwpIHtcbiAgICBhcmd1bWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkoYXJndW1lbnROb2RlKTtcblxuICAgIGlmICh0eXBlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgIGFyZ3VtZW50VmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdHlwZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlTm9kZSksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgVGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSdzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmAsIG1ldGF2YXJpYWJsZU5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmd1bWVudFZlcmlmaWVkO1xufSJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhdmFyaWFibGUiLCJ2ZXJpZnlTdGFuZGFsb25lTWV0YXZhcmlhYmxlIiwidHlwZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImFyZ3VtZW50Tm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGFUeXBlTm9kZSIsImZpbGVDb250ZXh0IiwibWV0YXZhcmlhYmxlVmVyaWZpZWQiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJkZWJ1ZyIsImFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50VmVyaWZpZWQiLCJ2ZXJpZnlBcmd1bWVudCIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5vZGUiLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJmcm9tTWV0YXZhcmlhYmxlTm9kZUFuZE1ldGFUeXBlIiwibWV0YXZhcmlhYmxlQXNzaWdubWVudCIsIk1ldGF2YXJpYWJsZUFzc2lnbm1lbnQiLCJmcm9tTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlQXNzaWduZWQiLCJhc3NpZ24iLCJsb2NhbE1ldGFDb250ZXh0IiwidmVyaWZ5QWhlYWQiLCJzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQiLCJtZXRhdmFyaWFibGVzIiwiZ2l2ZW5NZXRhdmFyaWFibGVWZXJpZmllZCIsInZlcmlmeUdpdmVuTWV0YXZhcmlhYmxlIiwidHlwZU5vZGUiLCJ0eXBlIiwiZmluZFR5cGVCeVR5cGVOb2RlIiwidHlwZVN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBV0EsT0FnQ0M7ZUFoQ3VCQTs7SUFrQ1JDLDRCQUE0QjtlQUE1QkE7OzttRUEzQ1M7b0VBQ1U7d0VBQ0M7cUJBRVY7Ozs7OztBQUUxQixJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsbUJBQzFCQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUM7QUFFckIsU0FBU0gsbUJBQW1CSyxnQkFBZ0IsRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQ3BGLElBQUlDLHVCQUF1QjtJQUUzQixJQUFNQyxxQkFBcUJGLFlBQVlHLFlBQVksQ0FBQ0w7SUFFcERFLFlBQVlJLEtBQUssQ0FBQyxBQUFDLGtCQUFvQyxPQUFuQkYsb0JBQW1CLHNCQUFvQko7SUFFM0UsSUFBTU8sc0JBQXNCTCxZQUFZTSx1Q0FBdUMsQ0FBQ1I7SUFFaEYsSUFBSU8scUJBQXFCO1FBQ3ZCTCxZQUFZTyxLQUFLLENBQUMsQUFBQyxxQkFBdUMsT0FBbkJMLG9CQUFtQiwwQkFBd0JKO0lBQ3BGLE9BQU87UUFDTCxJQUFNVSxlQUFlWCxrQkFBa0JDLG1CQUNqQ1csbUJBQW1CQyxlQUFlWixrQkFBa0JVLGNBQWNSO1FBRXhFLElBQUlTLGtCQUFrQjtZQUNwQixJQUFNRSxXQUFXWCxZQUFZWSwwQkFBMEIsQ0FBQ2IsZUFDbERjLGVBQWVDLHFCQUFZLENBQUNDLCtCQUErQixDQUFDakIsa0JBQWtCYSxXQUM5RUsseUJBQXlCQyxzQkFBc0IsQ0FBQ0MsZ0JBQWdCLENBQUNMLGVBQ2pFTSx1QkFBdUJILHVCQUF1QkksTUFBTSxDQUFDcEI7WUFFM0QsSUFBSW1CLHNCQUFzQjtnQkFDeEJsQix1QkFBdUI7WUFDekI7UUFDRjtJQUNGO0lBRUEsSUFBSUEsc0JBQXNCO1FBQ3hCRCxZQUFZTyxLQUFLLENBQUMsQUFBQyxvQkFBc0MsT0FBbkJMLG9CQUFtQixvQkFBa0JKO0lBQzdFO0lBRUEsT0FBT0c7QUFDVDtBQUVPLFNBQVNQLDZCQUE2QkksZ0JBQWdCLEVBQUV1QixnQkFBZ0IsRUFBRUMsV0FBVztJQUMxRixJQUFJQztJQUVKLElBQU1yQixxQkFBcUJtQixpQkFBaUJsQixZQUFZLENBQUNMO0lBRXpEdUIsaUJBQWlCakIsS0FBSyxDQUFDLEFBQUMsa0JBQW9DLE9BQW5CRixvQkFBbUIsaUNBQStCSjtJQUUzRixJQUFNMEIsZ0JBQWdCLEVBQUUsRUFDbEJDLDRCQUE0QkMsSUFBQUEsMEJBQXVCLEVBQUM1QixrQkFBa0IwQixlQUFlSCxrQkFBa0JDO0lBRTdHQyxpQ0FBaUNFLDJCQUEyQixHQUFHO0lBRS9ELElBQUlGLGdDQUFnQztRQUNsQ0YsaUJBQWlCZCxLQUFLLENBQUMsQUFBQyxvQkFBc0MsT0FBbkJMLG9CQUFtQiwrQkFBNkJKO0lBQzdGO0lBRUEsT0FBT3lCO0FBQ1Q7QUFFQSxTQUFTYixlQUFlWixnQkFBZ0IsRUFBRVUsWUFBWSxFQUFFUixXQUFXO0lBQ2pFLElBQUlTLG1CQUFtQjtJQUV2QixJQUFJRCxpQkFBaUIsTUFBTTtRQUN6QkMsbUJBQW1CO0lBQ3JCLE9BQU87UUFDTCxJQUFNa0IsV0FBV2hDLGNBQWNhO1FBRS9CLElBQUltQixhQUFhLE1BQU07WUFDckIsSUFBTUMsT0FBTzVCLFlBQVk2QixrQkFBa0IsQ0FBQ0Y7WUFFNUMsSUFBSUMsU0FBUyxNQUFNO2dCQUNqQm5CLG1CQUFtQjtZQUNyQixPQUFPO2dCQUNMLElBQU1xQixhQUFhOUIsWUFBWUcsWUFBWSxDQUFDd0IsV0FDdEN6QixxQkFBcUJGLFlBQVlHLFlBQVksQ0FBQ0w7Z0JBRXBERSxZQUFZTyxLQUFLLENBQUMsQUFBQyxRQUE4Q3VCLE9BQXZDNUIsb0JBQW1CLHNCQUErQixPQUFYNEIsWUFBVywyQkFBeUJoQztZQUN2RztRQUNGO0lBQ0Y7SUFFQSxPQUFPVztBQUNUIn0=
@@ -24,11 +24,11 @@ function verifyProof(proofNode, conclusion, localContext) {
24
24
  if (derivationVerified) {
25
25
  var lastProofStep = localContext.getLastProofStep();
26
26
  if (lastProofStep !== null) {
27
- var proofStep = lastProofStep, statementNode = proofStep.getStatementNode(), conclusionStatementNode = conclusion.getStatementNode(), statementNodeMatchConclusionStatementNode = statementNode.match(conclusionStatementNode);
28
- proofVerified = statementNodeMatchConclusionStatementNode; ///
27
+ var proofStep = lastProofStep, statementNode = proofStep.getStatementNode(), conclusionStatementNode = conclusion.getStatementNode(), statementNodeMatchesConclusionStatementNode = statementNode.match(conclusionStatementNode);
28
+ proofVerified = statementNodeMatchesConclusionStatementNode; ///
29
29
  }
30
30
  }
31
31
  return proofVerified;
32
32
  }
33
33
 
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBMb2NhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbG9jYWxcIjtcbmltcG9ydCB2ZXJpZnlEZXJpdmF0aW9uIGZyb20gXCIuLi92ZXJpZnkvZGVyaXZhdGlvblwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGRlcml2YXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcHJvb2YvZGVyaXZhdGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVByb29mKHByb29mTm9kZSwgY29uY2x1c2lvbiwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBwcm9vZlZlcmlmaWVkID0gZmFsc2U7XG5cbiAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21Mb2NhbENvbnRleHQobG9jYWxDb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgZGVyaXZhdGlvbk5vZGUgPSBkZXJpdmF0aW9uTm9kZVF1ZXJ5KHByb29mTm9kZSksXG4gICAgICAgIGRlcml2YXRpb25WZXJpZmllZCA9IHZlcmlmeURlcml2YXRpb24oZGVyaXZhdGlvbk5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKGRlcml2YXRpb25WZXJpZmllZCkge1xuICAgIGNvbnN0IGxhc3RQcm9vZlN0ZXAgPSBsb2NhbENvbnRleHQuZ2V0TGFzdFByb29mU3RlcCgpO1xuXG4gICAgaWYgKGxhc3RQcm9vZlN0ZXAgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb29mU3RlcCA9IGxhc3RQcm9vZlN0ZXAsIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHByb29mU3RlcC5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgICBjb25jbHVzaW9uU3RhdGVtZW50Tm9kZSA9IGNvbmNsdXNpb24uZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoQ29uY2x1c2lvblN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlLm1hdGNoKGNvbmNsdXNpb25TdGF0ZW1lbnROb2RlKTtcblxuICAgICAgcHJvb2ZWZXJpZmllZCA9IHN0YXRlbWVudE5vZGVNYXRjaENvbmNsdXNpb25TdGF0ZW1lbnROb2RlOyAgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb29mVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UHJvb2YiLCJkZXJpdmF0aW9uTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwicHJvb2ZOb2RlIiwiY29uY2x1c2lvbiIsImxvY2FsQ29udGV4dCIsInByb29mVmVyaWZpZWQiLCJMb2NhbENvbnRleHQiLCJmcm9tTG9jYWxDb250ZXh0IiwiZGVyaXZhdGlvbk5vZGUiLCJkZXJpdmF0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlEZXJpdmF0aW9uIiwibGFzdFByb29mU3RlcCIsImdldExhc3RQcm9vZlN0ZXAiLCJwcm9vZlN0ZXAiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImNvbmNsdXNpb25TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZU1hdGNoQ29uY2x1c2lvblN0YXRlbWVudE5vZGUiLCJtYXRjaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUF3QkE7Ozs0REFQQztpRUFDSTtxQkFFSDs7Ozs7O0FBRTFCLElBQU1DLHNCQUFzQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUV2QixTQUFTRixZQUFZRyxTQUFTLEVBQUVDLFVBQVUsRUFBRUMsWUFBWTtJQUNyRSxJQUFJQyxnQkFBZ0I7SUFFcEJELGVBQWVFLGNBQVksQ0FBQ0MsZ0JBQWdCLENBQUNILGVBQWUsR0FBRztJQUUvRCxJQUFNSSxpQkFBaUJSLG9CQUFvQkUsWUFDckNPLHFCQUFxQkMsSUFBQUEsbUJBQWdCLEVBQUNGLGdCQUFnQko7SUFFNUQsSUFBSUssb0JBQW9CO1FBQ3RCLElBQU1FLGdCQUFnQlAsYUFBYVEsZ0JBQWdCO1FBRW5ELElBQUlELGtCQUFrQixNQUFNO1lBQzFCLElBQU1FLFlBQVlGLGVBQ1pHLGdCQUFnQkQsVUFBVUUsZ0JBQWdCLElBQzFDQywwQkFBMEJiLFdBQVdZLGdCQUFnQixJQUNyREUsNENBQTRDSCxjQUFjSSxLQUFLLENBQUNGO1lBRXRFWCxnQkFBZ0JZLDJDQUE0QyxHQUFHO1FBQ2pFO0lBQ0Y7SUFFQSxPQUFPWjtBQUNUIn0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBMb2NhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbG9jYWxcIjtcbmltcG9ydCB2ZXJpZnlEZXJpdmF0aW9uIGZyb20gXCIuLi92ZXJpZnkvZGVyaXZhdGlvblwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGRlcml2YXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcHJvb2YvZGVyaXZhdGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVByb29mKHByb29mTm9kZSwgY29uY2x1c2lvbiwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBwcm9vZlZlcmlmaWVkID0gZmFsc2U7XG5cbiAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21Mb2NhbENvbnRleHQobG9jYWxDb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgZGVyaXZhdGlvbk5vZGUgPSBkZXJpdmF0aW9uTm9kZVF1ZXJ5KHByb29mTm9kZSksXG4gICAgICAgIGRlcml2YXRpb25WZXJpZmllZCA9IHZlcmlmeURlcml2YXRpb24oZGVyaXZhdGlvbk5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKGRlcml2YXRpb25WZXJpZmllZCkge1xuICAgIGNvbnN0IGxhc3RQcm9vZlN0ZXAgPSBsb2NhbENvbnRleHQuZ2V0TGFzdFByb29mU3RlcCgpO1xuXG4gICAgaWYgKGxhc3RQcm9vZlN0ZXAgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb29mU3RlcCA9IGxhc3RQcm9vZlN0ZXAsIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHByb29mU3RlcC5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgICBjb25jbHVzaW9uU3RhdGVtZW50Tm9kZSA9IGNvbmNsdXNpb24uZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoZXNDb25jbHVzaW9uU3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGUubWF0Y2goY29uY2x1c2lvblN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBwcm9vZlZlcmlmaWVkID0gc3RhdGVtZW50Tm9kZU1hdGNoZXNDb25jbHVzaW9uU3RhdGVtZW50Tm9kZTsgIC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9vZlZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVByb29mIiwiZGVyaXZhdGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInByb29mTm9kZSIsImNvbmNsdXNpb24iLCJsb2NhbENvbnRleHQiLCJwcm9vZlZlcmlmaWVkIiwiTG9jYWxDb250ZXh0IiwiZnJvbUxvY2FsQ29udGV4dCIsImRlcml2YXRpb25Ob2RlIiwiZGVyaXZhdGlvblZlcmlmaWVkIiwidmVyaWZ5RGVyaXZhdGlvbiIsImxhc3RQcm9vZlN0ZXAiLCJnZXRMYXN0UHJvb2ZTdGVwIiwicHJvb2ZTdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJjb25jbHVzaW9uU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzQ29uY2x1c2lvblN0YXRlbWVudE5vZGUiLCJtYXRjaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUF3QkE7Ozs0REFQQztpRUFDSTtxQkFFSDs7Ozs7O0FBRTFCLElBQU1DLHNCQUFzQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUV2QixTQUFTRixZQUFZRyxTQUFTLEVBQUVDLFVBQVUsRUFBRUMsWUFBWTtJQUNyRSxJQUFJQyxnQkFBZ0I7SUFFcEJELGVBQWVFLGNBQVksQ0FBQ0MsZ0JBQWdCLENBQUNILGVBQWUsR0FBRztJQUUvRCxJQUFNSSxpQkFBaUJSLG9CQUFvQkUsWUFDckNPLHFCQUFxQkMsSUFBQUEsbUJBQWdCLEVBQUNGLGdCQUFnQko7SUFFNUQsSUFBSUssb0JBQW9CO1FBQ3RCLElBQU1FLGdCQUFnQlAsYUFBYVEsZ0JBQWdCO1FBRW5ELElBQUlELGtCQUFrQixNQUFNO1lBQzFCLElBQU1FLFlBQVlGLGVBQ1pHLGdCQUFnQkQsVUFBVUUsZ0JBQWdCLElBQzFDQywwQkFBMEJiLFdBQVdZLGdCQUFnQixJQUNyREUsOENBQThDSCxjQUFjSSxLQUFLLENBQUNGO1lBRXhFWCxnQkFBZ0JZLDZDQUE4QyxHQUFHO1FBQ25FO0lBQ0Y7SUFFQSxPQUFPWjtBQUNUIn0=
@@ -23,7 +23,7 @@ function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived,
23
23
  if (statementNode !== null) {
24
24
  var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
25
25
  localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement..."), qualifiedStatementNode);
26
- var referenceNode = referenceNodeQuery(qualifiedStatementNode), referenceName = (0, _query.referenceNameFromReferenceNode)(referenceNode), verifyQualifiedStatementFunctions = [
26
+ var referenceNode = referenceNodeQuery(qualifiedStatementNode), verifyQualifiedStatementFunctions = [
27
27
  verifyQualifiedStatementAAgainstRule,
28
28
  verifyQualifiedStatementAAgainstAxiom,
29
29
  verifyQualifiedStatementAAgainstLemma,
@@ -31,7 +31,7 @@ function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived,
31
31
  verifyQualifiedStatementAAgainstConjecture
32
32
  ];
33
33
  qualifiedStatementVerified = verifyQualifiedStatementFunctions.some(function(verifyQualifiedStatementFunction) {
34
- var qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, referenceName, localContext);
34
+ var qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, referenceNode, localContext);
35
35
  if (qualifiedStatementVerified) {
36
36
  return true;
37
37
  }
@@ -58,72 +58,72 @@ function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived,
58
58
  }
59
59
  return qualifiedStatementVerified;
60
60
  }
61
- function verifyQualifiedStatementAAgainstRule(qualifiedStatementNode, referenceName, localContext) {
61
+ function verifyQualifiedStatementAAgainstRule(qualifiedStatementNode, referenceNode, localContext) {
62
62
  var qualifiedStatementVerifiedAgainstRule = false;
63
- var rule = localContext.findRuleByReferenceName(referenceName);
63
+ var rule = localContext.findRuleByReferenceNode(referenceNode);
64
64
  if (rule !== null) {
65
- var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
66
- localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' rule..."), statementNode);
65
+ var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
66
+ localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' rule..."), statementNode);
67
67
  var ruleMatchesStatement = rule.matchStatement(statementNode, statementLocalContext);
68
68
  qualifiedStatementVerifiedAgainstRule = ruleMatchesStatement; ///
69
69
  if (qualifiedStatementVerifiedAgainstRule) {
70
- localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' rule."), statementNode);
70
+ localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' rule."), statementNode);
71
71
  }
72
72
  }
73
73
  return qualifiedStatementVerifiedAgainstRule;
74
74
  }
75
- function verifyQualifiedStatementAAgainstAxiom(qualifiedStatementNode, referenceName, localContext) {
75
+ function verifyQualifiedStatementAAgainstAxiom(qualifiedStatementNode, referenceNode, localContext) {
76
76
  var qualifiedStatementVerifiedAgainstAxiom = false;
77
- var axiom = localContext.findAxiomByReferenceName(referenceName);
77
+ var axiom = localContext.findAxiomByReferenceNode(referenceNode);
78
78
  if (axiom !== null) {
79
- var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
80
- localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' axiom..."), statementNode);
79
+ var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
80
+ localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' axiom..."), statementNode);
81
81
  var axiomMatchesStatement = axiom.matchStatement(statementNode, statementLocalContext);
82
82
  qualifiedStatementVerifiedAgainstAxiom = axiomMatchesStatement; ///
83
83
  if (qualifiedStatementVerifiedAgainstAxiom) {
84
- localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' axiom."), statementNode);
84
+ localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' axiom."), statementNode);
85
85
  }
86
86
  }
87
87
  return qualifiedStatementVerifiedAgainstAxiom;
88
88
  }
89
- function verifyQualifiedStatementAAgainstLemma(qualifiedStatementNode, referenceName, localContext) {
89
+ function verifyQualifiedStatementAAgainstLemma(qualifiedStatementNode, referenceNode, localContext) {
90
90
  var qualifiedStatementVerifiedAgainstLemma = false;
91
- var lemma = localContext.findLemmaByReferenceName(referenceName);
91
+ var lemma = localContext.findLemmaByReferenceNode(referenceNode);
92
92
  if (lemma !== null) {
93
- var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
94
- localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' lemma..."), statementNode);
93
+ var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
94
+ localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' lemma..."), statementNode);
95
95
  var lemmaMatchesStatement = lemma.matchStatement(statementNode, statementLocalContext);
96
96
  qualifiedStatementVerifiedAgainstLemma = lemmaMatchesStatement; ///
97
97
  if (qualifiedStatementVerifiedAgainstLemma) {
98
- localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' lemma."), statementNode);
98
+ localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' lemma."), statementNode);
99
99
  }
100
100
  }
101
101
  return qualifiedStatementVerifiedAgainstLemma;
102
102
  }
103
- function verifyQualifiedStatementAAgainstTheorem(qualifiedStatementNode, referenceName, localContext) {
103
+ function verifyQualifiedStatementAAgainstTheorem(qualifiedStatementNode, referenceNode, localContext) {
104
104
  var qualifiedStatementVerifiedAgainstTheorem = false;
105
- var theorem = localContext.findTheoremByReferenceName(referenceName);
105
+ var theorem = localContext.findTheoremByReferenceNode(referenceNode);
106
106
  if (theorem !== null) {
107
- var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
108
- localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' theorem..."), statementNode);
107
+ var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
108
+ localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' theorem..."), statementNode);
109
109
  var theoremMatchesStatement = theorem.matchStatement(statementNode, statementLocalContext);
110
110
  qualifiedStatementVerifiedAgainstTheorem = theoremMatchesStatement; ///
111
111
  if (qualifiedStatementVerifiedAgainstTheorem) {
112
- localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' theorem."), statementNode);
112
+ localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' theorem."), statementNode);
113
113
  }
114
114
  }
115
115
  return qualifiedStatementVerifiedAgainstTheorem;
116
116
  }
117
- function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode, referenceName, localContext) {
117
+ function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode, referenceNode, localContext) {
118
118
  var qualifiedStatementVerifiedAgainstConjecture = false;
119
- var conjecture = localContext.findConjectureByReferenceName(referenceName);
119
+ var conjecture = localContext.findConjectureByReferenceNode(referenceNode);
120
120
  if (conjecture !== null) {
121
- var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
122
- localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' conjecture..."), statementNode);
121
+ var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
122
+ localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' conjecture..."), statementNode);
123
123
  var conjectureMatchesStatement = conjecture.matchStatement(statementNode, statementLocalContext);
124
124
  qualifiedStatementVerifiedAgainstConjecture = conjectureMatchesStatement; ///
125
125
  if (qualifiedStatementVerifiedAgainstConjecture) {
126
- localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceName, "' conjecture."), statementNode);
126
+ localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' conjecture."), statementNode);
127
127
  }
128
128
  }
129
129
  return qualifiedStatementVerifiedAgainstConjecture;
@@ -157,4 +157,4 @@ function verifyQualifiedStatementAsTypeAssertion(qualifiedStatementNode, assignm
157
157
  return statementVerifiedAsTypeAssertion;
158
158
  }
159
159
 
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3R5cGVBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5LCByZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGVxdWFsaXR5Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9xdWFsaWZpY2F0aW9uIS9yZWZlcmVuY2UhXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50L3R5cGVBc3NlcnRpb24hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50Li4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSByZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSksXG4gICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEsXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0sXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmVcbiAgICAgICAgICBdO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMuc29tZSgodmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24pID0+IHsgIC8vL1xuICAgICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VOYW1lLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGRlcml2ZWQgPSBmYWxzZTsgIC8vL1xuXG4gICAgICBjb25zdCB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMgPSBbXG4gICAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHksXG4gICAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvblxuICAgICAgICAgICAgXTtcblxuICAgICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMuZXZlcnkoKHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7IC8vL1xuICAgICAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50LmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGUgPSBsb2NhbENvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBydWxlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBydWxlTWF0Y2hlc1N0YXRlbWVudCA9IHJ1bGUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUgPSBydWxlTWF0Y2hlc1N0YXRlbWVudDsgIC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlTmFtZX0nIHJ1bGUuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0QXhpb20ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTmFtZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSA9IGZhbHNlO1xuXG4gIGNvbnN0IGF4aW9tID0gbG9jYWxDb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlTmFtZShyZWZlcmVuY2VOYW1lKTtcblxuICBpZiAoYXhpb20gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBheGlvbS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgYXhpb21NYXRjaGVzU3RhdGVtZW50ID0gYXhpb20ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tID0gYXhpb21NYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgYXhpb20uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdExlbW1hKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEgPSBmYWxzZTtcblxuICBjb25zdCBsZW1tYSA9IGxvY2FsQ29udGV4dC5maW5kTGVtbWFCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKGxlbW1hICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgbGVtbWEuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGxlbW1hTWF0Y2hlc1N0YXRlbWVudCA9IGxlbW1hLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHN0YXRlbWVudExvY2FsQ29udGV4dCk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSA9IGxlbW1hTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlTmFtZX0nIGxlbW1hLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RUaGVvcmVtKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSA9IGZhbHNlO1xuXG4gIGNvbnN0IHRoZW9yZW0gPSBsb2NhbENvbnRleHQuZmluZFRoZW9yZW1CeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKHRoZW9yZW0gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyB0aGVvcmVtLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCA9IHRoZW9yZW0ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW0gPSB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgdGhlb3JlbS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RDb25qZWN0dXJlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbmplY3R1cmUgPSBsb2NhbENvbnRleHQuZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKGNvbmplY3R1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBjb25qZWN0dXJlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudCA9IGNvbmplY3R1cmUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUgPSBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgY29uamVjdHVyZS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNFcXVhbGl0eShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gdHJ1ZTsgLy8vXG5cbiAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHlOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGVxdWFsaXR5Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgZXF1YWxpdHlWZXJpZmllZCA9IHZlcmlmeUVxdWFsaXR5KGVxdWFsaXR5Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gZXF1YWxpdHlWZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5KSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5LmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHk7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0cnVlOyAgLy8vXG5cbiAgY29uc3QgdHlwZUFzc2VydGlvbk5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmICh0eXBlQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25WZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24pIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb247XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50IiwiZXF1YWxpdHlOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5IiwicXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwic3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwicmVmZXJlbmNlTm9kZSIsInJlZmVyZW5jZU5hbWUiLCJyZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFJ1bGUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdEF4aW9tIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RMZW1tYSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0VGhlb3JlbSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0Q29uamVjdHVyZSIsInNvbWUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbiIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHkiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJldmVyeSIsInZlcmlmaWVkQWhlYWQiLCJkZWJ1ZyIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUiLCJydWxlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZU5hbWUiLCJzdGF0ZW1lbnRMb2NhbENvbnRleHQiLCJydWxlTWF0Y2hlc1N0YXRlbWVudCIsIm1hdGNoU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0QXhpb20iLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlTmFtZSIsImF4aW9tTWF0Y2hlc1N0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdExlbW1hIiwibGVtbWEiLCJmaW5kTGVtbWFCeVJlZmVyZW5jZU5hbWUiLCJsZW1tYU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtIiwidGhlb3JlbSIsImZpbmRUaGVvcmVtQnlSZWZlcmVuY2VOYW1lIiwidGhlb3JlbU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb25qZWN0dXJlIiwiY29uamVjdHVyZSIsImZpbmRDb25qZWN0dXJlQnlSZWZlcmVuY2VOYW1lIiwiY29uamVjdHVyZU1hdGNoZXNTdGF0ZW1lbnQiLCJ2ZXJpZnlBaGVhZCIsInN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5VmVyaWZpZWQiLCJ2ZXJpZnlFcXVhbGl0eSIsInN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbk5vZGUiLCJ0eXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQXdCQTs7OytEQVZHO29FQUNLO3FCQUUwQjs7Ozs7O0FBRTFELElBQU1DLG9CQUFvQkMs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
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3R5cGVBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50L2VxdWFsaXR5IVwiKSxcbiAgICAgIHJlZmVyZW5jZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvcXVhbGlmaWNhdGlvbiEvcmVmZXJlbmNlIVwiKSxcbiAgICAgIHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudC90eXBlQXNzZXJ0aW9uIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50KHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IHJlZmVyZW5jZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMgPSBbXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFJ1bGUsXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdEF4aW9tLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RMZW1tYSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0VGhlb3JlbSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0Q29uamVjdHVyZVxuICAgICAgICAgIF07XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbikgPT4geyAgLy8vXG4gICAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgZGVyaXZlZCA9IGZhbHNlOyAgLy8vXG5cbiAgICAgIGNvbnN0IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucyA9IFtcbiAgICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNFcXVhbGl0eSxcbiAgICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uXG4gICAgICAgICAgICBdO1xuXG4gICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5ldmVyeSgodmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24pID0+IHsgLy8vXG4gICAgICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZlcmlmaWVkQWhlYWQgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFJ1bGUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RSdWxlID0gZmFsc2U7XG5cbiAgY29uc3QgcnVsZSA9IGxvY2FsQ29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICBpZiAocnVsZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBydWxlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBydWxlTWF0Y2hlc1N0YXRlbWVudCA9IHJ1bGUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUgPSBydWxlTWF0Y2hlc1N0YXRlbWVudDsgIC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcnVsZS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tID0gZmFsc2U7XG5cbiAgY29uc3QgYXhpb20gPSBsb2NhbENvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpO1xuXG4gIGlmIChheGlvbSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBheGlvbS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgYXhpb21NYXRjaGVzU3RhdGVtZW50ID0gYXhpb20ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tID0gYXhpb21NYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBheGlvbS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0QXhpb207XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSA9IGZhbHNlO1xuXG4gIGNvbnN0IGxlbW1hID0gbG9jYWxDb250ZXh0LmZpbmRMZW1tYUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICBpZiAobGVtbWEgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocmVmZXJlbmNlTm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50TG9jYWxDb250ZXh0ID0gbG9jYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgbGVtbWEuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGxlbW1hTWF0Y2hlc1N0YXRlbWVudCA9IGxlbW1hLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHN0YXRlbWVudExvY2FsQ29udGV4dCk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSA9IGxlbW1hTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgbGVtbWEuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdExlbW1hO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtID0gZmFsc2U7XG5cbiAgY29uc3QgdGhlb3JlbSA9IGxvY2FsQ29udGV4dC5maW5kVGhlb3JlbUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICBpZiAodGhlb3JlbSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyB0aGVvcmVtLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCA9IHRoZW9yZW0ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW0gPSB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyB0aGVvcmVtLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb25qZWN0dXJlID0gZmFsc2U7XG5cbiAgY29uc3QgY29uamVjdHVyZSA9IGxvY2FsQ29udGV4dC5maW5kQ29uamVjdHVyZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICBpZiAoY29uamVjdHVyZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBjb25qZWN0dXJlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudCA9IGNvbmplY3R1cmUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUgPSBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBjb25qZWN0dXJlLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb25qZWN0dXJlO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc0VxdWFsaXR5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSB0cnVlOyAvLy9cblxuICBjb25zdCBlcXVhbGl0eU5vZGUgPSBlcXVhbGl0eU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoZXF1YWxpdHlOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5Li4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBlcXVhbGl0eVZlcmlmaWVkID0gdmVyaWZ5RXF1YWxpdHkoZXF1YWxpdHlOb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSBlcXVhbGl0eVZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IHRydWU7ICAvLy9cblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uTm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvblZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbikge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQiLCJlcXVhbGl0eU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInJlZmVyZW5jZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlUXVlcnkiLCJxdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwiYXNzaWdubWVudHMiLCJkZXJpdmVkIiwibG9jYWxDb250ZXh0IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJzdGF0ZW1lbnROb2RlIiwicXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJyZWZlcmVuY2VOb2RlIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0iLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmUiLCJzb21lIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24iLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc0VxdWFsaXR5IiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uIiwiZXZlcnkiLCJ2ZXJpZmllZEFoZWFkIiwiZGVidWciLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RSdWxlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2VOb2RlIiwicmVmZXJlbmNlU3RyaW5nIiwic3RhdGVtZW50TG9jYWxDb250ZXh0IiwicnVsZU1hdGNoZXNTdGF0ZW1lbnQiLCJtYXRjaFN0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tIiwiYXhpb20iLCJmaW5kQXhpb21CeVJlZmVyZW5jZU5vZGUiLCJheGlvbU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSIsImxlbW1hIiwiZmluZExlbW1hQnlSZWZlcmVuY2VOb2RlIiwibGVtbWFNYXRjaGVzU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSIsInRoZW9yZW0iLCJmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlTm9kZSIsInRoZW9yZW1NYXRjaGVzU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSIsImNvbmplY3R1cmUiLCJmaW5kQ29uamVjdHVyZUJ5UmVmZXJlbmNlTm9kZSIsImNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50IiwidmVyaWZ5QWhlYWQiLCJzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkiLCJlcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVZlcmlmaWVkIiwidmVyaWZ5RXF1YWxpdHkiLCJzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidmVyaWZ5VHlwZUFzc2VydGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUF3QkE7OzsrREFWRztvRUFDSztxQkFFTjs7Ozs7O0FBRTFCLElBQU1DLG9CQUFvQkMsSUFBQUEsZ0JBQVMsRUFBQyw0Q0FDOUJDLHFCQUFxQkQsSUFBQUEsZ0JBQVMsRUFBQyxrREFDL0JFLHFCQUFxQkYsSUFBQUEsZ0JBQVMsRUFBQyxtQ0FDL0JHLHlCQUF5QkgsSUFBQUEsZ0JBQVMsRUFBQztBQUUxQixTQUFTRix5QkFBeUJNLHNCQUFzQixFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUN6RyxJQUFJQyw2QkFBNkI7SUFFakMsSUFBTUMsZ0JBQWdCUCxtQkFBbUJFO0lBRXpDLElBQUlLLGtCQUFrQixNQUFNO1FBQzFCLElBQU1DLDJCQUEyQkgsYUFBYUksWUFBWSxDQUFDUDtRQUUzREcsYUFBYUssS0FBSyxDQUFDLEFBQUMsa0JBQTBDLE9BQXpCRiwwQkFBeUIsNkJBQTJCTjtRQUV6RixJQUFNUyxnQkFBZ0JaLG1CQUFtQkcseUJBQ25DVSxvQ0FBb0M7WUFDbENDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1NBQ0Q7UUFFUFgsNkJBQTZCTSxrQ0FBa0NNLElBQUksQ0FBQyxTQUFDQztZQUNuRSxJQUFNYiw2QkFBNkJhLGlDQUFpQ2pCLHdCQUF3QlMsZUFBZU47WUFFM0csSUFBSUMsNEJBQTRCO2dCQUM5QixPQUFPO1lBQ1Q7UUFDRjtRQUVBLElBQUlBLDRCQUE0QjtZQUM5QkYsVUFBVSxPQUFRLEdBQUc7WUFFckIsSUFBTVEscUNBQW9DO2dCQUNsQ1E7Z0JBQ0FDO2FBQ0Q7WUFFUGYsNkJBQTZCTSxtQ0FBa0NVLEtBQUssQ0FBQyxTQUFDSDtnQkFD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