occam-verify-cli 1.0.53 → 1.0.55

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.
@@ -8,13 +8,13 @@ import Substitutions from "../substitutions";
8
8
  import TopLevelAssertion from "./topLevelAssertion";
9
9
 
10
10
  import { nodeQuery } from "../utilities/query";
11
- import { proofFromNode, consequentFromNode, suppositionsFromNode, stringFromLabelsAndConsequent } from "./topLevelAssertion";
11
+ import { proofFromNode, deductionFromNode, suppositionsFromNode, stringFromLabelsAndDeduction } from "./topLevelAssertion";
12
12
  import { labelsFromJSON,
13
13
  labelsToLabelsJSON,
14
- consequentFromJSON,
14
+ deductionFromJSON,
15
15
  suppositionsFromJSON,
16
16
  substitutionsFromJSON,
17
- consequentToConsequentJSON,
17
+ deductionToDeductionJSON,
18
18
  suppositionsToSuppositionsJSON,
19
19
  substitutionsToSubstitutionsJSON } from "../utilities/json";
20
20
 
@@ -23,8 +23,8 @@ const { first } = arrayUtilities;
23
23
  const labelNodeQuery = nodeQuery("/metatheorem/label");
24
24
 
25
25
  export default class TopLevelMetaAssertion extends TopLevelAssertion {
26
- constructor(fileContext, string, labels, suppositions, consequent, proof, substitutions) {
27
- super(fileContext, string, labels, suppositions, consequent, proof);
26
+ constructor(fileContext, string, labels, suppositions, deduction, proof, substitutions) {
27
+ super(fileContext, string, labels, suppositions, deduction, proof);
28
28
 
29
29
  this.substitutions = substitutions;
30
30
  }
@@ -65,13 +65,13 @@ export default class TopLevelMetaAssertion extends TopLevelAssertion {
65
65
  });
66
66
 
67
67
  if (suppositionsVerified) {
68
- const consequentVerified = this.consequent.verify(context);
68
+ const deductionVerified = this.deduction.verify(context);
69
69
 
70
- if (consequentVerified) {
70
+ if (deductionVerified) {
71
71
  if (this.proof === null) {
72
72
  verified = true;
73
73
  } else {
74
- const proofVerified = this.proof.verify(this.substitutions, this.consequent, context);
74
+ const proofVerified = this.proof.verify(this.substitutions, this.deduction, context);
75
75
 
76
76
  verified = proofVerified; ///
77
77
  }
@@ -97,16 +97,16 @@ export default class TopLevelMetaAssertion extends TopLevelAssertion {
97
97
 
98
98
  toJSON() {
99
99
  const labelsJSON = labelsToLabelsJSON(this.labels),
100
- consequentJSON = consequentToConsequentJSON(this.consequent),
100
+ deductionJSON = deductionToDeductionJSON(this.deduction),
101
101
  suppositionsJSON = suppositionsToSuppositionsJSON(this.suppositions),
102
102
  substitutionsJSON = substitutionsToSubstitutionsJSON(this.substitutions),
103
103
  labels = labelsJSON, ///
104
- consequent = consequentJSON, ///
104
+ deduction = deductionJSON, ///
105
105
  suppositions = suppositionsJSON, ///
106
106
  substitutions = substitutionsJSON, ///
107
107
  json = {
108
108
  labels,
109
- consequent,
109
+ deduction,
110
110
  suppositions,
111
111
  substitutions
112
112
  };
@@ -118,10 +118,10 @@ export default class TopLevelMetaAssertion extends TopLevelAssertion {
118
118
  const labels = labelsFromJSON(json, fileContext),
119
119
  substitutions = substitutionsFromJSON(json, fileContext),
120
120
  suppositions = suppositionsFromJSON(json, fileContext),
121
- consequent = consequentFromJSON(json, fileContext),
121
+ deduction = deductionFromJSON(json, fileContext),
122
122
  proof = null,
123
- string = stringFromLabelsAndConsequent(labels, consequent),
124
- topLevelAssertion = new Class(fileContext, string, labels, suppositions, consequent, proof, substitutions);
123
+ string = stringFromLabelsAndDeduction(labels, deduction),
124
+ topLevelAssertion = new Class(fileContext, string, labels, suppositions, deduction, proof, substitutions);
125
125
 
126
126
  return topLevelAssertion;
127
127
  }
@@ -130,10 +130,10 @@ export default class TopLevelMetaAssertion extends TopLevelAssertion {
130
130
  const labels = labelsFromNode(node, fileContext),
131
131
  substitutions = Substitutions.fromNothing(),
132
132
  suppositions = suppositionsFromNode(node, fileContext),
133
- consequent = consequentFromNode(node, fileContext),
133
+ deduction = deductionFromNode(node, fileContext),
134
134
  proof = proofFromNode(node, fileContext),
135
- string = stringFromLabelsAndConsequent(labels, consequent),
136
- metaLemma = new Class(fileContext, string, labels, suppositions, consequent, proof, substitutions);
135
+ string = stringFromLabelsAndDeduction(labels, deduction),
136
+ metaLemma = new Class(fileContext, string, labels, suppositions, deduction, proof, substitutions);
137
137
 
138
138
  return metaLemma;
139
139
  }
package/src/index.js CHANGED
@@ -22,7 +22,7 @@ import Reference from "./dom/reference";
22
22
  import Statement from "./dom/statement";
23
23
  import Judgement from "./dom/judgement";
24
24
  import MetaLemma from "./dom/metaLemma";
25
- import Consequent from "./dom/consequent";
25
+ import Deduction from "./dom/deduction";
26
26
  import Conjecture from "./dom/conjecture";
27
27
  import Conclusion from "./dom/conclusion";
28
28
  import Derivation from "./dom/derivation";
@@ -84,17 +84,17 @@ export function conclusionFromJSON(json, fileContext) {
84
84
  return conclusion;
85
85
  }
86
86
 
87
- export function consequentFromJSON(json, fileContext) {
88
- let { consequent } = json;
87
+ export function deductionFromJSON(json, fileContext) {
88
+ let { deduction } = json;
89
89
 
90
- const { Consequent } = dom,
91
- consequentJSON = consequent; ///
90
+ const { Deduction } = dom,
91
+ deductionJSON = deduction; ///
92
92
 
93
- json = consequentJSON; ///
93
+ json = deductionJSON; ///
94
94
 
95
- consequent = Consequent.fromJSON(json, fileContext);
95
+ deduction = Deduction.fromJSON(json, fileContext);
96
96
 
97
- return consequent;
97
+ return deduction;
98
98
  }
99
99
 
100
100
  export function metavariableFromJSON(json, fileContext) {
@@ -448,10 +448,10 @@ export function conclusionToConclusionJSON(conclusion) {
448
448
  return conclusionJSON;
449
449
  }
450
450
 
451
- export function consequentToConsequentJSON(consequent) {
452
- const consequentJSON = consequent.toJSON();
451
+ export function deductionToDeductionJSON(deduction) {
452
+ const deductionJSON = deduction.toJSON();
453
453
 
454
- return consequentJSON;
454
+ return deductionJSON;
455
455
  }
456
456
 
457
457
  export function metavariableToMetavariableJSON(metavariable) {
@@ -1,165 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _dom = /*#__PURE__*/ _interop_require_wildcard(require("../dom"));
12
- var _json = require("../utilities/json");
13
- function _class_call_check(instance, Constructor) {
14
- if (!(instance instanceof Constructor)) {
15
- throw new TypeError("Cannot call a class as a function");
16
- }
17
- }
18
- function _defineProperties(target, props) {
19
- for(var i = 0; i < props.length; i++){
20
- var descriptor = props[i];
21
- descriptor.enumerable = descriptor.enumerable || false;
22
- descriptor.configurable = true;
23
- if ("value" in descriptor) descriptor.writable = true;
24
- Object.defineProperty(target, descriptor.key, descriptor);
25
- }
26
- }
27
- function _create_class(Constructor, protoProps, staticProps) {
28
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
- if (staticProps) _defineProperties(Constructor, staticProps);
30
- return Constructor;
31
- }
32
- function _define_property(obj, key, value) {
33
- if (key in obj) {
34
- Object.defineProperty(obj, key, {
35
- value: value,
36
- enumerable: true,
37
- configurable: true,
38
- writable: true
39
- });
40
- } else {
41
- obj[key] = value;
42
- }
43
- return obj;
44
- }
45
- function _getRequireWildcardCache(nodeInterop) {
46
- if (typeof WeakMap !== "function") return null;
47
- var cacheBabelInterop = new WeakMap();
48
- var cacheNodeInterop = new WeakMap();
49
- return (_getRequireWildcardCache = function(nodeInterop) {
50
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
51
- })(nodeInterop);
52
- }
53
- function _interop_require_wildcard(obj, nodeInterop) {
54
- if (!nodeInterop && obj && obj.__esModule) {
55
- return obj;
56
- }
57
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
58
- return {
59
- default: obj
60
- };
61
- }
62
- var cache = _getRequireWildcardCache(nodeInterop);
63
- if (cache && cache.has(obj)) {
64
- return cache.get(obj);
65
- }
66
- var newObj = {
67
- __proto__: null
68
- };
69
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
70
- for(var key in obj){
71
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
72
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
73
- if (desc && (desc.get || desc.set)) {
74
- Object.defineProperty(newObj, key, desc);
75
- } else {
76
- newObj[key] = obj[key];
77
- }
78
- }
79
- }
80
- newObj.default = obj;
81
- if (cache) {
82
- cache.set(obj, newObj);
83
- }
84
- return newObj;
85
- }
86
- var _Consequent;
87
- var _default = (0, _dom.domAssigned)((_Consequent = /*#__PURE__*/ function() {
88
- function Consequent(string, statement) {
89
- _class_call_check(this, Consequent);
90
- this.string = string;
91
- this.statement = statement;
92
- }
93
- _create_class(Consequent, [
94
- {
95
- key: "getString",
96
- value: function getString() {
97
- return this.string;
98
- }
99
- },
100
- {
101
- key: "getStatement",
102
- value: function getStatement() {
103
- return this.statement;
104
- }
105
- },
106
- {
107
- key: "verify",
108
- value: function verify(context) {
109
- var verified = false;
110
- var consequentString = this.string; ///
111
- context.trace("Verifying the '".concat(consequentString, "' consequent..."));
112
- if (this.statement !== null) {
113
- var stated = true, assignments = null, statementVerified = this.statement.verify(assignments, stated, context);
114
- verified = statementVerified; ///
115
- } else {
116
- context.debug("Unable to verify the '".concat(consequentString, "' consequent because it is nonsense."));
117
- }
118
- if (verified) {
119
- context.debug("...verified the '".concat(consequentString, "' consequent."));
120
- }
121
- return verified;
122
- }
123
- },
124
- {
125
- key: "unifyStatement",
126
- value: function unifyStatement(statement, substitutions, generalContext, specificContext) {
127
- var statementUnified;
128
- var consequent = this, statementString = statement.getString(), consequentString = consequent.getString();
129
- specificContext.trace("Unifying the '".concat(statementString, "' statement with the '").concat(consequentString, "' consequent..."));
130
- statementUnified = this.statement.unifyStatement(statement, substitutions, generalContext, specificContext);
131
- if (statementUnified) {
132
- specificContext.debug("...unified the '".concat(statementString, "' statement with the '").concat(consequentString, "' consequent."));
133
- }
134
- return statementUnified;
135
- }
136
- },
137
- {
138
- key: "toJSON",
139
- value: function toJSON() {
140
- var statementJSON = (0, _json.statementToStatementJSON)(this.statement), statement = statementJSON, json = {
141
- statement: statement
142
- };
143
- return json;
144
- }
145
- }
146
- ], [
147
- {
148
- key: "fromJSON",
149
- value: function fromJSON(json, fileContext) {
150
- var statement = (0, _json.statementFromJSON)(json, fileContext), string = statement.getString(), consequent = new Consequent(string, statement);
151
- return consequent;
152
- }
153
- },
154
- {
155
- key: "fromConsequentNode",
156
- value: function fromConsequentNode(consequentNode, fileContext) {
157
- var Statement = _dom.default.Statement, node = consequentNode, string = fileContext.nodeAsString(node), statement = Statement.fromConsequentNode(consequentNode, fileContext), consequent = new Consequent(string, statement);
158
- return consequent;
159
- }
160
- }
161
- ]);
162
- return Consequent;
163
- }(), _define_property(_Consequent, "name", "Consequent"), _Consequent));
164
-
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb20vY29uc2VxdWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5cbmltcG9ydCB7IGRvbUFzc2lnbmVkIH0gZnJvbSBcIi4uL2RvbVwiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUpTT04sIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBkb21Bc3NpZ25lZChjbGFzcyBDb25zZXF1ZW50IHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBzdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnNlcXVlbnRTdHJpbmcgPSB0aGlzLnN0cmluZzsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zZXF1ZW50U3RyaW5nfScgY29uc2VxdWVudC4uLmApO1xuXG4gICAgaWYgKHRoaXMuc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZWQgPSB0cnVlLFxuICAgICAgICAgICAgYXNzaWdubWVudHMgPSBudWxsLFxuICAgICAgICAgICAgc3RhdGVtZW50VmVyaWZpZWQgPSB0aGlzLnN0YXRlbWVudC52ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgIHZlcmlmaWVkID0gc3RhdGVtZW50VmVyaWZpZWQ7IC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjb25zZXF1ZW50U3RyaW5nfScgY29uc2VxdWVudCBiZWNhdXNlIGl0IGlzIG5vbnNlbnNlLmApO1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnNlcXVlbnRTdHJpbmd9JyBjb25zZXF1ZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZDtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVkO1xuXG4gICAgY29uc3QgY29uc2VxdWVudCA9IHRoaXMsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc2VxdWVudFN0cmluZyA9IGNvbnNlcXVlbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBzcGVjaWZpY0NvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29uc2VxdWVudFN0cmluZ30nIGNvbnNlcXVlbnQuLi5gKTtcblxuICAgIHN0YXRlbWVudFVuaWZpZWQgPSB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbnNlcXVlbnRTdHJpbmd9JyBjb25zZXF1ZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04odGhpcy5zdGF0ZW1lbnQpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RhdGVtZW50XG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnNlcXVlbnRcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgc3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnNlcXVlbnQgPSBuZXcgQ29uc2VxdWVudChzdHJpbmcsIHN0YXRlbWVudCk7XG5cbiAgICByZXR1cm4gY29uc2VxdWVudDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ29uc2VxdWVudE5vZGUoY29uc2VxdWVudE5vZGUsIGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGRvbSxcbiAgICAgICAgICBub2RlID0gY29uc2VxdWVudE5vZGUsICAvLy9cbiAgICAgICAgICBzdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21Db25zZXF1ZW50Tm9kZShjb25zZXF1ZW50Tm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgIGNvbnNlcXVlbnQgPSBuZXcgQ29uc2VxdWVudChzdHJpbmcsIHN0YXRlbWVudCk7XG5cbiAgICByZXR1cm4gY29uc2VxdWVudDtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZG9tQXNzaWduZWQiLCJDb25zZXF1ZW50Iiwic3RyaW5nIiwic3RhdGVtZW50IiwiZ2V0U3RyaW5nIiwiZ2V0U3RhdGVtZW50IiwidmVyaWZ5IiwiY29udGV4dCIsInZlcmlmaWVkIiwiY29uc2VxdWVudFN0cmluZyIsInRyYWNlIiwic3RhdGVkIiwiYXNzaWdubWVudHMiLCJzdGF0ZW1lbnRWZXJpZmllZCIsImRlYnVnIiwidW5pZnlTdGF0ZW1lbnQiLCJzdWJzdGl0dXRpb25zIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVkIiwiY29uc2VxdWVudCIsInN0YXRlbWVudFN0cmluZyIsInRvSlNPTiIsInN0YXRlbWVudEpTT04iLCJzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJmaWxlQ29udGV4dCIsInN0YXRlbWVudEZyb21KU09OIiwiZnJvbUNvbnNlcXVlbnROb2RlIiwiY29uc2VxdWVudE5vZGUiLCJTdGF0ZW1lbnQiLCJkb20iLCJub2RlIiwibm9kZUFzU3RyaW5nIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBT0E7OztlQUFBOzs7MkRBTGdCO29CQUc0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRTVELFdBQWVBLElBQUFBLGdCQUFXLCtCQUFDO2FBQU1DLFdBQ25CQyxNQUFNLEVBQUVDLFNBQVM7Z0NBREVGO1FBRTdCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTs7OztZQUduQkMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRixNQUFNO1lBQ3BCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRixTQUFTO1lBQ3ZCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLE9BQU9DLE9BQU87Z0JBQ1osSUFBSUMsV0FBVztnQkFFZixJQUFNQyxtQkFBbUIsSUFBSSxDQUFDUCxNQUFNLEVBQUcsR0FBRztnQkFFMUNLLFFBQVFHLEtBQUssQ0FBQyxBQUFDLGtCQUFrQyxPQUFqQkQsa0JBQWlCO2dCQUVqRCxJQUFJLElBQUksQ0FBQ04sU0FBUyxLQUFLLE1BQU07b0JBQzNCLElBQU1RLFNBQVMsTUFDVEMsY0FBYyxNQUNkQyxvQkFBb0IsSUFBSSxDQUFDVixTQUFTLENBQUNHLE1BQU0sQ0FBQ00sYUFBYUQsUUFBUUo7b0JBRXJFQyxXQUFXSyxtQkFBbUIsR0FBRztnQkFDbkMsT0FBTztvQkFDTE4sUUFBUU8sS0FBSyxDQUFDLEFBQUMseUJBQXlDLE9BQWpCTCxrQkFBaUI7Z0JBQzFEO2dCQUVBLElBQUlELFVBQVU7b0JBQ1pELFFBQVFPLEtBQUssQ0FBQyxBQUFDLG9CQUFvQyxPQUFqQkwsa0JBQWlCO2dCQUNyRDtnQkFFQSxPQUFPRDtZQUNUOzs7WUFFQU8sS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWVaLFNBQVMsRUFBRWEsYUFBYSxFQUFFQyxjQUFjLEVBQUVDLGVBQWU7Z0JBQ3RFLElBQUlDO2dCQUVKLElBQU1DLGFBQWEsSUFBSSxFQUNqQkMsa0JBQWtCbEIsVUFBVUMsU0FBUyxJQUNyQ0ssbUJBQW1CVyxXQUFXaEIsU0FBUztnQkFFN0NjLGdCQUFnQlIsS0FBSyxDQUFDLEFBQUMsaUJBQXdERCxPQUF4Q1ksaUJBQWdCLDBCQUF5QyxPQUFqQlosa0JBQWlCO2dCQUVoR1UsbUJBQW1CLElBQUksQ0FBQ2hCLFNBQVMsQ0FBQ1ksY0FBYyxDQUFDWixXQUFXYSxlQUFlQyxnQkFBZ0JDO2dCQUUzRixJQUFJQyxrQkFBa0I7b0JBQ3BCRCxnQkFBZ0JKLEtBQUssQ0FBQyxBQUFDLG1CQUEwREwsT0FBeENZLGlCQUFnQiwwQkFBeUMsT0FBakJaLGtCQUFpQjtnQkFDcEc7Z0JBRUEsT0FBT1U7WUFDVDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxnQkFBZ0JDLElBQUFBLDhCQUF3QixFQUFDLElBQUksQ0FBQ3JCLFNBQVMsR0FDdkRBLFlBQVlvQixlQUNaRSxPQUFPO29CQUNMdEIsV0FBQUE7Z0JBQ0Y7Z0JBRU4sT0FBT3NCO1lBQ1Q7Ozs7WUFJT0MsS0FBQUE7bUJBQVAsU0FBT0EsU0FBU0QsSUFBSSxFQUFFRSxXQUFXO2dCQUMvQixJQUFNeEIsWUFBWXlCLElBQUFBLHVCQUFpQixFQUFDSCxNQUFNRSxjQUNwQ3pCLFNBQVNDLFVBQVVDLFNBQVMsSUFDNUJnQixhQUFhLElBQUluQixXQUFXQyxRQUFRQztnQkFFMUMsT0FBT2lCO1lBQ1Q7OztZQUVPUyxLQUFBQTttQkFBUCxTQUFPQSxtQkFBbUJDLGNBQWMsRUFBRUgsV0FBVztnQkFDbkQsSUFBTSxBQUFFSSxZQUFjQyxZQUFHLENBQWpCRCxXQUNGRSxPQUFPSCxnQkFDUDVCLFNBQVN5QixZQUFZTyxZQUFZLENBQUNELE9BQ2xDOUIsWUFBWTRCLFVBQVVGLGtCQUFrQixDQUFDQyxnQkFBZ0JILGNBQ3pEUCxhQUFhLElBQUluQixXQUFXQyxRQUFRQztnQkFFMUMsT0FBT2lCO1lBQ1Q7Ozs7S0FsQkEsOEJBQU9lLFFBQU8ifQ==