occam-furtle 2.0.279 → 2.0.282

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 (133) hide show
  1. package/README.md +0 -11
  2. package/lib/constants.js +29 -1
  3. package/lib/context/block.js +15 -1
  4. package/lib/context/file.js +127 -50
  5. package/lib/element/assignment/array.js +186 -0
  6. package/lib/element/assignment/object.js +244 -0
  7. package/lib/element/assignment/variable.js +144 -0
  8. package/lib/element/assignments/variable.js +158 -0
  9. package/lib/element/block/return.js +198 -0
  10. package/lib/element/comparison.js +179 -0
  11. package/lib/element/declaration/procedure.js +139 -0
  12. package/lib/{dom → element}/error.js +12 -4
  13. package/lib/element/every.js +179 -0
  14. package/lib/element/expression/bitwise.js +186 -0
  15. package/lib/element/expression/bracketed.js +149 -0
  16. package/lib/element/expression/negated.js +166 -0
  17. package/lib/element/expression.js +578 -0
  18. package/lib/element/expressions.js +210 -0
  19. package/lib/{dom → element}/label.js +4 -4
  20. package/lib/element/parameter/named.js +198 -0
  21. package/lib/element/parameter.js +165 -0
  22. package/lib/element/parameters/named.js +220 -0
  23. package/lib/element/parameters.js +198 -0
  24. package/lib/element/procedure/anonymous.js +181 -0
  25. package/lib/element/procedure.js +212 -0
  26. package/lib/element/procedureCall.js +166 -0
  27. package/lib/element/query/node.js +186 -0
  28. package/lib/element/query/nodes.js +179 -0
  29. package/lib/element/reduce.js +181 -0
  30. package/lib/element/reference.js +138 -0
  31. package/lib/element/some.js +179 -0
  32. package/lib/element/statement/return.js +138 -0
  33. package/lib/element/step.js +154 -0
  34. package/lib/element/ternary.js +171 -0
  35. package/lib/element/variable.js +279 -0
  36. package/lib/elements.js +27 -0
  37. package/lib/index.js +10 -2
  38. package/lib/log.js +202 -0
  39. package/lib/preamble.js +32 -32
  40. package/lib/process/verify.js +289 -0
  41. package/lib/utilities/context.js +46 -5
  42. package/package.json +3 -1
  43. package/src/constants.js +16 -0
  44. package/src/context/block.js +10 -0
  45. package/src/context/file.js +96 -54
  46. package/src/{dom → element}/assignment/array.js +6 -6
  47. package/src/{dom → element}/assignment/object.js +8 -8
  48. package/src/{dom → element}/assignment/variable.js +4 -4
  49. package/src/{dom → element}/assignments/variable.js +5 -5
  50. package/src/{dom → element}/block/return.js +5 -5
  51. package/src/{dom → element}/comparison.js +5 -5
  52. package/src/{dom → element}/declaration/procedure.js +22 -4
  53. package/src/{dom → element}/error.js +13 -4
  54. package/src/{dom → element}/every.js +6 -6
  55. package/src/{dom → element}/expression/bitwise.js +5 -5
  56. package/src/{dom → element}/expression/bracketed.js +4 -4
  57. package/src/{dom → element}/expression/negated.js +5 -5
  58. package/src/{dom → element}/expression.js +4 -4
  59. package/src/{dom → element}/expressions.js +6 -6
  60. package/src/{dom → element}/label.js +4 -4
  61. package/src/{dom → element}/parameter/named.js +4 -4
  62. package/src/{dom → element}/parameter.js +4 -4
  63. package/src/{dom → element}/parameters/named.js +5 -5
  64. package/src/{dom → element}/parameters.js +5 -5
  65. package/src/{dom → element}/procedure/anonymous.js +4 -4
  66. package/src/{dom → element}/procedure.js +5 -5
  67. package/src/{dom → element}/procedureCall.js +4 -4
  68. package/src/{dom → element}/query/node.js +5 -5
  69. package/src/{dom → element}/query/nodes.js +5 -5
  70. package/src/{dom → element}/reduce.js +5 -5
  71. package/src/{dom → element}/reference.js +4 -4
  72. package/src/{dom → element}/some.js +6 -6
  73. package/src/{dom → element}/statement/return.js +4 -4
  74. package/src/{dom → element}/step.js +4 -4
  75. package/src/{dom → element}/ternary.js +4 -4
  76. package/src/{dom → element}/variable.js +5 -5
  77. package/src/elements.js +13 -0
  78. package/src/index.js +5 -1
  79. package/src/log.js +139 -0
  80. package/src/preamble.js +31 -31
  81. package/src/process/verify.js +157 -0
  82. package/src/utilities/context.js +45 -2
  83. package/test/Free and bound variables.ftl +112 -0
  84. package/test/context/file.js +127 -0
  85. package/{src/example → test}/context/release.js +60 -12
  86. package/test/helpers/constants.js +17 -0
  87. package/{src/example/utilities → test/helpers}/expressions.js +8 -4
  88. package/{src/example/utilities → test/helpers}/furtle.js +8 -4
  89. package/{src/example/utilities → test/helpers}/grammar.js +8 -4
  90. package/{src/example/utilities → test/helpers}/nominal.js +10 -5
  91. package/{src/example/utilities → test/helpers}/procedure.js +6 -2
  92. package/test/main.js +55 -0
  93. package/example/Free and bound variables.ftl +0 -75
  94. package/lib/dom/assignment/array.js +0 -186
  95. package/lib/dom/assignment/object.js +0 -244
  96. package/lib/dom/assignment/variable.js +0 -144
  97. package/lib/dom/assignments/variable.js +0 -158
  98. package/lib/dom/block/return.js +0 -198
  99. package/lib/dom/comparison.js +0 -179
  100. package/lib/dom/declaration/procedure.js +0 -125
  101. package/lib/dom/every.js +0 -179
  102. package/lib/dom/expression/bitwise.js +0 -186
  103. package/lib/dom/expression/bracketed.js +0 -149
  104. package/lib/dom/expression/negated.js +0 -166
  105. package/lib/dom/expression.js +0 -578
  106. package/lib/dom/expressions.js +0 -210
  107. package/lib/dom/parameter/named.js +0 -198
  108. package/lib/dom/parameter.js +0 -165
  109. package/lib/dom/parameters/named.js +0 -220
  110. package/lib/dom/parameters.js +0 -198
  111. package/lib/dom/procedure/anonymous.js +0 -181
  112. package/lib/dom/procedure.js +0 -212
  113. package/lib/dom/procedureCall.js +0 -166
  114. package/lib/dom/query/node.js +0 -186
  115. package/lib/dom/query/nodes.js +0 -179
  116. package/lib/dom/reduce.js +0 -181
  117. package/lib/dom/reference.js +0 -138
  118. package/lib/dom/some.js +0 -179
  119. package/lib/dom/statement/return.js +0 -138
  120. package/lib/dom/step.js +0 -154
  121. package/lib/dom/ternary.js +0 -171
  122. package/lib/dom/variable.js +0 -279
  123. package/lib/dom.js +0 -27
  124. package/lib/example/context/file.js +0 -130
  125. package/lib/example/context/release.js +0 -160
  126. package/lib/example/utilities/expressions.js +0 -29
  127. package/lib/example/utilities/furtle.js +0 -19
  128. package/lib/example/utilities/grammar.js +0 -26
  129. package/lib/example/utilities/nominal.js +0 -25
  130. package/lib/example/utilities/procedure.js +0 -18
  131. package/src/dom.js +0 -13
  132. package/src/example/context/file.js +0 -69
  133. /package/{example → test}/customGrammars.json +0 -0
