occam-verify-cli 0.0.1067 → 0.0.1069

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 (137) hide show
  1. package/bin/action/verify.js +3 -2
  2. package/lib/assertion/contained.js +2 -2
  3. package/lib/assertion/defined.js +2 -2
  4. package/lib/assertion/subproof.js +3 -3
  5. package/lib/assignment/judgement.js +3 -3
  6. package/lib/axiom.js +11 -6
  7. package/lib/combinator.js +9 -9
  8. package/lib/conclusion.js +13 -10
  9. package/lib/conjecture.js +11 -6
  10. package/lib/consequent.js +13 -10
  11. package/lib/constructor.js +9 -9
  12. package/lib/context/file.js +34 -126
  13. package/lib/context/local.js +16 -5
  14. package/lib/context/release.js +2 -3
  15. package/lib/declaration.js +96 -2
  16. package/lib/equivalence.js +2 -2
  17. package/lib/frame.js +179 -98
  18. package/lib/index.js +22 -6
  19. package/lib/judgement.js +84 -5
  20. package/lib/label.js +12 -8
  21. package/lib/lemma.js +12 -12
  22. package/lib/metaLemma.js +120 -8
  23. package/lib/metaType.js +24 -3
  24. package/lib/metatheorem.js +145 -9
  25. package/lib/metavariable.js +128 -43
  26. package/lib/mixins/statement/qualified/unify.js +6 -10
  27. package/lib/mixins/statement/unify.js +4 -19
  28. package/lib/mixins/statement/verify.js +13 -13
  29. package/lib/mixins/term/unify.js +2 -2
  30. package/lib/premise.js +21 -13
  31. package/lib/reference.js +17 -17
  32. package/lib/rule.js +28 -40
  33. package/lib/statement/unqualified.js +34 -9
  34. package/lib/statement.js +7 -5
  35. package/lib/substitution/frameForMetavariable.js +75 -70
  36. package/lib/substitution/statementForMetavariable.js +83 -42
  37. package/lib/substitution/termForVariable.js +65 -68
  38. package/lib/substitution.js +46 -43
  39. package/lib/substitutions.js +52 -40
  40. package/lib/supposition.js +15 -11
  41. package/lib/term.js +6 -11
  42. package/lib/theorem.js +11 -6
  43. package/lib/topLevelAssertion.js +24 -42
  44. package/lib/type.js +5 -12
  45. package/lib/unifier/intrinsicLevel.js +4 -4
  46. package/lib/unifier/metaLevel.js +11 -7
  47. package/lib/unifier/metavariable.js +6 -6
  48. package/lib/unifier/statementWithCombinator.js +16 -16
  49. package/lib/unifier/termWithConstructor.js +7 -7
  50. package/lib/utilities/brackets.js +10 -10
  51. package/lib/utilities/json.js +493 -0
  52. package/lib/utilities/node.js +26 -19
  53. package/lib/utilities/release.js +53 -0
  54. package/lib/utilities/releaseContext.js +4 -15
  55. package/lib/utilities/tokens.js +8 -1
  56. package/lib/variable.js +14 -15
  57. package/lib/verifier/topLevel.js +5 -5
  58. package/package.json +1 -1
  59. package/src/assertion/contained.js +1 -1
  60. package/src/assertion/defined.js +1 -1
  61. package/src/assertion/subproof.js +2 -3
  62. package/src/assignment/judgement.js +3 -4
  63. package/src/axiom.js +14 -6
  64. package/src/combinator.js +12 -13
  65. package/src/conclusion.js +16 -13
  66. package/src/conjecture.js +14 -6
  67. package/src/consequent.js +16 -13
  68. package/src/constructor.js +11 -13
  69. package/src/context/file.js +94 -202
  70. package/src/context/local.js +8 -6
  71. package/src/context/release.js +2 -3
  72. package/src/declaration.js +126 -45
  73. package/src/equivalence.js +2 -2
  74. package/src/frame.js +225 -141
  75. package/src/index.js +17 -1
  76. package/src/judgement.js +109 -3
  77. package/src/label.js +15 -10
  78. package/src/lemma.js +17 -10
  79. package/src/metaLemma.js +102 -1
  80. package/src/metaType.js +29 -3
  81. package/src/metatheorem.js +143 -2
  82. package/src/metavariable.js +189 -66
  83. package/src/mixins/statement/qualified/unify.js +7 -19
  84. package/src/mixins/statement/unify.js +3 -25
  85. package/src/mixins/statement/verify.js +15 -13
  86. package/src/mixins/term/unify.js +1 -1
  87. package/src/premise.js +31 -16
  88. package/src/reference.js +18 -18
  89. package/src/rule.js +40 -58
  90. package/src/statement/unqualified.js +41 -11
  91. package/src/statement.js +6 -3
  92. package/src/substitution/frameForMetavariable.js +85 -98
  93. package/src/substitution/statementForMetavariable.js +109 -45
  94. package/src/substitution/termForVariable.js +83 -94
  95. package/src/substitution.js +36 -34
  96. package/src/substitutions.js +53 -46
  97. package/src/supposition.js +22 -14
  98. package/src/term.js +5 -15
  99. package/src/theorem.js +14 -6
  100. package/src/topLevelAssertion.js +38 -64
  101. package/src/type.js +5 -20
  102. package/src/unifier/intrinsicLevel.js +4 -3
  103. package/src/unifier/metaLevel.js +19 -7
  104. package/src/unifier/metavariable.js +5 -5
  105. package/src/unifier/statementWithCombinator.js +19 -19
  106. package/src/unifier/termWithConstructor.js +7 -7
  107. package/src/utilities/brackets.js +5 -5
  108. package/src/utilities/json.js +551 -0
  109. package/src/utilities/node.js +28 -23
  110. package/src/{verify → utilities}/release.js +5 -1
  111. package/src/utilities/releaseContext.js +2 -2
  112. package/src/utilities/tokens.js +10 -0
  113. package/src/variable.js +18 -19
  114. package/src/verifier/topLevel.js +6 -4
  115. package/lib/argument.js +0 -106
  116. package/lib/metaTypes.js +0 -19
  117. package/lib/unify/metavariableWithFrame.js +0 -40
  118. package/lib/unify/simpleSubstitutionStatementWithComplexSubstitutionStatement.js +0 -31
  119. package/lib/unify/statementWithSttaemetnGivenEquivalences.js +0 -45
  120. package/lib/verify/declaration.js +0 -83
  121. package/lib/verify/frame.js +0 -120
  122. package/lib/verify/judgement.js +0 -88
  123. package/lib/verify/metaLemma.js +0 -49
  124. package/lib/verify/metatheorem.js +0 -48
  125. package/lib/verify/metavariableGivenMetaType.js +0 -44
  126. package/lib/verify/release.js +0 -50
  127. package/src/argument.js +0 -79
  128. package/src/metaTypes.js +0 -11
  129. package/src/unify/metavariableWithFrame.js +0 -40
  130. package/src/unify/simpleSubstitutionStatementWithComplexSubstitutionStatement.js +0 -27
  131. package/src/unify/statementWithSttaemetnGivenEquivalences.js +0 -51
  132. package/src/verify/declaration.js +0 -113
  133. package/src/verify/frame.js +0 -157
  134. package/src/verify/judgement.js +0 -127
  135. package/src/verify/metaLemma.js +0 -72
  136. package/src/verify/metatheorem.js +0 -67
  137. package/src/verify/metavariableGivenMetaType.js +0 -45
