occam-verify-cli 0.0.464 → 0.0.466

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/lib/antecedent.js +214 -0
  2. package/lib/axiom.js +93 -78
  3. package/lib/axiomLemmaTheorem.js +190 -0
  4. package/lib/consequent.js +157 -0
  5. package/lib/constants.js +9 -1
  6. package/lib/lemma.js +93 -78
  7. package/lib/ruleNames.js +4 -4
  8. package/lib/substitution.js +123 -0
  9. package/lib/theorem.js +93 -78
  10. package/lib/utilities/statement.js +45 -0
  11. package/lib/utilities/string.js +6 -6
  12. package/lib/verify/antecedentOrAntecedents.js +38 -0
  13. package/lib/verify/axiom.js +15 -14
  14. package/lib/verify/conditinalIndicative.js +32 -0
  15. package/lib/verify/{indicativeConditional.js → conditionalIndicative.js} +10 -10
  16. package/lib/verify/consequent.js +36 -0
  17. package/lib/verify/derivation.js +1 -1
  18. package/lib/verify/lemma.js +25 -19
  19. package/lib/verify/proof.js +26 -11
  20. package/lib/verify/statement/qualified.js +16 -4
  21. package/lib/verify/theorem.js +22 -17
  22. package/lib/verify/unconditionalIndicative.js +28 -0
  23. package/package.json +3 -3
  24. package/src/antecedent.js +235 -0
  25. package/src/axiom.js +5 -95
  26. package/src/axiomLemmaTheorem.js +190 -0
  27. package/src/consequent.js +187 -0
  28. package/src/constants.js +2 -0
  29. package/src/lemma.js +5 -95
  30. package/src/ruleNames.js +1 -1
  31. package/src/substitution.js +130 -0
  32. package/src/theorem.js +5 -95
  33. package/src/utilities/statement.js +50 -0
  34. package/src/utilities/string.js +6 -6
  35. package/src/verify/antecedentOrAntecedents.js +40 -0
  36. package/src/verify/axiom.js +21 -16
  37. package/src/verify/conditinalIndicative.js +31 -0
  38. package/src/verify/conditionalIndicative.js +29 -0
  39. package/src/verify/consequent.js +36 -0
  40. package/src/verify/derivation.js +1 -1
  41. package/src/verify/lemma.js +38 -21
  42. package/src/verify/proof.js +32 -14
  43. package/src/verify/statement/qualified.js +15 -6
  44. package/src/verify/theorem.js +32 -20
  45. package/src/verify/unconditionalIndicative.js +24 -0
  46. package/src/verify/indicativeConditional.js +0 -29
