occam-verify-cli 0.0.914 → 0.0.916
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/assignment/judgement.js +62 -0
- package/lib/axiomLemmaTheoremConjecture.js +4 -3
- package/lib/conclusion.js +5 -5
- package/lib/context/file.js +7 -7
- package/lib/context/local/intrinsicLevel.js +326 -0
- package/lib/context/local/metaLevel.js +290 -0
- package/lib/judgement.js +87 -0
- package/lib/metaConsequent.js +4 -4
- package/lib/metaLemmaMetatheorem.js +11 -11
- package/lib/metaSupposition.js +7 -7
- package/lib/metavariable.js +5 -5
- package/lib/premise.js +12 -12
- package/lib/rule.js +12 -12
- package/lib/verifier/node/metaLevel.js +214 -0
- package/lib/verifier/node/statementAsCombinator.js +9 -9
- package/lib/verifier/node/termAsConstructor.js +7 -7
- package/lib/verify/axiom.js +3 -3
- package/lib/verify/conclusion.js +7 -7
- package/lib/verify/conjecture.js +3 -3
- package/lib/verify/containedAssertion.js +23 -4
- package/lib/verify/declaration.js +15 -15
- package/lib/verify/definedAssertion.js +18 -4
- package/lib/verify/derivation.js +3 -3
- package/lib/verify/frame.js +19 -19
- package/lib/verify/judgement.js +121 -0
- package/lib/verify/lemma.js +3 -3
- package/lib/verify/metaConsequent.js +7 -7
- package/lib/verify/metaDerivation.js +3 -3
- package/lib/verify/metaLemma.js +6 -6
- package/lib/verify/metaSubDerivation.js +3 -3
- package/lib/verify/metaSubproof.js +7 -6
- package/lib/verify/metaSupposition.js +9 -9
- package/lib/verify/metaSuppositions.js +3 -3
- package/lib/verify/metaproof.js +7 -6
- package/lib/verify/metaproofStep.js +16 -16
- package/lib/verify/metastatement/qualified.js +22 -22
- package/lib/verify/metastatement/unqualified.js +7 -7
- package/lib/verify/metastatement.js +37 -37
- package/lib/verify/metatheorem.js +6 -6
- package/lib/verify/metavariable.js +6 -6
- package/lib/verify/premise.js +9 -9
- package/lib/verify/premises.js +3 -3
- package/lib/verify/proof.js +4 -3
- package/lib/verify/rule.js +6 -6
- package/lib/verify/ruleDerivation.js +3 -3
- package/lib/verify/ruleProof.js +7 -6
- package/lib/verify/ruleProofStep.js +16 -16
- package/lib/verify/ruleSubDerivation.js +3 -3
- package/lib/verify/ruleSubproof.js +7 -6
- package/lib/verify/statement.js +4 -17
- package/lib/verify/subDerivation.js +3 -3
- package/lib/verify/subproof.js +4 -3
- package/lib/verify/termAsConstructor.js +3 -3
- package/lib/verify/theorem.js +4 -4
- package/package.json +2 -2
- package/src/assignment/judgement.js +30 -0
- package/src/axiomLemmaTheoremConjecture.js +4 -2
- package/src/conclusion.js +7 -7
- package/src/context/file.js +5 -5
- package/src/context/{local.js → local/intrinsicLevel.js} +25 -20
- package/src/context/{localMeta.js → local/metaLevel.js} +50 -45
- package/src/{frameAssertion.js → judgement.js} +5 -5
- package/src/metaConsequent.js +7 -7
- package/src/metaLemmaMetatheorem.js +11 -11
- package/src/metaSupposition.js +13 -13
- package/src/metavariable.js +6 -7
- package/src/premise.js +26 -26
- package/src/rule.js +12 -12
- package/src/verifier/node/{metastatement.js → metaLevel.js} +19 -21
- package/src/verifier/node/statementAsCombinator.js +8 -8
- package/src/verifier/node/termAsConstructor.js +6 -6
- package/src/verify/axiom.js +4 -3
- package/src/verify/conclusion.js +5 -6
- package/src/verify/conjecture.js +4 -3
- package/src/verify/containedAssertion.js +24 -3
- package/src/verify/declaration.js +15 -15
- package/src/verify/definedAssertion.js +23 -3
- package/src/verify/derivation.js +2 -2
- package/src/verify/frame.js +18 -18
- package/src/verify/judgement.js +169 -0
- package/src/verify/lemma.js +4 -3
- package/src/verify/metaConsequent.js +5 -6
- package/src/verify/metaDerivation.js +2 -2
- package/src/verify/metaLemma.js +8 -7
- package/src/verify/metaSubDerivation.js +2 -2
- package/src/verify/metaSubproof.js +7 -5
- package/src/verify/metaSupposition.js +7 -8
- package/src/verify/metaSuppositions.js +2 -2
- package/src/verify/metaproof.js +7 -5
- package/src/verify/metaproofStep.js +13 -17
- package/src/verify/metastatement/qualified.js +24 -24
- package/src/verify/metastatement/unqualified.js +6 -6
- package/src/verify/metastatement.js +36 -36
- package/src/verify/metatheorem.js +8 -7
- package/src/verify/metavariable.js +5 -5
- package/src/verify/premise.js +7 -8
- package/src/verify/premises.js +2 -2
- package/src/verify/proof.js +4 -2
- package/src/verify/rule.js +8 -7
- package/src/verify/ruleDerivation.js +2 -2
- package/src/verify/ruleProof.js +7 -5
- package/src/verify/ruleProofStep.js +13 -17
- package/src/verify/ruleSubDerivation.js +2 -2
- package/src/verify/ruleSubproof.js +7 -5
- package/src/verify/statement.js +2 -22
- package/src/verify/subDerivation.js +2 -2
- package/src/verify/subproof.js +4 -2
- package/src/verify/termAsConstructor.js +4 -3
- package/src/verify/theorem.js +5 -4
- package/lib/assignment/frameAssertion.js +0 -62
- package/lib/context/local.js +0 -320
- package/lib/context/localMeta.js +0 -284
- package/lib/frameAssertion.js +0 -87
- package/lib/verifier/node/metastatement.js +0 -214
- package/lib/verify/frameAssertion.js +0 -121
- package/src/assignment/frameAssertion.js +0 -30
- package/src/verify/frameAssertion.js +0 -169
|
@@ -0,0 +1,290 @@
|
|
|
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 _intrinsicLevel = /*#__PURE__*/ _interop_require_default(require("../../context/local/intrinsicLevel"));
|
|
12
|
+
var _array = require("../../utilities/array");
|
|
13
|
+
function _array_like_to_array(arr, len) {
|
|
14
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
15
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
16
|
+
return arr2;
|
|
17
|
+
}
|
|
18
|
+
function _array_without_holes(arr) {
|
|
19
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
20
|
+
}
|
|
21
|
+
function _assert_this_initialized(self) {
|
|
22
|
+
if (self === void 0) {
|
|
23
|
+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
24
|
+
}
|
|
25
|
+
return self;
|
|
26
|
+
}
|
|
27
|
+
function _class_call_check(instance, Constructor) {
|
|
28
|
+
if (!(instance instanceof Constructor)) {
|
|
29
|
+
throw new TypeError("Cannot call a class as a function");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function _defineProperties(target, props) {
|
|
33
|
+
for(var i = 0; i < props.length; i++){
|
|
34
|
+
var descriptor = props[i];
|
|
35
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
36
|
+
descriptor.configurable = true;
|
|
37
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
38
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
42
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
43
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
44
|
+
return Constructor;
|
|
45
|
+
}
|
|
46
|
+
function _get_prototype_of(o) {
|
|
47
|
+
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
48
|
+
return o.__proto__ || Object.getPrototypeOf(o);
|
|
49
|
+
};
|
|
50
|
+
return _get_prototype_of(o);
|
|
51
|
+
}
|
|
52
|
+
function _inherits(subClass, superClass) {
|
|
53
|
+
if (typeof superClass !== "function" && superClass !== null) {
|
|
54
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
55
|
+
}
|
|
56
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
57
|
+
constructor: {
|
|
58
|
+
value: subClass,
|
|
59
|
+
writable: true,
|
|
60
|
+
configurable: true
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
if (superClass) _set_prototype_of(subClass, superClass);
|
|
64
|
+
}
|
|
65
|
+
function _interop_require_default(obj) {
|
|
66
|
+
return obj && obj.__esModule ? obj : {
|
|
67
|
+
default: obj
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function _iterable_to_array(iter) {
|
|
71
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
72
|
+
}
|
|
73
|
+
function _non_iterable_spread() {
|
|
74
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
75
|
+
}
|
|
76
|
+
function _possible_constructor_return(self, call) {
|
|
77
|
+
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
78
|
+
return call;
|
|
79
|
+
}
|
|
80
|
+
return _assert_this_initialized(self);
|
|
81
|
+
}
|
|
82
|
+
function _set_prototype_of(o, p) {
|
|
83
|
+
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
84
|
+
o.__proto__ = p;
|
|
85
|
+
return o;
|
|
86
|
+
};
|
|
87
|
+
return _set_prototype_of(o, p);
|
|
88
|
+
}
|
|
89
|
+
function _to_consumable_array(arr) {
|
|
90
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
91
|
+
}
|
|
92
|
+
function _type_of(obj) {
|
|
93
|
+
"@swc/helpers - typeof";
|
|
94
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
95
|
+
}
|
|
96
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
97
|
+
if (!o) return;
|
|
98
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
99
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
100
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
101
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
102
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
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 MetaLevelLocalContext = /*#__PURE__*/ function(IntrinsicLevelLocalContext) {
|
|
129
|
+
_inherits(MetaLevelLocalContext, IntrinsicLevelLocalContext);
|
|
130
|
+
var _super = _create_super(MetaLevelLocalContext);
|
|
131
|
+
function MetaLevelLocalContext(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps) {
|
|
132
|
+
_class_call_check(this, MetaLevelLocalContext);
|
|
133
|
+
var _this;
|
|
134
|
+
_this = _super.call(this, context, variables, proofSteps, equivalences);
|
|
135
|
+
_this.judgements = judgements;
|
|
136
|
+
_this.metavariables = metavariables;
|
|
137
|
+
_this.metaproofSteps = metaproofSteps;
|
|
138
|
+
return _this;
|
|
139
|
+
}
|
|
140
|
+
_create_class(MetaLevelLocalContext, [
|
|
141
|
+
{
|
|
142
|
+
key: "getJudgements",
|
|
143
|
+
value: function getJudgements() {
|
|
144
|
+
var judgements = this.context.getJudgements();
|
|
145
|
+
judgements = _to_consumable_array(this.judgements).concat(_to_consumable_array(judgements));
|
|
146
|
+
return judgements;
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
key: "getMetavariables",
|
|
151
|
+
value: function getMetavariables() {
|
|
152
|
+
var metavariables = this.context.getMetavariables();
|
|
153
|
+
metavariables = _to_consumable_array(this.metavariables).concat(_to_consumable_array(metavariables));
|
|
154
|
+
return metavariables;
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
key: "getMetaproofSteps",
|
|
159
|
+
value: function getMetaproofSteps() {
|
|
160
|
+
var metaproofSteps = this.context.getMetaproofSteps();
|
|
161
|
+
metaproofSteps = _to_consumable_array(metaproofSteps).concat(_to_consumable_array(this.metaproofSteps));
|
|
162
|
+
return metaproofSteps;
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
key: "isIntrinsicLevel",
|
|
167
|
+
value: function isIntrinsicLevel() {
|
|
168
|
+
var intrinsicLevel = false;
|
|
169
|
+
return intrinsicLevel;
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
key: "getLastMetaproofStep",
|
|
174
|
+
value: function getLastMetaproofStep() {
|
|
175
|
+
var lastMetaproofStep = null;
|
|
176
|
+
var metaproofStepsLength = this.metaproofSteps.length;
|
|
177
|
+
if (metaproofStepsLength > 0) {
|
|
178
|
+
lastMetaproofStep = (0, _array.last)(this.metaproofSteps);
|
|
179
|
+
}
|
|
180
|
+
return lastMetaproofStep;
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
key: "addJudgement",
|
|
185
|
+
value: function addJudgement(judgement) {
|
|
186
|
+
var judgementAdded = false;
|
|
187
|
+
var metavariableNode = judgement.getMetavariableNode(), judgementPresent = this.isJudgementPresentByMetavariableNode(metavariableNode);
|
|
188
|
+
if (!judgementPresent) {
|
|
189
|
+
this.judgements.push(judgement);
|
|
190
|
+
judgementAdded = true;
|
|
191
|
+
}
|
|
192
|
+
return judgementAdded;
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
key: "addMetavariable",
|
|
197
|
+
value: function addMetavariable(metavariable) {
|
|
198
|
+
var metavariableAdded = false;
|
|
199
|
+
var node = metavariable.getName(), metavariablePresent = this.metavariables.some(function(metavariable) {
|
|
200
|
+
var metavariableMatchesNode = metavariable.matchNode(node);
|
|
201
|
+
if (metavariableMatchesNode) {
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
if (!metavariablePresent) {
|
|
206
|
+
this.metavariables.push(metavariable);
|
|
207
|
+
metavariableAdded = true;
|
|
208
|
+
}
|
|
209
|
+
return metavariableAdded;
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
key: "addMetaproofStep",
|
|
214
|
+
value: function addMetaproofStep(metaproofStep) {
|
|
215
|
+
this.metaproofSteps.push(metaproofStep);
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
key: "matchMetastatementNode",
|
|
220
|
+
value: function matchMetastatementNode(metastatementNode) {
|
|
221
|
+
var metaproofSteps = this.getMetaproofSteps();
|
|
222
|
+
metaproofSteps = (0, _array.reverse)(metaproofSteps); ///
|
|
223
|
+
var matchesMetastatementNode = metaproofSteps.some(function(metaproofStep) {
|
|
224
|
+
var metaproofStepMatchesMetastatementNode = metaproofStep.matchMetastatementNode(metastatementNode);
|
|
225
|
+
if (metaproofStepMatchesMetastatementNode) {
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
return matchesMetastatementNode;
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
key: "findMetavariableByMetavariableNode",
|
|
234
|
+
value: function findMetavariableByMetavariableNode(metavariableNode, metaLevelLocalContext) {
|
|
235
|
+
var node = metavariableNode, metavariables = this.getMetavariables(), metavariable = metavariables.find(function(metavariable) {
|
|
236
|
+
var matches = metavariable.matchNode(node, metaLevelLocalContext);
|
|
237
|
+
if (matches) {
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
}) || null;
|
|
241
|
+
return metavariable;
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
key: "findJudgementByMetavariableNode",
|
|
246
|
+
value: function findJudgementByMetavariableNode(metavariableNode) {
|
|
247
|
+
var judgements = this.getJudgements(), judgement = judgements.find(function(judgement) {
|
|
248
|
+
var judgementMatchesMetavariableNode = judgement.matchMetavariableNode(metavariableNode);
|
|
249
|
+
if (judgementMatchesMetavariableNode) {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
}) || null;
|
|
253
|
+
return judgement;
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
key: "isMetavariablePresentByMetavariableNode",
|
|
258
|
+
value: function isMetavariablePresentByMetavariableNode(metavariableNode, metaLevelLocalContext) {
|
|
259
|
+
var metavariable = this.findMetavariableByMetavariableNode(metavariableNode, metaLevelLocalContext), metavariablePresent = metavariable !== null;
|
|
260
|
+
return metavariablePresent;
|
|
261
|
+
}
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
key: "isJudgementPresentByMetavariableNode",
|
|
265
|
+
value: function isJudgementPresentByMetavariableNode(metavariableNode) {
|
|
266
|
+
var judgement = this.findJudgementByMetavariableNode(metavariableNode), judgementPresent = judgement !== null;
|
|
267
|
+
return judgementPresent;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
], [
|
|
271
|
+
{
|
|
272
|
+
key: "fromFileContext",
|
|
273
|
+
value: function fromFileContext(fileContext) {
|
|
274
|
+
var context = fileContext, variables = [], proofSteps = [], equivalences = [], judgements = [], metavariables = [], metaproofSteps = [], metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps);
|
|
275
|
+
return metaLevelLocalContext;
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
key: "fromLocalContext",
|
|
280
|
+
value: function fromLocalContext(localContext) {
|
|
281
|
+
var context = localContext, variables = [], proofSteps = [], equivalences = [], judgements = [], metavariables = [], metaproofSteps = [], metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps); ///
|
|
282
|
+
return metaLevelLocalContext;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
]);
|
|
286
|
+
return MetaLevelLocalContext;
|
|
287
|
+
}(_intrinsicLevel.default);
|
|
288
|
+
var _default = MetaLevelLocalContext;
|
|
289
|
+
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0L2xvY2FsL21ldGFMZXZlbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEludHJpbnNpY0xldmVsTG9jYWxDb250ZXh0IGZyb20gXCIuLi8uLi9jb250ZXh0L2xvY2FsL2ludHJpbnNpY0xldmVsXCI7XG5cbmltcG9ydCB7IGxhc3QsIHJldmVyc2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5cbmNsYXNzIE1ldGFMZXZlbExvY2FsQ29udGV4dCBleHRlbmRzIEludHJpbnNpY0xldmVsTG9jYWxDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzLCBlcXVpdmFsZW5jZXMsIGp1ZGdlbWVudHMsIG1ldGF2YXJpYWJsZXMsIG1ldGFwcm9vZlN0ZXBzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzLCBlcXVpdmFsZW5jZXMpO1xuXG4gICAgdGhpcy5qdWRnZW1lbnRzID0ganVkZ2VtZW50cztcbiAgICB0aGlzLm1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzO1xuICAgIHRoaXMubWV0YXByb29mU3RlcHMgPSBtZXRhcHJvb2ZTdGVwcztcbiAgfVxuXG4gIGdldEp1ZGdlbWVudHMoKSB7XG4gICAgbGV0IGp1ZGdlbWVudHMgPSB0aGlzLmNvbnRleHQuZ2V0SnVkZ2VtZW50cygpO1xuXG4gICAganVkZ2VtZW50cyA9IFsgLy8vXG4gICAgICAuLi50aGlzLmp1ZGdlbWVudHMsXG4gICAgICAuLi5qdWRnZW1lbnRzXG4gICAgXVxuXG4gICAgcmV0dXJuIGp1ZGdlbWVudHM7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVzKCkge1xuICAgIGxldCBtZXRhdmFyaWFibGVzID0gdGhpcy5jb250ZXh0LmdldE1ldGF2YXJpYWJsZXMoKTtcblxuICAgIG1ldGF2YXJpYWJsZXMgPSBbIC8vL1xuICAgICAgLi4udGhpcy5tZXRhdmFyaWFibGVzLFxuICAgICAgLi4ubWV0YXZhcmlhYmxlc1xuICAgIF1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0TWV0YXByb29mU3RlcHMoKSB7XG4gICAgbGV0IG1ldGFwcm9vZlN0ZXBzID0gdGhpcy5jb250ZXh0LmdldE1ldGFwcm9vZlN0ZXBzKCk7XG5cbiAgICBtZXRhcHJvb2ZTdGVwcyA9IFsgIC8vL1xuICAgICAgLi4ubWV0YXByb29mU3RlcHMsXG4gICAgICAuLi50aGlzLm1ldGFwcm9vZlN0ZXBzXG4gICAgXTtcblxuICAgIHJldHVybiBtZXRhcHJvb2ZTdGVwcztcbiAgfVxuXG4gIGlzSW50cmluc2ljTGV2ZWwoKSB7XG4gICAgY29uc3QgaW50cmluc2ljTGV2ZWwgPSBmYWxzZTtcblxuICAgIHJldHVybiBpbnRyaW5zaWNMZXZlbDtcbiAgfVxuXG4gIGdldExhc3RNZXRhcHJvb2ZTdGVwKCkge1xuICAgIGxldCBsYXN0TWV0YXByb29mU3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBtZXRhcHJvb2ZTdGVwc0xlbmd0aCA9IHRoaXMubWV0YXByb29mU3RlcHMubGVuZ3RoO1xuXG4gICAgaWYgKG1ldGFwcm9vZlN0ZXBzTGVuZ3RoID4gMCkge1xuICAgICAgbGFzdE1ldGFwcm9vZlN0ZXAgPSBsYXN0KHRoaXMubWV0YXByb29mU3RlcHMpO1xuICAgIH1cblxuICAgIHJldHVybiBsYXN0TWV0YXByb29mU3RlcDtcbiAgfVxuXG4gIGFkZEp1ZGdlbWVudChqdWRnZW1lbnQpIHtcbiAgICBsZXQganVkZ2VtZW50QWRkZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBqdWRnZW1lbnQuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGp1ZGdlbWVudFByZXNlbnQgPSB0aGlzLmlzSnVkZ2VtZW50UHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIGlmICghanVkZ2VtZW50UHJlc2VudCkge1xuICAgICAgdGhpcy5qdWRnZW1lbnRzLnB1c2goanVkZ2VtZW50KTtcblxuICAgICAganVkZ2VtZW50QWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBqdWRnZW1lbnRBZGRlZDtcbiAgfVxuXG4gIGFkZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlQWRkZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGUgPSBtZXRhdmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSB0aGlzLm1ldGF2YXJpYWJsZXMuc29tZSgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVNYXRjaGVzTm9kZSA9IG1ldGF2YXJpYWJsZS5tYXRjaE5vZGUobm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVNYXRjaGVzTm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIGlmICghbWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgdGhpcy5tZXRhdmFyaWFibGVzLnB1c2gobWV0YXZhcmlhYmxlKTtcblxuICAgICAgbWV0YXZhcmlhYmxlQWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVBZGRlZDtcbiAgfVxuXG4gIGFkZE1ldGFwcm9vZlN0ZXAobWV0YXByb29mU3RlcCkge1xuICAgIHRoaXMubWV0YXByb29mU3RlcHMucHVzaChtZXRhcHJvb2ZTdGVwKTtcbiAgfVxuXG4gIG1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBsZXQgbWV0YXByb29mU3RlcHMgPSB0aGlzLmdldE1ldGFwcm9vZlN0ZXBzKCk7XG5cbiAgICBtZXRhcHJvb2ZTdGVwcyA9IHJldmVyc2UobWV0YXByb29mU3RlcHMpOyAvLy9cblxuICAgIGNvbnN0IG1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFwcm9vZlN0ZXBzLnNvbWUoKG1ldGFwcm9vZlN0ZXApID0+IHtcbiAgICAgIGNvbnN0IG1ldGFwcm9vZlN0ZXBNYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhcHJvb2ZTdGVwLm1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAobWV0YXByb29mU3RlcE1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtYXRjaGVzTWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFMZXZlbExvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IG5vZGUgPSBtZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZXMuZmluZCgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gbWV0YXZhcmlhYmxlLm1hdGNoTm9kZShub2RlLCBtZXRhTGV2ZWxMb2NhbENvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRKdWRnZW1lbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGp1ZGdlbWVudHMgPSB0aGlzLmdldEp1ZGdlbWVudHMoKSxcbiAgICAgICAgICBqdWRnZW1lbnQgPSBqdWRnZW1lbnRzLmZpbmQoKGp1ZGdlbWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QganVkZ2VtZW50TWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUgPSBqdWRnZW1lbnQubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoanVkZ2VtZW50TWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBqdWRnZW1lbnQ7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YUxldmVsTG9jYWxDb250ZXh0KSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlID0gdGhpcy5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFMZXZlbExvY2FsQ29udGV4dCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IChtZXRhdmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBpc0p1ZGdlbWVudFByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGp1ZGdlbWVudCA9IHRoaXMuZmluZEp1ZGdlbWVudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBqdWRnZW1lbnRQcmVzZW50ID0gKGp1ZGdlbWVudCAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50UHJlc2VudDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICBwcm9vZlN0ZXBzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAganVkZ2VtZW50cyA9IFtdLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICBtZXRhcHJvb2ZTdGVwcyA9IFtdLFxuICAgICAgICAgIG1ldGFMZXZlbExvY2FsQ29udGV4dCA9IG5ldyBNZXRhTGV2ZWxMb2NhbENvbnRleHQoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzLCBlcXVpdmFsZW5jZXMsIGp1ZGdlbWVudHMsIG1ldGF2YXJpYWJsZXMsIG1ldGFwcm9vZlN0ZXBzKTtcblxuICAgIHJldHVybiBtZXRhTGV2ZWxMb2NhbENvbnRleHQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbUxvY2FsQ29udGV4dChsb2NhbENvbnRleHQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gbG9jYWxDb250ZXh0LCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgcHJvb2ZTdGVwcyA9IFtdLFxuICAgICAgICAgIGVxdWl2YWxlbmNlcyA9IFtdLFxuICAgICAgICAgIGp1ZGdlbWVudHMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgbWV0YXByb29mU3RlcHMgPSBbXSxcbiAgICAgICAgICBtZXRhTGV2ZWxMb2NhbENvbnRleHQgPSBuZXcgTWV0YUxldmVsTG9jYWxDb250ZXh0KGNvbnRleHQsIHZhcmlhYmxlcywgcHJvb2ZTdGVwcywgZXF1aXZhbGVuY2VzLCBqdWRnZW1lbnRzLCBtZXRhdmFyaWFibGVzLCBtZXRhcHJvb2ZTdGVwcyk7ICAvLy9cblxuICAgIHJldHVybiBtZXRhTGV2ZWxMb2NhbENvbnRleHQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0YUxldmVsTG9jYWxDb250ZXh0OyJdLCJuYW1lcyI6WyJNZXRhTGV2ZWxMb2NhbENvbnRleHQiLCJjb250ZXh0IiwidmFyaWFibGVzIiwicHJvb2ZTdGVwcyIsImVxdWl2YWxlbmNlcyIsImp1ZGdlbWVudHMiLCJtZXRhdmFyaWFibGVzIiwibWV0YXByb29mU3RlcHMiLCJnZXRKdWRnZW1lbnRzIiwiZ2V0TWV0YXZhcmlhYmxlcyIsImdldE1ldGFwcm9vZlN0ZXBzIiwiaXNJbnRyaW5zaWNMZXZlbCIsImludHJpbnNpY0xldmVsIiwiZ2V0TGFzdE1ldGFwcm9vZlN0ZXAiLCJsYXN0TWV0YXByb29mU3RlcCIsIm1ldGFwcm9vZlN0ZXBzTGVuZ3RoIiwibGVuZ3RoIiwibGFzdCIsImFkZEp1ZGdlbWVudCIsImp1ZGdlbWVudCIsImp1ZGdlbWVudEFkZGVkIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJqdWRnZW1lbnRQcmVzZW50IiwiaXNKdWRnZW1lbnRQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwicHVzaCIsImFkZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUFkZGVkIiwibm9kZSIsImdldE5hbWUiLCJtZXRhdmFyaWFibGVQcmVzZW50Iiwic29tZSIsIm1ldGF2YXJpYWJsZU1hdGNoZXNOb2RlIiwibWF0Y2hOb2RlIiwiYWRkTWV0YXByb29mU3RlcCIsIm1ldGFwcm9vZlN0ZXAiLCJtYXRjaE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YXN0YXRlbWVudE5vZGUiLCJyZXZlcnNlIiwibWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlIiwibWV0YXByb29mU3RlcE1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhTGV2ZWxMb2NhbENvbnRleHQiLCJmaW5kIiwibWF0Y2hlcyIsImZpbmRKdWRnZW1lbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJqdWRnZW1lbnRNYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsImZyb21GaWxlQ29udGV4dCIsImZpbGVDb250ZXh0IiwiZnJvbUxvY2FsQ29udGV4dCIsImxvY2FsQ29udGV4dCIsIkludHJpbnNpY0xldmVsTG9jYWxDb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE4TEE7OztlQUFBOzs7cUVBNUx1QztxQkFFVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFOUIsSUFBQSxBQUFNQSxzQ0FBRCxBQUFMO2NBQU1BOytCQUFBQTthQUFBQSxzQkFDUUMsT0FBTyxFQUFFQyxTQUFTLEVBQUVDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxVQUFVLEVBQUVDLGFBQWEsRUFBRUMsY0FBYztnQ0FEL0ZQOztrQ0FFSUMsU0FBU0MsV0FBV0MsWUFBWUM7UUFFdEMsTUFBS0MsVUFBVSxHQUFHQTtRQUNsQixNQUFLQyxhQUFhLEdBQUdBO1FBQ3JCLE1BQUtDLGNBQWMsR0FBR0E7OztrQkFOcEJQOztZQVNKUSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSUgsYUFBYSxJQUFJLENBQUNKLE9BQU8sQ0FBQ08sYUFBYTtnQkFFM0NILGFBQWEsQUFDWCxxQkFBRyxJQUFJLENBQUNBLFVBQVUsU0FDbEIscUJBQUdBO2dCQUdMLE9BQU9BO1lBQ1Q7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSUgsZ0JBQWdCLElBQUksQ0FBQ0wsT0FBTyxDQUFDUSxnQkFBZ0I7Z0JBRWpESCxnQkFBZ0IsQUFDZCxxQkFBRyxJQUFJLENBQUNBLGFBQWEsU0FDckIscUJBQUdBO2dCQUdMLE9BQU9BO1lBQ1Q7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSUgsaUJBQWlCLElBQUksQ0FBQ04s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
|
package/lib/judgement.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
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 Judgement;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function _class_call_check(instance, Constructor) {
|
|
12
|
+
if (!(instance instanceof Constructor)) {
|
|
13
|
+
throw new TypeError("Cannot call a class as a function");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function _defineProperties(target, props) {
|
|
17
|
+
for(var i = 0; i < props.length; i++){
|
|
18
|
+
var descriptor = props[i];
|
|
19
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
20
|
+
descriptor.configurable = true;
|
|
21
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
22
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
26
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
27
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
28
|
+
return Constructor;
|
|
29
|
+
}
|
|
30
|
+
var Judgement = /*#__PURE__*/ function() {
|
|
31
|
+
function Judgement(node, frame, metavariableNode) {
|
|
32
|
+
_class_call_check(this, Judgement);
|
|
33
|
+
this.node = node;
|
|
34
|
+
this.frame = frame;
|
|
35
|
+
this.metavariableNode = metavariableNode;
|
|
36
|
+
}
|
|
37
|
+
_create_class(Judgement, [
|
|
38
|
+
{
|
|
39
|
+
key: "getNode",
|
|
40
|
+
value: function getNode() {
|
|
41
|
+
return this.node;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
key: "getFrame",
|
|
46
|
+
value: function getFrame() {
|
|
47
|
+
return this.frame;
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
key: "getMetavariableNode",
|
|
52
|
+
value: function getMetavariableNode() {
|
|
53
|
+
return this.metavariableNode;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
key: "getDeclarations",
|
|
58
|
+
value: function getDeclarations() {
|
|
59
|
+
return this.frame.getDeclarations();
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
key: "matchMetavariableNode",
|
|
64
|
+
value: function matchMetavariableNode(metavariableNode) {
|
|
65
|
+
var matchesMetavariableNode = this.metavariableNode.match(metavariableNode);
|
|
66
|
+
return matchesMetavariableNode;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
key: "matchMetaLemmaOrMetaTheorem",
|
|
71
|
+
value: function matchMetaLemmaOrMetaTheorem(metaLemmaMetatheorem) {
|
|
72
|
+
return this.frame.matchMetaLemmaOrMetaTheorem(metaLemmaMetatheorem);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
], [
|
|
76
|
+
{
|
|
77
|
+
key: "fromJudgementNodeFrameAndMetavariableNode",
|
|
78
|
+
value: function fromJudgementNodeFrameAndMetavariableNode(judgementNode, frame, metavariableNode) {
|
|
79
|
+
var node = judgementNode, judgement = new Judgement(node, frame, metavariableNode);
|
|
80
|
+
return judgement;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
]);
|
|
84
|
+
return Judgement;
|
|
85
|
+
}();
|
|
86
|
+
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9qdWRnZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEp1ZGdlbWVudCB7XG4gIGNvbnN0cnVjdG9yKG5vZGUsIGZyYW1lLCBtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG4gICAgdGhpcy5tZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZTtcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxuXG4gIGdldEZyYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmZyYW1lO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0RGVjbGFyYXRpb25zKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXREZWNsYXJhdGlvbnMoKTsgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgbWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm1ldGF2YXJpYWJsZU5vZGUubWF0Y2gobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlc01ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBtYXRjaE1ldGFMZW1tYU9yTWV0YVRoZW9yZW0obWV0YUxlbW1hTWV0YXRoZW9yZW0pIHsgcmV0dXJuIHRoaXMuZnJhbWUubWF0Y2hNZXRhTGVtbWFPck1ldGFUaGVvcmVtKG1ldGFMZW1tYU1ldGF0aGVvcmVtKTsgfVxuXG4gIHN0YXRpYyBmcm9tSnVkZ2VtZW50Tm9kZUZyYW1lQW5kTWV0YXZhcmlhYmxlTm9kZShqdWRnZW1lbnROb2RlLCBmcmFtZSwgbWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBqdWRnZW1lbnROb2RlLFxuICAgICAgICAgIGp1ZGdlbWVudCA9IG5ldyBKdWRnZW1lbnQobm9kZSwgZnJhbWUsIG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkp1ZGdlbWVudCIsIm5vZGUiLCJmcmFtZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXROb2RlIiwiZ2V0RnJhbWUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiZ2V0RGVjbGFyYXRpb25zIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUiLCJtYXRjaCIsIm1hdGNoTWV0YUxlbW1hT3JNZXRhVGhlb3JlbSIsIm1ldGFMZW1tYU1ldGF0aGVvcmVtIiwiZnJvbUp1ZGdlbWVudE5vZGVGcmFtZUFuZE1ldGF2YXJpYWJsZU5vZGUiLCJqdWRnZW1lbnROb2RlIiwianVkZ2VtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUVxQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTixJQUFBLEFBQU1BLDBCQUFELEFBQUw7YUFBTUEsVUFDUEMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLGdCQUFnQjtnQ0FEdEJIO1FBRWpCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUdBOztrQkFKUEg7O1lBT25CSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILElBQUk7WUFDbEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILEtBQUs7WUFDbkI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILGdCQUFnQjtZQUM5Qjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFBb0IsT0FBTyxJQUFJLENBQUNMLEtBQUssQ0FBQ0ssZUFBZTtZQUFJOzs7WUFFekRDLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0JMLGdCQUFnQjtnQkFDcEMsSUFBTU0sMEJBQTBCLElBQUksQ0FBQ04sZ0JBQWdCLENBQUNPLEtBQUssQ0FBQ1A7Z0JBRTVELE9BQU9NO1lBQ1Q7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsNEJBQTRCQyxvQkFBb0I7Z0JBQUksT0FBTyxJQUFJLENBQUNWLEtBQUssQ0FBQ1MsMkJBQTJCLENBQUNDO1lBQXVCOzs7O1lBRWxIQyxLQUFBQTttQkFBUCxTQUFPQSwwQ0FBMENDLGFBQWEsRUFBRVosS0FBSyxFQUFFQyxnQkFBZ0I7Z0JBQ3JGLElBQU1GLE9BQU9hLGVBQ1BDLFlBQVksSUEvQkRmLFVBK0JlQyxNQUFNQyxPQUFPQztnQkFFN0MsT0FBT1k7WUFDVDs7O1dBbENtQmYifQ==
|
package/lib/metaConsequent.js
CHANGED
|
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return MetaConsequent;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
var _localMeta = /*#__PURE__*/ _interop_require_default(require("./context/localMeta"));
|
|
12
11
|
var _metaLevel = /*#__PURE__*/ _interop_require_default(require("./verifier/nodes/metaLevel"));
|
|
12
|
+
var _metaLevel1 = /*#__PURE__*/ _interop_require_default(require("./context/local/metaLevel"));
|
|
13
13
|
var _string = require("./utilities/string");
|
|
14
14
|
var _node = require("./utilities/node");
|
|
15
15
|
function _class_call_check(instance, Constructor) {
|
|
@@ -57,10 +57,10 @@ var MetaConsequent = /*#__PURE__*/ function() {
|
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
key: "matchMetastatementNode",
|
|
60
|
-
value: function matchMetastatementNode(metastatementNode, substitutions, fileContext,
|
|
60
|
+
value: function matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext) {
|
|
61
61
|
var matchesMetastatementNode = false;
|
|
62
62
|
if (this.metastatementNode !== null) {
|
|
63
|
-
var
|
|
63
|
+
var metaLevelLocalContext = _metaLevel1.default.fromFileContext(fileContext), nonTerminalNodeA = this.metastatementNode, nonTerminalNodeB = metastatementNode, localContextA = metaLevelLocalContext, localContextB = localContext, nonTerminalNodeVerified = _metaLevel.default.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, function() {
|
|
64
64
|
var verifiedAhead = true;
|
|
65
65
|
return verifiedAhead;
|
|
66
66
|
});
|
|
@@ -105,4 +105,4 @@ var MetaConsequent = /*#__PURE__*/ function() {
|
|
|
105
105
|
return MetaConsequent;
|
|
106
106
|
}();
|
|
107
107
|
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhQ29uc2VxdWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IG1ldGFMZXZlbE5vZGVzVmVyaWZpZXIgZnJvbSBcIi4vdmVyaWZpZXIvbm9kZXMvbWV0YUxldmVsXCI7XG5pbXBvcnQgTWV0YUxldmVsTG9jYWxDb250ZXh0IGZyb20gXCIuL2NvbnRleHQvbG9jYWwvbWV0YUxldmVsXCI7XG5cbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nLCBtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YUNvbnNlcXVlbnQge1xuICBjb25zdHJ1Y3RvcihtZXRhc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSkge1xuICAgIHRoaXMubWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZTtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaE1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IG1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMubWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG1ldGFMZXZlbExvY2FsQ29udGV4dCA9IE1ldGFMZXZlbExvY2FsQ29udGV4dC5mcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlQSA9IHRoaXMubWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBtZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgbG9jYWxDb250ZXh0QSA9IG1ldGFMZXZlbExvY2FsQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgbG9jYWxDb250ZXh0QiA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG1ldGFMZXZlbE5vZGVzVmVyaWZpZXIudmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIsICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgbWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzTWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICB0b0pTT04odG9rZW5zKSB7XG4gICAgY29uc3QgbWV0YXN0YXRlbWVudFN0cmluZyA9IG5vZGVBc1N0cmluZyh0aGlzLm1ldGFzdGF0ZW1lbnROb2RlLCB0b2tlbnMpLFxuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IG5vZGVBc1N0cmluZyh0aGlzLnN0YXRlbWVudE5vZGUsIHRva2VucyksXG4gICAgICAgICAgbWV0YXN0YXRlbWVudCA9IG1ldGFzdGF0ZW1lbnRTdHJpbmcsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRTdHJpbmcsICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgbWV0YXN0YXRlbWVudCxcbiAgICAgICAgICAgIHN0YXRlbWVudFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIG1ldGFDb25zZXF1ZW50ID0gbmV3IE1ldGFDb25zZXF1ZW50KG1ldGFzdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBtZXRhQ29uc2VxdWVudDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gbnVsbCxcbiAgICAgICAgICBtZXRhQ29uc2VxdWVudCA9IG5ldyBNZXRhQ29uc2VxdWVudChtZXRhc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YUNvbnNlcXVlbnQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT05BbmRGaWxlQ29udGV4dChqc29uLCBmaWxlQ29udGV4dCkge1xuICAgIGNvbnN0IHsgbWV0YXN0YXRlbWVudCwgc3RhdGVtZW50IH0gPSBqc29uLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnRTdHJpbmcgPSBtZXRhc3RhdGVtZW50LCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LCAgLy8vXG4gICAgICAgICAgbGV4ZXIgPSBmaWxlQ29udGV4dC5nZXRMZXhlcigpLFxuICAgICAgICAgIHBhcnNlciA9IGZpbGVDb250ZXh0LmdldFBhcnNlcigpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVGcm9tTWV0YXN0YXRlbWVudFN0cmluZyhtZXRhc3RhdGVtZW50U3RyaW5nLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmcoc3RhdGVtZW50U3RyaW5nLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgICBtZXRhQ29uc2VxdWVudCA9IG5ldyBNZXRhQ29uc2VxdWVudChtZXRhc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YUNvbnNlcXVlbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJNZXRhQ29uc2VxdWVudCIsIm1ldGFzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm1hdGNoTWV0YXN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb25zIiwiZmlsZUNvbnRleHQiLCJsb2NhbENvbnRleHQiLCJtYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhTGV2ZWxMb2NhbENvbnRleHQiLCJNZXRhTGV2ZWxMb2NhbENvbnRleHQiLCJmcm9tRmlsZUNvbnRleHQiLCJub25UZXJtaW5hbE5vZGVBIiwibm9uVGVybWluYWxOb2RlQiIsImxvY2FsQ29udGV4dEEiLCJsb2NhbENvbnRleHRCIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJtZXRhTGV2ZWxOb2Rlc1ZlcmlmaWVyIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwidmVyaWZpZWRBaGVhZCIsInRvSlNPTiIsInRva2VucyIsIm1ldGFzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJzdGF0ZW1lbnRTdHJpbmciLCJtZXRhc3RhdGVtZW50Iiwic3RhdGVtZW50IiwianNvbiIsImZyb21TdGF0ZW1lbnROb2RlIiwibWV0YUNvbnNlcXVlbnQiLCJmcm9tTWV0YXN0YXRlbWVudE5vZGUiLCJmcm9tSlNPTkFuZEZpbGVDb250ZXh0IiwibGV4ZXIiLCJnZXRMZXhlciIsInBhcnNlciIsImdldFBhcnNlciIsIm1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmciLCJzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFRcUJBOzs7Z0VBTmM7aUVBQ0Q7c0JBRUw7b0JBQzhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFLElBQUEsQUFBTUEsK0JBQUQsQUFBTDthQUFNQSxlQUNQQyxpQkFBaUIsRUFBRUMsYUFBYTtnQ0FEekJGO1FBRWpCLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUdBO1FBQ3pCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQTs7a0JBSEpGOztZQU1uQkcsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRixpQkFBaUI7WUFDL0I7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLGFBQWE7WUFDM0I7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsdUJBQXVCSixpQkFBaUIsRUFBRUssYUFBYSxFQUFFQyxXQUFXLEVBQUVDLFlBQVk7Z0JBQ2hGLElBQUlDLDJCQUEyQjtnQkFFL0IsSUFBSSxJQUFJLENBQUNSLGlCQUFpQixLQUFLLE1BQU07b0JBQ25DLElBQU1TLHdCQUF3QkMsbUJBQXFCLENBQUNDLGVBQWUsQ0FBQ0wsY0FDOURNLG1CQUFtQixJQUFJLENBQUNaLGlCQUFpQixFQUN6Q2EsbUJBQW1CYixtQkFDbkJjLGdCQUFnQkwsdUJBQ2hCTSxnQkFBZ0JSLGNBQ2hCUywwQkFBMEJDLGtCQUFzQixDQUFDQyxxQkFBcUIsQ0FBQ04sa0JBQWtCQyxrQkFBa0JSLGVBQWVTLGVBQWVDLGVBQWU7d0JBQ3RKLElBQU1JLGdCQUFnQjt3QkFFdEIsT0FBT0E7b0JBQ1Q7b0JBRU5YLDJCQUEyQlEseUJBQXlCLEdBQUc7Z0JBQ3pEO2dCQUVBLE9BQU9SO1lBQ1Q7OztZQUVBWSxLQUFBQTttQkFBQUEsU0FBQUEsT0FBT0MsTUFBTTtnQkFDWCxJQUFNQyxzQkFBc0JDLElBQUFBLG9CQUFZLEVBQUMsSUFBSSxDQUFDdkIsaUJBQWlCLEVBQUVxQixTQUMzREcsa0JBQWtCRCxJQUFBQSxvQkFBWSxFQUFDLElBQUksQ0FBQ3RCLGFBQWEsRUFBRW9CLFNBQ25ESSxnQkFBZ0JILHFCQUNoQkksWUFBWUYsaUJBQ1pHLE9BQU87b0JBQ0xGLGVBQUFBO29CQUNBQyxXQUFBQTtnQkFDRjtnQkFFTixPQUFPQztZQUNUOzs7O1lBRU9DLEtBQUFBO21CQUFQLFNBQU9BLGtCQUFrQjNCLGFBQWE7Z0JBQ3BDLElBQU1ELG9CQUFvQixNQUNwQjZCLGlCQUFpQixJQWxETjlCLGVBa0R5QkMsbUJBQW1CQztnQkFFN0QsT0FBTzRCO1lBQ1Q7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxzQkFBc0I5QixpQkFBaUI7Z0JBQzVDLElBQU1DLGdCQUFnQixNQUNoQjRCLGlCQUFpQixJQXpETjlCLGVBeUR5QkMsbUJBQW1CQztnQkFFN0QsT0FBTzRCO1lBQ1Q7OztZQUVPRSxLQUFBQTttQkFBUCxTQUFPQSx1QkFBdUJKLElBQUksRUFBRXJCLFdBQVc7Z0JBQzdDLElBQVFtQixnQkFBNkJFLEtBQTdCRixlQUFlQyxZQUFjQyxLQUFkRCxXQUNqQkosc0JBQXNCRyxlQUN0QkQsa0JBQWtCRSxXQUNsQk0sUUFBUTFCLFlBQVkyQixRQUFRLElBQzVCQyxTQUFTNUIsWUFBWTZCLFNBQVMsSUFDOUJuQyxvQkFBb0JvQyxJQUFBQSw4Q0FBd0MsRUFBQ2QscUJBQXFCVSxPQUFPRSxTQUN6RmpDLGdCQUFnQm9DLElBQUFBLHNDQUFnQyxFQUFDYixpQkFBaUJRLE9BQU9FLFNBQ3pFTCxpQkFBaUIsSUF0RU45QixlQXNFeUJDLG1CQUFtQkM7Z0JBRTdELE9BQU80QjtZQUNUOzs7V0F6RW1COUIifQ==
|
|
@@ -79,11 +79,11 @@ var MetaLemmaMetatheorem = /*#__PURE__*/ function() {
|
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
key: "matchMetastatement",
|
|
82
|
-
value: function matchMetastatement(metastatementNode,
|
|
82
|
+
value: function matchMetastatement(metastatementNode, localContext) {
|
|
83
83
|
var metastatementNatches = false;
|
|
84
|
-
var metaproofSteps =
|
|
84
|
+
var metaproofSteps = localContext.getProofSteps(), substitutions = [], metaSuppositionsMatch = matchMetaSuppositions(this.metaSuppositions, metaproofSteps, substitutions, this.fileContext, localContext);
|
|
85
85
|
if (metaSuppositionsMatch) {
|
|
86
|
-
var metaConsequentMatches = matchMetaConsequent(this.metaConsequent, metastatementNode, substitutions, this.fileContext,
|
|
86
|
+
var metaConsequentMatches = matchMetaConsequent(this.metaConsequent, metastatementNode, substitutions, this.fileContext, localContext);
|
|
87
87
|
metastatementNatches = metaConsequentMatches; ///
|
|
88
88
|
}
|
|
89
89
|
return metastatementNatches;
|
|
@@ -159,33 +159,33 @@ var MetaLemmaMetatheorem = /*#__PURE__*/ function() {
|
|
|
159
159
|
]);
|
|
160
160
|
return MetaLemmaMetatheorem;
|
|
161
161
|
}();
|
|
162
|
-
function matchMetaSuppositions(metaSuppositions, metaproofSteps, substitutions, fileContext,
|
|
162
|
+
function matchMetaSuppositions(metaSuppositions, metaproofSteps, substitutions, fileContext, localContext) {
|
|
163
163
|
metaSuppositions = (0, _array.reverse)(metaSuppositions); ///
|
|
164
164
|
metaproofSteps = (0, _array.reverse)(metaproofSteps); ///
|
|
165
165
|
var metaSuppositionsMatch = (0, _array.correlate)(metaSuppositions, metaproofSteps, function(metaSupposition, metaproofStep) {
|
|
166
|
-
var metaSuppositionMatches = matchMetaSupposition(metaSupposition, metaproofStep, substitutions, fileContext,
|
|
166
|
+
var metaSuppositionMatches = matchMetaSupposition(metaSupposition, metaproofStep, substitutions, fileContext, localContext);
|
|
167
167
|
if (metaSuppositionMatches) {
|
|
168
168
|
return true;
|
|
169
169
|
}
|
|
170
170
|
});
|
|
171
171
|
return metaSuppositionsMatch;
|
|
172
172
|
}
|
|
173
|
-
function matchMetaSupposition(metaSupposition, metaproofStep, substitutions, fileContext,
|
|
173
|
+
function matchMetaSupposition(metaSupposition, metaproofStep, substitutions, fileContext, localContext) {
|
|
174
174
|
var matchesMetaSupposition = false;
|
|
175
175
|
var metaSubproofNode = metaproofStep.getMetaSubproofNode(), metastatementNode = metaproofStep.getMetastatementNode();
|
|
176
176
|
if (metaSubproofNode !== null) {
|
|
177
|
-
var metaSuppositionMatchesMetaSubproofNode = metaSupposition.matchMetaSubproofNode(metaSubproofNode, substitutions, fileContext,
|
|
177
|
+
var metaSuppositionMatchesMetaSubproofNode = metaSupposition.matchMetaSubproofNode(metaSubproofNode, substitutions, fileContext, localContext);
|
|
178
178
|
matchesMetaSupposition - metaSuppositionMatchesMetaSubproofNode; ///
|
|
179
179
|
}
|
|
180
180
|
if (metastatementNode !== null) {
|
|
181
|
-
var metaSuppositionMatchesMetastatementNode = metaSupposition.matchMetastatementNode(metastatementNode, substitutions, fileContext,
|
|
181
|
+
var metaSuppositionMatchesMetastatementNode = metaSupposition.matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext);
|
|
182
182
|
matchesMetaSupposition - metaSuppositionMatchesMetastatementNode; ///
|
|
183
183
|
}
|
|
184
184
|
return matchesMetaSupposition;
|
|
185
185
|
}
|
|
186
|
-
function matchMetaConsequent(metaConsequent, metastatementNode, substitutions, fileContext,
|
|
187
|
-
var metaConsequentMatchesMetastatementNode = metaConsequent.matchMetastatementNode(metastatementNode, substitutions, fileContext,
|
|
186
|
+
function matchMetaConsequent(metaConsequent, metastatementNode, substitutions, fileContext, localContext) {
|
|
187
|
+
var metaConsequentMatchesMetastatementNode = metaConsequent.matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext), metaConsequentMatches = metaConsequentMatchesMetastatementNode; ///
|
|
188
188
|
return metaConsequentMatches;
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhTGVtbWFNZXRhdGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IExhYmVsIGZyb20gXCIuL2xhYmVsXCI7XG5pbXBvcnQgTWV0YUNvbnNlcXVlbnQgZnJvbSBcIi4vbWV0YUNvbnNlcXVlbnRcIjtcbmltcG9ydCBNZXRhU3VwcG9zaXRpb24gZnJvbSBcIi4vbWV0YVN1cHBvc2l0aW9uXCI7XG5pbXBvcnQgTWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBmcm9tIFwiLi9zdWJzdGl0dXRpb24vbWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyByZXZlcnNlLCBjb3JyZWxhdGUgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YUxlbW1hTWV0YXRoZW9yZW0ge1xuICBjb25zdHJ1Y3RvcihsYWJlbHMsIG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFDb25zZXF1ZW50LCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCkge1xuICAgIHRoaXMubGFiZWxzID0gbGFiZWxzO1xuICAgIHRoaXMubWV0YVN1cHBvc2l0aW9ucyA9IG1ldGFTdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5tZXRhQ29uc2VxdWVudCA9IG1ldGFDb25zZXF1ZW50O1xuICAgIHRoaXMuc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnM7XG4gICAgdGhpcy5maWxlQ29udGV4dCA9IGZpbGVDb250ZXh0O1xuICB9XG5cbiAgZ2V0TGFiZWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVscztcbiAgfVxuXG4gIGdldE1ldGFTdXBwb3NpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YVN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldE1ldGFDb25zZXF1ZW50KCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFDb25zZXF1ZW50O1xuICB9XG5cbiAgZ2V0U3Vic3RpdHV0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0RmlsZUNvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZUNvbnRleHQ7XG4gIH1cblxuICBtYXRjaE1ldGFzdGF0ZW1lbnQobWV0YXN0YXRlbWVudE5vZGUsIGxvY2FsTWV0YUNvbnRleHQpIHtcbiAgICBsZXQgbWV0YXN0YXRlbWVudE5hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGFwcm9vZlN0ZXBzID0gbG9jYWxNZXRhQ29udGV4dC5nZXRQcm9vZlN0ZXBzKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgIG1ldGFTdXBwb3NpdGlvbnNNYXRjaCA9IG1hdGNoTWV0YVN1cHBvc2l0aW9ucyh0aGlzLm1ldGFTdXBwb3NpdGlvbnMsIG1ldGFwcm9vZlN0ZXBzLCBzdWJzdGl0dXRpb25zLCB0aGlzLmZpbGVDb250ZXh0LCBsb2NhbE1ldGFDb250ZXh0KTtcblxuICAgIGlmIChtZXRhU3VwcG9zaXRpb25zTWF0Y2gpIHtcbiAgICAgIGNvbnN0IG1ldGFDb25zZXF1ZW50TWF0Y2hlcyA9IG1hdGNoTWV0YUNvbnNlcXVlbnQodGhpcy5tZXRhQ29uc2VxdWVudCwgbWV0YXN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIHRoaXMuZmlsZUNvbnRleHQsIGxvY2FsTWV0YUNvbnRleHQpO1xuXG4gICAgICBtZXRhc3RhdGVtZW50TmF0Y2hlcyA9IG1ldGFDb25zZXF1ZW50TWF0Y2hlczsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhc3RhdGVtZW50TmF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgbWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLmxhYmVscy5zb21lKChsYWJlbCkgPT4ge1xuICAgICAgY29uc3QgbGFiZWxNYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSA9IGxhYmVsLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKGxhYmVsTWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlc01ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICB0b0pTT04odG9rZW5zKSB7XG4gICAgY29uc3QgbGFiZWxzSlNPTiA9IHRoaXMubGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTih0b2tlbnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbGFiZWxKU09OO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1ldGFTdXBwb3NpdGlvbnNKU09OID0gdGhpcy5tZXRhU3VwcG9zaXRpb25zLm1hcCgobWV0YVN1cHBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhU3VwcG9zaXRpb25KU09OID0gbWV0YVN1cHBvc2l0aW9uLnRvSlNPTih0b2tlbnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbWV0YVN1cHBvc2l0aW9uSlNPTjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtZXRhQ29uc2VxdWVudEpTT04gPSB0aGlzLm1ldGFDb25zZXF1ZW50LnRvSlNPTih0b2tlbnMpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnNKU09OID0gdGhpcy5zdWJzdGl0dXRpb25zLm1hcCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25KU09OID0gc3Vic3RpdHV0aW9uLnRvSlNPTigpO1xuXG4gICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBsb2NhbENvbnRleHRKU09OID0gdGhpcy5maWxlQ29udGV4dC50b0pTT04odG9rZW5zKSxcbiAgICAgICAgICBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YVN1cHBvc2l0aW9ucyA9IG1ldGFTdXBwb3NpdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YUNvbnNlcXVlbnQgPSBtZXRhQ29uc2VxdWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04sICAvLy9cbiAgICAgICAgICBmaWxlQ29udGV4dCA9IGxvY2FsQ29udGV4dEpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgbWV0YVN1cHBvc2l0aW9ucyxcbiAgICAgICAgICAgIG1ldGFDb25zZXF1ZW50LFxuICAgICAgICAgICAgc3Vic3RpdHV0aW9ucyxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0XG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OQW5kRmlsZUNvbnRleHQoQ2xhc3MsIGpzb24sIGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gICAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gICAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OQW5kRmlsZUNvbnRleHQoanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gbGFiZWw7XG4gICAgfSk7XG5cbiAgICBsZXQgeyBtZXRhU3VwcG9zaXRpb25zLCBtZXRhQ29uc2VxdWVudCwgc3Vic3RpdHV0aW9ucyB9ID0ganNvbjtcblxuICAgIGNvbnN0IG1ldGFTdXBwb3NpdGlvbnNKU09OID0gbWV0YVN1cHBvc2l0aW9uczsgIC8vL1xuXG4gICAgbWV0YVN1cHBvc2l0aW9ucyA9IG1ldGFTdXBwb3NpdGlvbnNKU09OLm1hcCgobWV0YVN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IG1ldGFTdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgICAgbWV0YVN1cHBvc2l0aW9uID0gTWV0YVN1cHBvc2l0aW9uLmZyb21KU09OQW5kRmlsZUNvbnRleHQoanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gbWV0YVN1cHBvc2l0aW9uO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbWV0YUNvbnNlcXVlbnRKU09OID0gbWV0YUNvbnNlcXVlbnQ7ICAvLy9cblxuICAgIGpzb24gPSBtZXRhQ29uc2VxdWVudEpTT047ICAvLy9cblxuICAgIG1ldGFDb25zZXF1ZW50ID0gTWV0YUNvbnNlcXVlbnQuZnJvbUpTT05BbmRGaWxlQ29udGV4dChqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICBjb25zdCBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnM7ICAvLy9cblxuICAgIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTi5tYXAoKHN1YnN0aXR1dGlvbkpTT04pID0+IHtcbiAgICAgIGNvbnN0IGpzb24gPSBzdWJzdGl0dXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgICBtZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gTWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbi5mcm9tSlNPTkFuZEZpbGVDb250ZXh0KGpzb24sIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IG1ldGFzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247ICAvLy9cblxuICAgICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgQ2xhc3MobGFiZWxzLCBtZXRhU3VwcG9zaXRpb25zLCBtZXRhQ29uc2VxdWVudCwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHQpOyAgLy8vXG4gIH1cblxuICBzdGF0aWMgZnJvbUxhYmVsc01ldGFTdXBwb3NpdGlvbnNNZXRhQ29uc2VxdWVudFN1YnN0aXR1dGlvbnNBbmRGaWxlQ29udGV4dChDbGFzcywgbGFiZWxzLCBtZXRhU3VwcG9zaXRpb25zLCBtZXRhQ29uc2VxdWVudCwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHQpIHsgcmV0dXJuIG5ldyBDbGFzcyhsYWJlbHMsIG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFDb25zZXF1ZW50LCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCk7IH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhU3VwcG9zaXRpb25zKG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFwcm9vZlN0ZXBzLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCwgbG9jYWxNZXRhQ29udGV4dCkge1xuICBtZXRhU3VwcG9zaXRpb25zID0gcmV2ZXJzZShtZXRhU3VwcG9zaXRpb25zKTsgLy8vXG5cbiAgbWV0YXByb29mU3RlcHMgPSByZXZlcnNlKG1ldGFwcm9vZlN0ZXBzKTsgLy8vXG5cbiAgY29uc3QgbWV0YVN1cHBvc2l0aW9uc01hdGNoID0gY29ycmVsYXRlKG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFwcm9vZlN0ZXBzLCAobWV0YVN1cHBvc2l0aW9uLCBtZXRhcHJvb2ZTdGVwKSA9PiB7XG4gICAgY29uc3QgbWV0YVN1cHBvc2l0aW9uTWF0Y2hlcyA9IG1hdGNoTWV0YVN1cHBvc2l0aW9uKG1ldGFTdXBwb3NpdGlvbiwgbWV0YXByb29mU3RlcCwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHQsIGxvY2FsTWV0YUNvbnRleHQpO1xuXG4gICAgaWYgKG1ldGFTdXBwb3NpdGlvbk1hdGNoZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFTdXBwb3NpdGlvbnNNYXRjaDtcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhU3VwcG9zaXRpb24obWV0YVN1cHBvc2l0aW9uLCBtZXRhcHJvb2ZTdGVwLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCwgbG9jYWxNZXRhQ29udGV4dCkge1xuICBsZXQgbWF0Y2hlc01ldGFTdXBwb3NpdGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGFTdWJwcm9vZk5vZGUgPSBtZXRhcHJvb2ZTdGVwLmdldE1ldGFTdWJwcm9vZk5vZGUoKSxcbiAgICAgICAgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhcHJvb2ZTdGVwLmdldE1ldGFzdGF0ZW1lbnROb2RlKCk7XG5cbiAgaWYgKG1ldGFTdWJwcm9vZk5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBtZXRhU3VwcG9zaXRpb25NYXRjaGVzTWV0YVN1YnByb29mTm9kZSA9IG1ldGFTdXBwb3NpdGlvbi5tYXRjaE1ldGFTdWJwcm9vZk5vZGUobWV0YVN1YnByb29mTm9kZSwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHQsIGxvY2FsTWV0YUNvbnRleHQpO1xuXG4gICAgbWF0Y2hlc01ldGFTdXBwb3NpdGlvbiAtIG1ldGFTdXBwb3NpdGlvbk1hdGNoZXNNZXRhU3VicHJvb2ZOb2RlOyAvLy9cbiAgfVxuXG4gIGlmIChtZXRhc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1ldGFTdXBwb3NpdGlvbk1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFTdXBwb3NpdGlvbi5tYXRjaE1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCwgbG9jYWxNZXRhQ29udGV4dCk7XG5cbiAgICBtYXRjaGVzTWV0YVN1cHBvc2l0aW9uIC0gbWV0YVN1cHBvc2l0aW9uTWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlOyAvLy9cbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzTWV0YVN1cHBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFDb25zZXF1ZW50KG1ldGFDb25zZXF1ZW50LCBtZXRhc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHQsIGxvY2FsTWV0YUNvbnRleHQpIHtcbiAgY29uc3QgbWV0YUNvbnNlcXVlbnRNYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhQ29uc2VxdWVudC5tYXRjaE1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCwgbG9jYWxNZXRhQ29udGV4dCksXG4gICAgICAgIG1ldGFDb25zZXF1ZW50TWF0Y2hlcyA9IG1ldGFDb25zZXF1ZW50TWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlOyAvLy9cblxuICByZXR1cm4gbWV0YUNvbnNlcXVlbnRNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbIk1ldGFMZW1tYU1ldGF0aGVvcmVtIiwibGFiZWxzIiwibWV0YVN1cHBvc2l0aW9ucyIsIm1ldGFDb25zZXF1ZW50Iiwic3Vic3RpdHV0aW9ucyIsImZpbGVDb250ZXh0IiwiZ2V0TGFiZWxzIiwiZ2V0TWV0YVN1cHBvc2l0aW9ucyIsImdldE1ldGFDb25zZXF1ZW50IiwiZ2V0U3Vic3RpdHV0aW9ucyIsImdldEZpbGVDb250ZXh0IiwibWF0Y2hNZXRhc3RhdGVtZW50IiwibWV0YXN0YXRlbWVudE5vZGUiLCJsb2NhbE1ldGFDb250ZXh0IiwibWV0YXN0YXRlbWVudE5hdGNoZXMiLCJtZXRhcHJvb2ZTdGVwcyIsImdldFByb29mU3RlcHMiLCJtZXRhU3VwcG9zaXRpb25zTWF0Y2giLCJtYXRjaE1ldGFTdXBwb3NpdGlvbnMiLCJtZXRhQ29uc2VxdWVudE1hdGNoZXMiLCJtYXRjaE1ldGFDb25zZXF1ZW50IiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1hdGNoZXNNZXRhdmFyaWFibGVOb2RlIiwic29tZSIsImxhYmVsIiwibGFiZWxNYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSIsInRvSlNPTiIsInRva2VucyIsImxhYmVsc0pTT04iLCJtYXAiLCJsYWJlbEpTT04iLCJtZXRhU3VwcG9zaXRpb25zSlNPTiIsIm1ldGFTdXBwb3NpdGlvbiIsIm1ldGFTdXBwb3NpdGlvbkpTT04iLCJtZXRhQ29uc2VxdWVudEpTT04iLCJzdWJzdGl0dXRpb25zSlNPTiIsInN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbkpTT04iLCJsb2NhbENvbnRleHRKU09OIiwianNvbiIsImZyb21KU09OQW5kRmlsZUNvbnRleHQiLCJDbGFzcyIsIkxhYmVsIiwiTWV0YVN1cHBvc2l0aW9uIiwiTWV0YUNvbnNlcXVlbnQiLCJtZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiTWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiIsImZyb21MYWJlbHNNZXRhU3VwcG9zaXRpb25zTWV0YUNvbnNlcXVlbnRTdWJzdGl0dXRpb25zQW5kRmlsZUNvbnRleHQiLCJyZXZlcnNlIiwiY29ycmVsYXRlIiwibWV0YXByb29mU3RlcCIsIm1ldGFTdXBwb3NpdGlvbk1hdGNoZXMiLCJtYXRjaE1ldGFTdXBwb3NpdGlvbiIsIm1hdGNoZXNNZXRhU3VwcG9zaXRpb24iLCJtZXRhU3VicHJvb2ZOb2RlIiwiZ2V0TWV0YVN1YnByb29mTm9kZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YVN1cHBvc2l0aW9uTWF0Y2hlc01ldGFTdWJwcm9vZk5vZGUiLCJtYXRjaE1ldGFTdWJwcm9vZk5vZGUiLCJtZXRhU3VwcG9zaXRpb25NYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUiLCJtYXRjaE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YUNvbnNlcXVlbnRNYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBU3FCQTs7OzREQVBIO3FFQUNTO3NFQUNDO21GQUN5QjtxQkFFbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFcEIsSUFBQSxBQUFNQSxxQ0FBRCxBQUFMO2FBQU1BLHFCQUNQQyxN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
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhTGVtbWFNZXRhdGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IExhYmVsIGZyb20gXCIuL2xhYmVsXCI7XG5pbXBvcnQgTWV0YUNvbnNlcXVlbnQgZnJvbSBcIi4vbWV0YUNvbnNlcXVlbnRcIjtcbmltcG9ydCBNZXRhU3VwcG9zaXRpb24gZnJvbSBcIi4vbWV0YVN1cHBvc2l0aW9uXCI7XG5pbXBvcnQgTWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBmcm9tIFwiLi9zdWJzdGl0dXRpb24vbWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyByZXZlcnNlLCBjb3JyZWxhdGUgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YUxlbW1hTWV0YXRoZW9yZW0ge1xuICBjb25zdHJ1Y3RvcihsYWJlbHMsIG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFDb25zZXF1ZW50LCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCkge1xuICAgIHRoaXMubGFiZWxzID0gbGFiZWxzO1xuICAgIHRoaXMubWV0YVN1cHBvc2l0aW9ucyA9IG1ldGFTdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5tZXRhQ29uc2VxdWVudCA9IG1ldGFDb25zZXF1ZW50O1xuICAgIHRoaXMuc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnM7XG4gICAgdGhpcy5maWxlQ29udGV4dCA9IGZpbGVDb250ZXh0O1xuICB9XG5cbiAgZ2V0TGFiZWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVscztcbiAgfVxuXG4gIGdldE1ldGFTdXBwb3NpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YVN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldE1ldGFDb25zZXF1ZW50KCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFDb25zZXF1ZW50O1xuICB9XG5cbiAgZ2V0U3Vic3RpdHV0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0RmlsZUNvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZUNvbnRleHQ7XG4gIH1cblxuICBtYXRjaE1ldGFzdGF0ZW1lbnQobWV0YXN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCBtZXRhc3RhdGVtZW50TmF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXByb29mU3RlcHMgPSBsb2NhbENvbnRleHQuZ2V0UHJvb2ZTdGVwcygpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhU3VwcG9zaXRpb25zTWF0Y2ggPSBtYXRjaE1ldGFTdXBwb3NpdGlvbnModGhpcy5tZXRhU3VwcG9zaXRpb25zLCBtZXRhcHJvb2ZTdGVwcywgc3Vic3RpdHV0aW9ucywgdGhpcy5maWxlQ29udGV4dCwgbG9jYWxDb250ZXh0KTtcblxuICAgIGlmIChtZXRhU3VwcG9zaXRpb25zTWF0Y2gpIHtcbiAgICAgIGNvbnN0IG1ldGFDb25zZXF1ZW50TWF0Y2hlcyA9IG1hdGNoTWV0YUNvbnNlcXVlbnQodGhpcy5tZXRhQ29uc2VxdWVudCwgbWV0YXN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIHRoaXMuZmlsZUNvbnRleHQsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgIG1ldGFzdGF0ZW1lbnROYXRjaGVzID0gbWV0YUNvbnNlcXVlbnRNYXRjaGVzOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFzdGF0ZW1lbnROYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSA9IHRoaXMubGFiZWxzLnNvbWUoKGxhYmVsKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbE1hdGNoZXNNZXRhdmFyaWFibGVOb2RlID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobGFiZWxNYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtYXRjaGVzTWV0YXZhcmlhYmxlTm9kZTtcbiAgfVxuXG4gIHRvSlNPTih0b2tlbnMpIHtcbiAgICBjb25zdCBsYWJlbHNKU09OID0gdGhpcy5sYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKHRva2Vucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBsYWJlbEpTT047XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWV0YVN1cHBvc2l0aW9uc0pTT04gPSB0aGlzLm1ldGFTdXBwb3NpdGlvbnMubWFwKChtZXRhU3VwcG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFTdXBwb3NpdGlvbkpTT04gPSBtZXRhU3VwcG9zaXRpb24udG9KU09OKHRva2Vucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBtZXRhU3VwcG9zaXRpb25KU09OO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1ldGFDb25zZXF1ZW50SlNPTiA9IHRoaXMubWV0YUNvbnNlcXVlbnQudG9KU09OKHRva2VucyksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uc0pTT04gPSB0aGlzLnN1YnN0aXR1dGlvbnMubWFwKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGxvY2FsQ29udGV4dEpTT04gPSB0aGlzLmZpbGVDb250ZXh0LnRvSlNPTih0b2tlbnMpLFxuICAgICAgICAgIGxhYmVscyA9IGxhYmVsc0pTT04sICAvLy9cbiAgICAgICAgICBtZXRhU3VwcG9zaXRpb25zID0gbWV0YVN1cHBvc2l0aW9uc0pTT04sICAvLy9cbiAgICAgICAgICBtZXRhQ29uc2VxdWVudCA9IG1ldGFDb25zZXF1ZW50SlNPTiwgIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTiwgIC8vL1xuICAgICAgICAgIGZpbGVDb250ZXh0ID0gbG9jYWxDb250ZXh0SlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBtZXRhU3VwcG9zaXRpb25zLFxuICAgICAgICAgICAgbWV0YUNvbnNlcXVlbnQsXG4gICAgICAgICAgICBzdWJzdGl0dXRpb25zLFxuICAgICAgICAgICAgZmlsZUNvbnRleHRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT05BbmRGaWxlQ29udGV4dChDbGFzcywganNvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT05BbmRGaWxlQ29udGV4dChqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgIHJldHVybiBsYWJlbDtcbiAgICB9KTtcblxuICAgIGxldCB7IG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFDb25zZXF1ZW50LCBzdWJzdGl0dXRpb25zIH0gPSBqc29uO1xuXG4gICAgY29uc3QgbWV0YVN1cHBvc2l0aW9uc0pTT04gPSBtZXRhU3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgICBtZXRhU3VwcG9zaXRpb25zID0gbWV0YVN1cHBvc2l0aW9uc0pTT04ubWFwKChtZXRhU3VwcG9zaXRpb25KU09OKSA9PiB7XG4gICAgICBjb25zdCBqc29uID0gbWV0YVN1cHBvc2l0aW9uSlNPTiwgLy8vXG4gICAgICAgICAgICBtZXRhU3VwcG9zaXRpb24gPSBNZXRhU3VwcG9zaXRpb24uZnJvbUpTT05BbmRGaWxlQ29udGV4dChqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgIHJldHVybiBtZXRhU3VwcG9zaXRpb247XG4gICAgfSk7XG5cbiAgICBjb25zdCBtZXRhQ29uc2VxdWVudEpTT04gPSBtZXRhQ29uc2VxdWVudDsgIC8vL1xuXG4gICAganNvbiA9IG1ldGFDb25zZXF1ZW50SlNPTjsgIC8vL1xuXG4gICAgbWV0YUNvbnNlcXVlbnQgPSBNZXRhQ29uc2VxdWVudC5mcm9tSlNPTkFuZEZpbGVDb250ZXh0KGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9uczsgIC8vL1xuXG4gICAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OLm1hcCgoc3Vic3RpdHV0aW9uSlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICAgIG1ldGFzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBNZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21KU09OQW5kRmlsZUNvbnRleHQoanNvbiwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gbWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBDbGFzcyhsYWJlbHMsIG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFDb25zZXF1ZW50LCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCk7ICAvLy9cbiAgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxzTWV0YVN1cHBvc2l0aW9uc01ldGFDb25zZXF1ZW50U3Vic3RpdHV0aW9uc0FuZEZpbGVDb250ZXh0KENsYXNzLCBsYWJlbHMsIG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFDb25zZXF1ZW50LCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCkgeyByZXR1cm4gbmV3IENsYXNzKGxhYmVscywgbWV0YVN1cHBvc2l0aW9ucywgbWV0YUNvbnNlcXVlbnQsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0KTsgfVxufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFTdXBwb3NpdGlvbnMobWV0YVN1cHBvc2l0aW9ucywgbWV0YXByb29mU3RlcHMsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0LCBsb2NhbENvbnRleHQpIHtcbiAgbWV0YVN1cHBvc2l0aW9ucyA9IHJldmVyc2UobWV0YVN1cHBvc2l0aW9ucyk7IC8vL1xuXG4gIG1ldGFwcm9vZlN0ZXBzID0gcmV2ZXJzZShtZXRhcHJvb2ZTdGVwcyk7IC8vL1xuXG4gIGNvbnN0IG1ldGFTdXBwb3NpdGlvbnNNYXRjaCA9IGNvcnJlbGF0ZShtZXRhU3VwcG9zaXRpb25zLCBtZXRhcHJvb2ZTdGVwcywgKG1ldGFTdXBwb3NpdGlvbiwgbWV0YXByb29mU3RlcCkgPT4ge1xuICAgIGNvbnN0IG1ldGFTdXBwb3NpdGlvbk1hdGNoZXMgPSBtYXRjaE1ldGFTdXBwb3NpdGlvbihtZXRhU3VwcG9zaXRpb24sIG1ldGFwcm9vZlN0ZXAsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0LCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKG1ldGFTdXBwb3NpdGlvbk1hdGNoZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFTdXBwb3NpdGlvbnNNYXRjaDtcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhU3VwcG9zaXRpb24obWV0YVN1cHBvc2l0aW9uLCBtZXRhcHJvb2ZTdGVwLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBtYXRjaGVzTWV0YVN1cHBvc2l0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YVN1YnByb29mTm9kZSA9IG1ldGFwcm9vZlN0ZXAuZ2V0TWV0YVN1YnByb29mTm9kZSgpLFxuICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFwcm9vZlN0ZXAuZ2V0TWV0YXN0YXRlbWVudE5vZGUoKTtcblxuICBpZiAobWV0YVN1YnByb29mTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1ldGFTdXBwb3NpdGlvbk1hdGNoZXNNZXRhU3VicHJvb2ZOb2RlID0gbWV0YVN1cHBvc2l0aW9uLm1hdGNoTWV0YVN1YnByb29mTm9kZShtZXRhU3VicHJvb2ZOb2RlLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCwgbG9jYWxDb250ZXh0KTtcblxuICAgIG1hdGNoZXNNZXRhU3VwcG9zaXRpb24gLSBtZXRhU3VwcG9zaXRpb25NYXRjaGVzTWV0YVN1YnByb29mTm9kZTsgLy8vXG4gIH1cblxuICBpZiAobWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBtZXRhU3VwcG9zaXRpb25NYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhU3VwcG9zaXRpb24ubWF0Y2hNZXRhc3RhdGVtZW50Tm9kZShtZXRhc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHQsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBtYXRjaGVzTWV0YVN1cHBvc2l0aW9uIC0gbWV0YVN1cHBvc2l0aW9uTWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlOyAvLy9cbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzTWV0YVN1cHBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFDb25zZXF1ZW50KG1ldGFDb25zZXF1ZW50LCBtZXRhc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHQsIGxvY2FsQ29udGV4dCkge1xuICBjb25zdCBtZXRhQ29uc2VxdWVudE1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFDb25zZXF1ZW50Lm1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0LCBsb2NhbENvbnRleHQpLFxuICAgICAgICBtZXRhQ29uc2VxdWVudE1hdGNoZXMgPSBtZXRhQ29uc2VxdWVudE1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZTsgLy8vXG5cbiAgcmV0dXJuIG1ldGFDb25zZXF1ZW50TWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJNZXRhTGVtbWFNZXRhdGhlb3JlbSIsImxhYmVscyIsIm1ldGFTdXBwb3NpdGlvbnMiLCJtZXRhQ29uc2VxdWVudCIsInN1YnN0aXR1dGlvbnMiLCJmaWxlQ29udGV4dCIsImdldExhYmVscyIsImdldE1ldGFTdXBwb3NpdGlvbnMiLCJnZXRNZXRhQ29uc2VxdWVudCIsImdldFN1YnN0aXR1dGlvbnMiLCJnZXRGaWxlQ29udGV4dCIsIm1hdGNoTWV0YXN0YXRlbWVudCIsIm1ldGFzdGF0ZW1lbnROb2RlIiwibG9jYWxDb250ZXh0IiwibWV0YXN0YXRlbWVudE5hdGNoZXMiLCJtZXRhcHJvb2ZTdGVwcyIsImdldFByb29mU3RlcHMiLCJtZXRhU3VwcG9zaXRpb25zTWF0Y2giLCJtYXRjaE1ldGFTdXBwb3NpdGlvbnMiLCJtZXRhQ29uc2VxdWVudE1hdGNoZXMiLCJtYXRjaE1ldGFDb25zZXF1ZW50IiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1hdGNoZXNNZXRhdmFyaWFibGVOb2RlIiwic29tZSIsImxhYmVsIiwibGFiZWxNYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSIsInRvSlNPTiIsInRva2VucyIsImxhYmVsc0pTT04iLCJtYXAiLCJsYWJlbEpTT04iLCJtZXRhU3VwcG9zaXRpb25zSlNPTiIsIm1ldGFTdXBwb3NpdGlvbiIsIm1ldGFTdXBwb3NpdGlvbkpTT04iLCJtZXRhQ29uc2VxdWVudEpTT04iLCJzdWJzdGl0dXRpb25zSlNPTiIsInN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbkpTT04iLCJsb2NhbENvbnRleHRKU09OIiwianNvbiIsImZyb21KU09OQW5kRmlsZUNvbnRleHQiLCJDbGFzcyIsIkxhYmVsIiwiTWV0YVN1cHBvc2l0aW9uIiwiTWV0YUNvbnNlcXVlbnQiLCJtZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiTWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiIsImZyb21MYWJlbHNNZXRhU3VwcG9zaXRpb25zTWV0YUNvbnNlcXVlbnRTdWJzdGl0dXRpb25zQW5kRmlsZUNvbnRleHQiLCJyZXZlcnNlIiwiY29ycmVsYXRlIiwibWV0YXByb29mU3RlcCIsIm1ldGFTdXBwb3NpdGlvbk1hdGNoZXMiLCJtYXRjaE1ldGFTdXBwb3NpdGlvbiIsIm1hdGNoZXNNZXRhU3VwcG9zaXRpb24iLCJtZXRhU3VicHJvb2ZOb2RlIiwiZ2V0TWV0YVN1YnByb29mTm9kZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YVN1cHBvc2l0aW9uTWF0Y2hlc01ldGFTdWJwcm9vZk5vZGUiLCJtYXRjaE1ldGFTdWJwcm9vZk5vZGUiLCJtZXRhU3VwcG9zaXRpb25NYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUiLCJtYXRjaE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YUNvbnNlcXVlbnRNYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBU3FCQTs7OzREQVBIO3FFQUNTO3NFQUNDO21GQUN5QjtxQkFFbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFcEIsSUFBQSxBQUFNQSxxQ0FBRCxBQUFMO2FBQU1BLHFCQUNQQyxNQUFNLEVBQUVDLGdCQUFnQixFQUFFQyxjQUFjLEVBQUVDLGFBQWEsRUFBRUMsV0FBVztnQ0FEN0RMO1FBRWpCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUdBO1FBQ3hCLElBQUksQ0FBQ0MsY0FBYyxHQUFHQTtRQUN0QixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBOztrQkFORkw7O1lBU25CTSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNMLE1BQU07WUFDcEI7OztZQUVBTSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNMLGdCQUFnQjtZQUM5Qjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsY0FBYztZQUM1Qjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsYUFBYTtZQUMzQjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0wsV0FBVztZQUN6Qjs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUJDLGlCQUFpQixFQUFFQyxZQUFZO2dCQUNoRCxJQUFJQyx1QkFBdUI7Z0JBRTNCLElBQU1DLGlCQUFpQkYsYUFBYUcsYUFBYSxJQUMzQ1osZ0JBQWdCLEVBQUUsRUFDbEJhLHdCQUF3QkMsc0JBQXNCLElBQUksQ0FBQ2hCLGdCQUFnQixFQUFFYSxnQkFBZ0JYLGVBQWUsSUFBSSxDQUFDQyxXQUFXLEVBQUVRO2dCQUU1SCxJQUFJSSx1QkFBdUI7b0JBQ3pCLElBQU1FLHdCQUF3QkMsb0JBQW9CLElBQUksQ0FBQ2pCLGNBQWMsRUFBRVMsbUJBQW1CUixlQUFlLElBQUksQ0FBQ0MsV0FBVyxFQUFFUTtvQkFFM0hDLHVCQUF1QkssdUJBQXdCLEdBQUc7Z0JBQ3BEO2dCQUVBLE9BQU9MO1lBQ1Q7OztZQUVBTyxLQUFBQTttQkFBQUEsU0FBQUEsc0JBQXNCQyxnQkFBZ0I7Z0JBQ3BDLElBQU1DLDBCQUEwQixJQUFJLENBQUN0QixNQUFNLENBQUN1QixJQUFJLENBQUMsU0FBQ0M7b0JBQ2hELElBQU1DLCtCQUErQkQsTUFBTUoscUJBQXFCLENBQUNDO29CQUVqRSxJQUFJSSw4QkFBOEI7d0JBQ2hDLE9BQU87b0JBQ1Q7Z0JBQ0Y7Z0JBRUEsT0FBT0g7WUFDVDs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPQyxNQUFNO2dCQUNYLElBQU1DLGFBQWEsSUFBSSxDQUFDNUIsTUFBTSxDQUFDNkIsR0FBRyxDQUFDLFNBQUNMO29CQUM1QixJQUFNTSxZQUFZTixNQUFNRSxNQUFNLENBQUNDO29CQUUvQixPQUFPRztnQkFDVCxJQUNBQyx1QkFBdUIsSUFBSSxDQUFDOUIsZ0JBQWdCLENBQUM0QixHQUFHLENBQUMsU0FBQ0c7b0JBQ2hELElBQU1DLHNCQUFzQkQsZ0JBQWdCTixNQUFNLENBQUNDO29CQUVuRCxPQUFPTTtnQkFDVCxJQUNBQyxxQkFBcUIsSUFBSSxDQUFDaEMsY0FBYyxDQUFDd0IsTUFBTSxDQUFDQyxTQUNoRFEsb0JBQW9CLElBQUksQ0FBQ2hDLGFBQWEsQ0FBQzBCLEdBQUcsQ0FBQyxTQUFDTztvQkFDMUMsSUFBTUMsbUJBQW1CRCxhQUFhVixNQUFNO29CQUU1QyxPQUFPVztnQkFDVCxJQUNBQyxtQkFBbUIsSUFBSSxDQUFDbEMsV0FBVyxDQUFDc0IsTUFBTSxDQUFDQyxTQUMzQzNCLFNBQVM0QixZQUNUM0IsbUJBQW1COEIsc0JBQ25CN0IsaUJBQWlCZ0Msb0JBQ2pCL0IsZ0JBQWdCZ0MsbUJBQ2hCL0IsY0FBY2tDLGtCQUNkQyxPQUFPO29CQUNMdkMsUUFBQUE7b0JBQ0FDLGtCQUFBQTtvQkFDQUMsZ0JBQUFBO29CQUNBQyxlQUFBQTtvQkFDQUMsYUFBQUE7Z0JBQ0Y7Z0JBRU4sT0FBT21DO1lBQ1Q7Ozs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0EsdUJBQXVCQyxLQUFLLEVBQUVGLElBQUksRUFBRW5DLFdBQVc7Z0JBQ3BELElBQUksQUFBRUosU0FBV3VDLEtBQVh2QztnQkFFTixJQUFNNEIsYUFBYTVCLFFBQVMsR0FBRztnQkFFL0JBLFNBQVM0QixXQUFXQyxHQUFHLENBQUMsU0FBQ0M7b0JBQ3ZCLElBQU1TLFNBQU9ULFdBQ1BOLFFBQVFrQixjQUFLLENBQUNGLHNCQUFzQixDQUFDRCxRQUFNbkM7b0JBRWpELE9BQU9vQjtnQkFDVDtnQkFFQSxJQUFNdkIsbUJBQW9Ec0MsS0FBcER0QyxrQkFBa0JDLGlCQUFrQ3FDLEtBQWxDckMsZ0JBQWdCQyxnQkFBa0JvQyxLQUFsQnBDO2dCQUV4QyxJQUFNNEIsdUJBQXVCOUIsa0JBQW1CLEdBQUc7Z0JBRW5EQSxtQkFBbUI4QixxQkFBcUJGLEdBQUcsQ0FBQyxTQUFDSTtvQkFDM0MsSUFBTU0sU0FBT04scUJBQ1BELGtCQUFrQlcsd0JBQWUsQ0FBQ0gsc0JBQXNCLENBQUNELFFBQU1uQztvQkFFckUsT0FBTzRCO2dCQUNUO2dCQUVBLElBQU1FLHFCQUFxQmhDLGdCQUFpQixHQUFHO2dCQUUvQ3FDLE9BQU9MLG9CQUFxQixHQUFHO2dCQUUvQmhDLGlCQUFpQjBDLHVCQUFjLENBQUNKLHNCQUFzQixDQUFDRCxNQUFNbkM7Z0JBRTdELElBQU0rQixvQkFBb0JoQyxlQUFnQixHQUFHO2dCQUU3Q0EsZ0JBQWdCZ0Msa0JBQWtCTixHQUFHLENBQUMsU0FBQ1E7b0JBQ3JDLElBQU1FLFNBQU9GLGtCQUNQUSwyQ0FBMkNDLHFDQUF3QyxDQUFDTixzQkFBc0IsQ0FBQ0QsUUFBTW5DLGNBQ2pIZ0MsZUFBZVMsMENBQTJDLEdBQUc7b0JBRW5FLE9BQU9UO2dCQUNUO2dCQUVBLE9BQU8sSUFBSUssTUFBTXpDLFFBQVFDLGtCQUFrQkMsZ0JBQWdCQyxlQUFlQyxjQUFlLEdBQUc7WUFDOUY7OztZQUVPMkMsS0FBQUE7bUJBQVAsU0FBT0Esb0VBQW9FTixLQUFLLEVBQUV6QyxNQUFNLEVBQUVDLGdCQUFnQixFQUFFQyxjQUFjLEVBQUVDLGFBQWEsRUFBRUMsV0FBVztnQkFBSSxPQUFPLElBQUlxQyxNQUFNekMsUUFBUUMsa0JBQWtCQyxnQkFBZ0JDLGVBQWVDO1lBQWM7OztXQXJJL05MOztBQXdJckIsU0FBU2tCLHNCQUFzQmhCLGdCQUFnQixFQUFFYSxjQUFjLEVBQUVYLGFBQWEsRUFBRUMsV0FBVyxFQUFFUSxZQUFZO0lBQ3ZHWCxtQkFBbUIrQyxJQUFBQSxjQUFPLEVBQUMvQyxtQkFBbUIsR0FBRztJQUVqRGEsaUJBQWlCa0MsSUFBQUEsY0FBTyxFQUFDbEMsaUJBQWlCLEdBQUc7SUFFN0MsSUFBTUUsd0JBQXdCaUMsSUFBQUEsZ0JBQVMsRUFBQ2hELGtCQUFrQmEsZ0JBQWdCLFNBQUNrQixpQkFBaUJrQjtRQUMxRixJQUFNQyx5QkFBeUJDLHFCQUFxQnBCLGlCQUFpQmtCLGVBQWUvQyxlQUFlQyxhQUFhUTtRQUVoSCxJQUFJdUMsd0JBQXdCO1lBQzFCLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT25DO0FBQ1Q7QUFFQSxTQUFTb0MscUJBQXFCcEIsZUFBZSxFQUFFa0IsYUFBYSxFQUFFL0MsYUFBYSxFQUFFQyxXQUFXLEVBQUVRLFlBQVk7SUFDcEcsSUFBSXlDLHlCQUF5QjtJQUU3QixJQUFNQyxtQkFBbUJKLGNBQWNLLG1CQUFtQixJQUNwRDVDLG9CQUFvQnVDLGNBQWNNLG9CQUFvQjtJQUU1RCxJQUFJRixxQkFBcUIsTUFBTTtRQUM3QixJQUFNRyx5Q0FBeUN6QixnQkFBZ0IwQixxQkFBcUIsQ0FBQ0osa0JBQWtCbkQsZUFBZUMsYUFBYVE7UUFFbkl5Qyx5QkFBeUJJLHdDQUF3QyxHQUFHO0lBQ3RFO0lBRUEsSUFBSTlDLHNCQUFzQixNQUFNO1FBQzlCLElBQU1nRCwwQ0FBMEMzQixnQkFBZ0I0QixzQkFBc0IsQ0FBQ2pELG1CQUFtQlIsZUFBZUMsYUFBYVE7UUFFdEl5Qyx5QkFBeUJNLHlDQUF5QyxHQUFHO0lBQ3ZFO0lBRUEsT0FBT047QUFDVDtBQUVBLFNBQVNsQyxvQkFBb0JqQixjQUFjLEVBQUVTLGlCQUFpQixFQUFFUixhQUFhLEVBQUVDLFdBQVcsRUFBRVEsWUFBWTtJQUN0RyxJQUFNaUQseUNBQXlDM0QsZUFBZTBELHNCQUFzQixDQUFDakQsbUJBQW1CUixlQUFlQyxhQUFhUSxlQUM5SE0sd0JBQXdCMkMsd0NBQXdDLEdBQUc7SUFFekUsT0FBTzNDO0FBQ1QifQ==
|