@@ -136,7 +136,7 @@ var Equivalence = /*#__PURE__*/ function() {
136
136
  {
137
137
  key: "matchTermNode",
138
138
  value: function matchTermNode(termNode) {
139
- termNode = (0, _brackets.stripBracketsFromTerm)(termNode); ///
139
+ termNode = (0, _brackets.stripBracketsFromTermNode)(termNode); ///
140
140
  var termNodeMatches = this.terms.some(function(term) {
141
141
  var termNodeMatches = term.matchTermNode(termNode);
142
142
  if (termNodeMatches) {
@@ -269,4 +269,4 @@ function termTypeFromTerm(term, localContext) {
269
269
  return termType;
270
270
  }
271
271
 
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lcXVpdmFsZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBzdHJpcEJyYWNrZXRzRnJvbVRlcm0gfSBmcm9tIFwiLi91dGlsaXRpZXMvYnJhY2tldHNcIjtcbmltcG9ydCB7IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUgfSBmcm9tIFwiLi91dGlsaXRpZXMvbmFtZVwiO1xuXG5jb25zdCB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXF1aXZhbGVuY2Uge1xuICBjb25zdHJ1Y3Rvcih0ZXJtcykge1xuICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm1zO1xuICB9XG5cbiAgc2V0VGVybXModGVybXMpIHtcbiAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICB0aGlzLnRlcm1zLnB1c2godGVybSk7XG4gIH1cblxuICBnZXRUeXBlKGxvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnRlcm1zLnJlZHVjZSgodHlwZSwgdGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtVHlwZUZyb21UZXJtKHRlcm0sIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICAgIHR5cGUgPSB0ZXJtVHlwZTsgIC8vL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGVybVR5cGVTdWJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNTdWJUeXBlT2YodHlwZSk7XG5cbiAgICAgICAgaWYgKHRlcm1UeXBlU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICAgIHR5cGUgPSB0ZXJtVHlwZTsgIC8vL1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH0sIG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBtYXRjaFR5cGUodHlwZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgY29uc3QgdHlwZUEgPSB0eXBlOyAvLy9cblxuICAgIHR5cGUgPSB0aGlzLmdldFR5cGUobG9jYWxDb250ZXh0KTtcblxuICAgIGNvbnN0IHR5cGVCID0gdHlwZTsgLy8vXG5cbiAgICBjb25zdCB0eXBlQUVxdWFsVG9UeXBlQiA9IHR5cGVBLmlzRXF1YWxUbyh0eXBlQiksXG4gICAgICAgICAgdHlwZU1hdGNoZXMgPSB0eXBlQUVxdWFsVG9UeXBlQjsgIC8vL1xuXG4gICAgcmV0dXJuIHR5cGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hUZXJtKHRlcm0pIHtcbiAgICBjb25zdCB0ZXJtQSA9IHRlcm0sIC8vL1xuICAgICAgICAgIHRlcm1NYXRjaGVzID0gdGhpcy50ZXJtcy5zb21lKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtQiA9IHRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybUFNYXRjaGVzVGVybUIgPSB0ZXJtQS5tYXRjaCh0ZXJtQik7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtQU1hdGNoZXNUZXJtQikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiB0ZXJtTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoVGVybXModGVybXMpIHtcbiAgICBjb25zdCB0ZXJtc01hdGNoID0gdGVybXMuZXZlcnkoKHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1NYXRjaGVzID0gdGhpcy5tYXRjaFRlcm0odGVybSk7XG5cbiAgICAgIGlmICh0ZXJtTWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIHRlcm1zTWF0Y2g7XG4gIH1cblxuICBtYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgdGVybU5vZGUgPSBzdHJpcEJyYWNrZXRzRnJvbVRlcm0odGVybU5vZGUpOyAvLy9cblxuICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IHRoaXMudGVybXMuc29tZSgodGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybU5vZGVNYXRjaGVzID0gdGVybS5tYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgaWYgKHRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXJtTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCB2YXJpYWJsZU5vZGVBID0gdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy50ZXJtcy5zb21lKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTm9kZUIgPSB2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZU5vZGVBTWF0Y2hlc1ZhcmlhYmxlTm9kZUIgPSB2YXJpYWJsZU5vZGVBLm1hdGNoKHZhcmlhYmxlTm9kZUIpO1xuXG4gICAgICAgICAgICAgIGlmICh2YXJpYWJsZU5vZGVBTWF0Y2hlc1ZhcmlhYmxlTm9kZUIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFRlcm1Ob2Rlcyh0ZXJtTm9kZXMpIHtcbiAgICBjb25zdCB0ZXJtTm9kZXNNYXRjaCA9IHRlcm1Ob2Rlcy5ldmVyeSgodGVybU5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgIGlmICh0ZXJtTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGVybU5vZGVzTWF0Y2g7XG4gIH1cblxuICBnZXRHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGxvY2FsQ29udGV4dCkge1xuICAgIHRoaXMudGVybXMuZm9yRWFjaCgodGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybUdyb3VuZGVkID0gdGVybS5pc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtR3JvdW5kZWQpIHtcbiAgICAgICAgY29uc3QgdGVybU1hdGNoZXNHcm91bmRlZFRlcm0gPSBncm91bmRlZFRlcm1zLnNvbWUoKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdyb3VuZGVkVGVybU5vZGUgPSBncm91bmRlZFRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgICAgIGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzID0gdGVybS5tYXRjaFRlcm1Ob2RlKGdyb3VuZGVkVGVybU5vZGUpO1xuXG4gICAgICAgICAgaWYgKGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCF0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSkge1xuICAgICAgICAgIGNvbnN0IGdyb3VuZGVkVGVybSA9IHRlcm07XG5cbiAgICAgICAgICBncm91bmRlZFRlcm1zLnB1c2goZ3JvdW5kZWRUZXJtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaXNJbml0aWFsbHlHcm91bmRlZChsb2NhbENvbnRleHQpIHtcbiAgICBjb25zdCBpbml0aWFsbHlHcm91bmRlZFRlcm1zID0gdGhpcy5nZXRJbml0aWFsbHlHcm91bmRlZFRlcm1zKGxvY2FsQ29udGV4dCksXG4gICAgICAgICAgaW5pdGlhbGx5R3JvdW5kZWRUZXJtc0xlbmd0aCA9IGluaXRpYWxseUdyb3VuZGVkVGVybXMubGVuZ3RoLFxuICAgICAgICAgIGluaXRpYWxseUdyb3VuZGVkID0gKGluaXRpYWxseUdyb3VuZGVkVGVybXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBpbml0aWFsbHlHcm91bmRlZDtcbiAgfVxuXG4gIGlzSW1wbGljaXRseUdyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGxvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IGltcGxpY2l0bHlHcm91bmRlZFRlcm1zID0gdGhpcy5nZXRJbXBsaWNpdGx5R3JvdW5kZWRUZXJtcyhkZWZpbmVkVmFyaWFibGVzLCBsb2NhbENvbnRleHQpLFxuICAgICAgICAgIGltcGxpY2l0bHlHcm91bmRlZFRlcm1zTGVuZ3RoID0gaW1wbGljaXRseUdyb3VuZGVkVGVybXMubGVuZ3RoLFxuICAgICAgICAgIGltcGxpY2l0bHlHcm91bmRlZCA9IChpbXBsaWNpdGx5R3JvdW5kZWRUZXJtc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGltcGxpY2l0bHlHcm91bmRlZDtcbiAgfVxuXG4gIGdldEluaXRpYWxseUdyb3VuZGVkVGVybXMobG9jYWxDb250ZXh0KSB7XG4gICAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRUZXJtcyA9IHRoaXMudGVybXMucmVkdWNlKChpbml0aWFsbHlHcm91bmRlZFRlcm1zLCB0ZXJtKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtSW5pdGlhbGx5R3JvdW5kZWQgPSB0ZXJtLmlzSW5pdGlhbGx5R3JvdW5kZWQobG9jYWxDb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1Jbml0aWFsbHlHcm91bmRlZCkge1xuICAgICAgICBjb25zdCBpbml0aWFsbHlHcm91bmRlZFRlcm0gPSB0ZXJtOyAvLy9cblxuICAgICAgICBpbml0aWFsbHlHcm91bmRlZFRlcm1zLnB1c2goaW5pdGlhbGx5R3JvdW5kZWRUZXJtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluaXRpYWxseUdyb3VuZGVkVGVybXM7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGluaXRpYWxseUdyb3VuZGVkVGVybXM7XG4gIH1cblxuICBnZXRJbXBsaWNpdGx5R3JvdW5kZWRUZXJtcyhkZWZpbmVkVmFyaWFibGVzLCBsb2NhbENvbnRleHQpIHtcbiAgICBjb25zdCBpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcyA9IHRoaXMudGVybXMucmVkdWNlKChpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcywgdGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybUltcGxpY2l0bHlHcm91bmRlZCA9IHRlcm0uaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1JbXBsaWNpdGx5R3JvdW5kZWQpIHtcbiAgICAgICAgY29uc3QgaW1wbGljaXRseUdyb3VuZGVkVGVybSA9IHRlcm07IC8vL1xuXG4gICAgICAgIGltcGxpY2l0bHlHcm91bmRlZFRlcm1zLnB1c2goaW1wbGljaXRseUdyb3VuZGVkVGVybSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcztcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gaW1wbGljaXRseUdyb3VuZGVkVGVybXM7XG4gIH1cblxuICBzdGF0aWMgbWVyZ2UobGVmdEVxdWl2YWxlbmNlLCByaWdodEVxdWl2YWxlbmNlKSB7XG4gICAgY29uc3QgbGVmdEVxdWl2YWxlbmNlVGVybXMgPSBsZWZ0RXF1aXZhbGVuY2UuZ2V0VGVybXMoKSxcbiAgICAgICAgICByaWdodEVxdWl2YWxlbmNlVGVybXMgPSByaWdodEVxdWl2YWxlbmNlLmdldFRlcm1zKCksXG4gICAgICAgICAgdGVybXMgPSBbXG4gICAgICAgICAgICAuLi5sZWZ0RXF1aXZhbGVuY2VUZXJtcyxcbiAgICAgICAgICAgIC4uLnJpZ2h0RXF1aXZhbGVuY2VUZXJtc1xuICAgICAgICAgIF0sXG4gICAgICAgICAgZXF1aXZhbGVuY2UgPSBuZXcgRXF1aXZhbGVuY2UodGVybXMpO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21MZWZ0VGVybUFuZFJpZ2h0VGVybShsZWZ0VGVybSwgcmlnaHRUZXJtKSB7XG4gICAgY29uc3QgdGVybXMgPSBbXG4gICAgICAgICAgICBsZWZ0VGVybSxcbiAgICAgICAgICAgIHJpZ2h0VGVybVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZXF1aXZhbGVuY2UgPSBuZXcgRXF1aXZhbGVuY2UodGVybXMpO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRlcm1UeXBlRnJvbVRlcm0odGVybSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCB0ZXJtVHlwZTtcblxuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpLFxuICAgICAgICAgIHZhcmlhYmxlVHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKTtcblxuICAgIHRlcm1UeXBlID0gdmFyaWFibGVUeXBlOyAgLy8vXG4gIH0gZWxzZSB7XG4gICAgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVHlwZTtcbn0iXSwibmFtZXMiOlsiRXF1aXZhbGVuY2UiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInRlcm1zIiwiZ2V0VGVybXMiLCJzZXRUZXJtcyIsImFkZFRlcm0iLCJ0ZXJtIiwicHVzaCIsImdldFR5cGUiLCJsb2NhbENvbnRleHQiLCJ0eXBlIiwicmVkdWNlIiwidGVybVR5cGUiLCJ0ZXJtVHlwZUZyb21UZXJtIiwidGVybVR5cGVTdWJUeXBlT2ZUeXBlIiwiaXNTdWJUeXBlT2YiLCJtYXRjaFR5cGUiLCJ0eXBlQSIsInR5cGVCIiwidHlwZUFFcXVhbFRvVHlwZUIiLCJpc0VxdWFsVG8iLCJ0eXBlTWF0Y2hlcyIsIm1hdGNoVGVybSIsInRlcm1BIiwidGVybU1hdGNoZXMiLCJzb21lIiwidGVybUIiLCJ0ZXJtQU1hdGNoZXNUZXJtQiIsIm1hdGNoIiwibWF0Y2hUZXJtcyIsInRlcm1zTWF0Y2giLCJldmVyeSIsIm1hdGNoVGVybU5vZGUiLCJ0ZXJtTm9kZSIsInN0cmlwQnJhY2tldHNGcm9tVGVybSIsInRlcm1Ob2RlTWF0Y2hlcyIsIm1hdGNoVmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlQSIsInZhcmlhYmxlTm9kZU1hdGNoZXMiLCJnZXROb2RlIiwidmFyaWFibGVOb2RlQiIsInZhcmlhYmxlTm9kZUFNYXRjaGVzVmFyaWFibGVOb2RlQiIsIm1hdGNoVGVybU5vZGVzIiwidGVybU5vZGVzIiwidGVybU5vZGVzTWF0Y2giLCJnZXRHcm91bmRlZFRlcm1zIiwiZGVmaW5lZFZhcmlhYmxlcyIsImdyb3VuZGVkVGVybXMiLCJmb3JFYWNoIiwidGVybUdyb3VuZGVkIiwiaXNHcm91bmRlZCIsInRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtIiwiZ3JvdW5kZWRUZXJtIiwiZ3JvdW5kZWRUZXJtTm9kZSIsImdyb3VuZGVkVGVybU5vZGVNYXRjaGVzIiwiaXNJbml0aWFsbHlHcm91bmRlZCIsImluaXRpYWxseUdyb3VuZGVkVGVybXMiLCJnZXRJbml0aWFsbHlHcm91bmRlZFRlcm1zIiwiaW5pdGlhbGx5R3JvdW5kZWRUZXJtc0xlbmd0aCIsImxlbmd0aCIsImluaXRpYWxseUdyb3VuZGVkIiwiaXNJbXBsaWNpdGx5R3JvdW5kZWQiLCJpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcyIsImdldEltcGxpY2l0bHlHcm91bmRlZFRlcm1zIiwiaW1wbGljaXRseUdyb3VuZGVkVGVybXNMZW5ndGgiLCJpbXBsaWNpdGx5R3JvdW5kZWQiLCJ0ZXJtSW5pdGlhbGx5R3JvdW5kZWQiLCJpbml0aWFsbHlHcm91bmRlZFRlcm0iLCJ0ZXJtSW1wbGljaXRseUdyb3VuZGVkIiwiaW1wbGljaXRseUdyb3VuZGVkVGVybSIsIm1lcmdlIiwibGVmdEVxdWl2YWxlbmNlIiwicmlnaHRFcXVpdmFsZW5jZSIsImxlZnRFcXVpdmFsZW5jZVRlcm1zIiwicmlnaHRFcXVpdmFsZW5jZVRlcm1zIiwiZXF1aXZhbGVuY2UiLCJmcm9tTGVmdFRlcm1BbmRSaWdodFRlcm0iLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsInZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lIiwidmFyaWFibGVUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVFxQkE7OztxQkFOSzt3QkFDWTtvQkFDTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTdDLElBQU1DLG9CQUFvQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUVyQixJQUFBLEFBQU1GLDRCQUFOO2FBQU1BLFlBQ1BHLEtBQUs7Z0NBREVIO1FBRWpCLElB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
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lcXVpdmFsZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBzdHJpcEJyYWNrZXRzRnJvbVRlcm1Ob2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25hbWVcIjtcblxuY29uc3QgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVxdWl2YWxlbmNlIHtcbiAgY29uc3RydWN0b3IodGVybXMpIHtcbiAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIHNldFRlcm1zKHRlcm1zKSB7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgYWRkVGVybSh0ZXJtKSB7XG4gICAgdGhpcy50ZXJtcy5wdXNoKHRlcm0pO1xuICB9XG5cbiAgZ2V0VHlwZShsb2NhbENvbnRleHQpIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy50ZXJtcy5yZWR1Y2UoKHR5cGUsIHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybVR5cGVGcm9tVGVybSh0ZXJtLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICB0eXBlID0gdGVybVR5cGU7ICAvLy9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRlcm1UeXBlU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgIGlmICh0ZXJtVHlwZVN1YlR5cGVPZlR5cGUpIHtcbiAgICAgICAgICB0eXBlID0gdGVybVR5cGU7ICAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9LCBudWxsKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgbWF0Y2hUeXBlKHR5cGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IHR5cGVBID0gdHlwZTsgLy8vXG5cbiAgICB0eXBlID0gdGhpcy5nZXRUeXBlKGxvY2FsQ29udGV4dCk7XG5cbiAgICBjb25zdCB0eXBlQiA9IHR5cGU7IC8vL1xuXG4gICAgY29uc3QgdHlwZUFFcXVhbFRvVHlwZUIgPSB0eXBlQS5pc0VxdWFsVG8odHlwZUIpLFxuICAgICAgICAgIHR5cGVNYXRjaGVzID0gdHlwZUFFcXVhbFRvVHlwZUI7ICAvLy9cblxuICAgIHJldHVybiB0eXBlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoVGVybSh0ZXJtKSB7XG4gICAgY29uc3QgdGVybUEgPSB0ZXJtLCAvLy9cbiAgICAgICAgICB0ZXJtTWF0Y2hlcyA9IHRoaXMudGVybXMuc29tZSgodGVybSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGVybUIgPSB0ZXJtLCAvLy9cbiAgICAgICAgICAgICAgICAgIHRlcm1BTWF0Y2hlc1Rlcm1CID0gdGVybUEubWF0Y2godGVybUIpO1xuXG4gICAgICAgICAgICBpZiAodGVybUFNYXRjaGVzVGVybUIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gdGVybU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFRlcm1zKHRlcm1zKSB7XG4gICAgY29uc3QgdGVybXNNYXRjaCA9IHRlcm1zLmV2ZXJ5KCh0ZXJtKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtTWF0Y2hlcyA9IHRoaXMubWF0Y2hUZXJtKHRlcm0pO1xuXG4gICAgICBpZiAodGVybU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiB0ZXJtc01hdGNoO1xuICB9XG5cbiAgbWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIHRlcm1Ob2RlID0gc3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSh0ZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgdGVybU5vZGVNYXRjaGVzID0gdGhpcy50ZXJtcy5zb21lKCh0ZXJtKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXMgPSB0ZXJtLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICBpZiAodGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRlcm1Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IHZhcmlhYmxlTm9kZUEgPSB2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgIHZhcmlhYmxlTm9kZU1hdGNoZXMgPSB0aGlzLnRlcm1zLnNvbWUoKHRlcm0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgICAgIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFyaWFibGVOb2RlQiA9IHZhcmlhYmxlTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlTm9kZUFNYXRjaGVzVmFyaWFibGVOb2RlQiA9IHZhcmlhYmxlTm9kZUEubWF0Y2godmFyaWFibGVOb2RlQik7XG5cbiAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlTm9kZUFNYXRjaGVzVmFyaWFibGVOb2RlQikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoVGVybU5vZGVzKHRlcm1Ob2Rlcykge1xuICAgIGNvbnN0IHRlcm1Ob2Rlc01hdGNoID0gdGVybU5vZGVzLmV2ZXJ5KCh0ZXJtTm9kZSkgPT4ge1xuICAgICAgY29uc3QgdGVybU5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgaWYgKHRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXJtTm9kZXNNYXRjaDtcbiAgfVxuXG4gIGdldEdyb3VuZGVkVGVybXMoZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgbG9jYWxDb250ZXh0KSB7XG4gICAgdGhpcy50ZXJtcy5mb3JFYWNoKCh0ZXJtKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtR3JvdW5kZWQgPSB0ZXJtLmlzR3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1Hcm91bmRlZCkge1xuICAgICAgICBjb25zdCB0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSA9IGdyb3VuZGVkVGVybXMuc29tZSgoZ3JvdW5kZWRUZXJtKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ3JvdW5kZWRUZXJtTm9kZSA9IGdyb3VuZGVkVGVybS5nZXROb2RlKCksXG4gICAgICAgICAgICAgICAgZ3JvdW5kZWRUZXJtTm9kZU1hdGNoZXMgPSB0ZXJtLm1hdGNoVGVybU5vZGUoZ3JvdW5kZWRUZXJtTm9kZSk7XG5cbiAgICAgICAgICBpZiAoZ3JvdW5kZWRUZXJtTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoIXRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtKSB7XG4gICAgICAgICAgY29uc3QgZ3JvdW5kZWRUZXJtID0gdGVybTtcblxuICAgICAgICAgIGdyb3VuZGVkVGVybXMucHVzaChncm91bmRlZFRlcm0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpc0luaXRpYWxseUdyb3VuZGVkKGxvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IGluaXRpYWxseUdyb3VuZGVkVGVybXMgPSB0aGlzLmdldEluaXRpYWxseUdyb3VuZGVkVGVybXMobG9jYWxDb250ZXh0KSxcbiAgICAgICAgICBpbml0aWFsbHlHcm91bmRlZFRlcm1zTGVuZ3RoID0gaW5pdGlhbGx5R3JvdW5kZWRUZXJtcy5sZW5ndGgsXG4gICAgICAgICAgaW5pdGlhbGx5R3JvdW5kZWQgPSAoaW5pdGlhbGx5R3JvdW5kZWRUZXJtc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGluaXRpYWxseUdyb3VuZGVkO1xuICB9XG5cbiAgaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgbG9jYWxDb250ZXh0KSB7XG4gICAgY29uc3QgaW1wbGljaXRseUdyb3VuZGVkVGVybXMgPSB0aGlzLmdldEltcGxpY2l0bHlHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGxvY2FsQ29udGV4dCksXG4gICAgICAgICAgaW1wbGljaXRseUdyb3VuZGVkVGVybXNMZW5ndGggPSBpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcy5sZW5ndGgsXG4gICAgICAgICAgaW1wbGljaXRseUdyb3VuZGVkID0gKGltcGxpY2l0bHlHcm91bmRlZFRlcm1zTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gaW1wbGljaXRseUdyb3VuZGVkO1xuICB9XG5cbiAgZ2V0SW5pdGlhbGx5R3JvdW5kZWRUZXJtcyhsb2NhbENvbnRleHQpIHtcbiAgICBjb25zdCBpbml0aWFsbHlHcm91bmRlZFRlcm1zID0gdGhpcy50ZXJtcy5yZWR1Y2UoKGluaXRpYWxseUdyb3VuZGVkVGVybXMsIHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1Jbml0aWFsbHlHcm91bmRlZCA9IHRlcm0uaXNJbml0aWFsbHlHcm91bmRlZChsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAodGVybUluaXRpYWxseUdyb3VuZGVkKSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxseUdyb3VuZGVkVGVybSA9IHRlcm07IC8vL1xuXG4gICAgICAgIGluaXRpYWxseUdyb3VuZGVkVGVybXMucHVzaChpbml0aWFsbHlHcm91bmRlZFRlcm0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdGlhbGx5R3JvdW5kZWRUZXJtcztcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gaW5pdGlhbGx5R3JvdW5kZWRUZXJtcztcbiAgfVxuXG4gIGdldEltcGxpY2l0bHlHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGxvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IGltcGxpY2l0bHlHcm91bmRlZFRlcm1zID0gdGhpcy50ZXJtcy5yZWR1Y2UoKGltcGxpY2l0bHlHcm91bmRlZFRlcm1zLCB0ZXJtKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtSW1wbGljaXRseUdyb3VuZGVkID0gdGVybS5pc0ltcGxpY2l0bHlHcm91bmRlZChkZWZpbmVkVmFyaWFibGVzLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAodGVybUltcGxpY2l0bHlHcm91bmRlZCkge1xuICAgICAgICBjb25zdCBpbXBsaWNpdGx5R3JvdW5kZWRUZXJtID0gdGVybTsgLy8vXG5cbiAgICAgICAgaW1wbGljaXRseUdyb3VuZGVkVGVybXMucHVzaChpbXBsaWNpdGx5R3JvdW5kZWRUZXJtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGltcGxpY2l0bHlHcm91bmRlZFRlcm1zO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcztcbiAgfVxuXG4gIHN0YXRpYyBtZXJnZShsZWZ0RXF1aXZhbGVuY2UsIHJpZ2h0RXF1aXZhbGVuY2UpIHtcbiAgICBjb25zdCBsZWZ0RXF1aXZhbGVuY2VUZXJtcyA9IGxlZnRFcXVpdmFsZW5jZS5nZXRUZXJtcygpLFxuICAgICAgICAgIHJpZ2h0RXF1aXZhbGVuY2VUZXJtcyA9IHJpZ2h0RXF1aXZhbGVuY2UuZ2V0VGVybXMoKSxcbiAgICAgICAgICB0ZXJtcyA9IFtcbiAgICAgICAgICAgIC4uLmxlZnRFcXVpdmFsZW5jZVRlcm1zLFxuICAgICAgICAgICAgLi4ucmlnaHRFcXVpdmFsZW5jZVRlcm1zXG4gICAgICAgICAgXSxcbiAgICAgICAgICBlcXVpdmFsZW5jZSA9IG5ldyBFcXVpdmFsZW5jZSh0ZXJtcyk7XG5cbiAgICByZXR1cm4gZXF1aXZhbGVuY2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbUxlZnRUZXJtQW5kUmlnaHRUZXJtKGxlZnRUZXJtLCByaWdodFRlcm0pIHtcbiAgICBjb25zdCB0ZXJtcyA9IFtcbiAgICAgICAgICAgIGxlZnRUZXJtLFxuICAgICAgICAgICAgcmlnaHRUZXJtXG4gICAgICAgICAgXSxcbiAgICAgICAgICBlcXVpdmFsZW5jZSA9IG5ldyBFcXVpdmFsZW5jZSh0ZXJtcyk7XG5cbiAgICByZXR1cm4gZXF1aXZhbGVuY2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gdGVybVR5cGVGcm9tVGVybSh0ZXJtLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHRlcm1UeXBlO1xuXG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSksXG4gICAgICAgICAgdmFyaWFibGVUeXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgdGVybVR5cGUgPSB2YXJpYWJsZVR5cGU7ICAvLy9cbiAgfSBlbHNlIHtcbiAgICB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1UeXBlO1xufSJdLCJuYW1lcyI6WyJFcXVpdmFsZW5jZSIsInZhcmlhYmxlTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidGVybXMiLCJnZXRUZXJtcyIsInNldFRlcm1zIiwiYWRkVGVybSIsInRlcm0iLCJwdXNoIiwiZ2V0VHlwZSIsImxvY2FsQ29udGV4dCIsInR5cGUiLCJyZWR1Y2UiLCJ0ZXJtVHlwZSIsInRlcm1UeXBlRnJvbVRlcm0iLCJ0ZXJtVHlwZVN1YlR5cGVPZlR5cGUiLCJpc1N1YlR5cGVPZiIsIm1hdGNoVHlwZSIsInR5cGVBIiwidHlwZUIiLCJ0eXBlQUVxdWFsVG9UeXBlQiIsImlzRXF1YWxUbyIsInR5cGVNYXRjaGVzIiwibWF0Y2hUZXJtIiwidGVybUEiLCJ0ZXJtTWF0Y2hlcyIsInNvbWUiLCJ0ZXJtQiIsInRlcm1BTWF0Y2hlc1Rlcm1CIiwibWF0Y2giLCJtYXRjaFRlcm1zIiwidGVybXNNYXRjaCIsImV2ZXJ5IiwibWF0Y2hUZXJtTm9kZSIsInRlcm1Ob2RlIiwic3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSIsInRlcm1Ob2RlTWF0Y2hlcyIsIm1hdGNoVmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlQSIsInZhcmlhYmxlTm9kZU1hdGNoZXMiLCJnZXROb2RlIiwidmFyaWFibGVOb2RlQiIsInZhcmlhYmxlTm9kZUFNYXRjaGVzVmFyaWFibGVOb2RlQiIsIm1hdGNoVGVybU5vZGVzIiwidGVybU5vZGVzIiwidGVybU5vZGVzTWF0Y2giLCJnZXRHcm91bmRlZFRlcm1zIiwiZGVmaW5lZFZhcmlhYmxlcyIsImdyb3VuZGVkVGVybXMiLCJmb3JFYWNoIiwidGVybUdyb3VuZGVkIiwiaXNHcm91bmRlZCIsInRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtIiwiZ3JvdW5kZWRUZXJtIiwiZ3JvdW5kZWRUZXJtTm9kZSIsImdyb3VuZGVkVGVybU5vZGVNYXRjaGVzIiwiaXNJbml0aWFsbHlHcm91bmRlZCIsImluaXRpYWxseUdyb3VuZGVkVGVybXMiLCJnZXRJbml0aWFsbHlHcm91bmRlZFRlcm1zIiwiaW5pdGlhbGx5R3JvdW5kZWRUZXJtc0xlbmd0aCIsImxlbmd0aCIsImluaXRpYWxseUdyb3VuZGVkIiwiaXNJbXBsaWNpdGx5R3JvdW5kZWQiLCJpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcyIsImdldEltcGxpY2l0bHlHcm91bmRlZFRlcm1zIiwiaW1wbGljaXRseUdyb3VuZGVkVGVybXNMZW5ndGgiLCJpbXBsaWNpdGx5R3JvdW5kZWQiLCJ0ZXJtSW5pdGlhbGx5R3JvdW5kZWQiLCJpbml0aWFsbHlHcm91bmRlZFRlcm0iLCJ0ZXJtSW1wbGljaXRseUdyb3VuZGVkIiwiaW1wbGljaXRseUdyb3VuZGVkVGVybSIsIm1lcmdlIiwibGVmdEVxdWl2YWxlbmNlIiwicmlnaHRFcXVpdmFsZW5jZSIsImxlZnRFcXVpdmFsZW5jZVRlcm1zIiwicmlnaHRFcXVpdmFsZW5jZVRlcm1zIiwiZXF1aXZhbGVuY2UiLCJmcm9tTGVmdFRlcm1BbmRSaWdodFRlcm0iLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsInZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lIiwidmFyaWFibGVUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVFxQkE7OztxQkFOSzt3QkFDZ0I7b0JBQ0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU3QyxJQUFNQyxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUM7QUFFckIsSUFBQSxBQUFNRiw0QkFBTjthQUFNQSxZQUNQRyxLQUFLO2dDQURFSDtRQUVqQixJQUFJLENBQUNHLEtBQUssR0FBR0E7O2tCQUZJSDs7WUFLbkJJLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0QsS0FBSztZQUNuQjs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTRixLQUFLO2dCQUNaLElBQUksQ0FBQ0EsS0FBSyxHQUFHQTtZQUNmOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLFFBQVFDLElBQUk7Z0JBQ1YsSUFBSSxDQUFDSixLQUFLLENBQUNLLElBQUksQ0FBQ0Q7WUFDbEI7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsUUFBUUMsWUFBWTtnQkFDbEIsSUFBTUMsT0FBTyxJQUFJLENBQUNSLEtBQUssQ0FBQ1MsTUFBTSxDQUFDLFNBQUNELE1BQU1KO29CQUNwQyxJQUFNTSxXQUFXQyxpQkFBaUJQLE1BQU1HO29CQUV4QyxJQUFJQyxTQUFTLE1BQU07d0JBQ2pCQSxPQUFPRSxVQUFXLEdBQUc7b0JBQ3ZCLE9BQU87d0JBQ0wsSUFBTUUsd0JBQXdCRixTQUFTRyxXQUFXLENBQUNMO3dCQUVuRCxJQUFJSSx1QkFBdUI7NEJBQ3pCSixPQUFPRSxVQUFXLEdBQUc7d0JBQ3ZCO29CQUNGO29CQUVBLE9BQU9GO2dCQUNULEdBQUc7Z0JBRUgsT0FBT0E7WUFDVDs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVTixJQUFJLEVBQUVELFlBQVk7Z0JBQzFCLElBQU1RLFFBQVFQLE1BQU0sR0FBRztnQkFFdkJBLE9BQU8sSUFBSSxDQUFDRixPQUFPLENBQUNDO2dCQUVwQixJQUFNUyxRQUFRUixNQUFNLEdBQUc7Z0JBRXZCLElBQU1TLG9CQUFvQkYsTUFBTUcsU0FBUyxDQUFDRixRQUNwQ0csY0FBY0YsbUJBQW9CLEdBQUc7Z0JBRTNDLE9BQU9FO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVWhCLElBQUk7Z0JBQ1osSUFBTWlCLFFBQVFqQixNQUNSa0IsY0FBYyxJQUFJLENBQUN0QixLQUFLLENBQUN1QixJQUFJLENBQUMsU0FBQ25CO29CQUM3QixJQUFNb0IsUUFBUXBCLE1BQ1JxQixvQkFBb0JKLE1BQU1LLEtBQUssQ0FBQ0Y7b0JBRXRDLElBQUlDLG1CQUFtQjt3QkFDckIsT0FBTztvQkFDVDtnQkFDRjtnQkFFTixPQUFPSDtZQUNUOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVczQixLQUFLOztnQkFDZCxJQUFNNEIsYUFBYTVCLE1BQU02QixLQUFLLENBQUMsU0FBQ3pCO29CQUM5QixJQUFNa0IsY0FBYyxNQUFLRixTQUFTLENBQUNoQjtvQkFFbkMsSUFBSWtCLGFBQWE7d0JBQ2YsT0FBTztvQkFDVDtnQkFDRjtnQkFFQSxPQUFPTTtZQUNUOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWNDLFFBQVE7Z0JBQ3BCQSxXQUFXQyxJQUFBQSxtQ0FBeUIsRUFBQ0QsV0FBVyxHQUFHO2dCQUVuRCxJQUFNRSxrQkFBa0IsSUFBSSxDQUFDakMsS0FBSyxDQUFDdUIsSUFBSSxDQUFDLFNBQUNuQjtvQkFDdkMsSUFBTTZCLGtCQUFrQjdCLEtBQUswQixhQUFhLENBQUNDO29CQUUzQyxJQUFJRSxpQkFBaUI7d0JBQ25CLE9BQU87b0JBQ1Q7Z0JBQ0Y7Z0JBRUEsT0FBT0E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0JDLFlBQVk7Z0JBQzVCLElBQU1DLGdCQUFnQkQsY0FDaEJFLHNCQUFzQixJQUFJLENBQUNyQyxLQUFLLENBQUN1QixJQUFJLENBQUMsU0FBQ25CO29CQUNyQyxJQUFNMkIsV0FBVzNCLEtBQUtrQyxPQUFPLElBQ3ZCSCxpQkFBZXJDLGtCQUFrQmlDO29CQUV2QyxJQUFJSSxtQkFBaUIsTUFBTTt3QkFDekIsSUFBTUksZ0JBQWdCSixnQkFDaEJLLG9DQUFvQ0osY0FBY1YsS0FBSyxDQUFDYTt3QkFFOUQsSUFBSUMsbUNBQW1DOzRCQUNyQyxPQUFPO3dCQUNUO29CQUNGO2dCQUNGO2dCQUVOLE9BQU9IO1lBQ1Q7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsZUFBZUMsU0FBUzs7Z0JBQ3RCLElBQU1DLGlCQUFpQkQsVUFBVWIsS0FBSyxDQUFDLFNBQUNFO29CQUN0QyxJQUFNRSxrQkFBa0IsTUFBS0gsYUFBYSxDQUFDQztvQkFFM0MsSUFBSUUsaUJBQWlCO3dCQUNuQixPQUFPO29CQUNUO2dCQUNGO2dCQUVBLE9BQU9VO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCQyxnQkFBZ0IsRUFBRUMsYUFBYSxFQUFFdkMsWUFBWTtnQkFDNUQsSUFBSSxDQUFDUCxLQUFLLENBQUMrQyxPQUFPLENBQUMsU0FBQzNDO29CQUNsQixJQUFNNEMsZUFBZTVDLEtBQUs2QyxVQUFVLENBQUNKLGtCQUFrQnRDO29CQUV2RCxJQUFJeUMsY0FBYzt3QkFDaEIsSUFBTUUsMEJBQTBCSixjQUFjdkIsSUFBSSxDQUFDLFNBQUM0Qjs0QkFDbEQsSUFBTUMsbUJBQW1CRCxhQUFhYixPQUFPLElBQ3ZDZSwwQkFBMEJqRCxLQUFLMEIsYUFBYSxDQUFDc0I7NEJBRW5ELElBQUlDLHlCQUF5QjtnQ0FDM0IsT0FBTzs0QkFDVDt3QkFDRjt3QkFFQSxJQUFJLENBQUNILHlCQUF5Qjs0QkFDNUIsSUFBTUMsZUFBZS9DOzRCQUVyQjBDLGNBQWN6QyxJQUFJLENBQUM4Qzt3QkFDckI7b0JBQ0Y7Z0JBQ0Y7WUFDRjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxvQkFBb0IvQyxZQUFZO2dCQUM5QixJQUFNZ0QseUJBQXlCLElBQUksQ0FBQ0MseUJBQXlCLENBQUNqRCxlQUN4RGtELCtCQUErQkYsdUJBQXVCRyxNQUFNLEVBQzVEQyxvQkFBcUJGLCtCQUErQjtnQkFFMUQsT0FBT0U7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUJmLGdCQUFnQixFQUFFdEMsWUFBWTtnQkFDakQsSUFBTXNELDBCQUEwQixJQUFJLENBQUNDLDBCQUEwQixDQUFDakIsa0JBQWtCdEMsZUFDNUV3RCxnQ0FBZ0NGLHdCQUF3QkgsTUFBTSxFQUM5RE0scUJBQXNCRCxnQ0FBZ0M7Z0JBRTVELE9BQU9DO1lBQ1Q7OztZQUVBUixLQUFBQTttQkFBQUEsU0FBQUEsMEJBQTBCakQsWUFBWTtnQkFDcEMsSUFBTWdELHlCQUF5QixJQUFJLENBQUN2RCxLQUFLLENBQUNTLE1BQU0sQ0FBQyxTQUFDOEMsd0JBQXdCbkQ7b0JBQ3hFLElBQU02RCx3QkFBd0I3RCxLQUFLa0QsbUJBQW1CLENBQUMvQztvQkFFdkQsSUFBSTBELHVCQUF1Qjt3QkFDekIsSUFBTUMsd0JBQXdCOUQsTUFBTSxHQUFHO3dCQUV2Q21ELHVCQUF1QmxELElBQUksQ0FBQzZEO29CQUM5QjtvQkFFQSxPQUFPWDtnQkFDVCxHQUFHLEVBQUU7Z0JBRUwsT0FBT0E7WUFDVDs7O1lBRUFPLEtBQUFBO21CQUFBQSxTQUFBQSwyQkFBMkJqQixnQkFBZ0IsRUFBRXRDLFlBQVk7Z0JBQ3ZELElBQU1zRCwwQkFBMEIsSUFBSSxDQUFDN0QsS0FBSyxDQUFDUyxNQUFNLENBQUMsU0FBQ29ELHlCQUF5QnpEO29CQUMxRSxJQUFNK0QseUJBQXlCL0QsS0FBS3dELG9CQUFvQixDQUFDZixrQkFBa0J0QztvQkFFM0UsSUFBSTRELHdCQUF3Qjt3QkFDMUIsSUFBTUMseUJBQXlCaEUsTUFBTSxHQUFHO3dCQUV4Q3lELHdCQUF3QnhELElBQUksQ0FBQytEO29CQUMvQjtvQkFFQSxPQUFPUDtnQkFDVCxHQUFHLEVBQUU7Z0JBRUwsT0FBT0E7WUFDVDs7OztZQUVPUSxLQUFBQTttQkFBUCxTQUFPQSxNQUFNQyxlQUFlLEVBQUVDLGdCQUFnQjtnQkFDNUMsSUFBTUMsdUJBQXVCRixnQkFBZ0JyRSxRQUFRLElBQy9Dd0Usd0JBQXdCRixpQkFBaUJ0RSxRQUFRLElBQ2pERCxRQUFRLEFBQ04scUJBQUd3RSw2QkFDSCxxQkFBR0MseUJBRUxDLGNBQWMsSUF2TUg3RSxZQXVNbUJHO2dCQUVwQyxPQUFPMEU7WUFDVDs7O1lBRU9DLEtBQUFBO21CQUFQLFNBQU9BLHlCQUF5QkMsUUFBUSxFQUFFQyxTQUFTO2dCQUNqRCxJQUFNN0UsUUFBUTtvQkFDTjRFO29CQUNBQztpQkFDRCxFQUNESCxjQUFjLElBak5IN0UsWUFpTm1CRztnQkFFcEMsT0FBTzBFO1lBQ1Q7OztXQXBObUI3RTs7QUF1TnJCLFNBQVNjLGlCQUFpQlAsSUFBSSxFQUFFRyxZQUFZO0lBQzFDLElBQUlHO0lBRUosSUFBTXFCLFdBQVczQixLQUFLa0MsT0FBTyxJQUN2QkgsZUFBZXJDLGtCQUFrQmlDO0lBRXZDLElBQUlJLGlCQUFpQixNQUFNO1FBQ3pCLElBQU0yQyxlQUFlQyxJQUFBQSxrQ0FBNEIsRUFBQzVDLGVBQzVDNkMsV0FBV3pFLGFBQWEwRSwwQkFBMEIsQ0FBQ0gsZUFDbkRJLGVBQWVGLFNBQVMxRSxPQUFPO1FBRXJDSSxXQUFXd0UsY0FBZSxHQUFHO0lBQy9CLE9BQU87UUFDTHhFLFdBQVdOLEtBQUtFLE9BQU87SUFDekI7SUFFQSxPQUFPSTtBQUNUIn0=
package/lib/frame.js CHANGED
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
+ var _necessary = require("necessary");
11
12
  var _shim = /*#__PURE__*/ _interop_require_default(require("./shim"));
12
13
  var _declaration = /*#__PURE__*/ _interop_require_default(require("./declaration"));
13
14
  var _metavariable = /*#__PURE__*/ _interop_require_default(require("./metavariable"));
@@ -37,11 +38,13 @@ function _interop_require_default(obj) {
37
38
  default: obj
38
39
  };
39
40
  }
40
- var declarationNodesQuery = (0, _query.nodesQuery)("/frame/declaration"), metavariableNodesQuery = (0, _query.nodesQuery)("/frame/metavariable"), frameMetavariableNodeQuery = (0, _query.nodeQuery)("/*/frame/metavariable!");
41
+ var frameNodeQuery = (0, _query.nodeQuery)("/*/frame"), declarationNodesQuery = (0, _query.nodesQuery)("/frame/declaration"), metavariableNodeQuery = (0, _query.nodeQuery)("/frame/metavariable!"), metavariableNodesQuery = (0, _query.nodesQuery)("/frame/metavariable");
42
+ var first = _necessary.arrayUtilities.first;
41
43
  var Frame = /*#__PURE__*/ function() {
42
- function Frame(string, declarations, metavariables) {
44
+ function Frame(string, node, declarations, metavariables) {
43
45
  _class_call_check(this, Frame);
44
46
  this.string = string;
47
+ this.node = node;
45
48
  this.declarations = declarations;
46
49
  this.metavariables = metavariables;
47
50
  }
@@ -52,6 +55,12 @@ var Frame = /*#__PURE__*/ function() {
52
55
  return this.string;
53
56
  }
54
57
  },
58
+ {
59
+ key: "getNode",
60
+ value: function getNode() {
61
+ return this.node;
62
+ }
63
+ },
55
64
  {
56
65
  key: "getDeclarations",
57
66
  value: function getDeclarations() {
@@ -67,92 +76,118 @@ var Frame = /*#__PURE__*/ function() {
67
76
  {
68
77
  key: "getMetavariable",
69
78
  value: function getMetavariable() {
70
- var metavariable;
71
- var metavariablesLength = this.metavariables.length;
72
- if (metavariablesLength === 1) {
73
- var firstMetavariable = first(this.metavariables);
74
- metavariable = firstMetavariable; ///
79
+ var metavariable = null;
80
+ var declarationsLength = this.declarations.length;
81
+ if (declarationsLength === 0) {
82
+ var metavariablesLength = this.metavariables.length;
83
+ if (metavariablesLength === 1) {
84
+ var firstMetavariable = first(this.metavariables);
85
+ metavariable = firstMetavariable; ///
86
+ }
75
87
  }
76
88
  return metavariable;
77
89
  }
78
90
  },
79
91
  {
80
- // getMetavariableNode() {
81
- // let metavariableNode = null;
82
- //
83
- // const declarationsLength = this.declarations.length;
84
- //
85
- // if (declarationsLength === 0) {
86
- // const metavariableNodesLength = this.metavariableNodes.length;
87
- //
88
- // if (metavariableNodesLength === 1) {
89
- // const firstMetavariableNode = first(this.metavariableNodes);
90
- //
91
- // metavariableNode = firstMetavariableNode; ///
92
- // }
93
- // }
94
- //
95
- // return metavariableNode;
96
- // }
97
- //
98
- // matchMetavariableName(metavariableName) {
99
- // let metavariableNameMatches = false;
100
- //
101
- // const metavariableNode = this.getMetavariableNode();
102
- //
103
- // if (metavariableNode !== null) {
104
- // const name = metavariableName; ///
105
- //
106
- // metavariableName = metavariableNameFromMetavariableNode(metavariableNode); ///
107
- //
108
- // const nameMatchesMetavariableName = (name === metavariableName);
109
- //
110
- // metavariableNameMatches = nameMatchesMetavariableName; ///
111
- // }
112
- //
113
- // return metavariableNameMatches;
114
- // }
115
- //
116
- // unifySubstitution(substitution) {
117
- // const substitutionUnified = this.declarations.some((declaration) => {
118
- // const substitutionUnifiedWithDeclaration = declaration.unifySubstitution(substitution);
119
- //
120
- // if (substitutionUnifiedWithDeclaration) {
121
- // return true;
122
- // }
123
- // });
124
- //
125
- // return substitutionUnified;
126
- // }
127
- //
128
- // unifyMetaLemmaOrMetatheorem(metaLemmaMetatheorem) {
129
- // const substitutions = metaLemmaMetatheorem.getSubstitutions(),
130
- // substitutionsUnified = substitutions.everySubstitution((substitution) => {
131
- // const substitutionUnified = this.unifySubstitution(substitution);
132
- //
133
- // if (substitutionUnified) {
134
- // return true;
135
- // }
136
- // }),
137
- // metaLemmaOrMetaTheoremUnified = substitutionsUnified; ///
138
- //
139
- // return metaLemmaOrMetaTheoremUnified;
140
- // }
92
+ key: "getMetavariableNode",
93
+ value: function getMetavariableNode() {
94
+ var metavariableNode = null;
95
+ var metavariable = this.getMetavariable();
96
+ if (metavariable !== null) {
97
+ metavariableNode = metavariable.getNode();
98
+ }
99
+ return metavariableNode;
100
+ }
101
+ },
102
+ {
103
+ key: "matchFrameNode",
104
+ value: function matchFrameNode(frameNode) {
105
+ var frameNodeMatches = this.node.match(frameNode);
106
+ return frameNodeMatches;
107
+ }
108
+ },
109
+ {
110
+ key: "matchMetavariableName",
111
+ value: function matchMetavariableName(metavariableName) {
112
+ var metavariableNameMatches = false;
113
+ var metavariable = this.getMetavariable();
114
+ if (metavariable !== null) {
115
+ metavariableNameMatches = metavariable.matchMetavariableName(metavariableName);
116
+ }
117
+ return metavariableNameMatches;
118
+ }
119
+ },
120
+ {
121
+ key: "unifySubstitution",
122
+ value: function unifySubstitution(substitution, localContext) {
123
+ var substitutionUnified = false;
124
+ var substitutionString = substitution.getString();
125
+ localContext.trace("Unifying the '".concat(substitutionString, "' substitution..."));
126
+ if (!substitutionUnified) {
127
+ substitutionUnified = this.declarations.some(function(declaration) {
128
+ var substitutionUnified = declaration.unifySubstitution(substitution, localContext);
129
+ if (substitutionUnified) {
130
+ return true;
131
+ }
132
+ });
133
+ }
134
+ if (!substitutionUnified) {
135
+ substitutionUnified = this.metavariables.some(function(metavariable) {
136
+ var substitutionUnified = metavariable.unifySubstitution(substitution, localContext);
137
+ if (substitutionUnified) {
138
+ return true;
139
+ }
140
+ });
141
+ }
142
+ if (substitutionUnified) {
143
+ localContext.debug("...unified the '".concat(substitutionString, "' substitution..."));
144
+ }
145
+ return substitutionUnified;
146
+ }
147
+ },
148
+ {
149
+ key: "unifyMetaLemmaOrMetatheorem",
150
+ value: function unifyMetaLemmaOrMetatheorem(metaLemmaMetatheorem, localContext) {
151
+ var _this = this;
152
+ var metaLemmaOrMetaTheoremUnified;
153
+ var metaLemmaMetatheoremString = metaLemmaMetatheorem.getString();
154
+ localContext.trace("Unifying the '".concat(metaLemmaMetatheoremString, "' metatheorem or meta-lemma..."));
155
+ var substitutions = metaLemmaMetatheorem.getSubstitutions(), substitutionsUnified = substitutions.everySubstitution(function(substitution) {
156
+ var substitutionUnified = _this.unifySubstitution(substitution, localContext);
157
+ if (substitutionUnified) {
158
+ return true;
159
+ }
160
+ });
161
+ metaLemmaOrMetaTheoremUnified = substitutionsUnified; ///
162
+ if (metaLemmaOrMetaTheoremUnified) {
163
+ localContext.debug("...unified the '".concat(metaLemmaMetatheoremString, "' metatheorem or meta-lemma."));
164
+ }
165
+ return metaLemmaOrMetaTheoremUnified;
166
+ }
167
+ },
168
+ {
141
169
  key: "verify",
142
- value: function verify(localContext) {
170
+ value: function verify(assignments, stated, localContext) {
143
171
  var verified;
144
172
  var frameString = this.string; ///
145
173
  localContext.trace("Verifying the '".concat(frameString, "' frame..."));
146
174
  var declarationsVerified = this.declarations.every(function(declaration) {
147
- var declarationVerified = declaration.verify(localContext);
175
+ var declarationVerified = declaration.verify(assignments, stated, localContext);
148
176
  return declarationVerified;
177
+ }), metavariablesVerified = this.metavariables.every(function(metavariable) {
178
+ var metavariableVerified = metavariable.verify(localContext);
179
+ return metavariableVerified;
149
180
  });
150
- if (declarationsVerified) {
151
- var metavariablesVerified = this.metavariables.every(function(metavariable) {
152
- var metavariableVerified = metavariable.verify(localContext);
153
- return metavariableVerified;
154
- });
155
- verified = metavariablesVerified; ///
181
+ if (declarationsVerified && metavariablesVerified) {
182
+ var verifiedWhenStated = false, verifiedWhenDerived = false;
183
+ if (stated) {
184
+ verifiedWhenStated = this.verifyWhenStated(assignments, localContext);
185
+ } else {
186
+ verifiedWhenDerived = this.verifyWhenDerived(assignments, localContext);
187
+ }
188
+ if (verifiedWhenStated || verifiedWhenDerived) {
189
+ verified = true;
190
+ }
156
191
  }
157
192
  if (verified) {
158
193
  localContext.debug("...verified the '".concat(frameString, "' frame."));
@@ -160,15 +195,51 @@ var Frame = /*#__PURE__*/ function() {
160
195
  return verified;
161
196
  }
162
197
  },
198
+ {
199
+ key: "verifyWhenStated",
200
+ value: function verifyWhenStated(assignments, localContext) {
201
+ var verifiedWhenStated = false;
202
+ var frameString = this.string; ///
203
+ localContext.trace("Verifying the '".concat(frameString, "' frame when stated..."));
204
+ var declarationsLength = this.declarations.length;
205
+ if (declarationsLength === 0) {
206
+ var metavariablesLength = this.metavariables.length;
207
+ if (metavariablesLength === 1) {
208
+ verifiedWhenStated = true;
209
+ } else {
210
+ localContext.trace("The '".concat(frameString, "' stated frame cannot have more than one metavariable."));
211
+ }
212
+ } else {
213
+ localContext.trace("The '".concat(frameString, "' stated frame cannot have declarations."));
214
+ }
215
+ if (verifiedWhenStated) {
216
+ localContext.debug("...verified the '".concat(frameString, "' frame when stated."));
217
+ }
218
+ return verifiedWhenStated;
219
+ }
220
+ },
221
+ {
222
+ key: "verifyWhenDerived",
223
+ value: function verifyWhenDerived(assignments, localContext) {
224
+ var verifiedWhenDerived;
225
+ var frameString = this.string; ///
226
+ localContext.trace("Verifying the '".concat(frameString, "' frame when derived..."));
227
+ verifiedWhenDerived = true;
228
+ if (verifiedWhenDerived) {
229
+ localContext.debug("...verified the '".concat(frameString, "' frame when derived."));
230
+ }
231
+ return verifiedWhenDerived;
232
+ }
233
+ },
163
234
  {
164
235
  key: "verifyGivenMetaType",
165
- value: function verifyGivenMetaType(metaType, localContext) {
236
+ value: function verifyGivenMetaType(metaType, assignments, stated, localContext) {
166
237
  var verifiedGivenMetaType = false;
167
238
  var frameString = this.string, metaTypeString = metaType.getString();
168
239
  localContext.trace("Verifying the '".concat(frameString, "' frame given the '").concat(metaTypeString, "' meta-type..."));
169
240
  var metaTypeName = metaType.getName();
170
241
  if (metaTypeName === _metaTypeNames.FRAME_META_TYPE_NAME) {
171
- var verified = this.verify(localContext);
242
+ var verified = this.verify(assignments, stated, localContext);
172
243
  verifiedGivenMetaType = verified; ///
173
244
  }
174
245
  if (verifiedGivenMetaType) {
@@ -181,13 +252,17 @@ var Frame = /*#__PURE__*/ function() {
181
252
  {
182
253
  key: "fromFrameNode",
183
254
  value: function fromFrameNode(frameNode, localContext) {
184
- var declarationNodes = declarationNodesQuery(frameNode), metavariableNodes = metavariableNodesQuery(frameNode), declarations = declarationNodes.map(function(declarationNode) {
185
- var declaration = _declaration.default.fromDeclarationNode(declarationNode, localContext);
186
- return declaration;
187
- }), metavariables = metavariableNodes.map(function(metavariableNode) {
188
- var metavariable = _metavariable.default.fromMetavariableNode(metavariableNode, localContext);
189
- return metavariable;
190
- }), node = frameNode, string = localContext.nodeAsString(node), frame = new Frame(string, declarations, metavariables);
255
+ var frame = null;
256
+ if (frameNode !== null) {
257
+ var declarationNodes = declarationNodesQuery(frameNode), metavariableNodes = metavariableNodesQuery(frameNode), declarations = declarationNodes.map(function(declarationNode) {
258
+ var declaration = _declaration.default.fromDeclarationNode(declarationNode, localContext);
259
+ return declaration;
260
+ }), metavariables = metavariableNodes.map(function(metavariableNode) {
261
+ var metavariable = _metavariable.default.fromMetavariableNode(metavariableNode, localContext);
262
+ return metavariable;
263
+ }), node = frameNode, string = localContext.nodeAsString(node);
264
+ frame = new Frame(string, node, declarations, metavariables);
265
+ }
191
266
  return frame;
192
267
  }
193
268
  },
@@ -195,12 +270,15 @@ var Frame = /*#__PURE__*/ function() {
195
270
  key: "fromDefinedAssertionNode",
196
271
  value: function fromDefinedAssertionNode(definedAssertionNode, localContext) {
197
272
  var frame = null;
198
- var frameMetavariableNode = frameMetavariableNodeQuery(definedAssertionNode);
199
- if (frameMetavariableNode !== null) {
200
- var metavariableNode = frameMetavariableNode, metavariable = _metavariable.default.fromMetavariableNode(metavariableNode, localContext), declarations = [], metavariables = [
201
- metavariable
202
- ], node = metavariableNode, string = localContext.nodeAsString(node);
203
- frame = new Frame(string, declarations, metavariables);
273
+ var frameNode = frameNodeQuery(definedAssertionNode);
274
+ if (frameNode !== null) {
275
+ var metavariableNode = metavariableNodeQuery(frameNode);
276
+ if (metavariableNode !== null) {
277
+ var metavariable = _metavariable.default.fromMetavariableNode(metavariableNode, localContext), declarations = [], metavariables = [
278
+ metavariable
279
+ ], node = frameNode, string = localContext.nodeAsString(node);
280
+ frame = new Frame(string, node, declarations, metavariables);
281
+ }
204
282
  }
205
283
  return frame;
206
284
  }
@@ -209,12 +287,15 @@ var Frame = /*#__PURE__*/ function() {
209
287
  key: "fromContainedAssertionNode",
210
288
  value: function fromContainedAssertionNode(containedAssertionNode, localContext) {
211
289
  var frame = null;
212
- var frameMetavariableNode = frameMetavariableNodeQuery(containedAssertionNode);
213
- if (frameMetavariableNode !== null) {
214
- var metavariableNode = frameMetavariableNode, metavariable = _metavariable.default.fromMetavariableNode(metavariableNode, localContext), declarations = [], metavariables = [
215
- metavariable
216
- ], node = metavariableNode, string = localContext.nodeAsString(node);
217
- frame = new Frame(string, declarations, metavariables);
290
+ var frameNode = frameNodeQuery(containedAssertionNode);
291
+ if (frameNode !== null) {
292
+ var metavariableNode = metavariableNodeQuery(frameNode);
293
+ if (metavariableNode !== null) {
294
+ var metavariable = _metavariable.default.fromMetavariableNode(metavariableNode, localContext), declarations = [], metavariables = [
295
+ metavariable
296
+ ], node = frameNode, string = localContext.nodeAsString(node);
297
+ frame = new Frame(string, node, declarations, metavariables);
298
+ }
218
299
  }
219
300
  return frame;
220
301
  }
@@ -227,4 +308,4 @@ Object.assign(_shim.default, {
227
308
  });
228
309
  var _default = Frame;
229
310
 
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mcmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4vc2hpbVwiO1xuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuL2RlY2xhcmF0aW9uXCI7XG5pbXBvcnQgTWV0YXZhcmlhYmxlIGZyb20gXCIuL21ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBGUkFNRV9NRVRBX1RZUEVfTkFNRSB9IGZyb20gXCIuL21ldGFUeXBlTmFtZXNcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBkZWNsYXJhdGlvbk5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL2ZyYW1lL2RlY2xhcmF0aW9uXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvZnJhbWUvbWV0YXZhcmlhYmxlXCIpLFxuICAgICAgZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9mcmFtZS9tZXRhdmFyaWFibGUhXCIpO1xuXG5jbGFzcyBGcmFtZSB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgZGVjbGFyYXRpb25zLCBtZXRhdmFyaWFibGVzKSB7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy5kZWNsYXJhdGlvbnMgPSBkZWNsYXJhdGlvbnM7XG4gICAgdGhpcy5tZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXREZWNsYXJhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVjbGFyYXRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIGxldCBtZXRhdmFyaWFibGU7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVzTGVuZ3RoID0gdGhpcy5tZXRhdmFyaWFibGVzLmxlbmd0aDtcblxuICAgIGlmIChtZXRhdmFyaWFibGVzTGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBmaXJzdE1ldGF2YXJpYWJsZSA9IGZpcnN0KHRoaXMubWV0YXZhcmlhYmxlcyk7XG5cbiAgICAgIG1ldGF2YXJpYWJsZSA9IGZpcnN0TWV0YXZhcmlhYmxlOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgLy8gZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgLy8gICBsZXQgbWV0YXZhcmlhYmxlTm9kZSA9IG51bGw7XG4gIC8vXG4gIC8vICAgY29uc3QgZGVjbGFyYXRpb25zTGVuZ3RoID0gdGhpcy5kZWNsYXJhdGlvbnMubGVuZ3RoO1xuICAvL1xuICAvLyAgIGlmIChkZWNsYXJhdGlvbnNMZW5ndGggPT09IDApIHtcbiAgLy8gICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVzTGVuZ3RoID0gdGhpcy5tZXRhdmFyaWFibGVOb2Rlcy5sZW5ndGg7XG4gIC8vXG4gIC8vICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZXNMZW5ndGggPT09IDEpIHtcbiAgLy8gICAgICAgY29uc3QgZmlyc3RNZXRhdmFyaWFibGVOb2RlID0gZmlyc3QodGhpcy5tZXRhdmFyaWFibGVOb2Rlcyk7XG4gIC8vXG4gIC8vICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBmaXJzdE1ldGF2YXJpYWJsZU5vZGU7IC8vL1xuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy9cbiAgLy8gICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZTtcbiAgLy8gfVxuICAvL1xuICAvLyBtYXRjaE1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAvLyAgIGxldCBtZXRhdmFyaWFibGVOYW1lTWF0Y2hlcyA9IGZhbHNlO1xuICAvL1xuICAvLyAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZU5vZGUoKTtcbiAgLy9cbiAgLy8gICBpZiAobWV0YXZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAvLyAgICAgY29uc3QgbmFtZSA9IG1ldGF2YXJpYWJsZU5hbWU7ICAvLy9cbiAgLy9cbiAgLy8gICAgIG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7ICAvLy9cbiAgLy9cbiAgLy8gICAgIGNvbnN0IG5hbWVNYXRjaGVzTWV0YXZhcmlhYmxlTmFtZSA9IChuYW1lID09PSBtZXRhdmFyaWFibGVOYW1lKTtcbiAgLy9cbiAgLy8gICAgIG1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzID0gbmFtZU1hdGNoZXNNZXRhdmFyaWFibGVOYW1lOyAgLy8vXG4gIC8vICAgfVxuICAvL1xuICAvLyAgIHJldHVybiBtZXRhdmFyaWFibGVOYW1lTWF0Y2hlcztcbiAgLy8gfVxuICAvL1xuICAvLyB1bmlmeVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24pIHtcbiAgLy8gICBjb25zdCBzdWJzdGl0dXRpb25VbmlmaWVkID0gdGhpcy5kZWNsYXJhdGlvbnMuc29tZSgoZGVjbGFyYXRpb24pID0+IHtcbiAgLy8gICAgIGNvbnN0IHN1YnN0aXR1dGlvblVuaWZpZWRXaXRoRGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbi51bmlmeVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24pO1xuICAvL1xuICAvLyAgICAgaWYgKHN1YnN0aXR1dGlvblVuaWZpZWRXaXRoRGVjbGFyYXRpb24pIHtcbiAgLy8gICAgICAgcmV0dXJuIHRydWU7XG4gIC8vICAgICB9XG4gIC8vICAgfSk7XG4gIC8vXG4gIC8vICAgcmV0dXJuIHN1YnN0aXR1dGlvblVuaWZpZWQ7XG4gIC8vIH1cbiAgLy9cbiAgLy8gdW5pZnlNZXRhTGVtbWFPck1ldGF0aGVvcmVtKG1ldGFMZW1tYU1ldGF0aGVvcmVtKSB7XG4gIC8vICAgY29uc3Qgc3Vic3RpdHV0aW9ucyA9IG1ldGFMZW1tYU1ldGF0aGVvcmVtLmdldFN1YnN0aXR1dGlvbnMoKSxcbiAgLy8gICAgICAgICBzdWJzdGl0dXRpb25zVW5pZmllZCA9IHN1YnN0aXR1dGlvbnMuZXZlcnlTdWJzdGl0dXRpb24oKHN1YnN0aXR1dGlvbikgPT4ge1xuICAvLyAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uVW5pZmllZCA9IHRoaXMudW5pZnlTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKTtcbiAgLy9cbiAgLy8gICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25VbmlmaWVkKSB7XG4gIC8vICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAvLyAgICAgICAgICAgfVxuICAvLyAgICAgICAgIH0pLFxuICAvLyAgICAgICAgIG1ldGFMZW1tYU9yTWV0YVRoZW9yZW1VbmlmaWVkID0gc3Vic3RpdHV0aW9uc1VuaWZpZWQ7IC8vL1xuICAvL1xuICAvLyAgIHJldHVybiBtZXRhTGVtbWFPck1ldGFUaGVvcmVtVW5pZmllZDtcbiAgLy8gfVxuXG4gIHZlcmlmeShsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWQ7XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAgLy8vXG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZS4uLmApO1xuXG4gICAgY29uc3QgZGVjbGFyYXRpb25zVmVyaWZpZWQgPSB0aGlzLmRlY2xhcmF0aW9ucy5ldmVyeSgoZGVjbGFyYXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGRlY2xhcmF0aW9uVmVyaWZpZWQgPSBkZWNsYXJhdGlvbi52ZXJpZnkobG9jYWxDb250ZXh0KTtcblxuICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uVmVyaWZpZWQ7XG4gICAgfSk7XG5cbiAgICBpZiAoZGVjbGFyYXRpb25zVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZXNWZXJpZmllZCA9IHRoaXMubWV0YXZhcmlhYmxlcy5ldmVyeSgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZVZlcmlmaWVkID0gbWV0YXZhcmlhYmxlLnZlcmlmeShsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllZDtcbiAgICAgIH0pO1xuXG4gICAgICB2ZXJpZmllZCA9IG1ldGF2YXJpYWJsZXNWZXJpZmllZDsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZDtcbiAgfVxuXG4gIHZlcmlmeUdpdmVuTWV0YVR5cGUobWV0YVR5cGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZEdpdmVuTWV0YVR5cGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5zdHJpbmcsICAvLy9cbiAgICAgICAgICBtZXRhVHlwZVN0cmluZyA9IG1ldGFUeXBlLmdldFN0cmluZygpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUgZ2l2ZW4gdGhlICcke21ldGFUeXBlU3RyaW5nfScgbWV0YS10eXBlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZS5nZXROYW1lKCk7XG5cbiAgICBpZiAobWV0YVR5cGVOYW1lID09PSBGUkFNRV9NRVRBX1RZUEVfTkFNRSkge1xuICAgICAgY29uc3QgdmVyaWZpZWQgPSB0aGlzLnZlcmlmeShsb2NhbENvbnRleHQpXG5cbiAgICAgIHZlcmlmaWVkR2l2ZW5NZXRhVHlwZSA9IHZlcmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWRHaXZlbk1ldGFUeXBlKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIGdpdmVuIHRoZSAnJHttZXRhVHlwZVN0cmluZ30nIG1ldGEtdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRHaXZlbk1ldGFUeXBlO1xuICB9XG5cbiAgc3RhdGljIGZyb21GcmFtZU5vZGUoZnJhbWVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgICBjb25zdCBkZWNsYXJhdGlvbk5vZGVzID0gZGVjbGFyYXRpb25Ob2Rlc1F1ZXJ5KGZyYW1lTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZXMgPSBtZXRhdmFyaWFibGVOb2Rlc1F1ZXJ5KGZyYW1lTm9kZSksXG4gICAgICAgICAgZGVjbGFyYXRpb25zID0gZGVjbGFyYXRpb25Ob2Rlcy5tYXAoKGRlY2xhcmF0aW9uTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjbGFyYXRpb24gPSBEZWNsYXJhdGlvbi5mcm9tRGVjbGFyYXRpb25Ob2RlKGRlY2xhcmF0aW9uTm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVOb2Rlcy5tYXAoKG1ldGF2YXJpYWJsZU5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgICAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5vZGUgPSBmcmFtZU5vZGUsIC8vL1xuICAgICAgICAgIHN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgZnJhbWUgPSBuZXcgRnJhbWUoc3RyaW5nLCBkZWNsYXJhdGlvbnMsIG1ldGF2YXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgc3RhdGljIGZyb21EZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IGZyYW1lID0gbnVsbDtcblxuICAgIGNvbnN0IGZyYW1lTWV0YXZhcmlhYmxlTm9kZSA9IGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KGRlZmluZWRBc3NlcnRpb25Ob2RlKTtcblxuICAgIGlmIChmcmFtZU1ldGF2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBmcmFtZU1ldGF2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCksXG4gICAgICAgICAgICBkZWNsYXJhdGlvbnMgPSBbXSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSBbXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG5vZGUgPSBtZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICBzdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpO1xuXG4gICAgICBmcmFtZSA9IG5ldyBGcmFtZShzdHJpbmcsIGRlY2xhcmF0aW9ucywgbWV0YXZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgc3RhdGljIGZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCBmcmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBmcmFtZU1ldGF2YXJpYWJsZU5vZGUgPSBmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeShjb250YWluZWRBc3NlcnRpb25Ob2RlKTtcblxuICAgIGlmIChmcmFtZU1ldGF2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBmcmFtZU1ldGF2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCksXG4gICAgICAgICAgICBkZWNsYXJhdGlvbnMgPSBbXSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSBbXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG5vZGUgPSBtZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICBzdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpO1xuXG4gICAgICBmcmFtZSA9IG5ldyBGcmFtZShzdHJpbmcsIGRlY2xhcmF0aW9ucywgbWV0YXZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgLy8gc3RhdGljIGZyb21EZWNsYXJhdGlvbnMoZGVjbGFyYXRpb25zKSB7XG4gIC8vICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZXMgPSBbXSxcbiAgLy8gICAgICAgICBmcmFtZSA9IG5ldyBGcmFtZShkZWNsYXJhdGlvbnMsIG1ldGF2YXJpYWJsZU5vZGVzKTtcbiAgLy9cbiAgLy8gICByZXR1cm4gZnJhbWU7XG4gIC8vIH1cbiAgLy9cbiAgLy8gc3RhdGljIGZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgLy8gICBjb25zdCBkZWNsYXJhdGlvbnMgPSBbXSxcbiAgLy8gICAgICAgICBtZXRhdmFyaWFibGVOb2RlcyA9IFtcbiAgLy8gICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVcbiAgLy8gICAgICAgICBdLFxuICAvLyAgICAgICAgIGZyYW1lID0gbmV3IEZyYW1lKGRlY2xhcmF0aW9ucywgbWV0YXZhcmlhYmxlTm9kZXMpO1xuICAvL1xuICAvLyAgIHJldHVybiBmcmFtZTtcbiAgLy8gfVxuICAvL1xuICAvLyBzdGF0aWMgZnJvbURlY2xhcmF0aW9uc0FuZE1ldGF2YXJpYWJsZU5vZGVzKGRlY2xhcmF0aW9ucywgbWV0YXZhcmlhYmxlTm9kZXMpIHtcbiAgLy8gICBjb25zdCBmcmFtZSA9IG5ldyBGcmFtZShkZWNsYXJhdGlvbnMsIG1ldGF2YXJpYWJsZU5vZGVzKTtcbiAgLy9cbiAgLy8gICByZXR1cm4gZnJhbWU7XG4gIC8vIH1cbn1cblxuT2JqZWN0LmFzc2lnbihzaGltLCB7XG4gIEZyYW1lXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgRnJhbWU7XG4iXSwibmFtZXMiOlsiZGVjbGFyYXRpb25Ob2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsIm1ldGF2YXJpYWJsZU5vZGVzUXVlcnkiLCJmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIkZyYW1lIiwic3RyaW5nIiwiZGVjbGFyYXRpb25zIiwibWV0YXZhcmlhYmxlcyIsImdldFN0cmluZyIsImdldERlY2xhcmF0aW9ucyIsImdldE1ldGF2YXJpYWJsZXMiLCJnZXRNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RNZXRhdmFyaWFibGUiLCJmaXJzdCIsInZlcmlmeSIsImxvY2FsQ29udGV4dCIsInZlcmlmaWVkIiwiZnJhbWVTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmF0aW9uc1ZlcmlmaWVkIiwiZXZlcnkiLCJkZWNsYXJhdGlvbiIsImRlY2xhcmF0aW9uVmVyaWZpZWQiLCJtZXRhdmFyaWFibGVzVmVyaWZpZWQiLCJtZXRhdmFyaWFibGVWZXJpZmllZCIsImRlYnVnIiwidmVyaWZ5R2l2ZW5NZXRhVHlwZSIsIm1ldGFUeXBlIiwidmVyaWZpZWRHaXZlbk1ldGFUeXBlIiwibWV0YVR5cGVTdHJpbmciLCJtZXRhVHlwZU5hbWUiLCJnZXROYW1lIiwiRlJBTUVfTUVUQV9UWVBFX05BTUUiLCJmcm9tRnJhbWVOb2RlIiwiZnJhbWVOb2RlIiwiZGVjbGFyYXRpb25Ob2RlcyIsIm1ldGF2YXJpYWJsZU5vZGVzIiwibWFwIiwiZGVjbGFyYXRpb25Ob2RlIiwiRGVjbGFyYXRpb24iLCJmcm9tRGVjbGFyYXRpb25Ob2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIk1ldGF2YXJpYWJsZSIsImZyb21NZXRhdmFyaWFibGVOb2RlIiwibm9kZSIsIm5vZGVBc1N0cmluZyIsImZyYW1lIiwiZnJvbURlZmluZWRBc3NlcnRpb25Ob2RlIiwiZGVmaW5lZEFzc2VydGlvbk5vZGUiLCJmcmFtZU1ldGF2YXJpYWJsZU5vZGUiLCJmcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJPYmplY3QiLCJhc3NpZ24iLCJzaGltIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyUEE7OztlQUFBOzs7MkRBelBpQjtrRUFDTzttRUFDQzs2QkFFWTtxQkFDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0QyxJQUFNQSx3QkFBd0JDLElBQUFBLGlCQUFVLEVBQUMsdUJBQ25DQyx5QkFBeUJELElBQUFBLGlCQUFVLEVBQUMsd0JBQ3BDRSw2QkFBNkJDLElBQUFBLGdCQUFTLEVBQUM7QUFFN0MsSUFBQSxBQUFNQyxzQkFBTjthQUFNQSxNQUNRQyxNQUFNLEVBQUVDLFlBQVksRUFBRUMsYUFBYTtnQ0FEM0NIO1FBRUYsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxZQUFZLEdBQUdBO1FBQ3BCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQTs7a0JBSm5CSDs7WUFPSkksS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSCxNQUFNO1lBQ3BCOzs7WUFFQUksS0FB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
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mcmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBzaGltIGZyb20gXCIuL3NoaW1cIjtcbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi9kZWNsYXJhdGlvblwiO1xuaW1wb3J0IE1ldGF2YXJpYWJsZSBmcm9tIFwiLi9tZXRhdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgRlJBTUVfTUVUQV9UWVBFX05BTUUgfSBmcm9tIFwiLi9tZXRhVHlwZU5hbWVzXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgZnJhbWVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9mcmFtZVwiKSxcbiAgICAgIGRlY2xhcmF0aW9uTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvZnJhbWUvZGVjbGFyYXRpb25cIiksXG4gICAgICBtZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWUvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL2ZyYW1lL21ldGF2YXJpYWJsZVwiKTtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNsYXNzIEZyYW1lIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBub2RlLCBkZWNsYXJhdGlvbnMsIG1ldGF2YXJpYWJsZXMpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMuZGVjbGFyYXRpb25zID0gZGVjbGFyYXRpb25zO1xuICAgIHRoaXMubWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgZ2V0RGVjbGFyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmRlY2xhcmF0aW9ucztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlID0gbnVsbDtcblxuICAgIGNvbnN0IGRlY2xhcmF0aW9uc0xlbmd0aCA9IHRoaXMuZGVjbGFyYXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChkZWNsYXJhdGlvbnNMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZXNMZW5ndGggPSB0aGlzLm1ldGF2YXJpYWJsZXMubGVuZ3RoO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBmaXJzdE1ldGF2YXJpYWJsZSA9IGZpcnN0KHRoaXMubWV0YXZhcmlhYmxlcyk7XG5cbiAgICAgICAgbWV0YXZhcmlhYmxlID0gZmlyc3RNZXRhdmFyaWFibGU7IC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVOb2RlKCkge1xuICAgIGxldCBtZXRhdmFyaWFibGVOb2RlID0gbnVsbDtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlLmdldE5vZGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZTtcbiAgfVxuXG4gIG1hdGNoRnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGZyYW1lTm9kZU1hdGNoZXMgPSB0aGlzLm5vZGUubWF0Y2goZnJhbWVOb2RlKTtcblxuICAgIHJldHVybiBmcmFtZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlTmFtZU1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBtZXRhdmFyaWFibGVOYW1lTWF0Y2hlcyA9IG1ldGF2YXJpYWJsZS5tYXRjaE1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzO1xuICB9XG5cbiAgdW5pZnlTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgc3Vic3RpdHV0aW9uVW5pZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uLi4uYClcblxuICAgIGlmICghc3Vic3RpdHV0aW9uVW5pZmllZCkge1xuICAgICAgc3Vic3RpdHV0aW9uVW5pZmllZCA9IHRoaXMuZGVjbGFyYXRpb25zLnNvbWUoKGRlY2xhcmF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvblVuaWZpZWQgPSBkZWNsYXJhdGlvbi51bmlmeVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN1YnN0aXR1dGlvblVuaWZpZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFzdWJzdGl0dXRpb25VbmlmaWVkKSB7XG4gICAgICBzdWJzdGl0dXRpb25VbmlmaWVkID0gdGhpcy5tZXRhdmFyaWFibGVzLnNvbWUoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25VbmlmaWVkID0gbWV0YXZhcmlhYmxlLnVuaWZ5U3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICBpZiAoc3Vic3RpdHV0aW9uVW5pZmllZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uVW5pZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24uLi5gKVxuICAgIH1cblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25VbmlmaWVkO1xuICB9XG5cbiAgdW5pZnlNZXRhTGVtbWFPck1ldGF0aGVvcmVtKG1ldGFMZW1tYU1ldGF0aGVvcmVtLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgbWV0YUxlbW1hT3JNZXRhVGhlb3JlbVVuaWZpZWQ7XG5cbiAgICBjb25zdCBtZXRhTGVtbWFNZXRhdGhlb3JlbVN0cmluZyA9IG1ldGFMZW1tYU1ldGF0aGVvcmVtLmdldFN0cmluZygpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7bWV0YUxlbW1hTWV0YXRoZW9yZW1TdHJpbmd9JyBtZXRhdGhlb3JlbSBvciBtZXRhLWxlbW1hLi4uYCk7XG5cbiAgICBjb25zdCBzdWJzdGl0dXRpb25zID0gbWV0YUxlbW1hTWV0YXRoZW9yZW0uZ2V0U3Vic3RpdHV0aW9ucygpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnNVbmlmaWVkID0gc3Vic3RpdHV0aW9ucy5ldmVyeVN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25VbmlmaWVkID0gdGhpcy51bmlmeVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25VbmlmaWVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgbWV0YUxlbW1hT3JNZXRhVGhlb3JlbVVuaWZpZWQgPSBzdWJzdGl0dXRpb25zVW5pZmllZDsgLy8vXG5cbiAgICBpZiAobWV0YUxlbW1hT3JNZXRhVGhlb3JlbVVuaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bWV0YUxlbW1hTWV0YXRoZW9yZW1TdHJpbmd9JyBtZXRhdGhlb3JlbSBvciBtZXRhLWxlbW1hLmApO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhTGVtbWFPck1ldGFUaGVvcmVtVW5pZmllZDtcbiAgfVxuXG4gIHZlcmlmeShhc3NpZ25tZW50cywgc3RhdGVkLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWQ7XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAgLy8vXG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZS4uLmApO1xuXG4gICAgY29uc3QgZGVjbGFyYXRpb25zVmVyaWZpZWQgPSB0aGlzLmRlY2xhcmF0aW9ucy5ldmVyeSgoZGVjbGFyYXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uVmVyaWZpZWQgPSBkZWNsYXJhdGlvbi52ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uVmVyaWZpZWQ7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlc1ZlcmlmaWVkID0gdGhpcy5tZXRhdmFyaWFibGVzLmV2ZXJ5KChtZXRhdmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZVZlcmlmaWVkID0gbWV0YXZhcmlhYmxlLnZlcmlmeShsb2NhbENvbnRleHQpO1xuXG4gICAgICAgICAgICByZXR1cm4gbWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICBpZiAoZGVjbGFyYXRpb25zVmVyaWZpZWQgJiYgbWV0YXZhcmlhYmxlc1ZlcmlmaWVkKSB7XG4gICAgICBsZXQgdmVyaWZpZWRXaGVuU3RhdGVkID0gZmFsc2UsXG4gICAgICAgICAgdmVyaWZpZWRXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAoc3RhdGVkKSB7XG4gICAgICAgIHZlcmlmaWVkV2hlblN0YXRlZCA9IHRoaXMudmVyaWZ5V2hlblN0YXRlZChhc3NpZ25tZW50cywgbG9jYWxDb250ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZlcmlmaWVkV2hlbkRlcml2ZWQgPSB0aGlzLnZlcmlmeVdoZW5EZXJpdmVkKGFzc2lnbm1lbnRzLCBsb2NhbENvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZWRXaGVuU3RhdGVkIHx8IHZlcmlmaWVkV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgdmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlXaGVuU3RhdGVkKGFzc2lnbm1lbnRzLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWRXaGVuU3RhdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAgLy8vXG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSB3aGVuIHN0YXRlZC4uLmApO1xuXG4gICAgY29uc3QgZGVjbGFyYXRpb25zTGVuZ3RoID0gdGhpcy5kZWNsYXJhdGlvbnMubGVuZ3RoO1xuXG4gICAgaWYgKGRlY2xhcmF0aW9uc0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlc0xlbmd0aCA9IHRoaXMubWV0YXZhcmlhYmxlcy5sZW5ndGg7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVzTGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHZlcmlmaWVkV2hlblN0YXRlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2NhbENvbnRleHQudHJhY2UoYFRoZSAnJHtmcmFtZVN0cmluZ30nIHN0YXRlZCBmcmFtZSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIG1ldGF2YXJpYWJsZS5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxDb250ZXh0LnRyYWNlKGBUaGUgJyR7ZnJhbWVTdHJpbmd9JyBzdGF0ZWQgZnJhbWUgY2Fubm90IGhhdmUgZGVjbGFyYXRpb25zLmApO1xuICAgIH1cblxuXG4gICAgaWYgKHZlcmlmaWVkV2hlblN0YXRlZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSB3aGVuIHN0YXRlZC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRXaGVuU3RhdGVkO1xuICB9XG5cbiAgdmVyaWZ5V2hlbkRlcml2ZWQoYXNzaWdubWVudHMsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZFdoZW5EZXJpdmVkO1xuXG4gICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLnN0cmluZzsgIC8vL1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUgd2hlbiBkZXJpdmVkLi4uYCk7XG5cbiAgICB2ZXJpZmllZFdoZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgIGlmICh2ZXJpZmllZFdoZW5EZXJpdmVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIHdoZW4gZGVyaXZlZC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRXaGVuRGVyaXZlZDtcbiAgfVxuXG4gIHZlcmlmeUdpdmVuTWV0YVR5cGUobWV0YVR5cGUsIGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZEdpdmVuTWV0YVR5cGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5zdHJpbmcsICAvLy9cbiAgICAgICAgICBtZXRhVHlwZVN0cmluZyA9IG1ldGFUeXBlLmdldFN0cmluZygpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUgZ2l2ZW4gdGhlICcke21ldGFUeXBlU3RyaW5nfScgbWV0YS10eXBlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZS5nZXROYW1lKCk7XG5cbiAgICBpZiAobWV0YVR5cGVOYW1lID09PSBGUkFNRV9NRVRBX1RZUEVfTkFNRSkge1xuICAgICAgY29uc3QgdmVyaWZpZWQgPSB0aGlzLnZlcmlmeShhc3NpZ25tZW50cywgc3RhdGVkLCBsb2NhbENvbnRleHQpXG5cbiAgICAgIHZlcmlmaWVkR2l2ZW5NZXRhVHlwZSA9IHZlcmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWRHaXZlbk1ldGFUeXBlKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIGdpdmVuIHRoZSAnJHttZXRhVHlwZVN0cmluZ30nIG1ldGEtdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRHaXZlbk1ldGFUeXBlO1xuICB9XG5cbiAgc3RhdGljIGZyb21GcmFtZU5vZGUoZnJhbWVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgZnJhbWUgPSBudWxsO1xuXG4gICAgaWYgKGZyYW1lTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVjbGFyYXRpb25Ob2RlcyA9IGRlY2xhcmF0aW9uTm9kZXNRdWVyeShmcmFtZU5vZGUpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZXMgPSBtZXRhdmFyaWFibGVOb2Rlc1F1ZXJ5KGZyYW1lTm9kZSksXG4gICAgICAgICAgICBkZWNsYXJhdGlvbnMgPSBkZWNsYXJhdGlvbk5vZGVzLm1hcCgoZGVjbGFyYXRpb25Ob2RlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uID0gRGVjbGFyYXRpb24uZnJvbURlY2xhcmF0aW9uTm9kZShkZWNsYXJhdGlvbk5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlTm9kZXMubWFwKChtZXRhdmFyaWFibGVOb2RlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5vZGUgPSBmcmFtZU5vZGUsIC8vL1xuICAgICAgICAgICAgc3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKTtcblxuICAgICAgZnJhbWUgPSBuZXcgRnJhbWUoc3RyaW5nLCBub2RlLCBkZWNsYXJhdGlvbnMsIG1ldGF2YXJpYWJsZXMpO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRGVmaW5lZEFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCBmcmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBmcmFtZU5vZGUgPSBmcmFtZU5vZGVRdWVyeShkZWZpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBpZiAoZnJhbWVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KGZyYW1lTm9kZSk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpLFxuICAgICAgICAgICAgICBkZWNsYXJhdGlvbnMgPSBbXSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlcyA9IFtcbiAgICAgICAgICAgICAgICBtZXRhdmFyaWFibGVcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgbm9kZSA9IGZyYW1lTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBzdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpO1xuXG4gICAgICAgIGZyYW1lID0gbmV3IEZyYW1lKHN0cmluZywgbm9kZSwgZGVjbGFyYXRpb25zLCBtZXRhdmFyaWFibGVzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IGZyYW1lID0gbnVsbDtcblxuICAgIGNvbnN0IGZyYW1lTm9kZSA9IGZyYW1lTm9kZVF1ZXJ5KGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpO1xuXG4gICAgaWYgKGZyYW1lTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShmcmFtZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0KSxcbiAgICAgICAgICAgICAgZGVjbGFyYXRpb25zID0gW10sXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSBbXG4gICAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIG5vZGUgPSBmcmFtZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgc3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKTtcblxuICAgICAgICBmcmFtZSA9IG5ldyBGcmFtZShzdHJpbmcsIG5vZGUsIGRlY2xhcmF0aW9ucywgbWV0YXZhcmlhYmxlcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oc2hpbSwge1xuICBGcmFtZVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZyYW1lO1xuIl0sIm5hbWVzIjpbImZyYW1lTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwiZGVjbGFyYXRpb25Ob2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsIm1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsIm1ldGF2YXJpYWJsZU5vZGVzUXVlcnkiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiRnJhbWUiLCJzdHJpbmciLCJub2RlIiwiZGVjbGFyYXRpb25zIiwibWV0YXZhcmlhYmxlcyIsImdldFN0cmluZyIsImdldE5vZGUiLCJnZXREZWNsYXJhdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwiZ2V0TWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwiZGVjbGFyYXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwibWV0YXZhcmlhYmxlc0xlbmd0aCIsImZpcnN0TWV0YXZhcmlhYmxlIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtYXRjaEZyYW1lTm9kZSIsImZyYW1lTm9kZSIsImZyYW1lTm9kZU1hdGNoZXMiLCJtYXRjaCIsIm1hdGNoTWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lTWF0Y2hlcyIsInVuaWZ5U3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uIiwibG9jYWxDb250ZXh0Iiwic3Vic3RpdHV0aW9uVW5pZmllZCIsInN1YnN0aXR1dGlvblN0cmluZyIsInRyYWNlIiwic29tZSIsImRlY2xhcmF0aW9uIiwiZGVidWciLCJ1bmlmeU1ldGFMZW1tYU9yTWV0YXRoZW9yZW0iLCJtZXRhTGVtbWFNZXRhdGhlb3JlbSIsIm1ldGFMZW1tYU9yTWV0YVRoZW9yZW1VbmlmaWVkIiwibWV0YUxlbW1hTWV0YXRoZW9yZW1TdHJpbmciLCJzdWJzdGl0dXRpb25zIiwiZ2V0U3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnNVbmlmaWVkIiwiZXZlcnlTdWJzdGl0dXRpb24iLCJ2ZXJpZnkiLCJhc3NpZ25tZW50cyIsInN0YXRlZCIsInZlcmlmaWVkIiwiZnJhbWVTdHJpbmciLCJkZWNsYXJhdGlvbnNWZXJpZmllZCIsImV2ZXJ5IiwiZGVjbGFyYXRpb25WZXJpZmllZCIsIm1ldGF2YXJpYWJsZXNWZXJpZmllZCIsIm1ldGF2YXJpYWJsZVZlcmlmaWVkIiwidmVyaWZpZWRXaGVuU3RhdGVkIiwidmVyaWZpZWRXaGVuRGVyaXZlZCIsInZlcmlmeVdoZW5TdGF0ZWQiLCJ2ZXJpZnlXaGVuRGVyaXZlZCIsInZlcmlmeUdpdmVuTWV0YVR5cGUiLCJtZXRhVHlwZSIsInZlcmlmaWVkR2l2ZW5NZXRhVHlwZSIsIm1ldGFUeXBlU3RyaW5nIiwibWV0YVR5cGVOYW1lIiwiZ2V0TmFtZSIsIkZSQU1FX01FVEFfVFlQRV9OQU1FIiwiZnJvbUZyYW1lTm9kZSIsImZyYW1lIiwiZGVjbGFyYXRpb25Ob2RlcyIsIm1ldGF2YXJpYWJsZU5vZGVzIiwibWFwIiwiZGVjbGFyYXRpb25Ob2RlIiwiRGVjbGFyYXRpb24iLCJmcm9tRGVjbGFyYXRpb25Ob2RlIiwiTWV0YXZhcmlhYmxlIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGUiLCJub2RlQXNTdHJpbmciLCJmcm9tRGVmaW5lZEFzc2VydGlvbk5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsIk9iamVjdCIsImFzc2lnbiIsInNoaW0iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQStVQTs7O2VBQUE7Ozt5QkE3VStCOzJEQUVkO2tFQUNPO21FQUNDOzZCQUVZO3FCQUNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRDLElBQU1BLGlCQUFpQkMsSUFBQUEsZ0JBQVMsRUFBQyxhQUMzQkMsd0JBQXdCQyxJQUFBQSxpQkFBVSxFQUFDLHVCQUNuQ0Msd0JBQXdCSCxJQUFBQSxnQkFBUyxFQUFDLHlCQUNsQ0kseUJBQXlCRixJQUFBQSxpQkFBVSxFQUFDO0FBRTFDLElBQU0sQUFBRUcsUUFBVUMseUJBQWMsQ0FBeEJEO0FBRVIsSUFBQSxBQUFNRSxzQkFBTjthQUFNQSxNQUNRQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsWUFBWSxFQUFFQyxhQUFhO2dDQURqREo7UUFFRixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFD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
package/lib/index.js CHANGED
@@ -13,7 +13,7 @@ _export(exports, {
13
13
  return _log.default;
14
14
  },
15
15
  ReleaseContext: function() {
16
- return _release1.default;
16
+ return _release.default;
17
17
  },
18
18
  customGrammarUtilities: function() {
19
19
  return _customGrammar.default;
@@ -21,18 +21,34 @@ _export(exports, {
21
21
  releaseContextUtilities: function() {
22
22
  return _releaseContext.default;
23
23
  },
24
- verifyRelease: function() {
25
- return _release.default;
24
+ releaseUtilities: function() {
25
+ return _release1.default;
26
26
  }
27
27
  });
28
28
  var _type = /*#__PURE__*/ _interop_require_default(require("./type"));
29
29
  var _term = /*#__PURE__*/ _interop_require_default(require("./term"));
30
+ var _rule = /*#__PURE__*/ _interop_require_default(require("./rule"));
31
+ var _label = /*#__PURE__*/ _interop_require_default(require("./label"));
32
+ var _axiom = /*#__PURE__*/ _interop_require_default(require("./axiom"));
33
+ var _lemma = /*#__PURE__*/ _interop_require_default(require("./lemma"));
34
+ var _premise = /*#__PURE__*/ _interop_require_default(require("./premise"));
35
+ var _theorem = /*#__PURE__*/ _interop_require_default(require("./theorem"));
30
36
  var _metaType = /*#__PURE__*/ _interop_require_default(require("./metaType"));
37
+ var _variable = /*#__PURE__*/ _interop_require_default(require("./variable"));
31
38
  var _statement = /*#__PURE__*/ _interop_require_default(require("./statement"));
32
39
  var _proofStep = /*#__PURE__*/ _interop_require_default(require("./proofStep"));
40
+ var _consequent = /*#__PURE__*/ _interop_require_default(require("./consequent"));
41
+ var _conjecture = /*#__PURE__*/ _interop_require_default(require("./conjecture"));
42
+ var _combinator = /*#__PURE__*/ _interop_require_default(require("./combinator"));
43
+ var _conclusion = /*#__PURE__*/ _interop_require_default(require("./conclusion"));
44
+ var _constructor = /*#__PURE__*/ _interop_require_default(require("./constructor"));
45
+ var _supposition = /*#__PURE__*/ _interop_require_default(require("./supposition"));
46
+ var _metatheorem = /*#__PURE__*/ _interop_require_default(require("./metatheorem"));
47
+ var _metavariable = /*#__PURE__*/ _interop_require_default(require("./metavariable"));
48
+ var _unqualified = /*#__PURE__*/ _interop_require_default(require("./statement/unqualified"));
33
49
  var _log = /*#__PURE__*/ _interop_require_default(require("./log"));
34
- var _release = /*#__PURE__*/ _interop_require_default(require("./verify/release"));
35
- var _release1 = /*#__PURE__*/ _interop_require_default(require("./context/release"));
50
+ var _release = /*#__PURE__*/ _interop_require_default(require("./context/release"));
51
+ var _release1 = /*#__PURE__*/ _interop_require_default(require("./utilities/release"));
36
52
  var _customGrammar = /*#__PURE__*/ _interop_require_default(require("./utilities/customGrammar"));
37
53
  var _releaseContext = /*#__PURE__*/ _interop_require_default(require("./utilities/releaseContext"));
38
54
  function _interop_require_default(obj) {
@@ -41,4 +57,4 @@ function _interop_require_default(obj) {
41
57
  };
42
58
  }
43
59
 
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFR5cGUgZnJvbSBcIi4vdHlwZVwiO1xuaW1wb3J0IFRlcm0gZnJvbSBcIi4vdGVybVwiO1xuaW1wb3J0IE1ldGFUeXBlIGZyb20gXCIuL21ldGFUeXBlXCI7XG5pbXBvcnQgU3RhdGVtZW50IGZyb20gXCIuL3N0YXRlbWVudFwiO1xuaW1wb3J0IFByb29mU3RlcCBmcm9tIFwiLi9wcm9vZlN0ZXBcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZ5UmVsZWFzZSB9IGZyb20gXCIuL3ZlcmlmeS9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vY29udGV4dC9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGN1c3RvbUdyYW1tYXJVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvY3VzdG9tR3JhbW1hclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWxlYXNlQ29udGV4dFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9yZWxlYXNlQ29udGV4dFwiO1xuIl0sIm5hbWVzIjpbIkxvZyIsIlJlbGVhc2VDb250ZXh0IiwiY3VzdG9tR3JhbW1hclV0aWxpdGllcyIsInJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIiwidmVyaWZ5UmVsZWFzZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBUW9CQSxHQUFHO2VBQUhBLFlBQUc7O0lBRUhDLGNBQWM7ZUFBZEEsaUJBQWM7O0lBQ2RDLHNCQUFzQjtlQUF0QkEsc0JBQXNCOztJQUN0QkMsdUJBQXVCO2VBQXZCQSx1QkFBdUI7O0lBSHZCQyxhQUFhO2VBQWJBLGdCQUFhOzs7MkRBUGhCOzJEQUNBOytEQUNJO2dFQUNDO2dFQUNBOzBEQUVTOzhEQUNVOytEQUNDO29FQUNRO3FFQUNDIn0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFR5cGUgZnJvbSBcIi4vdHlwZVwiO1xuaW1wb3J0IFRlcm0gZnJvbSBcIi4vdGVybVwiO1xuaW1wb3J0IFJ1bGUgZnJvbSBcIi4vcnVsZVwiO1xuaW1wb3J0IExhYmVsIGZyb20gXCIuL2xhYmVsXCI7XG5pbXBvcnQgQXhpb20gZnJvbSBcIi4vYXhpb21cIjtcbmltcG9ydCBMZW1tYSBmcm9tIFwiLi9sZW1tYVwiO1xuaW1wb3J0IFByZW1pc2UgZnJvbSBcIi4vcHJlbWlzZVwiO1xuaW1wb3J0IFRoZW9yZW0gZnJvbSBcIi4vdGhlb3JlbVwiO1xuaW1wb3J0IE1ldGFUeXBlIGZyb20gXCIuL21ldGFUeXBlXCI7XG5pbXBvcnQgVmFyaWFibGUgZnJvbSBcIi4vdmFyaWFibGVcIjtcbmltcG9ydCBTdGF0ZW1lbnQgZnJvbSBcIi4vc3RhdGVtZW50XCI7XG5pbXBvcnQgUHJvb2ZTdGVwIGZyb20gXCIuL3Byb29mU3RlcFwiO1xuaW1wb3J0IENvbnNlcXVlbnQgZnJvbSBcIi4vY29uc2VxdWVudFwiO1xuaW1wb3J0IENvbmplY3R1cmUgZnJvbSBcIi4vY29uamVjdHVyZVwiO1xuaW1wb3J0IENvbWJpbmF0b3IgZnJvbSBcIi4vY29tYmluYXRvclwiO1xuaW1wb3J0IENvbmNsdXNpb24gZnJvbSBcIi4vY29uY2x1c2lvblwiO1xuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuL2NvbnN0cnVjdG9yXCI7XG5pbXBvcnQgU3VwcG9zaXRpb24gZnJvbSBcIi4vc3VwcG9zaXRpb25cIjtcbmltcG9ydCBNZXRhdGhlb3JlbSBmcm9tIFwiLi9tZXRhdGhlb3JlbVwiO1xuaW1wb3J0IE1ldGF2YXJpYWJsZSBmcm9tIFwiLi9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCBVbnF1YWxpZmllZFN0YXRlbWVudCBmcm9tIFwiLi9zdGF0ZW1lbnQvdW5xdWFsaWZpZWRcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVsZWFzZVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGN1c3RvbUdyYW1tYXJVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvY3VzdG9tR3JhbW1hclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWxlYXNlQ29udGV4dFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9yZWxlYXNlQ29udGV4dFwiO1xuIl0sIm5hbWVzIjpbIkxvZyIsIlJlbGVhc2VDb250ZXh0IiwiY3VzdG9tR3JhbW1hclV0aWxpdGllcyIsInJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIiwicmVsZWFzZVV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBd0JvQkEsR0FBRztlQUFIQSxZQUFHOztJQUNIQyxjQUFjO2VBQWRBLGdCQUFjOztJQUVkQyxzQkFBc0I7ZUFBdEJBLHNCQUFzQjs7SUFDdEJDLHVCQUF1QjtlQUF2QkEsdUJBQXVCOztJQUZ2QkMsZ0JBQWdCO2VBQWhCQSxpQkFBZ0I7OzsyREF4Qm5COzJEQUNBOzJEQUNBOzREQUNDOzREQUNBOzREQUNBOzhEQUNFOzhEQUNBOytEQUNDOytEQUNBO2dFQUNDO2dFQUNBO2lFQUNDO2lFQUNBO2lFQUNBO2lFQUNBO2tFQUNDO2tFQUNBO2tFQUNBO21FQUNDO2tFQUNROzBEQUVGOzhEQUNXOytEQUNFO29FQUNNO3FFQUNDIn0=