occam-verify-cli 0.0.678 → 0.0.680

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 (141) hide show
  1. package/bin/action/verify.js +13 -3
  2. package/lib/axiomLemmaTheoremConjecture.js +3 -3
  3. package/lib/conclusion.js +16 -5
  4. package/lib/consequent.js +11 -3
  5. package/lib/context/file.js +73 -3
  6. package/lib/context/release.js +7 -2
  7. package/lib/equality.js +13 -199
  8. package/lib/premise.js +24 -7
  9. package/lib/supposition.js +15 -4
  10. package/lib/type.js +3 -8
  11. package/lib/utilities/array.js +5 -2
  12. package/lib/utilities/string.js +26 -13
  13. package/lib/verifier/node/metastatement.js +176 -0
  14. package/lib/verifier/node/statementAsCombinator.js +186 -0
  15. package/lib/verifier/node/termAsConstructor.js +224 -0
  16. package/lib/verifier/node.js +158 -0
  17. package/lib/verifier/nodes/equality.js +155 -0
  18. package/lib/verifier/{metastatementForMetavariable → nodes/metastatementForMetavariable}/conclusion.js +13 -12
  19. package/lib/verifier/{metastatementForMetavariable → nodes/metastatementForMetavariable}/premise.js +13 -12
  20. package/lib/verifier/nodes/metastatementForMetavariable.js +198 -0
  21. package/lib/verifier/nodes/statement.js +200 -0
  22. package/lib/verifier/{statementForMetavariable → nodes/statementForMetavariable}/conclusion.js +13 -12
  23. package/lib/verifier/{statementForMetavariable → nodes/statementForMetavariable}/premise.js +13 -12
  24. package/lib/verifier/nodes/statementForMetavariable.js +203 -0
  25. package/lib/verifier/nodes/term.js +210 -0
  26. package/lib/verifier/{termForVariable/supposition.js → nodes/termForVariable/consequent.js} +13 -12
  27. package/lib/verifier/{termForVariable/consequent.js → nodes/termForVariable/supposition.js} +13 -12
  28. package/lib/verifier/nodes/termForVariable.js +217 -0
  29. package/lib/verifier/nodes.js +175 -0
  30. package/lib/verify/axiom.js +3 -3
  31. package/lib/verify/conclusion.js +3 -3
  32. package/lib/verify/conjecture.js +3 -3
  33. package/lib/verify/consequent.js +3 -3
  34. package/lib/verify/declaration/combinator.js +7 -2
  35. package/lib/verify/declaration/constructor.js +8 -2
  36. package/lib/verify/declaration/metavariable.js +7 -2
  37. package/lib/verify/declaration/type.js +7 -2
  38. package/lib/verify/declaration/variable.js +8 -2
  39. package/lib/verify/file.js +3 -3
  40. package/lib/verify/label.js +9 -4
  41. package/lib/verify/lemma.js +3 -3
  42. package/lib/verify/metastatement/qualified.js +5 -6
  43. package/lib/verify/metastatement/unqualified.js +9 -7
  44. package/lib/verify/metastatement.js +36 -156
  45. package/lib/verify/metavariable.js +6 -4
  46. package/lib/verify/premise.js +3 -3
  47. package/lib/verify/release.js +3 -3
  48. package/lib/verify/rule.js +3 -3
  49. package/lib/verify/statement/qualified.js +5 -6
  50. package/lib/verify/statement/unqualified.js +9 -7
  51. package/lib/verify/statement.js +86 -332
  52. package/lib/verify/statementAsCombinator.js +8 -82
  53. package/lib/verify/supposition.js +3 -3
  54. package/lib/verify/term.js +79 -215
  55. package/lib/verify/termAsConstructor.js +15 -89
  56. package/lib/verify/terms.js +45 -0
  57. package/lib/verify/theorem.js +3 -3
  58. package/lib/verify/type.js +7 -5
  59. package/lib/verify/typeAssertion.js +124 -0
  60. package/lib/verify/variable.js +7 -5
  61. package/package.json +5 -5
  62. package/src/axiomLemmaTheoremConjecture.js +2 -2
  63. package/src/conclusion.js +13 -4
  64. package/src/consequent.js +9 -2
  65. package/src/context/file.js +9 -2
  66. package/src/context/release.js +9 -2
  67. package/src/equality.js +17 -143
  68. package/src/premise.js +23 -6
  69. package/src/supposition.js +12 -3
  70. package/src/type.js +3 -8
  71. package/src/utilities/array.js +1 -1
  72. package/src/utilities/string.js +34 -23
  73. package/src/verifier/node/metastatement.js +61 -0
  74. package/src/verifier/node/statementAsCombinator.js +80 -0
  75. package/src/verifier/node/termAsConstructor.js +124 -0
  76. package/src/verifier/node.js +85 -0
  77. package/src/verifier/nodes/equality.js +68 -0
  78. package/src/verifier/nodes/metastatementForMetavariable/conclusion.js +11 -0
  79. package/src/verifier/nodes/metastatementForMetavariable/premise.js +11 -0
  80. package/src/verifier/{metastatementForMetavariable.js → nodes/metastatementForMetavariable.js} +13 -13
  81. package/src/verifier/nodes/statement.js +100 -0
  82. package/src/verifier/nodes/statementForMetavariable/conclusion.js +11 -0
  83. package/src/verifier/nodes/statementForMetavariable/premise.js +11 -0
  84. package/src/verifier/{statementForMetavariable.js → nodes/statementForMetavariable.js} +10 -10
  85. package/src/verifier/nodes/term.js +106 -0
  86. package/src/verifier/nodes/termForVariable/consequent.js +11 -0
  87. package/src/verifier/nodes/termForVariable/supposition.js +11 -0
  88. package/src/verifier/{termForVariable.js → nodes/termForVariable.js} +42 -30
  89. package/src/verifier/nodes.js +111 -0
  90. package/src/verify/axiom.js +2 -2
  91. package/src/verify/conclusion.js +2 -2
  92. package/src/verify/conjecture.js +2 -2
  93. package/src/verify/consequent.js +2 -2
  94. package/src/verify/declaration/combinator.js +9 -1
  95. package/src/verify/declaration/constructor.js +15 -1
  96. package/src/verify/declaration/metavariable.js +9 -1
  97. package/src/verify/declaration/type.js +14 -1
  98. package/src/verify/declaration/variable.js +15 -1
  99. package/src/verify/file.js +2 -2
  100. package/src/verify/label.js +10 -2
  101. package/src/verify/lemma.js +4 -4
  102. package/src/verify/metastatement/qualified.js +4 -6
  103. package/src/verify/metastatement/unqualified.js +9 -7
  104. package/src/verify/metastatement.js +35 -56
  105. package/src/verify/metavariable.js +6 -3
  106. package/src/verify/premise.js +2 -2
  107. package/src/verify/release.js +2 -2
  108. package/src/verify/rule.js +2 -2
  109. package/src/verify/statement/qualified.js +4 -6
  110. package/src/verify/statement/unqualified.js +9 -7
  111. package/src/verify/statement.js +109 -302
  112. package/src/verify/statementAsCombinator.js +9 -129
  113. package/src/verify/supposition.js +2 -2
  114. package/src/verify/term.js +99 -156
  115. package/src/verify/termAsConstructor.js +20 -135
  116. package/src/verify/terms.js +54 -0
  117. package/src/verify/theorem.js +2 -2
  118. package/src/verify/type.js +7 -4
  119. package/src/verify/typeAssertion.js +164 -0
  120. package/src/verify/variable.js +7 -4
  121. package/lib/node/statement/combinator/equality.js +0 -21
  122. package/lib/ocmbinator/equality.js +0 -126
  123. package/lib/tokens/statement/combinator/equality.js +0 -17
  124. package/lib/verifier/metastatementForMetavariable.js +0 -198
  125. package/lib/verifier/statementForMetavariable.js +0 -203
  126. package/lib/verifier/termForVariable.js +0 -209
  127. package/lib/verifier.js +0 -138
  128. package/lib/verify/assertion/type.js +0 -115
  129. package/lib/verify/typeInference.js +0 -132
  130. package/src/node/statement/combinator/equality.js +0 -9
  131. package/src/ocmbinator/equality.js +0 -23
  132. package/src/tokens/statement/combinator/equality.js +0 -10
  133. package/src/verifier/metastatementForMetavariable/conclusion.js +0 -9
  134. package/src/verifier/metastatementForMetavariable/premise.js +0 -9
  135. package/src/verifier/statementForMetavariable/conclusion.js +0 -9
  136. package/src/verifier/statementForMetavariable/premise.js +0 -9
  137. package/src/verifier/termForVariable/consequent.js +0 -9
  138. package/src/verifier/termForVariable/supposition.js +0 -9
  139. package/src/verifier.js +0 -74
  140. package/src/verify/assertion/type.js +0 -153
  141. package/src/verify/typeInference.js +0 -146
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+
3
+ import Variable from "../variable";
4
+ import Assignment from "../assignment";
5
+
6
+ import { first } from "../utilities/array";
7
+ import { nodeQuery, typeNameFromTypeNode } from "../utilities/query";
8
+ import { verifyTermAsVariable, verifyTermAgainstConstructors } from "../verify/term";
9
+
10
+ const termNodeQuery = nodeQuery("/typeAssertion/term!"),
11
+ typeNodeQuery = nodeQuery("/typeAssertion/type!");
12
+
13
+ export default function verifyTypeAssertion(typeAssertionNode, assignments, derived, context, verifyAhead) {
14
+ let typeAssertionVerified = false;
15
+
16
+ const typeAssertionString = context.nodeAsString(typeAssertionNode);
17
+
18
+ context.trace(`Verifying the '${typeAssertionString}' type assertion...`, typeAssertionNode);
19
+
20
+ const typeNode = typeNodeQuery(typeAssertionNode),
21
+ typeName = typeNameFromTypeNode(typeNode),
22
+ assertedTypeName = typeName, ///
23
+ assertedType = context.findTypeByTypeName(assertedTypeName);
24
+
25
+ if (assertedType === null) {
26
+ context.debug(`The '${typeName}' asserted type is not present.`, typeAssertionNode);
27
+ } else {
28
+ const verifyTypeAssertionFunctions = [
29
+ verifyVariableTypeAssertion,
30
+ verifyTermTypeAssertion
31
+ ];
32
+
33
+ typeAssertionVerified = verifyTypeAssertionFunctions.some((verifyTypeAssertionFunction) => {
34
+ const typeAssertionVerified = verifyTypeAssertionFunction(typeAssertionNode, assertedType, assignments, derived, context, verifyAhead);
35
+
36
+ if (typeAssertionVerified) {
37
+ return true;
38
+ }
39
+ });
40
+ }
41
+
42
+ if (typeAssertionVerified) {
43
+ context.debug(`...verified the '${typeAssertionString}' statement type assertion.`, typeAssertionNode);
44
+ }
45
+
46
+ return typeAssertionVerified;
47
+ }
48
+
49
+ export function verifyVariableTypeAssertion(typeAssertionNode, assertedType, assignments, derived, context, verifyAhead) {
50
+ let variableTypeAssertionVerified;
51
+
52
+ const typeAssertionString = context.nodeAsString(typeAssertionNode);
53
+
54
+ context.trace(`Verifying the '${typeAssertionString}' variable type assertion...`, typeAssertionNode);
55
+
56
+ const variables = [],
57
+ termNode = termNodeQuery(typeAssertionNode),
58
+ termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, context, () => {
59
+ let verifiedAhead = false;
60
+
61
+ const firstVariable = first(variables),
62
+ variable = firstVariable, ///
63
+ variableName = variable.getName(),
64
+ variableType = variable.getType();
65
+
66
+ if (derived) {
67
+ const assertedTypeEqualToOrSuperTypeOfVariableType = assertedType.isEqualToOrSuperTypeOf(variableType);
68
+
69
+ if (!assertedTypeEqualToOrSuperTypeOfVariableType) {
70
+ const assertedTypeName = assertedType.getName(),
71
+ variableTypeName = variableType.getName();
72
+
73
+ context.debug(`The '${assertedTypeName}' asserted type is not equal to or a super-type of the '${variableName}' variable's '${variableTypeName}' type.`, typeAssertionNode);
74
+ } else {
75
+ verifiedAhead = verifyAhead();
76
+ }
77
+ } else {
78
+ const assertedTypeEqualToOrSubTypeOfVariableType = assertedType.isEqualToOrSubTypeOf(variableType);
79
+
80
+ if (!assertedTypeEqualToOrSubTypeOfVariableType) {
81
+ const assertedTypeName = assertedType.getName(),
82
+ variableTypeName = variableType.getName();
83
+
84
+ context.debug(`The '${assertedTypeName}' asserted type is not equal to or a sub-type of the '${variableName}' variable's '${variableTypeName}' type.`, typeAssertionNode);
85
+ } else {
86
+ const name = variableName, ///
87
+ type = assertedType, ///
88
+ variable = Variable.fromNameAndType(name, type),
89
+ assignment = Assignment.fromVariable(variable);
90
+
91
+ assignments.push(assignment);
92
+
93
+ verifiedAhead = verifyAhead();
94
+
95
+ if (!verifiedAhead) {
96
+ assignments.pop();
97
+ }
98
+ }
99
+ }
100
+
101
+ return verifiedAhead;
102
+ });
103
+
104
+ variableTypeAssertionVerified = termVerifiedAsVariable; ///
105
+
106
+ if (variableTypeAssertionVerified) {
107
+ context.debug(`...verified the '${typeAssertionString}' variable type assertion.`, typeAssertionNode);
108
+ }
109
+
110
+ return variableTypeAssertionVerified;
111
+ }
112
+
113
+ function verifyTermTypeAssertion(typeAssertionNode, assertedType, assignments, derived, context, verifyAhead) {
114
+ let termTypeAssertionVerified;
115
+
116
+ const typeAssertionString = context.nodeAsString(typeAssertionNode);
117
+
118
+ context.trace(`Verifying the '${typeAssertionString}' term type assertion...`, typeAssertionNode);
119
+
120
+ const types = [],
121
+ termNode = termNodeQuery(typeAssertionNode),
122
+ termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, context, () => {
123
+ let verifiedAhead = false;
124
+
125
+ const firstType = first(types),
126
+ termType = firstType; ///
127
+
128
+ if (derived) {
129
+ const assertedTypeIsEqualToOrSuperTypeOfTermType = assertedType.isEqualToOrSuperTypeOf(termType);
130
+
131
+ if (!assertedTypeIsEqualToOrSuperTypeOfTermType) {
132
+ const termString = context.nodeAsString(termNode),
133
+ termTypeName = termType.getName(),
134
+ assertedTypeName = assertedType.getName();
135
+
136
+ context.debug(`The '${assertedTypeName}' asserted type is not equal to or a super-type of the '${termString}' term's '${termTypeName}' type.`, typeAssertionNode);
137
+ } else {
138
+ verifiedAhead = verifyAhead();
139
+ }
140
+ } else {
141
+ const assertedTypeIsEqualToOrSubTypeOfTermType = assertedType.isEqualToOrSubTypeOf(termType);
142
+
143
+ if (!assertedTypeIsEqualToOrSubTypeOfTermType) {
144
+ const termString = context.nodeAsString(termNode),
145
+ termTypeName = termType.getName(),
146
+ assertedTypeName = assertedType.getName();
147
+
148
+ context.debug(`The '${assertedTypeName}' asserted type is not equal to or a sub-type of the '${termString}' term's '${termTypeName}' type.`, typeAssertionNode);
149
+ } else {
150
+ verifiedAhead = verifyAhead();
151
+ }
152
+ }
153
+
154
+ return verifiedAhead;
155
+ });
156
+
157
+ termTypeAssertionVerified = termVerifiedAgainstConstructors; ///
158
+
159
+ if (termTypeAssertionVerified) {
160
+ context.debug(`...verified the '${typeAssertionString}' term type assertion.`, typeAssertionNode);
161
+ }
162
+
163
+ return termTypeAssertionVerified;
164
+ }
@@ -8,12 +8,15 @@ import { typeNameFromTypeNode, variableNameFromVariableNode } from "../utilities
8
8
  export default function verifyVariable(variableNode, typeNode, fileContext) {
9
9
  let variableVerified = false;
10
10
 
11
+ const variableString = fileContext.nodeAsString(variableNode);
12
+
13
+ fileContext.trace(`Verifying the '${variableString}' variable...`, variableNode);
14
+
11
15
  const variableName = variableNameFromVariableNode(variableNode),
12
- variableString = fileContext.nodeAsString(variableNode),
13
16
  variablePresent = fileContext.isVariablePresentByVariableName(variableName);
14
17
 
15
18
  if (variablePresent) {
16
- fileContext.error(`The variable '${variableName}' is already present.`, variableNode);
19
+ fileContext.debug(`The variable '${variableName}' is already present.`, variableNode);
17
20
  } else {
18
21
  let variable;
19
22
 
@@ -28,7 +31,7 @@ export default function verifyVariable(variableNode, typeNode, fileContext) {
28
31
  const type = fileContext.findTypeByTypeName(typeName);
29
32
 
30
33
  if (type === null) {
31
- fileContext.error(`The '${variableName}' variable's '${typeName}' type is not present.`, variableNode);
34
+ fileContext.debug(`The '${variableName}' variable's '${typeName}' type is not present.`, variableNode);
32
35
  } else {
33
36
  const name = variableName; ///
34
37
 
@@ -44,7 +47,7 @@ export default function verifyVariable(variableNode, typeNode, fileContext) {
44
47
  }
45
48
 
46
49
  if (variableVerified) {
47
- fileContext.info(`Verified the '${variableString}' variable.`, variableNode);
50
+ fileContext.debug(`...verified the '${variableString}' variable.`, variableNode);
48
51
  }
49
52
 
50
53
  return variableVerified;
@@ -1,21 +0,0 @@
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 _default;
9
- }
10
- });
11
- var _equality = /*#__PURE__*/ _interop_require_default(require("../../../tokens/statement/combinator/equality"));
12
- var _node = require("../../../utilities/node");
13
- function _interop_require_default(obj) {
14
- return obj && obj.__esModule ? obj : {
15
- default: obj
16
- };
17
- }
18
- var equalityCombinatorStatementNode = (0, _node.statementNodeFromUnqualifiedStatementTokens)(_equality.default);
19
- var _default = equalityCombinatorStatementNode;
20
-
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL3N0YXRlbWVudC9jb21iaW5hdG9yL2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdW5xdWFsaWZpZWRFcXVhbGl0eUNvbWJpbmF0b3JTdGF0ZW1lbnRUb2tlbnMgZnJvbSBcIi4uLy4uLy4uL3Rva2Vucy9zdGF0ZW1lbnQvY29tYmluYXRvci9lcXVhbGl0eVwiO1xuXG5pbXBvcnQgeyBzdGF0ZW1lbnROb2RlRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxpdGllcy9ub2RlXCI7XG5cbmNvbnN0IGVxdWFsaXR5Q29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zKHVucXVhbGlmaWVkRXF1YWxpdHlDb21iaW5hdG9yU3RhdGVtZW50VG9rZW5zKTtcblxuZXhwb3J0IGRlZmF1bHQgZXF1YWxpdHlDb21iaW5hdG9yU3RhdGVtZW50Tm9kZTtcbiJdLCJuYW1lcyI6WyJlcXVhbGl0eUNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZFN0YXRlbWVudFRva2VucyIsInVucXVhbGlmaWVkRXF1YWxpdHlDb21iaW5hdG9yU3RhdGVtZW50VG9rZW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQUE7OzsrREFOeUQ7b0JBRUc7Ozs7OztBQUU1RCxJQUFNQSxrQ0FBa0NDLElBQUFBLGlEQUEyQyxFQUFDQyxpQkFBNEM7SUFFaEksV0FBZUYifQ==
@@ -1,126 +0,0 @@
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 _default;
9
- }
10
- });
11
- var _combinator = /*#__PURE__*/ _interop_require_default(require("../combinator"));
12
- var _equality = /*#__PURE__*/ _interop_require_default(require("../node/statement/combinator/equality"));
13
- var _equality1 = /*#__PURE__*/ _interop_require_default(require("../tokens/statement/combinator/equality"));
14
- var _string = require("../utilities/string");
15
- function _assert_this_initialized(self) {
16
- if (self === void 0) {
17
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
18
- }
19
- return self;
20
- }
21
- function _class_call_check(instance, Constructor) {
22
- if (!(instance instanceof Constructor)) {
23
- throw new TypeError("Cannot call a class as a function");
24
- }
25
- }
26
- function _defineProperties(target, props) {
27
- for(var i = 0; i < props.length; i++){
28
- var descriptor = props[i];
29
- descriptor.enumerable = descriptor.enumerable || false;
30
- descriptor.configurable = true;
31
- if ("value" in descriptor) descriptor.writable = true;
32
- Object.defineProperty(target, descriptor.key, descriptor);
33
- }
34
- }
35
- function _create_class(Constructor, protoProps, staticProps) {
36
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
37
- if (staticProps) _defineProperties(Constructor, staticProps);
38
- return Constructor;
39
- }
40
- function _get_prototype_of(o) {
41
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
42
- return o.__proto__ || Object.getPrototypeOf(o);
43
- };
44
- return _get_prototype_of(o);
45
- }
46
- function _inherits(subClass, superClass) {
47
- if (typeof superClass !== "function" && superClass !== null) {
48
- throw new TypeError("Super expression must either be null or a function");
49
- }
50
- subClass.prototype = Object.create(superClass && superClass.prototype, {
51
- constructor: {
52
- value: subClass,
53
- writable: true,
54
- configurable: true
55
- }
56
- });
57
- if (superClass) _set_prototype_of(subClass, superClass);
58
- }
59
- function _interop_require_default(obj) {
60
- return obj && obj.__esModule ? obj : {
61
- default: obj
62
- };
63
- }
64
- function _possible_constructor_return(self, call) {
65
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
66
- return call;
67
- }
68
- return _assert_this_initialized(self);
69
- }
70
- function _set_prototype_of(o, p) {
71
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
72
- o.__proto__ = p;
73
- return o;
74
- };
75
- return _set_prototype_of(o, p);
76
- }
77
- function _type_of(obj) {
78
- "@swc/helpers - typeof";
79
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
80
- }
81
- function _is_native_reflect_construct() {
82
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
83
- if (Reflect.construct.sham) return false;
84
- if (typeof Proxy === "function") return true;
85
- try {
86
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
87
- return true;
88
- } catch (e) {
89
- return false;
90
- }
91
- }
92
- function _create_super(Derived) {
93
- var hasNativeReflectConstruct = _is_native_reflect_construct();
94
- return function _createSuperInternal() {
95
- var Super = _get_prototype_of(Derived), result;
96
- if (hasNativeReflectConstruct) {
97
- var NewTarget = _get_prototype_of(this).constructor;
98
- result = Reflect.construct(Super, arguments, NewTarget);
99
- } else {
100
- result = Super.apply(this, arguments);
101
- }
102
- return _possible_constructor_return(this, result);
103
- };
104
- }
105
- var EqualityCombinator = /*#__PURE__*/ function(Combinator) {
106
- _inherits(EqualityCombinator, Combinator);
107
- var _super = _create_super(EqualityCombinator);
108
- function EqualityCombinator() {
109
- _class_call_check(this, EqualityCombinator);
110
- return _super.apply(this, arguments);
111
- }
112
- _create_class(EqualityCombinator, null, [
113
- {
114
- key: "fromNothing",
115
- value: function fromNothing() {
116
- var node = _equality.default, tokens = _equality1.default, string = (0, _string.nodeAsString)(node, tokens), statementNode = node, equalityCombinator = new EqualityCombinator(statementNode, string);
117
- return equalityCombinator;
118
- }
119
- }
120
- ]);
121
- return EqualityCombinator;
122
- }(_combinator.default);
123
- var equalityCombinator = EqualityCombinator.fromNothing();
124
- var _default = equalityCombinator;
125
-
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vY21iaW5hdG9yL2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi4vY29tYmluYXRvclwiO1xuaW1wb3J0IGVxdWFsaXR5Q29tYmluYXRvclN0YXRlbWVudE5vZGUgZnJvbSBcIi4uL25vZGUvc3RhdGVtZW50L2NvbWJpbmF0b3IvZXF1YWxpdHlcIjtcbmltcG9ydCB1bnF1YWxpZmllZEVxdWFsaXR5Q29tYmluYXRvclN0YXRlbWVudFRva2VucyBmcm9tIFwiLi4vdG9rZW5zL3N0YXRlbWVudC9jb21iaW5hdG9yL2VxdWFsaXR5XCI7XG5cbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5cbmNsYXNzIEVxdWFsaXR5Q29tYmluYXRvciBleHRlbmRzIENvbWJpbmF0b3Ige1xuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3Qgbm9kZSA9IGVxdWFsaXR5Q29tYmluYXRvclN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICB0b2tlbnMgPSB1bnF1YWxpZmllZEVxdWFsaXR5Q29tYmluYXRvclN0YXRlbWVudFRva2VucywgLy8vXG4gICAgICAgICAgc3RyaW5nID0gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2VucyksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgIGVxdWFsaXR5Q29tYmluYXRvciA9IG5ldyBFcXVhbGl0eUNvbWJpbmF0b3Ioc3RhdGVtZW50Tm9kZSwgc3RyaW5nKTtcblxuICAgIHJldHVybiBlcXVhbGl0eUNvbWJpbmF0b3I7XG4gIH1cbn1cblxuY29uc3QgZXF1YWxpdHlDb21iaW5hdG9yID0gRXF1YWxpdHlDb21iaW5hdG9yLmZyb21Ob3RoaW5nKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGVxdWFsaXR5Q29tYmluYXRvcjtcbiJdLCJuYW1lcyI6WyJFcXVhbGl0eUNvbWJpbmF0b3IiLCJmcm9tTm90aGluZyIsIm5vZGUiLCJlcXVhbGl0eUNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIiwidG9rZW5zIiwidW5xdWFsaWZpZWRFcXVhbGl0eUNvbWJpbmF0b3JTdGF0ZW1lbnRUb2tlbnMiLCJzdHJpbmciLCJub2RlQXNTdHJpbmciLCJzdGF0ZW1lbnROb2RlIiwiZXF1YWxpdHlDb21iaW5hdG9yIiwiQ29tYmluYXRvciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBc0JBOzs7ZUFBQTs7O2lFQXBCdUI7K0RBQ3FCO2dFQUNhO3NCQUU1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU3QixJQUFBLEFBQU1BLG1DQVlILEFBWkg7Y0FBTUE7K0JBQUFBO2FBQUFBO2dDQUFBQTs7O2tCQUFBQTs7WUFDR0MsS0FBQUE7bUJBQVAsU0FBT0E7Z0JBQ0wsSUFBTUMsT0FBT0MsaUJBQStCLEVBQ3RDQyxTQUFTQyxrQkFBNEMsRUFDckRDLFNBQVNDLElBQUFBLG9CQUFZLEVBQUNMLE1BQU1FLFNBQzVCSSxnQkFBZ0JOLE1BQ2hCTyxxQkFBcUIsSUFOekJULG1CQU1nRFEsZUFBZUY7Z0JBRWpFLE9BQU9HO1lBQ1Q7OztXQVRJVDtFQUEyQlUsbUJBQVU7QUFZM0MsSUFBTUQscUJBQXFCVCxtQkFBbUJDLFdBQVc7SUFFekQsV0FBZVEifQ==
@@ -1,17 +0,0 @@
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 _default;
9
- }
10
- });
11
- var _typeNames = require("../../../typeNames");
12
- var _tokens = require("../../../utilities/tokens");
13
- var equalityCombinatorStatementString = "".concat(_typeNames.OBJECT_TYPE_NAME, " = ").concat(_typeNames.OBJECT_TYPE_NAME);
14
- var unqualifiedEqualityCombinatorStatementTokens = (0, _tokens.unqualifiedStatementTokensFromStatementString)(equalityCombinatorStatementString);
15
- var _default = unqualifiedEqualityCombinatorStatementTokens;
16
-
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b2tlbnMvc3RhdGVtZW50L2NvbWJpbmF0b3IvZXF1YWxpdHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IE9CSkVDVF9UWVBFX05BTUUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZU5hbWVzXCI7XG5pbXBvcnQgeyB1bnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0Zyb21TdGF0ZW1lbnRTdHJpbmcgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbGl0aWVzL3Rva2Vuc1wiO1xuXG5jb25zdCBlcXVhbGl0eUNvbWJpbmF0b3JTdGF0ZW1lbnRTdHJpbmcgPSBgJHtPQkpFQ1RfVFlQRV9OQU1FfSA9ICR7T0JKRUNUX1RZUEVfTkFNRX1gO1xuXG5jb25zdCB1bnF1YWxpZmllZEVxdWFsaXR5Q29tYmluYXRvclN0YXRlbWVudFRva2VucyA9IHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zRnJvbVN0YXRlbWVudFN0cmluZyhlcXVhbGl0eUNvbWJpbmF0b3JTdGF0ZW1lbnRTdHJpbmcpO1xuXG5leHBvcnQgZGVmYXVsdCB1bnF1YWxpZmllZEVxdWFsaXR5Q29tYmluYXRvclN0YXRlbWVudFRva2VucztcbiJdLCJuYW1lcyI6WyJlcXVhbGl0eUNvbWJpbmF0b3JTdGF0ZW1lbnRTdHJpbmciLCJPQkpFQ1RfVFlQRV9OQU1FIiwidW5xdWFsaWZpZWRFcXVhbGl0eUNvbWJpbmF0b3JTdGF0ZW1lbnRUb2tlbnMiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0Zyb21TdGF0ZW1lbnRTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBQTs7O3lCQVBpQztzQkFDNkI7QUFFOUQsSUFBTUEsb0NBQW9DLEFBQUMsR0FBd0JDLE9BQXRCQSwyQkFBZ0IsRUFBQyxPQUFzQixPQUFqQkEsMkJBQWdCO0FBRW5GLElBQU1DLCtDQUErQ0MsSUFBQUEscURBQTZDLEVBQUNIO0lBRW5HLFdBQWVFIn0=
@@ -1,198 +0,0 @@
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 MetastatementForMetavariableVerifier;
9
- }
10
- });
11
- var _verifier = /*#__PURE__*/ _interop_require_default(require("../verifier"));
12
- var _metastatementForMetavariable = /*#__PURE__*/ _interop_require_default(require("../substitution/metastatementForMetavariable"));
13
- var _query = require("../utilities/query");
14
- var _ruleNames = require("../ruleNames");
15
- function _assert_this_initialized(self) {
16
- if (self === void 0) {
17
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
18
- }
19
- return self;
20
- }
21
- function _class_call_check(instance, Constructor) {
22
- if (!(instance instanceof Constructor)) {
23
- throw new TypeError("Cannot call a class as a function");
24
- }
25
- }
26
- function _defineProperties(target, props) {
27
- for(var i = 0; i < props.length; i++){
28
- var descriptor = props[i];
29
- descriptor.enumerable = descriptor.enumerable || false;
30
- descriptor.configurable = true;
31
- if ("value" in descriptor) descriptor.writable = true;
32
- Object.defineProperty(target, descriptor.key, descriptor);
33
- }
34
- }
35
- function _create_class(Constructor, protoProps, staticProps) {
36
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
37
- if (staticProps) _defineProperties(Constructor, staticProps);
38
- return Constructor;
39
- }
40
- function _get(target, property, receiver) {
41
- if (typeof Reflect !== "undefined" && Reflect.get) {
42
- _get = Reflect.get;
43
- } else {
44
- _get = function get(target, property, receiver) {
45
- var base = _super_prop_base(target, property);
46
- if (!base) return;
47
- var desc = Object.getOwnPropertyDescriptor(base, property);
48
- if (desc.get) {
49
- return desc.get.call(receiver || target);
50
- }
51
- return desc.value;
52
- };
53
- }
54
- return _get(target, property, receiver || target);
55
- }
56
- function _get_prototype_of(o) {
57
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
58
- return o.__proto__ || Object.getPrototypeOf(o);
59
- };
60
- return _get_prototype_of(o);
61
- }
62
- function _inherits(subClass, superClass) {
63
- if (typeof superClass !== "function" && superClass !== null) {
64
- throw new TypeError("Super expression must either be null or a function");
65
- }
66
- subClass.prototype = Object.create(superClass && superClass.prototype, {
67
- constructor: {
68
- value: subClass,
69
- writable: true,
70
- configurable: true
71
- }
72
- });
73
- if (superClass) _set_prototype_of(subClass, superClass);
74
- }
75
- function _interop_require_default(obj) {
76
- return obj && obj.__esModule ? obj : {
77
- default: obj
78
- };
79
- }
80
- function _possible_constructor_return(self, call) {
81
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
82
- return call;
83
- }
84
- return _assert_this_initialized(self);
85
- }
86
- function _set_prototype_of(o, p) {
87
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
88
- o.__proto__ = p;
89
- return o;
90
- };
91
- return _set_prototype_of(o, p);
92
- }
93
- function _super_prop_base(object, property) {
94
- while(!Object.prototype.hasOwnProperty.call(object, property)){
95
- object = _get_prototype_of(object);
96
- if (object === null) break;
97
- }
98
- return object;
99
- }
100
- function _type_of(obj) {
101
- "@swc/helpers - typeof";
102
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
103
- }
104
- function _is_native_reflect_construct() {
105
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
106
- if (Reflect.construct.sham) return false;
107
- if (typeof Proxy === "function") return true;
108
- try {
109
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
110
- return true;
111
- } catch (e) {
112
- return false;
113
- }
114
- }
115
- function _create_super(Derived) {
116
- var hasNativeReflectConstruct = _is_native_reflect_construct();
117
- return function _createSuperInternal() {
118
- var Super = _get_prototype_of(Derived), result;
119
- if (hasNativeReflectConstruct) {
120
- var NewTarget = _get_prototype_of(this).constructor;
121
- result = Reflect.construct(Super, arguments, NewTarget);
122
- } else {
123
- result = Super.apply(this, arguments);
124
- }
125
- return _possible_constructor_return(this, result);
126
- };
127
- }
128
- var metavariableNodeQuery = (0, _query.nodeQuery)("/metastatement/metavariable!");
129
- var MetastatementForMetavariableVerifier = /*#__PURE__*/ function(Verifier) {
130
- _inherits(MetastatementForMetavariableVerifier, Verifier);
131
- var _super = _create_super(MetastatementForMetavariableVerifier);
132
- function MetastatementForMetavariableVerifier() {
133
- _class_call_check(this, MetastatementForMetavariableVerifier);
134
- return _super.apply(this, arguments);
135
- }
136
- _create_class(MetastatementForMetavariableVerifier, [
137
- {
138
- key: "verifyNonTerminalNode",
139
- value: function verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, metaproofContextB) {
140
- var nonTerminalNodeVerified = false;
141
- var nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName();
142
- if (nonTerminalNodeBRuleName === nonTerminalNodeARuleName) {
143
- var nonTerminalNodeARuleNameMetastatementRuleName = nonTerminalNodeARuleName === _ruleNames.METASTATEMENT_RULE_NAME, nonTerminalNodeBRuleNameMetastatementRuleName = nonTerminalNodeBRuleName === _ruleNames.METASTATEMENT_RULE_NAME;
144
- if (nonTerminalNodeARuleNameMetastatementRuleName && nonTerminalNodeBRuleNameMetastatementRuleName) {
145
- var metastatementNodeA = nonTerminalNodeA, metastatementNodeB = nonTerminalNodeB, metastatementNodeVerified = this.verifyMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions, fileContextA, metaproofContextB);
146
- if (metastatementNodeVerified) {
147
- nonTerminalNodeVerified = true; ///
148
- } else {
149
- nonTerminalNodeVerified = _get(_get_prototype_of(MetastatementForMetavariableVerifier.prototype), "verifyNonTerminalNode", this).call(this, nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, metaproofContextB);
150
- }
151
- } else {
152
- nonTerminalNodeVerified = _get(_get_prototype_of(MetastatementForMetavariableVerifier.prototype), "verifyNonTerminalNode", this).call(this, nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, metaproofContextB);
153
- }
154
- }
155
- return nonTerminalNodeVerified;
156
- }
157
- },
158
- {
159
- key: "verifyMetastatementNode",
160
- value: function verifyMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions, fileContextA, metaproofContextB) {
161
- var metastatementNodeVerified = false;
162
- var metavariableNodeA = metavariableNodeQuery(metastatementNodeA);
163
- if (metavariableNodeA !== null) {
164
- var metaVariableNodeVerified = this.verifyMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions, fileContextA, metaproofContextB);
165
- metastatementNodeVerified = metaVariableNodeVerified; ///
166
- }
167
- return metastatementNodeVerified;
168
- }
169
- },
170
- {
171
- key: "verifyMetavariableNode",
172
- value: function verifyMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions, fileContextA, metaproofContextB) {
173
- var metavariableNodeVerified;
174
- var metavariableNameA = (0, _query.metavariableNameFromMetavariableNode)(metavariableNodeA), substitution = substitutions.find(function(substitution) {
175
- var metavariableName = substitution.getMetavariableName();
176
- if (metavariableName === metavariableNameA) {
177
- return true;
178
- }
179
- }) || null;
180
- if (substitution !== null) {
181
- var metastatementNode = metastatementNodeB, metastatementNodeMatches = substitution.matchMetastatementNode(metastatementNode);
182
- metavariableNodeVerified = metastatementNodeMatches; ///
183
- } else {
184
- var createSubstitutions = this.constructor.createSubstitutions;
185
- if (createSubstitutions) {
186
- var metavariableName = metavariableNameA, metastatementNode1 = metastatementNodeB, metastatementForMetavariableSubstitution = _metastatementForMetavariable.default.fromMetavariableNameAndMetastatementNode(metavariableName, metastatementNode1), substitution1 = metastatementForMetavariableSubstitution; ///
187
- substitutions.push(substitution1);
188
- }
189
- metavariableNodeVerified = true;
190
- }
191
- return metavariableNodeVerified;
192
- }
193
- }
194
- ]);
195
- return MetastatementForMetavariableVerifier;
196
- }(_verifier.default);
197
-
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9tZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVmVyaWZpZXIgZnJvbSBcIi4uL3ZlcmlmaWVyXCI7XG5pbXBvcnQgTWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uL21ldGFzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5pbXBvcnQgeyBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IG1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeSgnL21ldGFzdGF0ZW1lbnQvbWV0YXZhcmlhYmxlIScpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlVmVyaWZpZXIgZXh0ZW5kcyBWZXJpZmllciB7XG4gIHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dEEsIG1ldGFwcm9vZkNvbnRleHRCKSB7XG4gICAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGVBLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlQlJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlQi5nZXRSdWxlTmFtZSgpO1xuXG4gICAgaWYgKG5vblRlcm1pbmFsTm9kZUJSdWxlTmFtZSA9PT0gbm9uVGVybWluYWxOb2RlQVJ1bGVOYW1lKSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgPSAobm9uVGVybWluYWxOb2RlQVJ1bGVOYW1lID09PSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSksXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVCUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgPSAobm9uVGVybWluYWxOb2RlQlJ1bGVOYW1lID09PSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChub25UZXJtaW5hbE5vZGVBUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgJiYgbm9uVGVybWluYWxOb2RlQlJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlQSA9IG5vblRlcm1pbmFsTm9kZUEsICAvLy9cbiAgICAgICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGVCID0gbm9uVGVybWluYWxOb2RlQiwgIC8vL1xuICAgICAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlNZXRhc3RhdGVtZW50Tm9kZShtZXRhc3RhdGVtZW50Tm9kZUEsIG1ldGFzdGF0ZW1lbnROb2RlQiwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHRBLCBtZXRhcHJvb2ZDb250ZXh0Qik7XG5cbiAgICAgICAgaWYgKG1ldGFzdGF0ZW1lbnROb2RlVmVyaWZpZWQpIHtcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHRydWU7ICAvLy9cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHN1cGVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dEEsIG1ldGFwcm9vZkNvbnRleHRCKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBzdXBlci52ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQiwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHRBLCBtZXRhcHJvb2ZDb250ZXh0Qik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5TWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGVBLCBtZXRhc3RhdGVtZW50Tm9kZUIsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0QSwgbWV0YXByb29mQ29udGV4dEIpIHtcbiAgICBsZXQgbWV0YXN0YXRlbWVudE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZUEgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkobWV0YXN0YXRlbWVudE5vZGVBKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVOb2RlQSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YVZhcmlhYmxlTm9kZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGVBLCBtZXRhc3RhdGVtZW50Tm9kZUIsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0QSwgbWV0YXByb29mQ29udGV4dEIpO1xuXG4gICAgICBtZXRhc3RhdGVtZW50Tm9kZVZlcmlmaWVkID0gbWV0YVZhcmlhYmxlTm9kZVZlcmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXN0YXRlbWVudE5vZGVWZXJpZmllZDtcbiAgfVxuXG4gIHZlcmlmeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZUEsIG1ldGFzdGF0ZW1lbnROb2RlQiwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHRBLCBtZXRhcHJvb2ZDb250ZXh0Qikge1xuICAgIGxldCBtZXRhdmFyaWFibGVOb2RlVmVyaWZpZWQ7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lQSA9IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlQSksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5maW5kKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSBzdWJzdGl0dXRpb24uZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTmFtZSA9PT0gbWV0YXZhcmlhYmxlTmFtZUEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVCLCAvLy9cbiAgICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHN1YnN0aXR1dGlvbi5tYXRjaE1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVZlcmlmaWVkID0gbWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgY3JlYXRlU3Vic3RpdHV0aW9ucyB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgICAgaWYgKGNyZWF0ZVN1YnN0aXR1dGlvbnMpIHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWVBLCAvLy9cbiAgICAgICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZUIsIC8vL1xuICAgICAgICAgICAgICBtZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gTWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbi5mcm9tTWV0YXZhcmlhYmxlTmFtZUFuZE1ldGFzdGF0ZW1lbnROb2RlKG1ldGF2YXJpYWJsZU5hbWUsIG1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gbWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgICAgIHN1YnN0aXR1dGlvbnMucHVzaChzdWJzdGl0dXRpb24pO1xuICAgICAgfVxuXG4gICAgICBtZXRhdmFyaWFibGVOb2RlVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlVmVyaWZpZWQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJNZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlVmVyaWZpZXIiLCJtZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVBIiwibm9uVGVybWluYWxOb2RlQiIsInN1YnN0aXR1dGlvbnMiLCJmaWxlQ29udGV4dEEiLCJtZXRhcHJvb2ZDb250ZXh0QiIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwibm9uVGVybWluYWxOb2RlQVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJub25UZXJtaW5hbE5vZGVCUnVsZU5hbWUiLCJub25UZXJtaW5hbE5vZGVBUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUiLCJNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsIm5vblRlcm1pbmFsTm9kZUJSdWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSIsIm1ldGFzdGF0ZW1lbnROb2RlQSIsIm1ldGFzdGF0ZW1lbnROb2RlQiIsIm1ldGFzdGF0ZW1lbnROb2RlVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVBIiwibWV0YVZhcmlhYmxlTm9kZVZlcmlmaWVkIiwidmVyaWZ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVWZXJpZmllZCIsIm1ldGF2YXJpYWJsZU5hbWVBIiwibWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIiwic3Vic3RpdHV0aW9uIiwiZmluZCIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOYW1lIiwibWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaE1ldGFzdGF0ZW1lbnROb2RlIiwiY3JlYXRlU3Vic3RpdHV0aW9ucyIsImNvbnN0cnVjdG9yIiwibWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiIsIk1ldGFzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24iLCJmcm9tTWV0YXZhcmlhYmxlTmFtZUFuZE1ldGFzdGF0ZW1lbnROb2RlIiwicHVzaCIsIlZlcmlmaWVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVdxQkE7OzsrREFUQTttRkFDZ0M7cUJBRTNCO3lCQUNjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHeEMsSUFBTUMsd0JBQXdCQyxJQUFBQSxnQkFBUyxFQUFDO0FBRXpCLElBQUEsQUFBTUYscURBQU47Y0FBTUE7K0JBQUFBO2FBQUFBO2dDQUFBQTs7O2tCQUFBQTs7WUFDbkJHLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0JDLGdCQUFnQixFQUFFQyxnQkFBZ0IsRUFBRUMsYUFBYSxFQUFFQyxZQUFZLEVBQUVDLGlCQUFpQjtnQkFDdEcsSUFBSUMsMEJBQTBC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