@@ -0,0 +1,149 @@
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 _elements = /*#__PURE__*/ _interop_require_wildcard(require("../../elements"));
12
+ var _query = require("../../utilities/query");
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 _BracketedExpression;
87
+ var expressionNodeQuery = (0, _query.nodeQuery)("/bracketedExpression/expression"), expressionBracketedExpressionNodeQuery = (0, _query.nodeQuery)("/expression/bracketedExpression");
88
+ var _default = (0, _elements.define)((_BracketedExpression = /*#__PURE__*/ function() {
89
+ function BracketedExpression(string, expression) {
90
+ _class_call_check(this, BracketedExpression);
91
+ this.string = string;
92
+ this.expression = expression;
93
+ }
94
+ _create_class(BracketedExpression, [
95
+ {
96
+ key: "getString",
97
+ value: function getString() {
98
+ return this.string;
99
+ }
100
+ },
101
+ {
102
+ key: "getExpression",
103
+ value: function getExpression() {
104
+ return this.expression;
105
+ }
106
+ },
107
+ {
108
+ key: "getType",
109
+ value: function getType() {
110
+ return this.expression.getType();
111
+ }
112
+ },
113
+ {
114
+ key: "evaluate",
115
+ value: function evaluate(context) {
116
+ var expression;
117
+ var bracketedExpressionString = this.string; ///
118
+ context.trace("Evaluating the '".concat(bracketedExpressionString, "' bracketed expression..."));
119
+ expression = this.expression.evaluate(context);
120
+ context.debug("...evaluated the '".concat(bracketedExpressionString, "' bracketed expression."));
121
+ return expression;
122
+ }
123
+ }
124
+ ], [
125
+ {
126
+ key: "fromExpressionNode",
127
+ value: function fromExpressionNode(expressionNode, context) {
128
+ var bracketedExpression = null;
129
+ var expressionBracketedExpressionNode = expressionBracketedExpressionNodeQuery(expressionNode);
130
+ if (expressionBracketedExpressionNode !== null) {
131
+ var bracketedExpressionNode = expressionBracketedExpressionNode; ///
132
+ bracketedExpression = bracketedExpressionFromBracketedExpressionNode(bracketedExpressionNode, context);
133
+ }
134
+ return bracketedExpression;
135
+ }
136
+ }
137
+ ]);
138
+ return BracketedExpression;
139
+ }(), _define_property(_BracketedExpression, "name", "BracketedExpression"), _BracketedExpression));
140
+ function bracketedExpressionFromBracketedExpressionNode(bracketedExpressionNode, context) {
141
+ var Expression = _elements.default.Expression, BracketedExpression = _elements.default.BracketedExpression, expressionNode = expressionNodeQuery(bracketedExpressionNode), expression = Expression.fromExpressionNode(expressionNode, context), string = stringFromExpression(expression, context), bracketedExpression = new BracketedExpression(string, expression);
142
+ return bracketedExpression;
143
+ }
144
+ function stringFromExpression(expression, context) {
145
+ var expressionString = expression.asString(context), string = "(".concat(expressionString, ")");
146
+ return string;
147
+ }
148
+
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2V4cHJlc3Npb24vYnJhY2tldGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBleHByZXNzaW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2JyYWNrZXRlZEV4cHJlc3Npb24vZXhwcmVzc2lvblwiKSxcbiAgICAgIGV4cHJlc3Npb25CcmFja2V0ZWRFeHByZXNzaW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2V4cHJlc3Npb24vYnJhY2tldGVkRXhwcmVzc2lvblwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEJyYWNrZXRlZEV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIGV4cHJlc3Npb24pIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldEV4cHJlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbjtcbiAgfVxuXG4gIGdldFR5cGUoKSB7IHJldHVybiB0aGlzLmV4cHJlc3Npb24uZ2V0VHlwZSgpOyB9XG5cbiAgZXZhbHVhdGUoY29udGV4dCkge1xuICAgIGxldCBleHByZXNzaW9uO1xuXG4gICAgY29uc3QgYnJhY2tldGVkRXhwcmVzc2lvblN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEV2YWx1YXRpbmcgdGhlICcke2JyYWNrZXRlZEV4cHJlc3Npb25TdHJpbmd9JyBicmFja2V0ZWQgZXhwcmVzc2lvbi4uLmApO1xuXG4gICAgZXhwcmVzc2lvbiA9IHRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZShjb250ZXh0KTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmV2YWx1YXRlZCB0aGUgJyR7YnJhY2tldGVkRXhwcmVzc2lvblN0cmluZ30nIGJyYWNrZXRlZCBleHByZXNzaW9uLmApO1xuXG4gICAgcmV0dXJuIGV4cHJlc3Npb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQnJhY2tldGVkRXhwcmVzc2lvblwiO1xuXG4gIHN0YXRpYyBmcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgYnJhY2tldGVkRXhwcmVzc2lvbiA9IG51bGw7XG5cbiAgICBjb25zdCBleHByZXNzaW9uQnJhY2tldGVkRXhwcmVzc2lvbk5vZGUgPSBleHByZXNzaW9uQnJhY2tldGVkRXhwcmVzc2lvbk5vZGVRdWVyeShleHByZXNzaW9uTm9kZSk7XG5cbiAgICBpZiAoZXhwcmVzc2lvbkJyYWNrZXRlZEV4cHJlc3Npb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBicmFja2V0ZWRFeHByZXNzaW9uTm9kZSA9IGV4cHJlc3Npb25CcmFja2V0ZWRFeHByZXNzaW9uTm9kZTsgLy8vXG5cbiAgICAgIGJyYWNrZXRlZEV4cHJlc3Npb24gPSBicmFja2V0ZWRFeHByZXNzaW9uRnJvbUJyYWNrZXRlZEV4cHJlc3Npb25Ob2RlKGJyYWNrZXRlZEV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnJhY2tldGVkRXhwcmVzc2lvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGJyYWNrZXRlZEV4cHJlc3Npb25Gcm9tQnJhY2tldGVkRXhwcmVzc2lvbk5vZGUoYnJhY2tldGVkRXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBFeHByZXNzaW9uLCBCcmFja2V0ZWRFeHByZXNzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZXhwcmVzc2lvbk5vZGUgPSBleHByZXNzaW9uTm9kZVF1ZXJ5KGJyYWNrZXRlZEV4cHJlc3Npb25Ob2RlKSxcbiAgICAgICAgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb24uZnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nRnJvbUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCksXG4gICAgICAgIGJyYWNrZXRlZEV4cHJlc3Npb24gPSBuZXcgQnJhY2tldGVkRXhwcmVzc2lvbihzdHJpbmcsIGV4cHJlc3Npb24pO1xuXG4gIHJldHVybiBicmFja2V0ZWRFeHByZXNzaW9uO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdGcm9tRXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNzaW9uLmFzU3RyaW5nKGNvbnRleHQpLFxuICAgICAgICBzdHJpbmcgPSBgKCR7ZXhwcmVzc2lvblN0cmluZ30pYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbImV4cHJlc3Npb25Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJleHByZXNzaW9uQnJhY2tldGVkRXhwcmVzc2lvbk5vZGVRdWVyeSIsImRlZmluZSIsIkJyYWNrZXRlZEV4cHJlc3Npb24iLCJzdHJpbmciLCJleHByZXNzaW9uIiwiZ2V0U3RyaW5nIiwiZ2V0RXhwcmVzc2lvbiIsImdldFR5cGUiLCJldmFsdWF0ZSIsImNvbnRleHQiLCJicmFja2V0ZWRFeHByZXNzaW9uU3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImZyb21FeHByZXNzaW9uTm9kZSIsImV4cHJlc3Npb25Ob2RlIiwiYnJhY2tldGVkRXhwcmVzc2lvbiIsImV4cHJlc3Npb25CcmFja2V0ZWRFeHByZXNzaW9uTm9kZSIsImJyYWNrZXRlZEV4cHJlc3Npb25Ob2RlIiwiYnJhY2tldGVkRXhwcmVzc2lvbkZyb21CcmFja2V0ZWRFeHByZXNzaW9uTm9kZSIsIm5hbWUiLCJFeHByZXNzaW9uIiwiZWxlbWVudHMiLCJzdHJpbmdGcm9tRXhwcmVzc2lvbiIsImV4cHJlc3Npb25TdHJpbmciLCJhc1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFBOzs7Z0VBUnFCO3FCQUdLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsSUFBTUEsc0JBQXNCQyxJQUFBQSxnQkFBUyxFQUFDLG9DQUNoQ0MseUNBQXlDRCxJQUFBQSxnQkFBUyxFQUFDO0lBRXpELFdBQWVFLElBQUFBLGdCQUFNLHdDQUFDO2FBQU1DLG9CQUNkQyxNQUFNLEVBQUVDLFVBQVU7Z0NBREpGO1FBRXhCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTs7OztZQUdwQkMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRixNQUFNO1lBQ3BCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRixVQUFVO1lBQ3hCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUFZLE9BQU8sSUFBSSxDQUFDSCxVQUFVLENBQUNHLE9BQU87WUFBSTs7O1lBRTlDQyxLQUFBQTttQkFBQUEsU0FBQUEsU0FBU0MsT0FBTztnQkFDZCxJQUFJTDtnQkFFSixJQUFNTSw0QkFBNEIsSUFBSSxDQUFDUCxNQUFNLEVBQUUsR0FBRztnQkFFbERNLFFBQVFFLEtBQUssQ0FBQyxBQUFDLG1CQUE0QyxPQUExQkQsMkJBQTBCO2dCQUUzRE4sYUFBYSxJQUFJLENBQUNBLFVBQVUsQ0FBQ0ksUUFBUSxDQUFDQztnQkFFdENBLFFBQVFHLEtBQUssQ0FBQyxBQUFDLHFCQUE4QyxPQUExQkYsMkJBQTBCO2dCQUU3RCxPQUFPTjtZQUNUOzs7O1lBSU9TLEtBQUFBO21CQUFQLFNBQU9BLG1CQUFtQkMsY0FBYyxFQUFFTCxPQUFPO2dCQUMvQyxJQUFJTSxzQkFBc0I7Z0JBRTFCLElBQU1DLG9DQUFvQ2hCLHVDQUF1Q2M7Z0JBRWpGLElBQUlFLHNDQUFzQyxNQUFNO29CQUM5QyxJQUFNQywwQkFBMEJELG1DQUFtQyxHQUFHO29CQUV0RUQsc0JBQXNCRywrQ0FBK0NELHlCQUF5QlI7Z0JBQ2hHO2dCQUVBLE9BQU9NO1lBQ1Q7Ozs7S0FkQSx1Q0FBT0ksUUFBTztBQWlCaEIsU0FBU0QsK0NBQStDRCx1QkFBdUIsRUFBRVIsT0FBTztJQUN0RixJQUFRVyxhQUFvQ0MsaUJBQVEsQ0FBNUNELFlBQVlsQixzQkFBd0JtQixpQkFBUSxDQUFoQ25CLHFCQUNkWSxpQkFBaUJoQixvQkFBb0JtQiwwQkFDckNiLGFBQWFnQixXQUFXUCxrQkFBa0IsQ0FBQ0MsZ0JBQWdCTCxVQUMzRE4sU0FBU21CLHFCQUFxQmxCLFlBQVlLLFVBQzFDTSxzQkFBc0IsSUFBSWIsb0JBQW9CQyxRQUFRQztJQUU1RCxPQUFPVztBQUNUO0FBRUEsU0FBU08scUJBQXFCbEIsVUFBVSxFQUFFSyxPQUFPO0lBQy9DLElBQU1jLG1CQUFtQm5CLFdBQVdvQixRQUFRLENBQUNmLFVBQ3ZDTixTQUFTLEFBQUMsSUFBb0IsT0FBakJvQixrQkFBaUI7SUFFcEMsT0FBT3BCO0FBQ1QifQ==
@@ -0,0 +1,166 @@
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 _elements = /*#__PURE__*/ _interop_require_wildcard(require("../../elements"));
12
+ var _exception = /*#__PURE__*/ _interop_require_default(require("../../exception"));
13
+ var _query = require("../../utilities/query");
14
+ var _types = require("../../types");
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 _NegatedExpression;
94
+ var expressionNodeQuery = (0, _query.nodeQuery)("/negatedExpression/expression"), expressionNegatedExpressionNodeQuery = (0, _query.nodeQuery)("/expression/negatedExpression");
95
+ var _default = (0, _elements.define)((_NegatedExpression = /*#__PURE__*/ function() {
96
+ function NegatedExpression(string, type, expression) {
97
+ _class_call_check(this, NegatedExpression);
98
+ this.string = string;
99
+ this.type = type;
100
+ this.expression = expression;
101
+ }
102
+ _create_class(NegatedExpression, [
103
+ {
104
+ key: "getString",
105
+ value: function getString() {
106
+ return this.string;
107
+ }
108
+ },
109
+ {
110
+ key: "getType",
111
+ value: function getType() {
112
+ return this.type;
113
+ }
114
+ },
115
+ {
116
+ key: "getExpression",
117
+ value: function getExpression() {
118
+ return this.expression;
119
+ }
120
+ },
121
+ {
122
+ key: "evaluate",
123
+ value: function evaluate(context) {
124
+ var expression;
125
+ var negatedExpressionString = this.string; ///
126
+ context.trace("Evaluating the '".concat(negatedExpressionString, "' negated expression..."));
127
+ expression = this.expression.evaluate(context);
128
+ var expressionType = expression.getType();
129
+ if (expressionType !== _types.BOOLEAN_TYPE) {
130
+ var expressionString = expression.asString(context), message = "The ".concat(expressionString, " left expression's type is '").concat(expressionType, "' when it should be of type '").concat(_types.BOOLEAN_TYPE, "'."), exception = _exception.default.fromMessage(message);
131
+ throw exception;
132
+ }
133
+ var boolean = expression.getBoolean();
134
+ boolean = !boolean;
135
+ var Expression = _elements.default.Expression;
136
+ expression = Expression.fromBoolean(boolean, context); ///
137
+ context.debug("...evaluated the '".concat(negatedExpressionString, "' negated expression."));
138
+ return expression;
139
+ }
140
+ }
141
+ ], [
142
+ {
143
+ key: "fromExpressionNode",
144
+ value: function fromExpressionNode(expressionNode, context) {
145
+ var negatedExpression = null;
146
+ var expressionNegatedExpressionNode = expressionNegatedExpressionNodeQuery(expressionNode);
147
+ if (expressionNegatedExpressionNode !== null) {
148
+ var negatedExpressionNode = expressionNegatedExpressionNode; ///
149
+ negatedExpression = negatedExpressionFromNegatedExpressionNode(negatedExpressionNode, context);
150
+ }
151
+ return negatedExpression;
152
+ }
153
+ }
154
+ ]);
155
+ return NegatedExpression;
156
+ }(), _define_property(_NegatedExpression, "name", "NegatedExpression"), _NegatedExpression));
157
+ function negatedExpressionFromNegatedExpressionNode(negatedExpressionNode, context) {
158
+ var Expression = _elements.default.Expression, NegatedExpression = _elements.default.NegatedExpression, expressionNode = expressionNodeQuery(negatedExpressionNode), expression = Expression.fromExpressionNode(expressionNode, context), type = _types.BOOLEAN_TYPE, string = stringFromExpression(expression, context), negatedExpression = new NegatedExpression(string, type, expression);
159
+ return negatedExpression;
160
+ }
161
+ function stringFromExpression(expression, context) {
162
+ var expressionString = expression.asString(context), string = "!".concat(expressionString);
163
+ return string;
164
+ }
165
+
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2V4cHJlc3Npb24vbmVnYXRlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tIFwiLi4vLi4vZXhjZXB0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgQk9PTEVBTl9UWVBFIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmNvbnN0IGV4cHJlc3Npb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbmVnYXRlZEV4cHJlc3Npb24vZXhwcmVzc2lvblwiKSxcbiAgICAgIGV4cHJlc3Npb25OZWdhdGVkRXhwcmVzc2lvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9leHByZXNzaW9uL25lZ2F0ZWRFeHByZXNzaW9uXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgTmVnYXRlZEV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIHR5cGUsIGV4cHJlc3Npb24pIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0RXhwcmVzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uO1xuICB9XG5cbiAgZXZhbHVhdGUoY29udGV4dCkge1xuICAgIGxldCBleHByZXNzaW9uO1xuXG4gICAgY29uc3QgbmVnYXRlZEV4cHJlc3Npb25TdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBFdmFsdWF0aW5nIHRoZSAnJHtuZWdhdGVkRXhwcmVzc2lvblN0cmluZ30nIG5lZ2F0ZWQgZXhwcmVzc2lvbi4uLmApO1xuXG4gICAgZXhwcmVzc2lvbiA9IHRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZShjb250ZXh0KTtcblxuICAgIGNvbnN0IGV4cHJlc3Npb25UeXBlID0gZXhwcmVzc2lvbi5nZXRUeXBlKCk7XG5cbiAgICBpZiAoZXhwcmVzc2lvblR5cGUgIT09IEJPT0xFQU5fVFlQRSkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvblN0cmluZyA9IGV4cHJlc3Npb24uYXNTdHJpbmcoY29udGV4dCksXG4gICAgICAgICAgICBtZXNzYWdlID0gYFRoZSAke2V4cHJlc3Npb25TdHJpbmd9IGxlZnQgZXhwcmVzc2lvbidzIHR5cGUgaXMgJyR7ZXhwcmVzc2lvblR5cGV9JyB3aGVuIGl0IHNob3VsZCBiZSBvZiB0eXBlICcke0JPT0xFQU5fVFlQRX0nLmAsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICB9XG5cbiAgICBsZXQgYm9vbGVhbiA9IGV4cHJlc3Npb24uZ2V0Qm9vbGVhbigpO1xuXG4gICAgYm9vbGVhbiA9ICFib29sZWFuO1xuXG4gICAgY29uc3QgeyBFeHByZXNzaW9uIH0gPSBlbGVtZW50cztcblxuICAgIGV4cHJlc3Npb24gPSBFeHByZXNzaW9uLmZyb21Cb29sZWFuKGJvb2xlYW4sIGNvbnRleHQpOyAgLy8vXG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5ldmFsdWF0ZWQgdGhlICcke25lZ2F0ZWRFeHByZXNzaW9uU3RyaW5nfScgbmVnYXRlZCBleHByZXNzaW9uLmApO1xuXG4gICAgcmV0dXJuIGV4cHJlc3Npb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiTmVnYXRlZEV4cHJlc3Npb25cIjtcblxuICBzdGF0aWMgZnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IG5lZ2F0ZWRFeHByZXNzaW9uID0gbnVsbDtcblxuICAgIGNvbnN0IGV4cHJlc3Npb25OZWdhdGVkRXhwcmVzc2lvbk5vZGUgPSBleHByZXNzaW9uTmVnYXRlZEV4cHJlc3Npb25Ob2RlUXVlcnkoZXhwcmVzc2lvbk5vZGUpO1xuXG4gICAgaWYgKGV4cHJlc3Npb25OZWdhdGVkRXhwcmVzc2lvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5lZ2F0ZWRFeHByZXNzaW9uTm9kZSA9IGV4cHJlc3Npb25OZWdhdGVkRXhwcmVzc2lvbk5vZGU7IC8vL1xuXG4gICAgICBuZWdhdGVkRXhwcmVzc2lvbiA9IG5lZ2F0ZWRFeHByZXNzaW9uRnJvbU5lZ2F0ZWRFeHByZXNzaW9uTm9kZShuZWdhdGVkRXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBuZWdhdGVkRXhwcmVzc2lvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG5lZ2F0ZWRFeHByZXNzaW9uRnJvbU5lZ2F0ZWRFeHByZXNzaW9uTm9kZShuZWdhdGVkRXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBFeHByZXNzaW9uLCBOZWdhdGVkRXhwcmVzc2lvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGV4cHJlc3Npb25Ob2RlID0gZXhwcmVzc2lvbk5vZGVRdWVyeShuZWdhdGVkRXhwcmVzc2lvbk5vZGUpLFxuICAgICAgICBleHByZXNzaW9uID0gRXhwcmVzc2lvbi5mcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICB0eXBlID0gQk9PTEVBTl9UWVBFLFxuICAgICAgICBzdHJpbmcgPSBzdHJpbmdGcm9tRXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KSxcbiAgICAgICAgbmVnYXRlZEV4cHJlc3Npb24gPSBuZXcgTmVnYXRlZEV4cHJlc3Npb24oc3RyaW5nLCB0eXBlLCBleHByZXNzaW9uKTtcblxuICByZXR1cm4gbmVnYXRlZEV4cHJlc3Npb247XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21FeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpIHtcbiAgY29uc3QgZXhwcmVzc2lvblN0cmluZyA9IGV4cHJlc3Npb24uYXNTdHJpbmcoY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IGAhJHtleHByZXNzaW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJleHByZXNzaW9uTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwiZXhwcmVzc2lvbk5lZ2F0ZWRFeHByZXNzaW9uTm9kZVF1ZXJ5IiwiZGVmaW5lIiwiTmVnYXRlZEV4cHJlc3Npb24iLCJzdHJpbmciLCJ0eXBlIiwiZXhwcmVzc2lvbiIsImdldFN0cmluZyIsImdldFR5cGUiLCJnZXRFeHByZXNzaW9uIiwiZXZhbHVhdGUiLCJjb250ZXh0IiwibmVnYXRlZEV4cHJlc3Npb25TdHJpbmciLCJ0cmFjZSIsImV4cHJlc3Npb25UeXBlIiwiQk9PTEVBTl9UWVBFIiwiZXhwcmVzc2lvblN0cmluZyIsImFzU3RyaW5nIiwibWVzc2FnZSIsImV4Y2VwdGlvbiIsIkV4Y2VwdGlvbiIsImZyb21NZXNzYWdlIiwiYm9vbGVhbiIsImdldEJvb2xlYW4iLCJFeHByZXNzaW9uIiwiZWxlbWVudHMiLCJmcm9tQm9vbGVhbiIsImRlYnVnIiwiZnJvbUV4cHJlc3Npb25Ob2RlIiwiZXhwcmVzc2lvbk5vZGUiLCJuZWdhdGVkRXhwcmVzc2lvbiIsImV4cHJlc3Npb25OZWdhdGVkRXhwcmVzc2lvbk5vZGUiLCJuZWdhdGVkRXhwcmVzc2lvbk5vZGUiLCJuZWdhdGVkRXhwcmVzc2lvbkZyb21OZWdhdGVkRXhwcmVzc2lvbk5vZGUiLCJuYW1lIiwic3RyaW5nRnJvbUV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7O2dFQVZxQjtnRUFDQztxQkFHSTtxQkFDRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFN0IsSUFBTUEsc0JBQXNCQyxJQUFBQSxnQkFBUyxFQUFDLGtDQUNoQ0MsdUNBQXVDRCxJQUFBQSxnQkFBUyxFQUFDO0lBRXZELFdBQWVFLElBQUFBLGdCQUFNLHNDQUFDO2FBQU1DLGtCQUNkQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVTtnQ0FEVkg7UUFFeEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxVQUFVLEdBQUdBOzs7O1lBR3BCQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILE1BQU07WUFDcEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILElBQUk7WUFDbEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILFVBQVU7WUFDeEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsU0FBU0MsT0FBTztnQkFDZCxJQUFJTDtnQkFFSixJQUFNTSwwQkFBMEIsSUFBSSxDQUFDUixNQUFNLEVBQUUsR0FBRztnQkFFaERPLFFBQVFFLEtBQUssQ0FBQyxBQUFDLG1CQUEwQyxPQUF4QkQseUJBQXdCO2dCQUV6RE4sYUFBYSxJQUFJLENBQUNBLFVBQVUsQ0FBQ0ksUUFBUSxDQUFDQztnQkFFdEMsSUFBTUcsaUJBQWlCUixXQUFXRSxPQUFPO2dCQUV6QyxJQUFJTSxtQkFBbUJDLG1CQUFZLEVBQUU7b0JBQ25DLElBQU1DLG1CQUFtQlYsV0FBV1csUUFBUSxDQUFDTixVQUN2Q08sVUFBVSxBQUFDLE9BQXFESixPQUEvQ0Usa0JBQWlCLGdDQUE0RUQsT0FBOUNELGdCQUFlLGlDQUE0QyxPQUFiQyxtQkFBWSxFQUFDLE9BQzNISSxZQUFZQyxrQkFBUyxDQUFDQyxXQUFXLENBQUNIO29CQUV4QyxNQUFNQztnQkFDUjtnQkFFQSxJQUFJRyxVQUFVaEIsV0FBV2lCLFVBQVU7Z0JBRW5DRCxVQUFVLENBQUNBO2dCQUVYLElBQU0sQUFBRUUsYUFBZUMsaUJBQVEsQ0FBdkJEO2dCQUVSbEIsYUFBYWtCLFdBQVdFLFdBQVcsQ0FBQ0osU0FBU1gsVUFBVyxHQUFHO2dCQUUzREEsUUFBUWdCLEtBQUssQ0FBQyxBQUFDLHFCQUE0QyxPQUF4QmYseUJBQXdCO2dCQUUzRCxPQUFPTjtZQUNUOzs7O1lBSU9zQixLQUFBQTttQkFBUCxTQUFPQSxtQkFBbUJDLGNBQWMsRUFBRWxCLE9BQU87Z0JBQy9DLElBQUltQixvQkFBb0I7Z0JBRXhCLElBQU1DLGtDQUFrQzlCLHFDQUFxQzRCO2dCQUU3RSxJQUFJRSxvQ0FBb0MsTUFBTTtvQkFDNUMsSUFBTUMsd0JBQXdCRCxpQ0FBaUMsR0FBRztvQkFFbEVELG9CQUFvQkcsMkNBQTJDRCx1QkFBdUJyQjtnQkFDeEY7Z0JBRUEsT0FBT21CO1lBQ1Q7Ozs7S0FkQSxxQ0FBT0ksUUFBTztBQWlCaEIsU0FBU0QsMkNBQTJDRCxxQkFBcUIsRUFBRXJCLE9BQU87SUFDaEYsSUFBUWEsYUFBa0NDLGlCQUFRLENBQTFDRCxZQUFZckIsb0JBQXNCc0IsaUJBQVEsQ0FBOUJ0QixtQkFDZDBCLGlCQUFpQjlCLG9CQUFvQmlDLHdCQUNyQzFCLGFBQWFrQixXQUFXSSxrQkFBa0IsQ0FBQ0MsZ0JBQWdCbEIsVUFDM0ROLE9BQU9VLG1CQUFZLEVBQ25CWCxTQUFTK0IscUJBQXFCN0IsWUFBWUssVUFDMUNtQixvQkFBb0IsSUFBSTNCLGtCQUFrQkMsUUFBUUMsTUFBTUM7SUFFOUQsT0FBT3dCO0FBQ1Q7QUFFQSxTQUFTSyxxQkFBcUI3QixVQUFVLEVBQUVLLE9BQU87SUFDL0MsSUFBTUssbUJBQW1CVixXQUFXVyxRQUFRLENBQUNOLFVBQ3ZDUCxTQUFTLEFBQUMsSUFBb0IsT0FBakJZO0lBRW5CLE9BQU9aO0FBQ1QifQ==