occam-verify-cli 0.0.1111 → 0.0.1112
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/combinator/bracketed.js +15 -65
- package/lib/combinator.js +4 -8
- package/lib/constructor/bracketed.js +24 -101
- package/lib/constructor.js +4 -8
- package/lib/context/file.js +41 -12
- package/lib/context/local.js +45 -25
- package/lib/context/release.js +2 -2
- package/lib/dom/assertion/contained.js +246 -0
- package/lib/dom/assertion/defined.js +266 -0
- package/lib/dom/assertion/subproof.js +210 -0
- package/lib/dom/assertion/type.js +240 -0
- package/lib/{axiom.js → dom/axiom.js} +18 -8
- package/lib/dom/conclusion.js +171 -0
- package/lib/{conjecture.js → dom/conjecture.js} +18 -8
- package/lib/dom/consequent.js +171 -0
- package/lib/dom/declaration/combinator.js +105 -0
- package/lib/dom/declaration/constructor.js +140 -0
- package/lib/dom/declaration/metavariable.js +154 -0
- package/lib/dom/declaration/type.js +140 -0
- package/lib/dom/declaration/variable.js +155 -0
- package/lib/{declaration.js → dom/declaration.js} +62 -18
- package/lib/dom/derivation.js +137 -0
- package/lib/dom/equality.js +260 -0
- package/lib/dom/error.js +85 -0
- package/lib/dom/frame.js +372 -0
- package/lib/dom/judgement.js +198 -0
- package/lib/dom/label.js +190 -0
- package/lib/{lemma.js → dom/lemma.js} +19 -9
- package/lib/{metaLemma.js → dom/metaLemma.js} +19 -9
- package/lib/dom/metaType.js +261 -0
- package/lib/dom/metatheorem.js +273 -0
- package/lib/dom/metavariable.js +463 -0
- package/lib/dom/premise.js +221 -0
- package/lib/dom/proof.js +154 -0
- package/lib/dom/proofStep.js +239 -0
- package/lib/dom/reference.js +218 -0
- package/lib/dom/rule.js +311 -0
- package/lib/dom/statement.js +379 -0
- package/lib/dom/subDerivation.js +137 -0
- package/lib/dom/subproof.js +211 -0
- package/lib/dom/supposition.js +221 -0
- package/lib/dom/term.js +354 -0
- package/lib/{theorem.js → dom/theorem.js} +18 -8
- package/lib/dom/topLevelAssertion.js +306 -0
- package/lib/dom/type.js +327 -0
- package/lib/dom/variable.js +328 -0
- package/lib/dom.js +27 -0
- package/lib/equivalences.js +307 -0
- package/lib/index.js +40 -35
- package/lib/mixins/proofStep/unify.js +86 -0
- package/lib/mixins/statement/verify.js +27 -2
- package/lib/mixins/term/verify.js +24 -4
- package/lib/substitution/frame.js +3 -3
- package/lib/substitution/statement.js +17 -16
- package/lib/substitution/term.js +10 -7
- package/lib/substitution.js +4 -31
- package/lib/substitutions.js +24 -56
- package/lib/unifier/equality.js +2 -3
- package/lib/unifier/label.js +3 -3
- package/lib/unifier/metaLevel.js +9 -8
- package/lib/unifier/metavariable.js +3 -3
- package/lib/unifier/statementWithCombinator.js +5 -5
- package/lib/unifier/termWithConstructor.js +3 -3
- package/lib/utilities/json.js +26 -40
- package/lib/utilities/string.js +6 -8
- package/lib/utilities/subproof.js +2 -2
- package/lib/utilities/substitutions.js +7 -6
- package/lib/utilities/verification.js +22 -14
- package/lib/verifier/combinator.js +4 -4
- package/lib/verifier/constructor.js +3 -3
- package/lib/verifier/topLevel.js +15 -21
- package/package.json +1 -1
- package/src/combinator/bracketed.js +11 -4
- package/src/combinator.js +3 -10
- package/src/constructor/bracketed.js +17 -5
- package/src/constructor.js +3 -9
- package/src/context/file.js +42 -11
- package/src/context/local.js +26 -34
- package/src/context/release.js +1 -1
- package/src/{assertion → dom/assertion}/contained.js +10 -8
- package/src/{assertion → dom/assertion}/defined.js +14 -11
- package/src/{assertion → dom/assertion}/subproof.js +11 -62
- package/src/{assertion → dom/assertion}/type.js +11 -8
- package/src/{axiom.js → dom/axiom.js} +6 -9
- package/src/dom/conclusion.js +95 -0
- package/src/{conjecture.js → dom/conjecture.js} +5 -8
- package/src/dom/consequent.js +95 -0
- package/src/{declaration → dom/declaration}/combinator.js +8 -5
- package/src/{declaration → dom/declaration}/constructor.js +8 -4
- package/src/{declaration → dom/declaration}/metavariable.js +8 -5
- package/src/{declaration → dom/declaration}/type.js +8 -4
- package/src/{declaration → dom/declaration}/variable.js +9 -6
- package/src/{declaration.js → dom/declaration.js} +11 -16
- package/src/{derivation.js → dom/derivation.js} +9 -12
- package/src/{equality.js → dom/equality.js} +11 -14
- package/src/{error.js → dom/error.js} +6 -3
- package/src/{frame.js → dom/frame.js} +14 -23
- package/src/{judgement.js → dom/judgement.js} +8 -11
- package/src/{label.js → dom/label.js} +9 -16
- package/src/{lemma.js → dom/lemma.js} +5 -9
- package/src/{metaLemma.js → dom/metaLemma.js} +6 -9
- package/src/{metaType.js → dom/metaType.js} +7 -10
- package/src/{metatheorem.js → dom/metatheorem.js} +6 -10
- package/src/{metavariable.js → dom/metavariable.js} +79 -77
- package/src/dom/premise.js +173 -0
- package/src/{proof.js → dom/proof.js} +8 -11
- package/src/dom/proofStep.js +173 -0
- package/src/{reference.js → dom/reference.js} +48 -20
- package/src/{rule.js → dom/rule.js} +13 -17
- package/src/{statement.js → dom/statement.js} +142 -71
- package/src/{subDerivation.js → dom/subDerivation.js} +9 -12
- package/src/{subproof.js → dom/subproof.js} +14 -47
- package/src/dom/supposition.js +173 -0
- package/src/{term.js → dom/term.js} +24 -45
- package/src/{theorem.js → dom/theorem.js} +5 -8
- package/src/{topLevelAssertion.js → dom/topLevelAssertion.js} +12 -14
- package/src/{type.js → dom/type.js} +9 -12
- package/src/{variable.js → dom/variable.js} +20 -28
- package/src/dom.js +13 -0
- package/src/equivalences.js +278 -0
- package/src/index.js +39 -34
- package/src/mixins/proofStep/unify.js +115 -0
- package/src/mixins/statement/verify.js +33 -1
- package/src/mixins/term/verify.js +33 -3
- package/src/substitution/frame.js +2 -2
- package/src/substitution/statement.js +20 -18
- package/src/substitution/term.js +12 -5
- package/src/substitution.js +4 -29
- package/src/substitutions.js +35 -73
- package/src/unifier/equality.js +1 -2
- package/src/unifier/label.js +2 -2
- package/src/unifier/metaLevel.js +9 -7
- package/src/unifier/metavariable.js +2 -2
- package/src/unifier/statementWithCombinator.js +4 -4
- package/src/unifier/termWithConstructor.js +2 -2
- package/src/utilities/json.js +23 -42
- package/src/utilities/string.js +8 -6
- package/src/utilities/subproof.js +2 -2
- package/src/utilities/substitutions.js +7 -5
- package/src/utilities/verification.js +29 -13
- package/src/verifier/combinator.js +3 -3
- package/src/verifier/constructor.js +3 -3
- package/src/verifier/topLevel.js +20 -21
- package/lib/assertion/contained.js +0 -232
- package/lib/assertion/defined.js +0 -211
- package/lib/assertion/subproof.js +0 -203
- package/lib/assertion/type.js +0 -185
- package/lib/conclusion.js +0 -130
- package/lib/consequent.js +0 -130
- package/lib/declaration/combinator.js +0 -90
- package/lib/declaration/constructor.js +0 -90
- package/lib/declaration/metavariable.js +0 -104
- package/lib/declaration/type.js +0 -90
- package/lib/declaration/variable.js +0 -105
- package/lib/derivation.js +0 -91
- package/lib/equality.js +0 -209
- package/lib/error.js +0 -70
- package/lib/frame.js +0 -331
- package/lib/judgement.js +0 -147
- package/lib/label.js +0 -141
- package/lib/metaType.js +0 -255
- package/lib/metatheorem.js +0 -263
- package/lib/metavariable.js +0 -399
- package/lib/mixins/statement/qualified/unify.js +0 -69
- package/lib/mixins/statement/unify.js +0 -42
- package/lib/mixins/statement/unifyIndependenntly.js +0 -46
- package/lib/mixins/term/unify.js +0 -40
- package/lib/premise.js +0 -184
- package/lib/proof.js +0 -103
- package/lib/proofStep.js +0 -179
- package/lib/reference.js +0 -145
- package/lib/rule.js +0 -259
- package/lib/shim.js +0 -14
- package/lib/statement/qualified.js +0 -152
- package/lib/statement/unqualified.js +0 -175
- package/lib/statement.js +0 -270
- package/lib/subDerivation.js +0 -91
- package/lib/subproof.js +0 -181
- package/lib/supposition.js +0 -184
- package/lib/term.js +0 -318
- package/lib/topLevelAssertion.js +0 -305
- package/lib/type.js +0 -321
- package/lib/utilities/equivalences.js +0 -178
- package/lib/variable.js +0 -281
- package/src/conclusion.js +0 -96
- package/src/consequent.js +0 -96
- package/src/mixins/statement/qualified/unify.js +0 -103
- package/src/mixins/statement/unify.js +0 -41
- package/src/mixins/statement/unifyIndependenntly.js +0 -58
- package/src/mixins/term/unify.js +0 -36
- package/src/premise.js +0 -183
- package/src/proofStep.js +0 -181
- package/src/shim.js +0 -5
- package/src/statement/qualified.js +0 -133
- package/src/statement/unqualified.js +0 -166
- package/src/supposition.js +0 -183
- package/src/utilities/equivalences.js +0 -183
|
@@ -0,0 +1,221 @@
|
|
|
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 _dom = /*#__PURE__*/ _interop_require_wildcard(require("../dom"));
|
|
12
|
+
var _assignments = require("../utilities/assignments");
|
|
13
|
+
var _verification = require("../utilities/verification");
|
|
14
|
+
var _json = require("../utilities/json");
|
|
15
|
+
function _class_call_check(instance, Constructor) {
|
|
16
|
+
if (!(instance instanceof Constructor)) {
|
|
17
|
+
throw new TypeError("Cannot call a class as a function");
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function _defineProperties(target, props) {
|
|
21
|
+
for(var i = 0; i < props.length; i++){
|
|
22
|
+
var descriptor = props[i];
|
|
23
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
24
|
+
descriptor.configurable = true;
|
|
25
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
26
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
30
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
31
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
32
|
+
return Constructor;
|
|
33
|
+
}
|
|
34
|
+
function _define_property(obj, key, value) {
|
|
35
|
+
if (key in obj) {
|
|
36
|
+
Object.defineProperty(obj, key, {
|
|
37
|
+
value: value,
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true
|
|
41
|
+
});
|
|
42
|
+
} else {
|
|
43
|
+
obj[key] = value;
|
|
44
|
+
}
|
|
45
|
+
return obj;
|
|
46
|
+
}
|
|
47
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
48
|
+
if (typeof WeakMap !== "function") return null;
|
|
49
|
+
var cacheBabelInterop = new WeakMap();
|
|
50
|
+
var cacheNodeInterop = new WeakMap();
|
|
51
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
52
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
53
|
+
})(nodeInterop);
|
|
54
|
+
}
|
|
55
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
56
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
57
|
+
return obj;
|
|
58
|
+
}
|
|
59
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
60
|
+
return {
|
|
61
|
+
default: obj
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
65
|
+
if (cache && cache.has(obj)) {
|
|
66
|
+
return cache.get(obj);
|
|
67
|
+
}
|
|
68
|
+
var newObj = {
|
|
69
|
+
__proto__: null
|
|
70
|
+
};
|
|
71
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
72
|
+
for(var key in obj){
|
|
73
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
74
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
75
|
+
if (desc && (desc.get || desc.set)) {
|
|
76
|
+
Object.defineProperty(newObj, key, desc);
|
|
77
|
+
} else {
|
|
78
|
+
newObj[key] = obj[key];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
newObj.default = obj;
|
|
83
|
+
if (cache) {
|
|
84
|
+
cache.set(obj, newObj);
|
|
85
|
+
}
|
|
86
|
+
return newObj;
|
|
87
|
+
}
|
|
88
|
+
var _Premise;
|
|
89
|
+
var _default = (0, _dom.domAssigned)((_Premise = /*#__PURE__*/ function() {
|
|
90
|
+
function Premise(string, statement) {
|
|
91
|
+
_class_call_check(this, Premise);
|
|
92
|
+
this.string = string;
|
|
93
|
+
this.statement = statement;
|
|
94
|
+
}
|
|
95
|
+
_create_class(Premise, [
|
|
96
|
+
{
|
|
97
|
+
key: "getString",
|
|
98
|
+
value: function getString() {
|
|
99
|
+
return this.string;
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
key: "getStatement",
|
|
104
|
+
value: function getStatement() {
|
|
105
|
+
return this.statement;
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
key: "unifyIndependently",
|
|
110
|
+
value: function unifyIndependently(substitutions, generalContext, specificContext) {
|
|
111
|
+
var unifiedIndependently;
|
|
112
|
+
var statementResolvedIndependently = this.statement.unifyIndependently(substitutions, generalContext, specificContext);
|
|
113
|
+
unifiedIndependently = statementResolvedIndependently; ///
|
|
114
|
+
return unifiedIndependently;
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
key: "unifyProofStep",
|
|
119
|
+
value: function unifyProofStep(proofStep, substitutions, generalContext, specificContext) {
|
|
120
|
+
var proofStepUnified = false;
|
|
121
|
+
var subproof = proofStep.getSubproof(), statement = proofStep.getStatement();
|
|
122
|
+
substitutions.snapshot();
|
|
123
|
+
if (subproof !== null) {
|
|
124
|
+
var subproofUnified = this.unifySubproof(subproof, substitutions, generalContext, specificContext);
|
|
125
|
+
proofStepUnified = subproofUnified; ///
|
|
126
|
+
}
|
|
127
|
+
if (statement !== null) {
|
|
128
|
+
var statementUnified = this.unifyStatement(statement, substitutions, generalContext, specificContext);
|
|
129
|
+
proofStepUnified = statementUnified; ///
|
|
130
|
+
}
|
|
131
|
+
if (proofStepUnified) {
|
|
132
|
+
substitutions.resolve(generalContext, specificContext);
|
|
133
|
+
}
|
|
134
|
+
var context = specificContext; ///
|
|
135
|
+
proofStepUnified ? substitutions.continue() : substitutions.rollback(context);
|
|
136
|
+
return proofStepUnified;
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
key: "unifyStatement",
|
|
141
|
+
value: function unifyStatement(statement, substitutions, generalContext, specificContext) {
|
|
142
|
+
var statementUnified;
|
|
143
|
+
var premise = this, premiseString = premise.getString(), statementString = statement.getString();
|
|
144
|
+
specificContext.trace("Unifying the '".concat(statementString, "' statement with the '").concat(premiseString, "' premise..."));
|
|
145
|
+
statementUnified = this.statement.unifyStatement(statement, substitutions, generalContext, specificContext);
|
|
146
|
+
if (statementUnified) {
|
|
147
|
+
specificContext.debug("...unified the '".concat(statementString, "' statement with the '").concat(premiseString, "' premise."));
|
|
148
|
+
}
|
|
149
|
+
return statementUnified;
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
key: "unifySubproof",
|
|
154
|
+
value: function unifySubproof(subproof, substitutions, generalContext, specificContext) {
|
|
155
|
+
var subproofUnified = false;
|
|
156
|
+
var premise = this, subproofString = subproof.getString(), premiseStatement = premise.getStatement(), premiseStatementString = premiseStatement.getString();
|
|
157
|
+
specificContext.trace("Unifying the '".concat(subproofString, "' subproof with the premise's '").concat(premiseStatementString, "' statement..."));
|
|
158
|
+
var context = generalContext, subproofAssertion = (0, _verification.subproofAssertionFromStatement)(this.statement, context);
|
|
159
|
+
if (subproofAssertion !== null) {
|
|
160
|
+
subproofUnified = subproofAssertion.unifySubproof(subproof, substitutions, generalContext, specificContext);
|
|
161
|
+
}
|
|
162
|
+
if (subproofUnified) {
|
|
163
|
+
specificContext.debug("...unified the '".concat(subproofString, "' subproof with the premise's '").concat(premiseStatementString, "' statement."));
|
|
164
|
+
}
|
|
165
|
+
return subproofUnified;
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
key: "verify",
|
|
170
|
+
value: function verify(context) {
|
|
171
|
+
var verified = false;
|
|
172
|
+
var premiseString = this.string; ///
|
|
173
|
+
if (this.statement !== null) {
|
|
174
|
+
context.trace("Verifying the '".concat(premiseString, "' premise..."));
|
|
175
|
+
var stated = true, assignments = [], statementVerified = this.statement.verify(assignments, stated, context);
|
|
176
|
+
if (statementVerified) {
|
|
177
|
+
var assignmentsAssigned = (0, _assignments.assignAssignments)(assignments, context);
|
|
178
|
+
if (assignmentsAssigned) {
|
|
179
|
+
var ProofStep = _dom.default.ProofStep, proofStep = ProofStep.fromStatement(this.statement, context);
|
|
180
|
+
context.addProofStep(proofStep);
|
|
181
|
+
verified = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (verified) {
|
|
185
|
+
context.debug("...verified the '".concat(premiseString, "' premise."));
|
|
186
|
+
}
|
|
187
|
+
} else {
|
|
188
|
+
context.debug("Unable to verify the '".concat(premiseString, "' premise because it is nonsense."));
|
|
189
|
+
}
|
|
190
|
+
return verified;
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
key: "toJSON",
|
|
195
|
+
value: function toJSON() {
|
|
196
|
+
var statementJSON = (0, _json.statementToStatementJSON)(this.statement), statement = statementJSON, json = {
|
|
197
|
+
statement: statement
|
|
198
|
+
};
|
|
199
|
+
return json;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
], [
|
|
203
|
+
{
|
|
204
|
+
key: "fromJSON",
|
|
205
|
+
value: function fromJSON(json, fileContext) {
|
|
206
|
+
var statement = (0, _json.statementFromJSON)(json, fileContext), string = statement.getString(), premise = new Premise(string, statement);
|
|
207
|
+
return premise;
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
key: "fromPremiseNode",
|
|
212
|
+
value: function fromPremiseNode(premiseNode, fileContext) {
|
|
213
|
+
var Statement = _dom.default.Statement, statement = Statement.fromPremiseNode(premiseNode, fileContext), statementString = statement.getString(), string = statementString, premise = new Premise(string, statement);
|
|
214
|
+
return premise;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
]);
|
|
218
|
+
return Premise;
|
|
219
|
+
}(), _define_property(_Premise, "name", "Premise"), _Premise));
|
|
220
|
+
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb20vcHJlbWlzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5cbmltcG9ydCB7IGRvbUFzc2lnbmVkIH0gZnJvbSBcIi4uL2RvbVwiO1xuaW1wb3J0IHsgYXNzaWduQXNzaWdubWVudHMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2Fzc2lnbm1lbnRzXCI7XG5pbXBvcnQgeyBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZlcmlmaWNhdGlvblwiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUpTT04sIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBkb21Bc3NpZ25lZChjbGFzcyBQcmVtaXNlIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBzdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgdW5pZmllZEluZGVwZW5kZW50bHk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRSZXNvbHZlZEluZGVwZW5kZW50bHkgPSB0aGlzLnN0YXRlbWVudC51bmlmeUluZGVwZW5kZW50bHkoc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICB1bmlmaWVkSW5kZXBlbmRlbnRseSA9IHN0YXRlbWVudFJlc29sdmVkSW5kZXBlbmRlbnRseTsgIC8vL1xuXG4gICAgcmV0dXJuIHVuaWZpZWRJbmRlcGVuZGVudGx5O1xuICB9XG5cbiAgdW5pZnlQcm9vZlN0ZXAocHJvb2ZTdGVwLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHByb29mU3RlcFVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1YnByb29mID0gcHJvb2ZTdGVwLmdldFN1YnByb29mKCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gcHJvb2ZTdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgc3Vic3RpdHV0aW9ucy5zbmFwc2hvdCgpO1xuXG4gICAgaWYgKHN1YnByb29mICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZlVuaWZpZWQgPSB0aGlzLnVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBwcm9vZlN0ZXBVbmlmaWVkID0gc3VicHJvb2ZVbmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRVbmlmaWVkID0gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBwcm9vZlN0ZXBVbmlmaWVkID0gc3RhdGVtZW50VW5pZmllZDsgIC8vL1xuICAgIH1cblxuICAgIGlmIChwcm9vZlN0ZXBVbmlmaWVkKSB7XG4gICAgICBzdWJzdGl0dXRpb25zLnJlc29sdmUoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgcHJvb2ZTdGVwVW5pZmllZCA/XG4gICAgICBzdWJzdGl0dXRpb25zLmNvbnRpbnVlKCkgOlxuICAgICAgICBzdWJzdGl0dXRpb25zLnJvbGxiYWNrKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb29mU3RlcFVuaWZpZWQ7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllZDtcblxuICAgIGNvbnN0IHByZW1pc2UgPSB0aGlzLCAvLy9cbiAgICAgICAgICBwcmVtaXNlU3RyaW5nID0gcHJlbWlzZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBzcGVjaWZpY0NvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuLi5gKTtcblxuICAgIHN0YXRlbWVudFVuaWZpZWQgPSB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdWJwcm9vZlVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByZW1pc2UgPSB0aGlzLCAvLy9cbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpLFxuICAgICAgICAgIHByZW1pc2VTdGF0ZW1lbnQgPSBwcmVtaXNlLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHByZW1pc2VTdGF0ZW1lbnRTdHJpbmcgPSBwcmVtaXNlU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSBwcmVtaXNlJ3MgJyR7cHJlbWlzZVN0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3QgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0LFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHRoaXMuc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgc3VicHJvb2ZVbmlmaWVkID0gc3VicHJvb2ZBc3NlcnRpb24udW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHN1YnByb29mVW5pZmllZCkge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlIHByZW1pc2UncyAnJHtwcmVtaXNlU3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZlVuaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGlmICh0aGlzLnN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS4uLmApO1xuXG4gICAgICBjb25zdCBzdGF0ZWQgPSB0cnVlLFxuICAgICAgICAgICAgYXNzaWdubWVudHMgPSBbXSxcbiAgICAgICAgICAgIHN0YXRlbWVudFZlcmlmaWVkID0gdGhpcy5zdGF0ZW1lbnQudmVyaWZ5KGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgYXNzaWdubWVudHNBc3NpZ25lZCA9IGFzc2lnbkFzc2lnbm1lbnRzKGFzc2lnbm1lbnRzLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoYXNzaWdubWVudHNBc3NpZ25lZCkge1xuICAgICAgICAgIGNvbnN0IHsgUHJvb2ZTdGVwIH0gPSBkb20sXG4gICAgICAgICAgICAgICAgcHJvb2ZTdGVwID0gUHJvb2ZTdGVwLmZyb21TdGF0ZW1lbnQodGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICAgICAgY29udGV4dC5hZGRQcm9vZlN0ZXAocHJvb2ZTdGVwKTtcblxuICAgICAgICAgIHZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZSBiZWNhdXNlIGl0IGlzIG5vbnNlbnNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZDtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OKHRoaXMuc3RhdGVtZW50KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0YXRlbWVudFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcmVtaXNlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwcmVtaXNlID0gbmV3IFByZW1pc2Uoc3RyaW5nLCBzdGF0ZW1lbnQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbVByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBmaWxlQ29udGV4dCkge1xuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBkb20sXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21QcmVtaXNlTm9kZShwcmVtaXNlTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdHJpbmcgPSBzdGF0ZW1lbnRTdHJpbmcsIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBuZXcgUHJlbWlzZShzdHJpbmcsIHN0YXRlbWVudCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZVxuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJkb21Bc3NpZ25lZCIsIlByZW1pc2UiLCJzdHJpbmciLCJzdGF0ZW1lbnQiLCJnZXRTdHJpbmciLCJnZXRTdGF0ZW1lbnQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJzdWJzdGl0dXRpb25zIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ1bmlmaWVkSW5kZXBlbmRlbnRseSIsInN0YXRlbWVudFJlc29sdmVkSW5kZXBlbmRlbnRseSIsInVuaWZ5UHJvb2ZTdGVwIiwicHJvb2ZTdGVwIiwicHJvb2ZTdGVwVW5pZmllZCIsInN1YnByb29mIiwiZ2V0U3VicHJvb2YiLCJzbmFwc2hvdCIsInN1YnByb29mVW5pZmllZCIsInVuaWZ5U3VicHJvb2YiLCJzdGF0ZW1lbnRVbmlmaWVkIiwidW5pZnlTdGF0ZW1lbnQiLCJyZXNvbHZlIiwiY29udGV4dCIsImNvbnRpbnVlIiwicm9sbGJhY2siLCJwcmVtaXNlIiwicHJlbWlzZVN0cmluZyIsInN0YXRlbWVudFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJzdWJwcm9vZlN0cmluZyIsInByZW1pc2VTdGF0ZW1lbnQiLCJwcmVtaXNlU3RhdGVtZW50U3RyaW5nIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJ2ZXJpZnkiLCJ2ZXJpZmllZCIsInN0YXRlZCIsImFzc2lnbm1lbnRzIiwic3RhdGVtZW50VmVyaWZpZWQiLCJhc3NpZ25tZW50c0Fzc2lnbmVkIiwiYXNzaWduQXNzaWdubWVudHMiLCJQcm9vZlN0ZXAiLCJkb20iLCJmcm9tU3RhdGVtZW50IiwiYWRkUHJvb2ZTdGVwIiwidG9KU09OIiwic3RhdGVtZW50SlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsImpzb24iLCJmcm9tSlNPTiIsImZpbGVDb250ZXh0Iiwic3RhdGVtZW50RnJvbUpTT04iLCJmcm9tUHJlbWlzZU5vZGUiLCJwcmVtaXNlTm9kZSIsIlN0YXRlbWVudCIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBQTs7OzJEQVBnQjsyQkFHa0I7NEJBQ2E7b0JBQ2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
package/lib/dom/proof.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
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 _dom = /*#__PURE__*/ _interop_require_wildcard(require("../dom"));
|
|
12
|
+
var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
|
|
13
|
+
var _query = require("../utilities/query");
|
|
14
|
+
function _class_call_check(instance, Constructor) {
|
|
15
|
+
if (!(instance instanceof Constructor)) {
|
|
16
|
+
throw new TypeError("Cannot call a class as a function");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function _defineProperties(target, props) {
|
|
20
|
+
for(var i = 0; i < props.length; i++){
|
|
21
|
+
var descriptor = props[i];
|
|
22
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
23
|
+
descriptor.configurable = true;
|
|
24
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
25
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
29
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
30
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
31
|
+
return Constructor;
|
|
32
|
+
}
|
|
33
|
+
function _define_property(obj, key, value) {
|
|
34
|
+
if (key in obj) {
|
|
35
|
+
Object.defineProperty(obj, key, {
|
|
36
|
+
value: value,
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true,
|
|
39
|
+
writable: true
|
|
40
|
+
});
|
|
41
|
+
} else {
|
|
42
|
+
obj[key] = value;
|
|
43
|
+
}
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
function _interop_require_default(obj) {
|
|
47
|
+
return obj && obj.__esModule ? obj : {
|
|
48
|
+
default: obj
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
52
|
+
if (typeof WeakMap !== "function") return null;
|
|
53
|
+
var cacheBabelInterop = new WeakMap();
|
|
54
|
+
var cacheNodeInterop = new WeakMap();
|
|
55
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
56
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
57
|
+
})(nodeInterop);
|
|
58
|
+
}
|
|
59
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
60
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
61
|
+
return obj;
|
|
62
|
+
}
|
|
63
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
64
|
+
return {
|
|
65
|
+
default: obj
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
69
|
+
if (cache && cache.has(obj)) {
|
|
70
|
+
return cache.get(obj);
|
|
71
|
+
}
|
|
72
|
+
var newObj = {
|
|
73
|
+
__proto__: null
|
|
74
|
+
};
|
|
75
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
76
|
+
for(var key in obj){
|
|
77
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
78
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
79
|
+
if (desc && (desc.get || desc.set)) {
|
|
80
|
+
Object.defineProperty(newObj, key, desc);
|
|
81
|
+
} else {
|
|
82
|
+
newObj[key] = obj[key];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
newObj.default = obj;
|
|
87
|
+
if (cache) {
|
|
88
|
+
cache.set(obj, newObj);
|
|
89
|
+
}
|
|
90
|
+
return newObj;
|
|
91
|
+
}
|
|
92
|
+
var _Proof;
|
|
93
|
+
var derivationNodeQuery = (0, _query.nodeQuery)("/proof/derivation");
|
|
94
|
+
var _default = (0, _dom.domAssigned)((_Proof = /*#__PURE__*/ function() {
|
|
95
|
+
function Proof(derivation) {
|
|
96
|
+
_class_call_check(this, Proof);
|
|
97
|
+
this.derivation = derivation;
|
|
98
|
+
}
|
|
99
|
+
_create_class(Proof, [
|
|
100
|
+
{
|
|
101
|
+
key: "getDerivation",
|
|
102
|
+
value: function getDerivation() {
|
|
103
|
+
return this.derivation;
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
key: "getLastProofStep",
|
|
108
|
+
value: function getLastProofStep() {
|
|
109
|
+
return this.derivation.getLastProofStep();
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
key: "getStatement",
|
|
114
|
+
value: function getStatement() {
|
|
115
|
+
var lastProofStep = this.getLastProofStep(), lastProofStepStatement = lastProofStep.getStatement(), statement = lastProofStepStatement; ///
|
|
116
|
+
return statement;
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
key: "verify",
|
|
121
|
+
value: function verify(substitutions, conclusion, context) {
|
|
122
|
+
var verified = false;
|
|
123
|
+
var localContext = _local.default.fromContext(context); ///
|
|
124
|
+
context = localContext; ///
|
|
125
|
+
var derivationVerified = this.derivation.verify(substitutions, context);
|
|
126
|
+
if (derivationVerified) {
|
|
127
|
+
var lastProofStep = context.getLastProofStep();
|
|
128
|
+
if (lastProofStep !== null) {
|
|
129
|
+
var statement = this.getStatement(), conclusionStatement = conclusion.getStatement(), conclusionStatementEqualToStatement = conclusionStatement.isEqualTo(statement);
|
|
130
|
+
if (conclusionStatementEqualToStatement) {
|
|
131
|
+
verified = true;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return verified;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
], [
|
|
139
|
+
{
|
|
140
|
+
key: "fromProofNode",
|
|
141
|
+
value: function fromProofNode(proofNode, fileContext) {
|
|
142
|
+
var proof = null;
|
|
143
|
+
if (proofNode !== null) {
|
|
144
|
+
var Derivation = _dom.default.Derivation, derivationNode = derivationNodeQuery(proofNode), derivation = Derivation.fromDerivationNode(derivationNode, fileContext);
|
|
145
|
+
proof = new Proof(derivation);
|
|
146
|
+
}
|
|
147
|
+
return proof;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
]);
|
|
151
|
+
return Proof;
|
|
152
|
+
}(), _define_property(_Proof, "name", "Proof"), _Proof));
|
|
153
|
+
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb20vcHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uL2RvbVwiO1xuaW1wb3J0IExvY2FsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9sb2NhbFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBkb21Bc3NpZ25lZCB9IGZyb20gXCIuLi9kb21cIjtcblxuY29uc3QgZGVyaXZhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9wcm9vZi9kZXJpdmF0aW9uXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBkb21Bc3NpZ25lZChjbGFzcyBQcm9vZiB7XG4gIGNvbnN0cnVjdG9yKGRlcml2YXRpb24pIHtcbiAgICB0aGlzLmRlcml2YXRpb24gPSBkZXJpdmF0aW9uO1xuICB9XG5cbiAgZ2V0RGVyaXZhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZXJpdmF0aW9uO1xuICB9XG5cbiAgZ2V0TGFzdFByb29mU3RlcCgpIHsgcmV0dXJuIHRoaXMuZGVyaXZhdGlvbi5nZXRMYXN0UHJvb2ZTdGVwKCk7IH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgY29uc3QgbGFzdFByb29mU3RlcCA9IHRoaXMuZ2V0TGFzdFByb29mU3RlcCgpLFxuICAgICAgICAgIGxhc3RQcm9vZlN0ZXBTdGF0ZW1lbnQgPSBsYXN0UHJvb2ZTdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IGxhc3RQcm9vZlN0ZXBTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIHZlcmlmeShzdWJzdGl0dXRpb25zLCBjb25jbHVzaW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBsb2NhbENvbnRleHQgPSBMb2NhbENvbnRleHQuZnJvbUNvbnRleHQoY29udGV4dCk7IC8vL1xuXG4gICAgY29udGV4dCA9IGxvY2FsQ29udGV4dDsgLy8vXG5cbiAgICBjb25zdCBkZXJpdmF0aW9uVmVyaWZpZWQgPSB0aGlzLmRlcml2YXRpb24udmVyaWZ5KHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgaWYgKGRlcml2YXRpb25WZXJpZmllZCkge1xuICAgICAgY29uc3QgbGFzdFByb29mU3RlcCA9IGNvbnRleHQuZ2V0TGFzdFByb29mU3RlcCgpO1xuXG4gICAgICBpZiAobGFzdFByb29mU3RlcCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBjb25jbHVzaW9uU3RhdGVtZW50ID0gY29uY2x1c2lvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgICAgY29uY2x1c2lvblN0YXRlbWVudEVxdWFsVG9TdGF0ZW1lbnQgPSBjb25jbHVzaW9uU3RhdGVtZW50LmlzRXF1YWxUbyhzdGF0ZW1lbnQpO1xuXG4gICAgICAgIGlmIChjb25jbHVzaW9uU3RhdGVtZW50RXF1YWxUb1N0YXRlbWVudCkge1xuICAgICAgICAgIHZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZDtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9vZlwiO1xuXG4gIHN0YXRpYyBmcm9tUHJvb2ZOb2RlKHByb29mTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgICBsZXQgcHJvb2YgPSBudWxsO1xuXG4gICAgaWYgKHByb29mTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBEZXJpdmF0aW9uIH0gPSBkb20sXG4gICAgICAgICAgICBkZXJpdmF0aW9uTm9kZSA9IGRlcml2YXRpb25Ob2RlUXVlcnkocHJvb2ZOb2RlKSxcbiAgICAgICAgICAgIGRlcml2YXRpb24gPSBEZXJpdmF0aW9uLmZyb21EZXJpdmF0aW9uTm9kZShkZXJpdmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgICBwcm9vZiA9IG5ldyBQcm9vZihkZXJpdmF0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvb2Y7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlcml2YXRpb25Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJkb21Bc3NpZ25lZCIsIlByb29mIiwiZGVyaXZhdGlvbiIsImdldERlcml2YXRpb24iLCJnZXRMYXN0UHJvb2ZTdGVwIiwiZ2V0U3RhdGVtZW50IiwibGFzdFByb29mU3RlcCIsImxhc3RQcm9vZlN0ZXBTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJ2ZXJpZnkiLCJzdWJzdGl0dXRpb25zIiwiY29uY2x1c2lvbiIsImNvbnRleHQiLCJ2ZXJpZmllZCIsImxvY2FsQ29udGV4dCIsIkxvY2FsQ29udGV4dCIsImZyb21Db250ZXh0IiwiZGVyaXZhdGlvblZlcmlmaWVkIiwiY29uY2x1c2lvblN0YXRlbWVudCIsImNvbmNsdXNpb25TdGF0ZW1lbnRFcXVhbFRvU3RhdGVtZW50IiwiaXNFcXVhbFRvIiwiZnJvbVByb29mTm9kZSIsInByb29mTm9kZSIsImZpbGVDb250ZXh0IiwicHJvb2YiLCJEZXJpdmF0aW9uIiwiZG9tIiwiZGVyaXZhdGlvbk5vZGUiLCJmcm9tRGVyaXZhdGlvbk5vZGUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQUE7OzsyREFSZ0I7NERBQ1M7cUJBRUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRzFCLElBQU1BLHNCQUFzQkMsSUFBQUEsZ0JBQVMsRUFBQztJQUV0QyxXQUFlQyxJQUFBQSxnQkFBVywwQkFBQzthQUFNQyxNQUNuQkMsVUFBVTtnQ0FEU0Q7UUFFN0IsSUFBSSxDQUFDQyxVQUFVLEdBQUdBOzs7O1lBR3BCQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNELFVBQVU7WUFDeEI7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQXFCLE9BQU8sSUFBSSxDQUFDRixVQUFVLENBQUNFLGdCQUFnQjtZQUFJOzs7WUFFaEVDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxnQkFBZ0IsSUFBSSxDQUFDRixnQkFBZ0IsSUFDckNHLHlCQUF5QkQsY0FBY0QsWUFBWSxJQUNuREcsWUFBWUQsd0JBQXdCLEdBQUc7Z0JBRTdDLE9BQU9DO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsT0FBT0MsYUFBYSxFQUFFQyxVQUFVLEVBQUVDLE9BQU87Z0JBQ3ZDLElBQUlDLFdBQVc7Z0JBRWYsSUFBTUMsZUFBZUMsY0FBWSxDQUFDQyxXQUFXLENBQUNKLFVBQVUsR0FBRztnQkFFM0RBLFVBQVVFLGNBQWMsR0FBRztnQkFFM0IsSUFBTUcscUJBQXFCLElBQUksQ0FBQ2YsVUFBVSxDQUFDTyxNQUFNLENBQUNDLGVBQWVFO2dCQUVqRSxJQUFJSyxvQkFBb0I7b0JBQ3RCLElBQU1YLGdCQUFnQk0sUUFBUVIsZ0JBQWdCO29CQUU5QyxJQUFJRSxrQkFBa0IsTUFBTTt3QkFDMUIsSUFBTUUsWUFBWSxJQUFJLENBQUNILFlBQVksSUFDN0JhLHNCQUFzQlAsV0FBV04sWUFBWSxJQUM3Q2Msc0NBQXNDRCxvQkFBb0JFLFNBQVMsQ0FBQ1o7d0JBRTFFLElBQUlXLHFDQUFxQzs0QkFDdkNOLFdBQVc7d0JBQ2I7b0JBQ0Y7Z0JBQ0Y7Z0JBRUEsT0FBT0E7WUFDVDs7OztZQUlPUSxLQUFBQTttQkFBUCxTQUFPQSxjQUFjQyxTQUFTLEVBQUVDLFdBQVc7Z0JBQ3pDLElBQUlDLFFBQVE7Z0JBRVosSUFBSUYsY0FBYyxNQUFNO29CQUN0QixJQUFNLEFBQUVHLGFBQWVDLFlBQUcsQ0FBbEJELFlBQ0ZFLGlCQUFpQjdCLG9CQUFvQndCLFlBQ3JDcEIsYUFBYXVCLFdBQVdHLGtCQUFrQixDQUFDRCxnQkFBZ0JKO29CQUVqRUMsUUFBUSxJQUFJdkIsTUFBTUM7Z0JBQ3BCO2dCQUVBLE9BQU9zQjtZQUNUOzs7O0tBZEEseUJBQU9LLFFBQU8ifQ==
|
|
@@ -0,0 +1,239 @@
|
|
|
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 _dom = /*#__PURE__*/ _interop_require_wildcard(require("../dom"));
|
|
12
|
+
var _unify = /*#__PURE__*/ _interop_require_default(require("../mixins/proofStep/unify"));
|
|
13
|
+
var _substitutions = /*#__PURE__*/ _interop_require_default(require("../substitutions"));
|
|
14
|
+
var _assignments = require("../utilities/assignments");
|
|
15
|
+
function _class_call_check(instance, Constructor) {
|
|
16
|
+
if (!(instance instanceof Constructor)) {
|
|
17
|
+
throw new TypeError("Cannot call a class as a function");
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function _defineProperties(target, props) {
|
|
21
|
+
for(var i = 0; i < props.length; i++){
|
|
22
|
+
var descriptor = props[i];
|
|
23
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
24
|
+
descriptor.configurable = true;
|
|
25
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
26
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
30
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
31
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
32
|
+
return Constructor;
|
|
33
|
+
}
|
|
34
|
+
function _define_property(obj, key, value) {
|
|
35
|
+
if (key in obj) {
|
|
36
|
+
Object.defineProperty(obj, key, {
|
|
37
|
+
value: value,
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true
|
|
41
|
+
});
|
|
42
|
+
} else {
|
|
43
|
+
obj[key] = value;
|
|
44
|
+
}
|
|
45
|
+
return obj;
|
|
46
|
+
}
|
|
47
|
+
function _interop_require_default(obj) {
|
|
48
|
+
return obj && obj.__esModule ? obj : {
|
|
49
|
+
default: obj
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
53
|
+
if (typeof WeakMap !== "function") return null;
|
|
54
|
+
var cacheBabelInterop = new WeakMap();
|
|
55
|
+
var cacheNodeInterop = new WeakMap();
|
|
56
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
57
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
58
|
+
})(nodeInterop);
|
|
59
|
+
}
|
|
60
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
61
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
62
|
+
return obj;
|
|
63
|
+
}
|
|
64
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
65
|
+
return {
|
|
66
|
+
default: obj
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
70
|
+
if (cache && cache.has(obj)) {
|
|
71
|
+
return cache.get(obj);
|
|
72
|
+
}
|
|
73
|
+
var newObj = {
|
|
74
|
+
__proto__: null
|
|
75
|
+
};
|
|
76
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
77
|
+
for(var key in obj){
|
|
78
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
79
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
80
|
+
if (desc && (desc.get || desc.set)) {
|
|
81
|
+
Object.defineProperty(newObj, key, desc);
|
|
82
|
+
} else {
|
|
83
|
+
newObj[key] = obj[key];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
newObj.default = obj;
|
|
88
|
+
if (cache) {
|
|
89
|
+
cache.set(obj, newObj);
|
|
90
|
+
}
|
|
91
|
+
return newObj;
|
|
92
|
+
}
|
|
93
|
+
var _ProofStep;
|
|
94
|
+
var _default = (0, _dom.domAssigned)((_ProofStep = /*#__PURE__*/ function() {
|
|
95
|
+
function ProofStep(string, subproof, statement, reference) {
|
|
96
|
+
_class_call_check(this, ProofStep);
|
|
97
|
+
this.string = string;
|
|
98
|
+
this.subproof = subproof;
|
|
99
|
+
this.statement = statement;
|
|
100
|
+
this.reference = reference;
|
|
101
|
+
}
|
|
102
|
+
_create_class(ProofStep, [
|
|
103
|
+
{
|
|
104
|
+
key: "getString",
|
|
105
|
+
value: function getString() {
|
|
106
|
+
return this.string;
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
key: "getSubproof",
|
|
111
|
+
value: function getSubproof() {
|
|
112
|
+
return this.subproof;
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
key: "getStatement",
|
|
117
|
+
value: function getStatement() {
|
|
118
|
+
return this.statement;
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
key: "getReference",
|
|
123
|
+
value: function getReference() {
|
|
124
|
+
return this.reference;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
key: "isQualified",
|
|
129
|
+
value: function isQualified() {
|
|
130
|
+
var qualified = this.reference !== null;
|
|
131
|
+
return qualified;
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
key: "unify",
|
|
136
|
+
value: function unify(substitutions, context) {
|
|
137
|
+
var _this = this;
|
|
138
|
+
var unified;
|
|
139
|
+
if (this.subproof !== null) {
|
|
140
|
+
unified = true; ///
|
|
141
|
+
}
|
|
142
|
+
if (this.statement !== null) {
|
|
143
|
+
var proofStepString = this.string; ///
|
|
144
|
+
context.trace("Unifying the '".concat(proofStepString, "' proof step..."));
|
|
145
|
+
unified = _unify.default.some(function(unifyMixin) {
|
|
146
|
+
var unified = unifyMixin(_this.statement, _this.reference, substitutions, context);
|
|
147
|
+
if (unified) {
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
if (unified) {
|
|
152
|
+
context.debug("...unified the '".concat(proofStepString, "' proof step."));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return unified;
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
key: "unifyStatement",
|
|
160
|
+
value: function unifyStatement(statement, context) {
|
|
161
|
+
var statementUnified;
|
|
162
|
+
var specificContext = context, generalContext = context, substitutions = _substitutions.default.fromNothing();
|
|
163
|
+
if (this.subproof !== null) {
|
|
164
|
+
var subproofUnified = statement.unifySubproof(this.subproof, substitutions, generalContext, specificContext);
|
|
165
|
+
statementUnified = subproofUnified; ///
|
|
166
|
+
}
|
|
167
|
+
if (this.statement !== null) {
|
|
168
|
+
statementUnified = statement.unifyStatement(this.statement, substitutions, generalContext, specificContext);
|
|
169
|
+
}
|
|
170
|
+
if (statementUnified) {
|
|
171
|
+
var equivalences = context.getEquivalences(), substitutionsUnified = equivalences.unifySubstitutions(substitutions);
|
|
172
|
+
statementUnified = substitutionsUnified; ///
|
|
173
|
+
}
|
|
174
|
+
return statementUnified;
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
key: "verifyAndUnify",
|
|
179
|
+
value: function verifyAndUnify(substitutions, context) {
|
|
180
|
+
var verifiedAndUnified = false;
|
|
181
|
+
var assignments = [], verified = this.verify(substitutions, assignments, context);
|
|
182
|
+
if (verified) {
|
|
183
|
+
var unified = this.unify(substitutions, context);
|
|
184
|
+
if (unified) {
|
|
185
|
+
var proofStep = this; ///
|
|
186
|
+
(0, _assignments.assignAssignments)(assignments, context);
|
|
187
|
+
context.addProofStep(proofStep);
|
|
188
|
+
}
|
|
189
|
+
verifiedAndUnified = unified; ///
|
|
190
|
+
}
|
|
191
|
+
return verifiedAndUnified;
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
key: "verify",
|
|
196
|
+
value: function verify(substitutions, assignments, context) {
|
|
197
|
+
var verified = false;
|
|
198
|
+
if (false) {
|
|
199
|
+
///
|
|
200
|
+
} else if (this.subproof !== null) {
|
|
201
|
+
var subproofVerified = this.subproof.verify(substitutions, context);
|
|
202
|
+
verified = subproofVerified; ///
|
|
203
|
+
} else if (this.statement !== null) {
|
|
204
|
+
var qualified = this.isQualified(), stated = qualified, statementVerified = this.statement.verify(assignments, stated, context);
|
|
205
|
+
if (statementVerified) {
|
|
206
|
+
if (this.reference === null) {
|
|
207
|
+
verified = true;
|
|
208
|
+
} else {
|
|
209
|
+
var referenceVerified = this.reference.verify(context);
|
|
210
|
+
verified = referenceVerified; ///
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
} else {
|
|
214
|
+
var proofStepString = this.string;
|
|
215
|
+
context.debug("Cannot verify the '".concat(proofStepString, "' proof step because it is nonsense."));
|
|
216
|
+
}
|
|
217
|
+
return verified;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
], [
|
|
221
|
+
{
|
|
222
|
+
key: "fromStatement",
|
|
223
|
+
value: function fromStatement(statement, context) {
|
|
224
|
+
var statementString = statement.getString(), string = statementString, subproof = null, reference = null, proofStep = new ProofStep(string, subproof, statement, reference);
|
|
225
|
+
return proofStep;
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
key: "fromProofStepNode",
|
|
230
|
+
value: function fromProofStepNode(proofStepNode, fileContext) {
|
|
231
|
+
var Subproof = _dom.default.Subproof, Statement = _dom.default.Statement, Reference = _dom.default.Reference, node = proofStepNode, string = fileContext.nodeAsString(node), subproof = Subproof.fromProofStepNode(proofStepNode, fileContext), statement = Statement.fromProofStepNode(proofStepNode, fileContext), reference = Reference.fromProofStepNode(proofStepNode, fileContext), proofStep = new ProofStep(string, subproof, statement, reference);
|
|
232
|
+
return proofStep;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
]);
|
|
236
|
+
return ProofStep;
|
|
237
|
+
}(), _define_property(_ProofStep, "name", "ProofStep"), _ProofStep));
|
|
238
|
+
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb20vcHJvb2ZTdGVwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgZG9tIGZyb20gXCIuLi9kb21cIjtcbmltcG9ydCB1bmlmeU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL3Byb29mU3RlcC91bmlmeVwiO1xuaW1wb3J0IFN1YnN0aXR1dGlvbnMgZnJvbSBcIi4uL3N1YnN0aXR1dGlvbnNcIjtcblxuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgeyBhc3NpZ25Bc3NpZ25tZW50cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXNzaWdubWVudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZG9tQXNzaWduZWQoY2xhc3MgUHJvb2ZTdGVwIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBzdWJwcm9vZiwgc3RhdGVtZW50LCByZWZlcmVuY2UpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLnN1YnByb29mID0gc3VicHJvb2Y7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0U3VicHJvb2YoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VicHJvb2Y7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIGlzUXVhbGlmaWVkKCkge1xuICAgIGNvbnN0IHF1YWxpZmllZCA9ICh0aGlzLnJlZmVyZW5jZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcXVhbGlmaWVkO1xuICB9XG5cbiAgdW5pZnkoc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGxldCB1bmlmaWVkO1xuXG4gICAgaWYgKHRoaXMuc3VicHJvb2YgIT09IG51bGwpIHtcbiAgICAgIHVuaWZpZWQgPSB0cnVlOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb29mU3RlcFN0cmluZyA9IHRoaXMuc3RyaW5nOyAgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtwcm9vZlN0ZXBTdHJpbmd9JyBwcm9vZiBzdGVwLi4uYCk7XG5cbiAgICAgIHVuaWZpZWQgPSB1bmlmeU1peGlucy5zb21lKCh1bmlmeU1peGluKSA9PiB7XG4gICAgICAgIGNvbnN0IHVuaWZpZWQgPSB1bmlmeU1peGluKHRoaXMuc3RhdGVtZW50LCB0aGlzLnJlZmVyZW5jZSwgc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHVuaWZpZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh1bmlmaWVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Byb29mU3RlcFN0cmluZ30nIHByb29mIHN0ZXAuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuaWZpZWQ7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllZDtcblxuICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFN1YnN0aXR1dGlvbnMuZnJvbU5vdGhpbmcoKTtcblxuICAgIGlmICh0aGlzLnN1YnByb29mICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZlVuaWZpZWQgPSBzdGF0ZW1lbnQudW5pZnlTdWJwcm9vZih0aGlzLnN1YnByb29mLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgc3RhdGVtZW50VW5pZmllZCA9IHN1YnByb29mVW5pZmllZDsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHRoaXMuc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllZCkge1xuICAgICAgY29uc3QgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgICAgIHN1YnN0aXR1dGlvbnNVbmlmaWVkID0gZXF1aXZhbGVuY2VzLnVuaWZ5U3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKTtcblxuICAgICAgc3RhdGVtZW50VW5pZmllZCA9IHN1YnN0aXR1dGlvbnNVbmlmaWVkOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlBbmRVbmlmeShzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkQW5kVW5pZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgYXNzaWdubWVudHMgPSBbXSxcbiAgICAgICAgICB2ZXJpZmllZCA9IHRoaXMudmVyaWZ5KHN1YnN0aXR1dGlvbnMsIGFzc2lnbm1lbnRzLCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgY29uc3QgdW5pZmllZCA9IHRoaXMudW5pZnkoc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgIGlmICh1bmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IHByb29mU3RlcCA9IHRoaXM7IC8vL1xuXG4gICAgICAgIGFzc2lnbkFzc2lnbm1lbnRzKGFzc2lnbm1lbnRzLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmFkZFByb29mU3RlcChwcm9vZlN0ZXApO1xuICAgICAgfVxuXG4gICAgICB2ZXJpZmllZEFuZFVuaWZpZWQgPSB1bmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRBbmRVbmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5KHN1YnN0aXR1dGlvbnMsIGFzc2lnbm1lbnRzLCBjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdWJwcm9vZiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZWZXJpZmllZCA9IHRoaXMuc3VicHJvb2YudmVyaWZ5KHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICB2ZXJpZmllZCA9IHN1YnByb29mVmVyaWZpZWQ7ICAvLy9cbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBxdWFsaWZpZWQgPSB0aGlzLmlzUXVhbGlmaWVkKCksXG4gICAgICAgICAgICBzdGF0ZWQgPSBxdWFsaWZpZWQsIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50VmVyaWZpZWQgPSB0aGlzLnN0YXRlbWVudC52ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICBpZiAodGhpcy5yZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgICAgICB2ZXJpZmllZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVmZXJlbmNlVmVyaWZpZWQgPSB0aGlzLnJlZmVyZW5jZS52ZXJpZnkoY29udGV4dCk7XG5cbiAgICAgICAgICB2ZXJpZmllZCA9IHJlZmVyZW5jZVZlcmlmaWVkOyAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcm9vZlN0ZXBTdHJpbmcgPSB0aGlzLnN0cmluZztcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgQ2Fubm90IHZlcmlmeSB0aGUgJyR7cHJvb2ZTdGVwU3RyaW5nfScgcHJvb2Ygc3RlcCBiZWNhdXNlIGl0IGlzIG5vbnNlbnNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZDtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9vZlN0ZXBcIjtcblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3RyaW5nID0gc3RhdGVtZW50U3RyaW5nLCAvLy9cbiAgICAgICAgICBzdWJwcm9vZiA9IG51bGwsXG4gICAgICAgICAgcmVmZXJlbmNlID0gbnVsbCxcbiAgICAgICAgICBwcm9vZlN0ZXAgPSBuZXcgUHJvb2ZTdGVwKHN0cmluZywgc3VicHJvb2YsIHN0YXRlbWVudCwgcmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBwcm9vZlN0ZXA7XG4gIH1cblxuICBzdGF0aWMgZnJvbVByb29mU3RlcE5vZGUocHJvb2ZTdGVwTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IFN1YnByb29mLCBTdGF0ZW1lbnQsIFJlZmVyZW5jZSB9ID0gZG9tLFxuICAgICAgICAgIG5vZGUgPSBwcm9vZlN0ZXBOb2RlLCAvLy9cbiAgICAgICAgICBzdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgc3VicHJvb2YgPSBTdWJwcm9vZi5mcm9tUHJvb2ZTdGVwTm9kZShwcm9vZlN0ZXBOb2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21Qcm9vZlN0ZXBOb2RlKHByb29mU3RlcE5vZGUsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbVByb29mU3RlcE5vZGUocHJvb2ZTdGVwTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHByb29mU3RlcCA9IG5ldyBQcm9vZlN0ZXAoc3RyaW5nLCBzdWJwcm9vZiwgc3RhdGVtZW50LCByZWZlcmVuY2UpO1xuXG4gICAgcmV0dXJuIHByb29mU3RlcDtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZG9tQXNzaWduZWQiLCJQcm9vZlN0ZXAiLCJzdHJpbmciLCJzdWJwcm9vZiIsInN0YXRlbWVudCIsInJlZmVyZW5jZSIsImdldFN0cmluZyIsImdldFN1YnByb29mIiwiZ2V0U3RhdGVtZW50IiwiZ2V0UmVmZXJlbmNlIiwiaXNRdWFsaWZpZWQiLCJxdWFsaWZpZWQiLCJ1bmlmeSIsInN1YnN0aXR1dGlvbnMiLCJjb250ZXh0IiwidW5pZmllZCIsInByb29mU3RlcFN0cmluZyIsInRyYWNlIiwidW5pZnlNaXhpbnMiLCJzb21lIiwidW5pZnlNaXhpbiIsImRlYnVnIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVkIiwic3BlY2lmaWNDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJTdWJzdGl0dXRpb25zIiwiZnJvbU5vdGhpbmciLCJzdWJwcm9vZlVuaWZpZWQiLCJ1bmlmeVN1YnByb29mIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RXF1aXZhbGVuY2VzIiwic3Vic3RpdHV0aW9uc1VuaWZpZWQiLCJ1bmlmeVN1YnN0aXR1dGlvbnMiLCJ2ZXJpZnlBbmRVbmlmeSIsInZlcmlmaWVkQW5kVW5pZmllZCIsImFzc2lnbm1lbnRzIiwidmVyaWZpZWQiLCJ2ZXJpZnkiLCJwcm9vZlN0ZXAiLCJhc3NpZ25Bc3NpZ25tZW50cyIsImFkZFByb29mU3RlcCIsInN1YnByb29mVmVyaWZpZWQiLCJzdGF0ZWQiLCJzdGF0ZW1lbnRWZXJpZmllZCIsInJlZmVyZW5jZVZlcmlmaWVkIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsImZyb21Qcm9vZlN0ZXBOb2RlIiwicHJvb2ZTdGVwTm9kZSIsImZpbGVDb250ZXh0IiwiU3VicHJvb2YiLCJkb20iLCJTdGF0ZW1lbnQiLCJSZWZlcmVuY2UiLCJub2RlIiwibm9kZUFzU3RyaW5nIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUFBOzs7MkRBUGdCOzREQUNRO29FQUNFOzJCQUdROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVsQyxXQUFlQSxJQUFBQSxnQkFBVyw4QkFBQzthQUFNQyxVQUNuQkMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsRUFBRUMsU0FBUztnQ0FEbkJKO1FBRTdCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxTQUFTLEdBQUdBOzs7O1lBR25CQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNKLE1BQU07WUFDcEI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNKLFFBQVE7WUFDdEI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNKLFNBQVM7WUFDdkI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNKLFNBQVM7WUFDdkI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsWUFBYSxJQUFJLENBQUNOLFNBQVMsS0FBSztnQkFFdEMsT0FBT007WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxNQUFNQyxhQUFhLEVBQUVDLE9BQU87O2dCQUMxQixJQUFJQztnQkFFSixJQUFJ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
|