@@ -0,0 +1,190 @@
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 AxiomLemmaTheorem;
9
+ }
10
+ });
11
+ var _label = /*#__PURE__*/ _interopRequireDefault(require("./label"));
12
+ var _antecedent = /*#__PURE__*/ _interopRequireDefault(require("./antecedent"));
13
+ var _consequent = /*#__PURE__*/ _interopRequireDefault(require("./consequent"));
14
+ var _array = require("./utilities/array");
15
+ function _classCallCheck(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 _createClass(Constructor, protoProps, staticProps) {
30
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
+ if (staticProps) _defineProperties(Constructor, staticProps);
32
+ return Constructor;
33
+ }
34
+ function _interopRequireDefault(obj) {
35
+ return obj && obj.__esModule ? obj : {
36
+ default: obj
37
+ };
38
+ }
39
+ var AxiomLemmaTheorem = /*#__PURE__*/ function() {
40
+ function AxiomLemmaTheorem(labels, antecedents, consequent) {
41
+ _classCallCheck(this, AxiomLemmaTheorem);
42
+ this.labels = labels;
43
+ this.antecedents = antecedents;
44
+ this.consequent = consequent;
45
+ }
46
+ _createClass(AxiomLemmaTheorem, [
47
+ {
48
+ key: "getLabels",
49
+ value: function getLabels() {
50
+ return this.labels;
51
+ }
52
+ },
53
+ {
54
+ key: "getAntecedents",
55
+ value: function getAntecedents() {
56
+ return this.antecedents;
57
+ }
58
+ },
59
+ {
60
+ key: "getConsequent",
61
+ value: function getConsequent() {
62
+ return this.consequent;
63
+ }
64
+ },
65
+ {
66
+ key: "matchLabelName",
67
+ value: function matchLabelName(labelName) {
68
+ var matchesLabelName = this.labels.some(function(label) {
69
+ var name = labelName, labelMatchesName = label.matchName(name);
70
+ if (labelMatchesName) {
71
+ return true;
72
+ }
73
+ });
74
+ return matchesLabelName;
75
+ }
76
+ },
77
+ {
78
+ key: "matchStatement",
79
+ value: function matchStatement(statementNode, proofContext) {
80
+ var _this = this;
81
+ var statementNatches;
82
+ var antecedentsLength = this.antecedents.length;
83
+ if (antecedentsLength === 0) {
84
+ var substitutions = [], consequentMatches = matchConsequent(this.consequent, statementNode, substitutions);
85
+ statementNatches = consequentMatches; ///
86
+ } else {
87
+ var assertions = proofContext.getAssertions();
88
+ statementNatches = (0, _array.someSubArray)(assertions, antecedentsLength, function(assertions) {
89
+ var antecedentsMatchConsequent = matchAntecedentsAndConsequent(_this.antecedents, _this.consequent, assertions, statementNode);
90
+ if (antecedentsMatchConsequent) {
91
+ return true;
92
+ }
93
+ });
94
+ }
95
+ return statementNatches;
96
+ }
97
+ },
98
+ {
99
+ key: "toJSON",
100
+ value: function toJSON() {
101
+ var kind = this.constructor.kind, labelsJSON = this.labels.map(function(label) {
102
+ var labelJSON = label.toJSON();
103
+ return labelJSON;
104
+ }), antecedentsJSON = this.antecedents.map(function(antecedent) {
105
+ var antecedentJSON = antecedent.toJSON();
106
+ return antecedentJSON;
107
+ }), consequentJSON = this.consequent.toJSON(), labels = labelsJSON, antecedents = antecedentsJSON, consequent = consequentJSON, json = {
108
+ kind: kind,
109
+ labels: labels,
110
+ antecedents: antecedents,
111
+ consequent: consequent
112
+ };
113
+ return json;
114
+ }
115
+ }
116
+ ], [
117
+ {
118
+ key: "fromJSON",
119
+ value: function fromJSON(Class, json, releaseContext) {
120
+ var labels = json.labels;
121
+ var labelsJSON = labels; ///
122
+ labels = labelsJSON.map(function(labelJSON) {
123
+ var _$json = labelJSON, label = _label.default.fromJSON(_$json, releaseContext);
124
+ return label;
125
+ });
126
+ var antecedents = json.antecedents;
127
+ var antecedentsJSON = antecedents; ///
128
+ antecedents = antecedentsJSON.map(function(antecedentJSON) {
129
+ var _$json = antecedentJSON, antecedent = _antecedent.default.fromJSON(_$json, releaseContext);
130
+ return antecedent;
131
+ });
132
+ var consequent = json.consequent;
133
+ var consequentJSON = consequent; ///
134
+ json = consequentJSON; ///
135
+ consequent = _consequent.default.fromJSON(json, releaseContext);
136
+ return new Class(labels, antecedents, consequent); ///
137
+ }
138
+ },
139
+ {
140
+ key: "fromLabelsAntecedentsAndConsequent",
141
+ value: function fromLabelsAntecedentsAndConsequent(Class, labels, antecedents, consequent) {
142
+ return new Class(labels, antecedents, consequent);
143
+ }
144
+ }
145
+ ]);
146
+ return AxiomLemmaTheorem;
147
+ }();
148
+ function matchAntecedent(antecedent, assertions, substitutions) {
149
+ var assertion = (0, _array.prune)(assertions, function(assertion) {
150
+ var subproofNode = assertion.getSubproofNode(), statementNode = assertion.getStatementNode();
151
+ if (subproofNode !== null) {
152
+ var subProofMatches = antecedent.matchSubproofNode(subproofNode, substitutions);
153
+ if (!subProofMatches) {
154
+ return true;
155
+ }
156
+ }
157
+ if (statementNode !== null) {
158
+ var statementMatches = antecedent.matchStatementNode(statementNode, substitutions);
159
+ if (!statementMatches) {
160
+ return true;
161
+ }
162
+ }
163
+ }) || null;
164
+ var antecedentMatches = assertion !== null;
165
+ return antecedentMatches;
166
+ }
167
+ function matchAntecedents(antecedent, assertions, substitutions) {
168
+ var antecedentsMatches = antecedent.every(function(antecedent) {
169
+ var antecedentMatches = matchAntecedent(antecedent, assertions, substitutions);
170
+ if (antecedentMatches) {
171
+ return true;
172
+ }
173
+ });
174
+ return antecedentsMatches;
175
+ }
176
+ function matchConsequent(consequent, statementNode, substitutions) {
177
+ var nonTerminalNodeMatches = consequent.matchStatementNode(statementNode, substitutions), consequentMatches = nonTerminalNodeMatches; ///
178
+ return consequentMatches;
179
+ }
180
+ function matchAntecedentsAndConsequent(antecedents, consequent, assertions, statementNode) {
181
+ var antecedentsMatchConsequent = false;
182
+ var substitutions = [], antecedentsMatches = matchAntecedents(antecedents, assertions, substitutions);
183
+ if (antecedentsMatches) {
184
+ var consequentMatches = matchConsequent(consequent, statementNode, substitutions);
185
+ antecedentsMatchConsequent = consequentMatches; ///
186
+ }
187
+ return antecedentsMatchConsequent;
188
+ }
189
+
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9heGlvbUxlbW1hVGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IExhYmVsIGZyb20gXCIuL2xhYmVsXCI7XG5pbXBvcnQgQW50ZWNlZGVudCBmcm9tIFwiLi9hbnRlY2VkZW50XCI7XG5pbXBvcnQgQ29uc2VxdWVudCBmcm9tIFwiLi9jb25zZXF1ZW50XCI7XG5cbmltcG9ydCB7IHBydW5lIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBzb21lU3ViQXJyYXkgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXhpb21MZW1tYVRoZW9yZW0ge1xuICBjb25zdHJ1Y3RvcihsYWJlbHMsIGFudGVjZWRlbnRzLCBjb25zZXF1ZW50KSB7XG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5hbnRlY2VkZW50cyA9IGFudGVjZWRlbnRzO1xuICAgIHRoaXMuY29uc2VxdWVudCA9IGNvbnNlcXVlbnQ7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0QW50ZWNlZGVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYW50ZWNlZGVudHM7XG4gIH1cblxuICBnZXRDb25zZXF1ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnNlcXVlbnQ7XG4gIH1cblxuICBtYXRjaExhYmVsTmFtZShsYWJlbE5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTGFiZWxOYW1lID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBsYWJlbE5hbWUsIC8vL1xuICAgICAgICAgICAgbGFiZWxNYXRjaGVzTmFtZSA9IGxhYmVsLm1hdGNoTmFtZShuYW1lKTtcblxuICAgICAgaWYgKGxhYmVsTWF0Y2hlc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlc0xhYmVsTmFtZTtcbiAgfVxuXG4gIG1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHByb29mQ29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnROYXRjaGVzO1xuXG4gICAgY29uc3QgYW50ZWNlZGVudHNMZW5ndGggPSB0aGlzLmFudGVjZWRlbnRzLmxlbmd0aDtcblxuICAgIGlmIChhbnRlY2VkZW50c0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgICAgY29uc2VxdWVudE1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbnQodGhpcy5jb25zZXF1ZW50LCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgc3RhdGVtZW50TmF0Y2hlcyA9IGNvbnNlcXVlbnRNYXRjaGVzOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYXNzZXJ0aW9ucyA9IHByb29mQ29udGV4dC5nZXRBc3NlcnRpb25zKCk7XG5cbiAgICAgIHN0YXRlbWVudE5hdGNoZXMgPSBzb21lU3ViQXJyYXkoYXNzZXJ0aW9ucywgYW50ZWNlZGVudHNMZW5ndGgsIChhc3NlcnRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFudGVjZWRlbnRzTWF0Y2hDb25zZXF1ZW50ID0gbWF0Y2hBbnRlY2VkZW50c0FuZENvbnNlcXVlbnQodGhpcy5hbnRlY2VkZW50cywgdGhpcy5jb25zZXF1ZW50LCBhc3NlcnRpb25zLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBpZiAoYW50ZWNlZGVudHNNYXRjaENvbnNlcXVlbnQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudE5hdGNoZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgeyBraW5kIH0gPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIGxhYmVsc0pTT04gPSB0aGlzLmxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgICAgICAgICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBhbnRlY2VkZW50c0pTT04gPSB0aGlzLmFudGVjZWRlbnRzLm1hcCgoYW50ZWNlZGVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW50ZWNlZGVudEpTT04gPSBhbnRlY2VkZW50LnRvSlNPTigpO1xuXG4gICAgICAgICAgICByZXR1cm4gYW50ZWNlZGVudEpTT047XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY29uc2VxdWVudEpTT04gPSB0aGlzLmNvbnNlcXVlbnQudG9KU09OKCksXG4gICAgICAgICAgbGFiZWxzID0gbGFiZWxzSlNPTiwgIC8vL1xuICAgICAgICAgIGFudGVjZWRlbnRzID0gYW50ZWNlZGVudHNKU09OLCAgLy8vXG4gICAgICAgICAgY29uc2VxdWVudCA9IGNvbnNlcXVlbnRKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBhbnRlY2VkZW50cyxcbiAgICAgICAgICAgIGNvbnNlcXVlbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oQ2xhc3MsIGpzb24sIHJlbGVhc2VDb250ZXh0KSB7XG4gICAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gICAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gICAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgcmV0dXJuIGxhYmVsO1xuICAgIH0pO1xuXG4gICAgbGV0IHsgYW50ZWNlZGVudHMgfSA9IGpzb247XG5cbiAgICBjb25zdCBhbnRlY2VkZW50c0pTT04gPSBhbnRlY2VkZW50czsgIC8vL1xuXG4gICAgYW50ZWNlZGVudHMgPSBhbnRlY2VkZW50c0pTT04ubWFwKChhbnRlY2VkZW50SlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IGFudGVjZWRlbnRKU09OLCAvLy9cbiAgICAgICAgICAgIGFudGVjZWRlbnQgPSBBbnRlY2VkZW50LmZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgcmV0dXJuIGFudGVjZWRlbnQ7XG4gICAgfSk7XG5cbiAgICBsZXQgeyBjb25zZXF1ZW50IH0gPSBqc29uO1xuXG4gICAgY29uc3QgY29uc2VxdWVudEpTT04gPSBjb25zZXF1ZW50OyAgLy8vXG5cbiAgICBqc29uID0gY29uc2VxdWVudEpTT047ICAvLy9cblxuICAgIGNvbnNlcXVlbnQgPSBDb25zZXF1ZW50LmZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KTtcblxuICAgIHJldHVybiBuZXcgQ2xhc3MobGFiZWxzLCBhbnRlY2VkZW50cywgY29uc2VxdWVudCk7ICAvLy9cbiAgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50KENsYXNzLCBsYWJlbHMsIGFudGVjZWRlbnRzLCBjb25zZXF1ZW50KSB7IHJldHVybiBuZXcgQ2xhc3MobGFiZWxzLCBhbnRlY2VkZW50cywgY29uc2VxdWVudCk7IH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hBbnRlY2VkZW50KGFudGVjZWRlbnQsIGFzc2VydGlvbnMsIHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3QgYXNzZXJ0aW9uID0gcHJ1bmUoYXNzZXJ0aW9ucywgKGFzc2VydGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnByb29mTm9kZSA9IGFzc2VydGlvbi5nZXRTdWJwcm9vZk5vZGUoKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gYXNzZXJ0aW9uLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICAgIGlmIChzdWJwcm9vZk5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YlByb29mTWF0Y2hlcyA9IGFudGVjZWRlbnQubWF0Y2hTdWJwcm9vZk5vZGUoc3VicHJvb2ZOb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgaWYgKCFzdWJQcm9vZk1hdGNoZXMpIHsgIC8vL1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50TWF0Y2hlcyA9IGFudGVjZWRlbnQubWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoIXN0YXRlbWVudE1hdGNoZXMpIHsgIC8vL1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfSkgfHwgbnVsbDtcblxuICBjb25zdCBhbnRlY2VkZW50TWF0Y2hlcyA9IChhc3NlcnRpb24gIT09IG51bGwpO1xuXG4gIHJldHVybiBhbnRlY2VkZW50TWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBbnRlY2VkZW50cyhhbnRlY2VkZW50LCBhc3NlcnRpb25zLCBzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IGFudGVjZWRlbnRzTWF0Y2hlcyA9IGFudGVjZWRlbnQuZXZlcnkoKGFudGVjZWRlbnQpID0+IHtcbiAgICBjb25zdCBhbnRlY2VkZW50TWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudChhbnRlY2VkZW50LCBhc3NlcnRpb25zLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIGlmIChhbnRlY2VkZW50TWF0Y2hlcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gYW50ZWNlZGVudHNNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbnQoY29uc2VxdWVudCwgc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBub25UZXJtaW5hbE5vZGVNYXRjaGVzID0gY29uc2VxdWVudC5tYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgIGNvbnNlcXVlbnRNYXRjaGVzID0gbm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG5cbiAgcmV0dXJuIGNvbnNlcXVlbnRNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaEFudGVjZWRlbnRzQW5kQ29uc2VxdWVudChhbnRlY2VkZW50cywgY29uc2VxdWVudCwgYXNzZXJ0aW9ucywgc3RhdGVtZW50Tm9kZSkge1xuICBsZXQgYW50ZWNlZGVudHNNYXRjaENvbnNlcXVlbnQgPSBmYWxzZTtcblxuICBjb25zdCBzdWJzdGl0dXRpb25zID0gW10sXG4gICAgICAgIGFudGVjZWRlbnRzTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudHMoYW50ZWNlZGVudHMsIGFzc2VydGlvbnMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gIGlmIChhbnRlY2VkZW50c01hdGNoZXMpIHtcbiAgICBjb25zdCBjb25zZXF1ZW50TWF0Y2hlcyA9IG1hdGNoQ29uc2VxdWVudChjb25zZXF1ZW50LCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIGFudGVjZWRlbnRzTWF0Y2hDb25zZXF1ZW50ID0gY29uc2VxdWVudE1hdGNoZXM7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBhbnRlY2VkZW50c01hdGNoQ29uc2VxdWVudDtcbn1cbiJdLCJuYW1lcyI6WyJBeGlvbUxlbW1hVGhlb3JlbSIsImxhYmVscyIsImFudGVjZWRlbnRzIiwiY29uc2VxdWVudCIsImdldExhYmVscyIsImdldEFudGVjZWRlbnRzIiwiZ2V0Q29uc2VxdWVudCIsIm1hdGNoTGFiZWxOYW1lIiwibGFiZWxOYW1lIiwibWF0Y2hlc0xhYmVsTmFtZSIsInNvbWUiLCJsYWJlbCIsIm5hbWUiLCJsYWJlbE1hdGNoZXNOYW1lIiwibWF0Y2hOYW1lIiwibWF0Y2hTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwicHJvb2ZDb250ZXh0Iiwic3RhdGVtZW50TmF0Y2hlcyIsImFudGVjZWRlbnRzTGVuZ3RoIiwibGVuZ3RoIiwic3Vic3RpdHV0aW9ucyIsImNvbnNlcXVlbnRNYXRjaGVzIiwibWF0Y2hDb25zZXF1ZW50IiwiYXNzZXJ0aW9ucyIsImdldEFzc2VydGlvbnMiLCJzb21lU3ViQXJyYXkiLCJhbnRlY2VkZW50c01hdGNoQ29uc2VxdWVudCIsIm1hdGNoQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50IiwidG9KU09OIiwia2luZCIsImNvbnN0cnVjdG9yIiwibGFiZWxzSlNPTiIsIm1hcCIsImxhYmVsSlNPTiIsImFudGVjZWRlbnRzSlNPTiIsImFudGVjZWRlbnQiLCJhbnRlY2VkZW50SlNPTiIsImNvbnNlcXVlbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiQ2xhc3MiLCJyZWxlYXNlQ29udGV4dCIsIkxhYmVsIiwiQW50ZWNlZGVudCIsIkNvbnNlcXVlbnQiLCJmcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50IiwibWF0Y2hBbnRlY2VkZW50IiwiYXNzZXJ0aW9uIiwicHJ1bmUiLCJzdWJwcm9vZk5vZGUiLCJnZXRTdWJwcm9vZk5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic3ViUHJvb2ZNYXRjaGVzIiwibWF0Y2hTdWJwcm9vZk5vZGUiLCJzdGF0ZW1lbnRNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwiYW50ZWNlZGVudE1hdGNoZXMiLCJtYXRjaEFudGVjZWRlbnRzIiwiYW50ZWNlZGVudHNNYXRjaGVzIiwiZXZlcnkiLCJub25UZXJtaW5hbE5vZGVNYXRjaGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVNxQkE7OzswREFQSDsrREFDSzsrREFDQTtxQkFFRDs7Ozs7Ozs7Ozs7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
@@ -0,0 +1,157 @@
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 Consequent;
9
+ }
10
+ });
11
+ var _array = require("./utilities/array");
12
+ var _string = require("./utilities/string");
13
+ var _query = require("./utilities/query");
14
+ var _ruleNames = require("./ruleNames");
15
+ function _classCallCheck(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 _createClass(Constructor, protoProps, staticProps) {
30
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
+ if (staticProps) _defineProperties(Constructor, staticProps);
32
+ return Constructor;
33
+ }
34
+ var Consequent = /*#__PURE__*/ function() {
35
+ function Consequent(statementNode) {
36
+ _classCallCheck(this, Consequent);
37
+ this.statementNode = statementNode;
38
+ }
39
+ _createClass(Consequent, [
40
+ {
41
+ key: "getStatementNode",
42
+ value: function getStatementNode() {
43
+ return this.statementNode;
44
+ }
45
+ },
46
+ {
47
+ key: "matchStatementNode",
48
+ value: function matchStatementNode(statementNode, metaSubstitutions) {
49
+ var nonTerminalNode = statementNode, consequentNonTerminalNode = this.statementNode, consequentNonTerminalNodeMatches = matchConsequentNonTerminalNode(consequentNonTerminalNode, nonTerminalNode, metaSubstitutions), statementNodeMatches = consequentNonTerminalNodeMatches; ///
50
+ return statementNodeMatches;
51
+ }
52
+ },
53
+ {
54
+ key: "toJSON",
55
+ value: function toJSON() {
56
+ var statementString = (0, _string.nodeAsString)(this.statementNode), statement = statementString, json = {
57
+ statement: statement
58
+ };
59
+ return json;
60
+ }
61
+ }
62
+ ], [
63
+ {
64
+ key: "fromJSON",
65
+ value: function fromJSON(json, releaseContext) {
66
+ var statement = json.statement, statementString = statement, statementNode = (0, _string.statementNodeFromStatementString)(statementString, releaseContext), consequent = new Consequent(statementNode);
67
+ return consequent;
68
+ }
69
+ },
70
+ {
71
+ key: "fromStatementNode",
72
+ value: function fromStatementNode(statementNode) {
73
+ var consequent = new Consequent(statementNode);
74
+ return consequent;
75
+ }
76
+ }
77
+ ]);
78
+ return Consequent;
79
+ }();
80
+ function matchConsequentNode(consequentNode, node, metaSubstitutions) {
81
+ var consequentNodeMatches = false;
82
+ var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = consequentNode.isTerminalNode();
83
+ if (nodeTerminalNode === ruleNodeTerminalNode) {
84
+ if (nodeTerminalNode) {
85
+ var terminalNode = node, consequentTerminalNode = consequentNode, consequentTerminalNodeMatches = matchConsequentTerminalNode(consequentTerminalNode, terminalNode, metaSubstitutions);
86
+ consequentNodeMatches = consequentTerminalNodeMatches; ///
87
+ } else {
88
+ var nonTerminalNode = node, consequentNonTerminalNode = consequentNode, consequentNonTerminalNodeMatches = matchConsequentNonTerminalNode(consequentNonTerminalNode, nonTerminalNode, metaSubstitutions);
89
+ consequentNodeMatches = consequentNonTerminalNodeMatches; ///
90
+ }
91
+ }
92
+ return consequentNodeMatches;
93
+ }
94
+ function matchConsequentNodes(consequentNodes, nodes, metaSubstitutions) {
95
+ var consequentNodesMatches = false;
96
+ var nodesLength = nodes.length, consequentNodesLength = consequentNodes.length;
97
+ if (nodesLength === consequentNodesLength) {
98
+ consequentNodesMatches = nodes.every(function(node, index) {
99
+ var consequentNode = consequentNodes[index], consequentNodeMatches = matchConsequentNode(consequentNode, node, metaSubstitutions);
100
+ if (consequentNodeMatches) {
101
+ return true;
102
+ }
103
+ });
104
+ }
105
+ return consequentNodesMatches;
106
+ }
107
+ function matchConsequentVariable(consequentVariableNode, nodes, metaSubstitutions) {
108
+ var consequentVariableMatches = true;
109
+ var consequentVariableName = (0, _query.variableNameFromVariableNode)(consequentVariableNode), metaSubstitution = metaSubstitutions.find(function(metaSubstitution) {
110
+ var variableName = metaSubstitution.getVariableName();
111
+ if (variableName === consequentVariableName) {
112
+ return true;
113
+ }
114
+ }) || null;
115
+ if (metaSubstitution !== null) {
116
+ var metaSubstitutionNodesMatch = metaSubstitution.matchNodes(nodes);
117
+ consequentVariableMatches = metaSubstitutionNodesMatch; ///
118
+ }
119
+ return consequentVariableMatches;
120
+ }
121
+ function matchConsequentTerminalNode(consequentTerminalNode, terminalNode, metaSubstitutions) {
122
+ var matches = consequentTerminalNode.match(terminalNode), consequentTerminalNodeMatches = matches; ///
123
+ return consequentTerminalNodeMatches;
124
+ }
125
+ function matchConsequentNonTerminalNode(consequentNonTerminalNode, nonTerminalNode, metaSubstitutions) {
126
+ var consequentNonTerminalNodeMatches = false;
127
+ var ruleName = nonTerminalNode.getRuleName(), consequentRuleName = consequentNonTerminalNode.getRuleName(); ///
128
+ if (ruleName === consequentRuleName) {
129
+ var childNodes = nonTerminalNode.getChildNodes(), consequentChildNodes = consequentNonTerminalNode.getChildNodes(), nodes = childNodes, consequentNodes = consequentChildNodes, consequentChildNodesMatches = matchConsequentNodes(consequentNodes, nodes, metaSubstitutions);
130
+ consequentNonTerminalNodeMatches = consequentChildNodesMatches; ///
131
+ if (!consequentNonTerminalNodeMatches) {
132
+ var ruleNameStatementRuleName = ruleName === _ruleNames.STATEMENT_RULE_NAME;
133
+ if (ruleNameStatementRuleName) {
134
+ var statementNode = nonTerminalNode, consequentStatementNode = consequentNonTerminalNode, consequentStatementNodeMatches = matchConsequentStatementNode(consequentStatementNode, statementNode, metaSubstitutions);
135
+ consequentNonTerminalNodeMatches = consequentStatementNodeMatches; ///
136
+ }
137
+ }
138
+ }
139
+ return consequentNonTerminalNodeMatches;
140
+ }
141
+ function matchConsequentStatementNode(consequentStatementNode, statementNode, metaSubstitutions) {
142
+ var consequentStatementNodeMatches = false;
143
+ var consequentNonTerminalNode = consequentStatementNode, consequentChildNodes = consequentNonTerminalNode.getChildNodes(), consequentChildNodesLength = consequentChildNodes.length;
144
+ if (consequentChildNodesLength === 1) {
145
+ var firstConsequentChildNode = (0, _array.first)(consequentChildNodes), consequentChildNode = firstConsequentChildNode, consequentChildNodeNonTerminalNode = consequentChildNode.isNonTerminalNode();
146
+ if (consequentChildNodeNonTerminalNode) {
147
+ var consequentNonTerminalChildNode = consequentChildNode, consequentNonTerminalChildNodeRuleName = consequentNonTerminalChildNode.getRuleName(), consequentNonTerminalChildNodeRuleNameVariableRuleName = consequentNonTerminalChildNodeRuleName === _ruleNames.VARIABLE_RULE_NAME;
148
+ if (consequentNonTerminalChildNodeRuleNameVariableRuleName) {
149
+ var consequentVariableNode = consequentNonTerminalChildNode, nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, consequentMetaVariableMatches = matchConsequentVariable(consequentVariableNode, nodes, metaSubstitutions);
150
+ consequentStatementNodeMatches = consequentMetaVariableMatches; ///
151
+ }
152
+ }
153
+ }
154
+ return consequentStatementNodeMatches;
155
+ }
156
+
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zZXF1ZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgc3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmcgfSBmcm9tIFwiLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBWQVJJQUJMRV9SVUxFX05BTUUsIFNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uc2VxdWVudCB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgbWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGUgPSB0aGlzLnN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQ29uc2VxdWVudE5vblRlcm1pbmFsTm9kZShjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcodGhpcy5zdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRTdHJpbmcsICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RhdGVtZW50XG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdGF0ZW1lbnQgfSA9IGpzb24sXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nKHN0YXRlbWVudFN0cmluZywgcmVsZWFzZUNvbnRleHQpLFxuICAgICAgICAgIGNvbnNlcXVlbnQgPSBuZXcgQ29uc2VxdWVudChzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBjb25zZXF1ZW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb25zZXF1ZW50ID0gbmV3IENvbnNlcXVlbnQoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uc2VxdWVudDtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbnROb2RlKGNvbnNlcXVlbnROb2RlLCBub2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVudE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgcnVsZU5vZGVUZXJtaW5hbE5vZGUgPSBjb25zZXF1ZW50Tm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zZXF1ZW50VGVybWluYWxOb2RlID0gY29uc2VxdWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbnNlcXVlbnRUZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hDb25zZXF1ZW50VGVybWluYWxOb2RlKGNvbnNlcXVlbnRUZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25zZXF1ZW50Tm9kZU1hdGNoZXMgPSBjb25zZXF1ZW50VGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGUgPSBjb25zZXF1ZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbnROb25UZXJtaW5hbE5vZGUoY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGNvbnNlcXVlbnROb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uc2VxdWVudE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbnROb2Rlcyhjb25zZXF1ZW50Tm9kZXMsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVudE5vZGVzTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBjb25zZXF1ZW50Tm9kZXNMZW5ndGggPSBjb25zZXF1ZW50Tm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gY29uc2VxdWVudE5vZGVzTGVuZ3RoKSB7XG4gICAgY29uc2VxdWVudE5vZGVzTWF0Y2hlcyA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29uc2VxdWVudE5vZGUgPSBjb25zZXF1ZW50Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29uc2VxdWVudE5vZGVNYXRjaGVzID0gbWF0Y2hDb25zZXF1ZW50Tm9kZShjb25zZXF1ZW50Tm9kZSwgbm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoY29uc2VxdWVudE5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbnNlcXVlbnROb2Rlc01hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uc2VxdWVudFZhcmlhYmxlKGNvbnNlcXVlbnRWYXJpYWJsZU5vZGUsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVudFZhcmlhYmxlTWF0Y2hlcyA9IHRydWU7XG5cbiAgY29uc3QgY29uc2VxdWVudFZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUoY29uc2VxdWVudFZhcmlhYmxlTm9kZSksXG4gICAgICAgIG1ldGFTdWJzdGl0dXRpb24gPSBtZXRhU3Vic3RpdHV0aW9ucy5maW5kKChtZXRhU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0gbWV0YVN1YnN0aXR1dGlvbi5nZXRWYXJpYWJsZU5hbWUoKTtcblxuICAgICAgICAgIGlmICh2YXJpYWJsZU5hbWUgPT09IGNvbnNlcXVlbnRWYXJpYWJsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAobWV0YVN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoID0gbWV0YVN1YnN0aXR1dGlvbi5tYXRjaE5vZGVzKG5vZGVzKTtcblxuICAgIGNvbnNlcXVlbnRWYXJpYWJsZU1hdGNoZXMgPSBtZXRhU3Vic3RpdHV0aW9uTm9kZXNNYXRjaDsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIGNvbnNlcXVlbnRWYXJpYWJsZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uc2VxdWVudFRlcm1pbmFsTm9kZShjb25zZXF1ZW50VGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBjb25zZXF1ZW50VGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSksXG4gICAgICAgIGNvbnNlcXVlbnRUZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiBjb25zZXF1ZW50VGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlKGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgY29uc2VxdWVudFJ1bGVOYW1lID0gY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICBpZiAocnVsZU5hbWUgPT09IGNvbnNlcXVlbnRSdWxlTmFtZSkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGNvbnNlcXVlbnRDaGlsZE5vZGVzID0gY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBjb25zZXF1ZW50Tm9kZXMgPSBjb25zZXF1ZW50Q2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgY29uc2VxdWVudENoaWxkTm9kZXNNYXRjaGVzID0gbWF0Y2hDb25zZXF1ZW50Tm9kZXMoY29uc2VxdWVudE5vZGVzLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBjb25zZXF1ZW50Q2hpbGROb2Rlc01hdGNoZXM7IC8vL1xuXG4gICAgaWYgKCFjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcykge1xuICAgICAgY29uc3QgcnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY29uc2VxdWVudFN0YXRlbWVudE5vZGUgPSBjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoQ29uc2VxdWVudFN0YXRlbWVudE5vZGUoY29uc2VxdWVudFN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlczsgLy8vXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbnRTdGF0ZW1lbnROb2RlKGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVudFN0YXRlbWVudE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZSA9IGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIGNvbnNlcXVlbnRDaGlsZE5vZGVzID0gY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGNvbnNlcXVlbnRDaGlsZE5vZGVzTGVuZ3RoID0gY29uc2VxdWVudENoaWxkTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChjb25zZXF1ZW50Q2hpbGROb2Rlc0xlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGZpcnN0Q29uc2VxdWVudENoaWxkTm9kZSA9IGZpcnN0KGNvbnNlcXVlbnRDaGlsZE5vZGVzKSxcbiAgICAgICAgICBjb25zZXF1ZW50Q2hpbGROb2RlID0gZmlyc3RDb25zZXF1ZW50Q2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgY29uc2VxdWVudENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IGNvbnNlcXVlbnRDaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChjb25zZXF1ZW50Q2hpbGROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBjb25zZXF1ZW50Tm9uVGVybWluYWxDaGlsZE5vZGUgPSBjb25zZXF1ZW50Q2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zZXF1ZW50Tm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9IGNvbnNlcXVlbnROb25UZXJtaW5hbENoaWxkTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgY29uc2VxdWVudE5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVWYXJpYWJsZVJ1bGVOYW1lID0gKGNvbnNlcXVlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lID09PSBWQVJJQUJMRV9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAoY29uc2VxdWVudE5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVWYXJpYWJsZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvbnNlcXVlbnRWYXJpYWJsZU5vZGUgPSBjb25zZXF1ZW50Tm9uVGVybWluYWxDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgY29uc2VxdWVudE1ldGFWYXJpYWJsZU1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbnRWYXJpYWJsZShjb25zZXF1ZW50VmFyaWFibGVOb2RlLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbnRNZXRhVmFyaWFibGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uc2VxdWVudFN0YXRlbWVudE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbIkNvbnNlcXVlbnQiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm1hdGNoU3RhdGVtZW50Tm9kZSIsIm1ldGFTdWJzdGl0dXRpb25zIiwibm9uVGVybWluYWxOb2RlIiwiY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZSIsImNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hDb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlIiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJ0b0pTT04iLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJzdGF0ZW1lbnQiLCJqc29uIiwiZnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dCIsInN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIiwiY29uc2VxdWVudCIsImZyb21TdGF0ZW1lbnROb2RlIiwibWF0Y2hDb25zZXF1ZW50Tm9kZSIsImNvbnNlcXVlbnROb2RlIiwibm9kZSIsImNvbnNlcXVlbnROb2RlTWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJ1bGVOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiY29uc2VxdWVudFRlcm1pbmFsTm9kZSIsImNvbnNlcXVlbnRUZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hDb25zZXF1ZW50VGVybWluYWxOb2RlIiwibWF0Y2hDb25zZXF1ZW50Tm9kZXMiLCJjb25zZXF1ZW50Tm9kZXMiLCJub2RlcyIsImNvbnNlcXVlbnROb2Rlc01hdGNoZXMiLCJub2Rlc0xlbmd0aCIsImxlbmd0aCIsImNvbnNlcXVlbnROb2Rlc0xlbmd0aCIsImV2ZXJ5IiwiaW5kZXgiLCJtYXRjaENvbnNlcXVlbnRWYXJpYWJsZSIsImNvbnNlcXVlbnRWYXJpYWJsZU5vZGUiLCJjb25zZXF1ZW50VmFyaWFibGVNYXRjaGVzIiwiY29uc2VxdWVudFZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJtZXRhU3Vic3RpdHV0aW9uIiwiZmluZCIsInZhcmlhYmxlTmFtZSIsImdldFZhcmlhYmxlTmFtZSIsIm1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoIiwibWF0Y2hOb2RlcyIsIm1hdGNoZXMiLCJtYXRjaCIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJjb25zZXF1ZW50UnVsZU5hbWUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNvbnNlcXVlbnRDaGlsZE5vZGVzIiwiY29uc2VxdWVudENoaWxkTm9kZXNNYXRjaGVzIiwicnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJjb25zZXF1ZW50U3RhdGVtZW50Tm9kZSIsImNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoQ29uc2VxdWVudFN0YXRlbWVudE5vZGUiLCJjb25zZXF1ZW50Q2hpbGROb2Rlc0xlbmd0aCIsImZpcnN0Q29uc2VxdWVudENoaWxkTm9kZSIsImZpcnN0IiwiY29uc2VxdWVudENoaWxkTm9kZSIsImNvbnNlcXVlbnRDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsImNvbnNlcXVlbnROb25UZXJtaW5hbENoaWxkTm9kZSIsImNvbnNlcXVlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lIiwiY29uc2VxdWVudE5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVWYXJpYWJsZVJ1bGVOYW1lIiwiVkFSSUFCTEVfUlVMRV9OQU1FIiwiY29uc2VxdWVudE1ldGFWYXJpYWJsZU1hdGNoZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBUXFCQTs7O3FCQU5DO3NCQUNPO3FCQUNnQjt5QkFFVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFekMsSUFBQSxBQUFNQSwyQkE0Q2xCLEFBNUNZO2FBQU1BLFdBQ1BDLGFBQWE7OEJBRE5EO1FBRWpCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQTs7aUJBRkpEOztZQUtuQkUsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQjtnQkFDakIsT0FBTyxJQUFJLENBQUNELGFBQWE7WUFDM0I7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CRixhQUFhLEVBQUVHLGlCQUFpQixFQUFFO2dCQUNuRCxJ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
package/lib/constants.js CHANGED
@@ -21,6 +21,9 @@ _export(exports, {
21
21
  BOOLEAN: function() {
22
22
  return BOOLEAN;
23
23
  },
24
+ EMPTY_STRING: function() {
25
+ return EMPTY_STRING;
26
+ },
24
27
  LEFT_BRACKET: function() {
25
28
  return LEFT_BRACKET;
26
29
  },
@@ -33,6 +36,9 @@ _export(exports, {
33
36
  MAXIMUM_PERMUTATION_LENGTH: function() {
34
37
  return MAXIMUM_PERMUTATION_LENGTH;
35
38
  },
39
+ BRACKETED_STATEMENT_CHILD_NODES_LENGTH: function() {
40
+ return BRACKETED_STATEMENT_CHILD_NODES_LENGTH;
41
+ },
36
42
  BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH: function() {
37
43
  return BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH;
38
44
  }
@@ -41,10 +47,12 @@ var COMMA = ",";
41
47
  var STRING = "string";
42
48
  var NUMBER = "number";
43
49
  var BOOLEAN = "boolean";
50
+ var EMPTY_STRING = "";
44
51
  var LEFT_BRACKET = "(";
45
52
  var RIGHT_BRACKET = ")";
46
53
  var MAXIMUM_INDEXES_LENGTH = 10;
47
54
  var MAXIMUM_PERMUTATION_LENGTH = 5;
55
+ var BRACKETED_STATEMENT_CHILD_NODES_LENGTH = 3;
48
56
  var BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH = 3;
49
57
 
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBDT01NQSA9ICcsJztcbmV4cG9ydCBjb25zdCBTVFJJTkcgPSBcInN0cmluZ1wiO1xuZXhwb3J0IGNvbnN0IE5VTUJFUiA9IFwibnVtYmVyXCI7XG5leHBvcnQgY29uc3QgQk9PTEVBTiA9IFwiYm9vbGVhblwiO1xuZXhwb3J0IGNvbnN0IExFRlRfQlJBQ0tFVCA9IFwiKFwiO1xuZXhwb3J0IGNvbnN0IFJJR0hUX0JSQUNLRVQgPSBcIilcIjtcbmV4cG9ydCBjb25zdCBNQVhJTVVNX0lOREVYRVNfTEVOR1RIID0gMTA7XG5leHBvcnQgY29uc3QgTUFYSU1VTV9QRVJNVVRBVElPTl9MRU5HVEggPSA1O1xuZXhwb3J0IGNvbnN0IEJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCA9IDM7XG4iXSwibmFtZXMiOlsiQ09NTUEiLCJTVFJJTkciLCJOVU1CRVIiLCJCT09MRUFOIiwiTEVGVF9CUkFDS0VUIiwiUklHSFRfQlJBQ0tFVCIsIk1BWElNVU1fSU5ERVhFU19MRU5HVEgiLCJNQVhJTVVNX1BFUk1VVEFUSU9OX0xFTkdUSCIsIkJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWFBLEtBQUs7ZUFBTEE7O0lBQ0FDLE1BQU07ZUFBTkE7O0lBQ0FDLE1BQU07ZUFBTkE7O0lBQ0FDLE9BQU87ZUFBUEE7O0lBQ0FDLFlBQVk7ZUFBWkE7O0lBQ0FDLGFBQWE7ZUFBYkE7O0lBQ0FDLHNCQUFzQjtlQUF0QkE7O0lBQ0FDLDBCQUEwQjtlQUExQkE7O0lBQ0FDLDBDQUEwQztlQUExQ0E7OztBQVJOLElBQU1SLFFBQVE7QUFDZCxJQUFNQyxTQUFTO0FBQ2YsSUFBTUMsU0FBUztBQUNmLElBQU1DLFVBQVU7QUFDaEIsSUFBTUMsZUFBZTtBQUNyQixJQUFNQyxnQkFBZ0I7QUFDdEIsSUFBTUMseUJBQXlCO0FBQy9CLElBQU1DLDZCQUE2QjtBQUNuQyxJQUFNQyw2Q0FBNkMifQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBDT01NQSA9ICcsJztcbmV4cG9ydCBjb25zdCBTVFJJTkcgPSBcInN0cmluZ1wiO1xuZXhwb3J0IGNvbnN0IE5VTUJFUiA9IFwibnVtYmVyXCI7XG5leHBvcnQgY29uc3QgQk9PTEVBTiA9IFwiYm9vbGVhblwiO1xuZXhwb3J0IGNvbnN0IEVNUFRZX1NUUklORyA9IFwiXCI7XG5leHBvcnQgY29uc3QgTEVGVF9CUkFDS0VUID0gXCIoXCI7XG5leHBvcnQgY29uc3QgUklHSFRfQlJBQ0tFVCA9IFwiKVwiO1xuZXhwb3J0IGNvbnN0IE1BWElNVU1fSU5ERVhFU19MRU5HVEggPSAxMDtcbmV4cG9ydCBjb25zdCBNQVhJTVVNX1BFUk1VVEFUSU9OX0xFTkdUSCA9IDU7XG5leHBvcnQgY29uc3QgQlJBQ0tFVEVEX1NUQVRFTUVOVF9DSElMRF9OT0RFU19MRU5HVEggPSAzO1xuZXhwb3J0IGNvbnN0IEJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCA9IDM7XG4iXSwibmFtZXMiOlsiQ09NTUEiLCJTVFJJTkciLCJOVU1CRVIiLCJCT09MRUFOIiwiRU1QVFlfU1RSSU5HIiwiTEVGVF9CUkFDS0VUIiwiUklHSFRfQlJBQ0tFVCIsIk1BWElNVU1fSU5ERVhFU19MRU5HVEgiLCJNQVhJTVVNX1BFUk1VVEFUSU9OX0xFTkdUSCIsIkJSQUNLRVRFRF9TVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIIiwiQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFYUEsS0FBSztlQUFMQTs7SUFDQUMsTUFBTTtlQUFOQTs7SUFDQUMsTUFBTTtlQUFOQTs7SUFDQUMsT0FBTztlQUFQQTs7SUFDQUMsWUFBWTtlQUFaQTs7SUFDQUMsWUFBWTtlQUFaQTs7SUFDQUMsYUFBYTtlQUFiQTs7SUFDQUMsc0JBQXNCO2VBQXRCQTs7SUFDQUMsMEJBQTBCO2VBQTFCQTs7SUFDQUMsc0NBQXNDO2VBQXRDQTs7SUFDQUMsMENBQTBDO2VBQTFDQTs7O0FBVk4sSUFBTVYsUUFBUTtBQUNkLElBQU1DLFNBQVM7QUFDZixJQUFNQyxTQUFTO0FBQ2YsSUFBTUMsVUFBVTtBQUNoQixJQUFNQyxlQUFlO0FBQ3JCLElBQU1DLGVBQWU7QUFDckIsSUFBTUMsZ0JBQWdCO0FBQ3RCLElBQU1DLHlCQUF5QjtBQUMvQixJQUFNQyw2QkFBNkI7QUFDbkMsSUFBTUMseUNBQXlDO0FBQy9DLElBQU1DLDZDQUE2QyJ9