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.
- package/README.md +0 -11
- package/lib/constants.js +29 -1
- package/lib/context/block.js +15 -1
- package/lib/context/file.js +127 -50
- package/lib/element/assignment/array.js +186 -0
- package/lib/element/assignment/object.js +244 -0
- package/lib/element/assignment/variable.js +144 -0
- package/lib/element/assignments/variable.js +158 -0
- package/lib/element/block/return.js +198 -0
- package/lib/element/comparison.js +179 -0
- package/lib/element/declaration/procedure.js +139 -0
- package/lib/{dom → element}/error.js +12 -4
- package/lib/element/every.js +179 -0
- package/lib/element/expression/bitwise.js +186 -0
- package/lib/element/expression/bracketed.js +149 -0
- package/lib/element/expression/negated.js +166 -0
- package/lib/element/expression.js +578 -0
- package/lib/element/expressions.js +210 -0
- package/lib/{dom → element}/label.js +4 -4
- package/lib/element/parameter/named.js +198 -0
- package/lib/element/parameter.js +165 -0
- package/lib/element/parameters/named.js +220 -0
- package/lib/element/parameters.js +198 -0
- package/lib/element/procedure/anonymous.js +181 -0
- package/lib/element/procedure.js +212 -0
- package/lib/element/procedureCall.js +166 -0
- package/lib/element/query/node.js +186 -0
- package/lib/element/query/nodes.js +179 -0
- package/lib/element/reduce.js +181 -0
- package/lib/element/reference.js +138 -0
- package/lib/element/some.js +179 -0
- package/lib/element/statement/return.js +138 -0
- package/lib/element/step.js +154 -0
- package/lib/element/ternary.js +171 -0
- package/lib/element/variable.js +279 -0
- package/lib/elements.js +27 -0
- package/lib/index.js +10 -2
- package/lib/log.js +202 -0
- package/lib/preamble.js +32 -32
- package/lib/process/verify.js +289 -0
- package/lib/utilities/context.js +46 -5
- package/package.json +3 -1
- package/src/constants.js +16 -0
- package/src/context/block.js +10 -0
- package/src/context/file.js +96 -54
- package/src/{dom → element}/assignment/array.js +6 -6
- package/src/{dom → element}/assignment/object.js +8 -8
- package/src/{dom → element}/assignment/variable.js +4 -4
- package/src/{dom → element}/assignments/variable.js +5 -5
- package/src/{dom → element}/block/return.js +5 -5
- package/src/{dom → element}/comparison.js +5 -5
- package/src/{dom → element}/declaration/procedure.js +22 -4
- package/src/{dom → element}/error.js +13 -4
- package/src/{dom → element}/every.js +6 -6
- package/src/{dom → element}/expression/bitwise.js +5 -5
- package/src/{dom → element}/expression/bracketed.js +4 -4
- package/src/{dom → element}/expression/negated.js +5 -5
- package/src/{dom → element}/expression.js +4 -4
- package/src/{dom → element}/expressions.js +6 -6
- package/src/{dom → element}/label.js +4 -4
- package/src/{dom → element}/parameter/named.js +4 -4
- package/src/{dom → element}/parameter.js +4 -4
- package/src/{dom → element}/parameters/named.js +5 -5
- package/src/{dom → element}/parameters.js +5 -5
- package/src/{dom → element}/procedure/anonymous.js +4 -4
- package/src/{dom → element}/procedure.js +5 -5
- package/src/{dom → element}/procedureCall.js +4 -4
- package/src/{dom → element}/query/node.js +5 -5
- package/src/{dom → element}/query/nodes.js +5 -5
- package/src/{dom → element}/reduce.js +5 -5
- package/src/{dom → element}/reference.js +4 -4
- package/src/{dom → element}/some.js +6 -6
- package/src/{dom → element}/statement/return.js +4 -4
- package/src/{dom → element}/step.js +4 -4
- package/src/{dom → element}/ternary.js +4 -4
- package/src/{dom → element}/variable.js +5 -5
- package/src/elements.js +13 -0
- package/src/index.js +5 -1
- package/src/log.js +139 -0
- package/src/preamble.js +31 -31
- package/src/process/verify.js +157 -0
- package/src/utilities/context.js +45 -2
- package/test/Free and bound variables.ftl +112 -0
- package/test/context/file.js +127 -0
- package/{src/example → test}/context/release.js +60 -12
- package/test/helpers/constants.js +17 -0
- package/{src/example/utilities → test/helpers}/expressions.js +8 -4
- package/{src/example/utilities → test/helpers}/furtle.js +8 -4
- package/{src/example/utilities → test/helpers}/grammar.js +8 -4
- package/{src/example/utilities → test/helpers}/nominal.js +10 -5
- package/{src/example/utilities → test/helpers}/procedure.js +6 -2
- package/test/main.js +55 -0
- package/example/Free and bound variables.ftl +0 -75
- package/lib/dom/assignment/array.js +0 -186
- package/lib/dom/assignment/object.js +0 -244
- package/lib/dom/assignment/variable.js +0 -144
- package/lib/dom/assignments/variable.js +0 -158
- package/lib/dom/block/return.js +0 -198
- package/lib/dom/comparison.js +0 -179
- package/lib/dom/declaration/procedure.js +0 -125
- package/lib/dom/every.js +0 -179
- package/lib/dom/expression/bitwise.js +0 -186
- package/lib/dom/expression/bracketed.js +0 -149
- package/lib/dom/expression/negated.js +0 -166
- package/lib/dom/expression.js +0 -578
- package/lib/dom/expressions.js +0 -210
- package/lib/dom/parameter/named.js +0 -198
- package/lib/dom/parameter.js +0 -165
- package/lib/dom/parameters/named.js +0 -220
- package/lib/dom/parameters.js +0 -198
- package/lib/dom/procedure/anonymous.js +0 -181
- package/lib/dom/procedure.js +0 -212
- package/lib/dom/procedureCall.js +0 -166
- package/lib/dom/query/node.js +0 -186
- package/lib/dom/query/nodes.js +0 -179
- package/lib/dom/reduce.js +0 -181
- package/lib/dom/reference.js +0 -138
- package/lib/dom/some.js +0 -179
- package/lib/dom/statement/return.js +0 -138
- package/lib/dom/step.js +0 -154
- package/lib/dom/ternary.js +0 -171
- package/lib/dom/variable.js +0 -279
- package/lib/dom.js +0 -27
- package/lib/example/context/file.js +0 -130
- package/lib/example/context/release.js +0 -160
- package/lib/example/utilities/expressions.js +0 -29
- package/lib/example/utilities/furtle.js +0 -19
- package/lib/example/utilities/grammar.js +0 -26
- package/lib/example/utilities/nominal.js +0 -25
- package/lib/example/utilities/procedure.js +0 -18
- package/src/dom.js +0 -13
- package/src/example/context/file.js +0 -69
- /package/{example → test}/customGrammars.json +0 -0
|
@@ -1,220 +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 _exception = /*#__PURE__*/ _interop_require_default(require("../../exception"));
|
|
13
|
-
var _query = require("../../utilities/query");
|
|
14
|
-
function _class_call_check(instance, Constructor) {
|
|
15
|
-
if (!(instance instanceof Constructor)) {
|
|
16
|
-
throw new TypeError("Cannot call a class as a function");
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function _defineProperties(target, props) {
|
|
20
|
-
for(var i = 0; i < props.length; i++){
|
|
21
|
-
var descriptor = props[i];
|
|
22
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
23
|
-
descriptor.configurable = true;
|
|
24
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
25
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
29
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
30
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
31
|
-
return Constructor;
|
|
32
|
-
}
|
|
33
|
-
function _define_property(obj, key, value) {
|
|
34
|
-
if (key in obj) {
|
|
35
|
-
Object.defineProperty(obj, key, {
|
|
36
|
-
value: value,
|
|
37
|
-
enumerable: true,
|
|
38
|
-
configurable: true,
|
|
39
|
-
writable: true
|
|
40
|
-
});
|
|
41
|
-
} else {
|
|
42
|
-
obj[key] = value;
|
|
43
|
-
}
|
|
44
|
-
return obj;
|
|
45
|
-
}
|
|
46
|
-
function _interop_require_default(obj) {
|
|
47
|
-
return obj && obj.__esModule ? obj : {
|
|
48
|
-
default: obj
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
52
|
-
if (typeof WeakMap !== "function") return null;
|
|
53
|
-
var cacheBabelInterop = new WeakMap();
|
|
54
|
-
var cacheNodeInterop = new WeakMap();
|
|
55
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
56
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
57
|
-
})(nodeInterop);
|
|
58
|
-
}
|
|
59
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
60
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
61
|
-
return obj;
|
|
62
|
-
}
|
|
63
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
64
|
-
return {
|
|
65
|
-
default: obj
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
69
|
-
if (cache && cache.has(obj)) {
|
|
70
|
-
return cache.get(obj);
|
|
71
|
-
}
|
|
72
|
-
var newObj = {
|
|
73
|
-
__proto__: null
|
|
74
|
-
};
|
|
75
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
76
|
-
for(var key in obj){
|
|
77
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
78
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
79
|
-
if (desc && (desc.get || desc.set)) {
|
|
80
|
-
Object.defineProperty(newObj, key, desc);
|
|
81
|
-
} else {
|
|
82
|
-
newObj[key] = obj[key];
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
newObj.default = obj;
|
|
87
|
-
if (cache) {
|
|
88
|
-
cache.set(obj, newObj);
|
|
89
|
-
}
|
|
90
|
-
return newObj;
|
|
91
|
-
}
|
|
92
|
-
var _NamedParameters;
|
|
93
|
-
var namedParameterNodesQuery = (0, _query.nodesQuery)("/namedParameters/namedParameter"), objectAssignmentNamedParametersNodeQuery = (0, _query.nodeQuery)("/objectAssignment/namedParameters");
|
|
94
|
-
var _default = (0, _dom.domAssigned)((_NamedParameters = /*#__PURE__*/ function() {
|
|
95
|
-
function NamedParameters(string, array) {
|
|
96
|
-
_class_call_check(this, NamedParameters);
|
|
97
|
-
this.string = string;
|
|
98
|
-
this.array = array;
|
|
99
|
-
}
|
|
100
|
-
_create_class(NamedParameters, [
|
|
101
|
-
{
|
|
102
|
-
key: "getString",
|
|
103
|
-
value: function getString() {
|
|
104
|
-
return this.string;
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
key: "getArray",
|
|
109
|
-
value: function getArray() {
|
|
110
|
-
return this.array;
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
key: "getLength",
|
|
115
|
-
value: function getLength() {
|
|
116
|
-
var length = this.array.length;
|
|
117
|
-
return length;
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
key: "getNamedParameter",
|
|
122
|
-
value: function getNamedParameter(index) {
|
|
123
|
-
var namedParameter = this.array[index] || null;
|
|
124
|
-
return namedParameter;
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
key: "someNamedParameter",
|
|
129
|
-
value: function someNamedParameter(callback) {
|
|
130
|
-
return this.array.some(callback);
|
|
131
|
-
}
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
key: "forEachNamedParameter",
|
|
135
|
-
value: function forEachNamedParameter(callback) {
|
|
136
|
-
this.array.forEach(callback);
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
key: "matchExpressions",
|
|
141
|
-
value: function matchExpressions(expressions, context) {
|
|
142
|
-
var expressionsString = expressions.getString(), namedParametersString = this.string; ///
|
|
143
|
-
context.trace("Matching the ".concat(expressionsString, " expressions against the '").concat(namedParametersString, "' named parameters..."));
|
|
144
|
-
var expressionsLength = expressions.getLength(), namedParametersLength = this.getLength();
|
|
145
|
-
if (expressionsLength !== namedParametersLength) {
|
|
146
|
-
var message = "The ".concat(expressionsString, " expressions and '").concat(namedParametersString, "' named parameters are not of the same length."), exception = _exception.default.fromMessage(message);
|
|
147
|
-
throw exception;
|
|
148
|
-
}
|
|
149
|
-
this.forEachNamedParameter(function(namedParameter, index) {
|
|
150
|
-
if (namedParameter !== null) {
|
|
151
|
-
var expression = expressions.getExpression(index);
|
|
152
|
-
namedParameter.matchExpression(expression, context);
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
context.debug("...matched the ".concat(expressionsString, " expressions against the '").concat(namedParametersString, "' named parameters."));
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
key: "matchNamedParameter",
|
|
160
|
-
value: function matchNamedParameter(namedParameter, context) {
|
|
161
|
-
var namedParameterString = namedParameter.getString(), namedParametersString = this.string; ///
|
|
162
|
-
context.trace("Matching the '".concat(namedParameterString, "' namedParameter against the '").concat(namedParametersString, "' named parameters..."));
|
|
163
|
-
var namedParameterA = namedParameter, namedParameterMatches = this.someNamedParameter(function(namedParameter) {
|
|
164
|
-
if (namedParameter !== null) {
|
|
165
|
-
var namedParameterB = namedParameter, namedParameterBMatchesNamedParameterA = namedParameterA.matchNamedParameter(namedParameterB, context);
|
|
166
|
-
if (namedParameterBMatchesNamedParameterA) {
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
if (!namedParameterMatches) {
|
|
172
|
-
var message = "The '".concat(namedParameterString, "' namedParameter does not match any of the '").concat(namedParametersString, "' named parameters."), exception = _exception.default.fromMessage(message);
|
|
173
|
-
throw exception;
|
|
174
|
-
}
|
|
175
|
-
context.debug("...matched the '".concat(namedParameterString, "' namedParameter against the '").concat(namedParametersString, "' named parameters."));
|
|
176
|
-
}
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
key: "matchNamedParameters",
|
|
180
|
-
value: function matchNamedParameters(namedParameters, context) {
|
|
181
|
-
var _this = this;
|
|
182
|
-
namedParameters.forEachNamedParameter(function(namedParameter) {
|
|
183
|
-
if (namedParameter !== null) {
|
|
184
|
-
_this.matchNamedParameter(namedParameter, context);
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
], [
|
|
190
|
-
{
|
|
191
|
-
key: "fromObjectAssignmentNode",
|
|
192
|
-
value: function fromObjectAssignmentNode(objectAssignmentNode, context) {
|
|
193
|
-
var objectAssignmentNamedParametersNode = objectAssignmentNamedParametersNodeQuery(objectAssignmentNode), namedParametersNode = objectAssignmentNamedParametersNode, namedParameters = namedParametersFromNamedParametersNode(namedParametersNode, context);
|
|
194
|
-
return namedParameters;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
]);
|
|
198
|
-
return NamedParameters;
|
|
199
|
-
}(), _define_property(_NamedParameters, "name", "NamedParameters"), _NamedParameters));
|
|
200
|
-
function namedParametersFromNamedParametersNode(namedParametersNode, context) {
|
|
201
|
-
var NamedParameters = _dom.default.NamedParameters, namedParameterNodes = namedParameterNodesQuery(namedParametersNode), array = arrayFromNamedParameterNodes(namedParameterNodes, context), string = stringFromArray(array, context), namedParameters = new NamedParameters(string, array);
|
|
202
|
-
return namedParameters;
|
|
203
|
-
}
|
|
204
|
-
function arrayFromNamedParameterNodes(namedParameterNodes, context) {
|
|
205
|
-
var NamedParameter = _dom.default.NamedParameter, array = namedParameterNodes.map(function(namedParameterNode) {
|
|
206
|
-
var namedParameter = NamedParameter.fromNamedParameterNode(namedParameterNode, context);
|
|
207
|
-
return namedParameter;
|
|
208
|
-
});
|
|
209
|
-
return array;
|
|
210
|
-
}
|
|
211
|
-
function stringFromArray(array, context) {
|
|
212
|
-
var namedParametersSString = array.reduce(function(namedParametersSString, namedParameter) {
|
|
213
|
-
var namedParameterString = namedParameter.getString();
|
|
214
|
-
namedParametersSString = namedParametersSString === null ? namedParameterString : "".concat(namedParametersSString, ", ").concat(namedParameterString);
|
|
215
|
-
return namedParametersSString;
|
|
216
|
-
}, null), string = namedParametersSString; ///
|
|
217
|
-
return string;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vcGFyYW1ldGVycy9uYW1lZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vLi4vZG9tXCI7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi8uLi9leGNlcHRpb25cIjtcblxuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vLi4vZG9tXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IG5hbWVkUGFyYW1ldGVyTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvbmFtZWRQYXJhbWV0ZXJzL25hbWVkUGFyYW1ldGVyXCIpLFxuICAgICAgb2JqZWN0QXNzaWdubWVudE5hbWVkUGFyYW1ldGVyc05vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9vYmplY3RBc3NpZ25tZW50L25hbWVkUGFyYW1ldGVyc1wiKTtcblxuZXhwb3J0IGRlZmF1bHQgZG9tQXNzaWduZWQoY2xhc3MgTmFtZWRQYXJhbWV0ZXJzIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBhcnJheSkge1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmFycmF5Lmxlbmd0aDtcblxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cblxuICBnZXROYW1lZFBhcmFtZXRlcihpbmRleCkge1xuICAgIGNvbnN0IG5hbWVkUGFyYW1ldGVyID0gdGhpcy5hcnJheVtpbmRleF0gfHwgbnVsbDtcblxuICAgIHJldHVybiBuYW1lZFBhcmFtZXRlcjtcbiAgfVxuXG4gIHNvbWVOYW1lZFBhcmFtZXRlcihjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5zb21lKGNhbGxiYWNrKTsgfVxuXG4gIGZvckVhY2hOYW1lZFBhcmFtZXRlcihjYWxsYmFjaykgeyB0aGlzLmFycmF5LmZvckVhY2goY2FsbGJhY2spOyB9XG5cbiAgbWF0Y2hFeHByZXNzaW9ucyhleHByZXNzaW9ucywgY29udGV4dCkge1xuICAgIGNvbnN0IGV4cHJlc3Npb25zU3RyaW5nID0gZXhwcmVzc2lvbnMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgbmFtZWRQYXJhbWV0ZXJzU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgTWF0Y2hpbmcgdGhlICR7ZXhwcmVzc2lvbnNTdHJpbmd9IGV4cHJlc3Npb25zIGFnYWluc3QgdGhlICcke25hbWVkUGFyYW1ldGVyc1N0cmluZ30nIG5hbWVkIHBhcmFtZXRlcnMuLi5gKTtcblxuICAgIGNvbnN0IGV4cHJlc3Npb25zTGVuZ3RoID0gZXhwcmVzc2lvbnMuZ2V0TGVuZ3RoKCksXG4gICAgICAgICAgbmFtZWRQYXJhbWV0ZXJzTGVuZ3RoID0gdGhpcy5nZXRMZW5ndGgoKTtcblxuICAgIGlmIChleHByZXNzaW9uc0xlbmd0aCAhPT0gbmFtZWRQYXJhbWV0ZXJzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFRoZSAke2V4cHJlc3Npb25zU3RyaW5nfSBleHByZXNzaW9ucyBhbmQgJyR7bmFtZWRQYXJhbWV0ZXJzU3RyaW5nfScgbmFtZWQgcGFyYW1ldGVycyBhcmUgbm90IG9mIHRoZSBzYW1lIGxlbmd0aC5gLFxuICAgICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uLmZyb21NZXNzYWdlKG1lc3NhZ2UpO1xuXG4gICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgfVxuXG4gICAgdGhpcy5mb3JFYWNoTmFtZWRQYXJhbWV0ZXIoKG5hbWVkUGFyYW1ldGVyLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG5hbWVkUGFyYW1ldGVyICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBleHByZXNzaW9ucy5nZXRFeHByZXNzaW9uKGluZGV4KTtcblxuICAgICAgICBuYW1lZFBhcmFtZXRlci5tYXRjaEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5tYXRjaGVkIHRoZSAke2V4cHJlc3Npb25zU3RyaW5nfSBleHByZXNzaW9ucyBhZ2FpbnN0IHRoZSAnJHtuYW1lZFBhcmFtZXRlcnNTdHJpbmd9JyBuYW1lZCBwYXJhbWV0ZXJzLmApO1xuICB9XG5cbiAgbWF0Y2hOYW1lZFBhcmFtZXRlcihuYW1lZFBhcmFtZXRlciwgY29udGV4dCkge1xuICAgIGNvbnN0IG5hbWVkUGFyYW1ldGVyU3RyaW5nID0gbmFtZWRQYXJhbWV0ZXIuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgbmFtZWRQYXJhbWV0ZXJzU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgTWF0Y2hpbmcgdGhlICcke25hbWVkUGFyYW1ldGVyU3RyaW5nfScgbmFtZWRQYXJhbWV0ZXIgYWdhaW5zdCB0aGUgJyR7bmFtZWRQYXJhbWV0ZXJzU3RyaW5nfScgbmFtZWQgcGFyYW1ldGVycy4uLmApO1xuXG4gICAgY29uc3QgbmFtZWRQYXJhbWV0ZXJBID0gbmFtZWRQYXJhbWV0ZXIsIC8vL1xuICAgICAgICAgIG5hbWVkUGFyYW1ldGVyTWF0Y2hlcyA9IHRoaXMuc29tZU5hbWVkUGFyYW1ldGVyKChuYW1lZFBhcmFtZXRlcikgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWVkUGFyYW1ldGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5hbWVkUGFyYW1ldGVyQiA9IG5hbWVkUGFyYW1ldGVyLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgbmFtZWRQYXJhbWV0ZXJCTWF0Y2hlc05hbWVkUGFyYW1ldGVyQSA9IG5hbWVkUGFyYW1ldGVyQS5tYXRjaE5hbWVkUGFyYW1ldGVyKG5hbWVkUGFyYW1ldGVyQiwgY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgaWYgKG5hbWVkUGFyYW1ldGVyQk1hdGNoZXNOYW1lZFBhcmFtZXRlckEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgaWYgKCFuYW1lZFBhcmFtZXRlck1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVGhlICcke25hbWVkUGFyYW1ldGVyU3RyaW5nfScgbmFtZWRQYXJhbWV0ZXIgZG9lcyBub3QgbWF0Y2ggYW55IG9mIHRoZSAnJHtuYW1lZFBhcmFtZXRlcnNTdHJpbmd9JyBuYW1lZCBwYXJhbWV0ZXJzLmAsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5tYXRjaGVkIHRoZSAnJHtuYW1lZFBhcmFtZXRlclN0cmluZ30nIG5hbWVkUGFyYW1ldGVyIGFnYWluc3QgdGhlICcke25hbWVkUGFyYW1ldGVyc1N0cmluZ30nIG5hbWVkIHBhcmFtZXRlcnMuYCk7XG4gIH1cblxuICBtYXRjaE5hbWVkUGFyYW1ldGVycyhuYW1lZFBhcmFtZXRlcnMsIGNvbnRleHQpIHtcbiAgICBuYW1lZFBhcmFtZXRlcnMuZm9yRWFjaE5hbWVkUGFyYW1ldGVyKChuYW1lZFBhcmFtZXRlcikgPT4ge1xuICAgICAgaWYgKG5hbWVkUGFyYW1ldGVyICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMubWF0Y2hOYW1lZFBhcmFtZXRlcihuYW1lZFBhcmFtZXRlciwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiTmFtZWRQYXJhbWV0ZXJzXCI7XG5cbiAgc3RhdGljIGZyb21PYmplY3RBc3NpZ25tZW50Tm9kZShvYmplY3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICAgIGNvbnN0IG9iamVjdEFzc2lnbm1lbnROYW1lZFBhcmFtZXRlcnNOb2RlID0gb2JqZWN0QXNzaWdubWVudE5hbWVkUGFyYW1ldGVyc05vZGVRdWVyeShvYmplY3RBc3NpZ25tZW50Tm9kZSksXG4gICAgICAgICAgbmFtZWRQYXJhbWV0ZXJzTm9kZSA9IG9iamVjdEFzc2lnbm1lbnROYW1lZFBhcmFtZXRlcnNOb2RlLCAgLy8vXG4gICAgICAgICAgbmFtZWRQYXJhbWV0ZXJzID0gbmFtZWRQYXJhbWV0ZXJzRnJvbU5hbWVkUGFyYW1ldGVyc05vZGUobmFtZWRQYXJhbWV0ZXJzTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbmFtZWRQYXJhbWV0ZXJzO1xuICB9XG59KTtcblxuZnVuY3Rpb24gbmFtZWRQYXJhbWV0ZXJzRnJvbU5hbWVkUGFyYW1ldGVyc05vZGUobmFtZWRQYXJhbWV0ZXJzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE5hbWVkUGFyYW1ldGVycyB9ID0gZG9tLFxuICAgICAgICBuYW1lZFBhcmFtZXRlck5vZGVzID0gbmFtZWRQYXJhbWV0ZXJOb2Rlc1F1ZXJ5KG5hbWVkUGFyYW1ldGVyc05vZGUpLFxuICAgICAgICBhcnJheSA9IGFycmF5RnJvbU5hbWVkUGFyYW1ldGVyTm9kZXMobmFtZWRQYXJhbWV0ZXJOb2RlcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21BcnJheShhcnJheSwgY29udGV4dCksXG4gICAgICAgIG5hbWVkUGFyYW1ldGVycyA9IG5ldyBOYW1lZFBhcmFtZXRlcnMoc3RyaW5nLCBhcnJheSk7XG5cbiAgcmV0dXJuIG5hbWVkUGFyYW1ldGVycztcbn1cblxuZnVuY3Rpb24gYXJyYXlGcm9tTmFtZWRQYXJhbWV0ZXJOb2RlcyhuYW1lZFBhcmFtZXRlck5vZGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgTmFtZWRQYXJhbWV0ZXIgfSA9IGRvbSxcbiAgICAgICAgYXJyYXkgPSBuYW1lZFBhcmFtZXRlck5vZGVzLm1hcCgobmFtZWRQYXJhbWV0ZXJOb2RlKSA9PiB7IC8vL1xuICAgICAgICAgIGNvbnN0IG5hbWVkUGFyYW1ldGVyID0gTmFtZWRQYXJhbWV0ZXIuZnJvbU5hbWVkUGFyYW1ldGVyTm9kZShuYW1lZFBhcmFtZXRlck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIG5hbWVkUGFyYW1ldGVyO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21BcnJheShhcnJheSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lZFBhcmFtZXRlcnNTU3RyaW5nID0gYXJyYXkucmVkdWNlKChuYW1lZFBhcmFtZXRlcnNTU3RyaW5nLCBuYW1lZFBhcmFtZXRlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IG5hbWVkUGFyYW1ldGVyU3RyaW5nID0gbmFtZWRQYXJhbWV0ZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgICBuYW1lZFBhcmFtZXRlcnNTU3RyaW5nID0gKG5hbWVkUGFyYW1ldGVyc1NTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lZFBhcmFtZXRlclN0cmluZyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke25hbWVkUGFyYW1ldGVyc1NTdHJpbmd9LCAke25hbWVkUGFyYW1ldGVyU3RyaW5nfWA7XG5cbiAgICAgICAgICByZXR1cm4gbmFtZWRQYXJhbWV0ZXJzU1N0cmluZztcbiAgICAgICAgfSwgbnVsbCksXG4gICAgICAgIHN0cmluZyA9IG5hbWVkUGFyYW1ldGVyc1NTdHJpbmc7ICAvLy9cblxuICByZXR1cm4gc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbIm5hbWVkUGFyYW1ldGVyTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJvYmplY3RBc3NpZ25tZW50TmFtZWRQYXJhbWV0ZXJzTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwiZG9tQXNzaWduZWQiLCJOYW1lZFBhcmFtZXRlcnMiLCJzdHJpbmciLCJhcnJheSIsImdldFN0cmluZyIsImdldEFycmF5IiwiZ2V0TGVuZ3RoIiwibGVuZ3RoIiwiZ2V0TmFtZWRQYXJhbWV0ZXIiLCJpbmRleCIsIm5hbWVkUGFyYW1ldGVyIiwic29tZU5hbWVkUGFyYW1ldGVyIiwiY2FsbGJhY2siLCJzb21lIiwiZm9yRWFjaE5hbWVkUGFyYW1ldGVyIiwiZm9yRWFjaCIsIm1hdGNoRXhwcmVzc2lvbnMiLCJleHByZXNzaW9ucyIsImNvbnRleHQiLCJleHByZXNzaW9uc1N0cmluZyIsIm5hbWVkUGFyYW1ldGVyc1N0cmluZyIsInRyYWNlIiwiZXhwcmVzc2lvbnNMZW5ndGgiLCJuYW1lZFBhcmFtZXRlcnNMZW5ndGgiLCJtZXNzYWdlIiwiZXhjZXB0aW9uIiwiRXhjZXB0aW9uIiwiZnJvbU1lc3NhZ2UiLCJleHByZXNzaW9uIiwiZ2V0RXhwcmVzc2lvbiIsIm1hdGNoRXhwcmVzc2lvbiIsImRlYnVnIiwibWF0Y2hOYW1lZFBhcmFtZXRlciIsIm5hbWVkUGFyYW1ldGVyU3RyaW5nIiwibmFtZWRQYXJhbWV0ZXJBIiwibmFtZWRQYXJhbWV0ZXJNYXRjaGVzIiwibmFtZWRQYXJhbWV0ZXJCIiwibmFtZWRQYXJhbWV0ZXJCTWF0Y2hlc05hbWVkUGFyYW1ldGVyQSIsIm1hdGNoTmFtZWRQYXJhbWV0ZXJzIiwibmFtZWRQYXJhbWV0ZXJzIiwiZnJvbU9iamVjdEFzc2lnbm1lbnROb2RlIiwib2JqZWN0QXNzaWdubWVudE5vZGUiLCJvYmplY3RBc3NpZ25tZW50TmFtZWRQYXJhbWV0ZXJzTm9kZSIsIm5hbWVkUGFyYW1ldGVyc05vZGUiLCJuYW1lZFBhcmFtZXRlcnNGcm9tTmFtZWRQYXJhbWV0ZXJzTm9kZSIsIm5hbWUiLCJkb20iLCJuYW1lZFBhcmFtZXRlck5vZGVzIiwiYXJyYXlGcm9tTmFtZWRQYXJhbWV0ZXJOb2RlcyIsInN0cmluZ0Zyb21BcnJheSIsIk5hbWVkUGFyYW1ldGVyIiwibWFwIiwibmFtZWRQYXJhbWV0ZXJOb2RlIiwiZnJvbU5hbWVkUGFyYW1ldGVyTm9kZSIsIm5hbWVkUGFyYW1ldGVyc1NTdHJpbmciLCJyZWR1Y2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBQTs7OzJEQVRnQjtnRUFDTTtxQkFHZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRDLElBQU1BLDJCQUEyQkMsSUFBQUEsaUJBQVUsRUFBQyxvQ0FDdENDLDJDQUEyQ0MsSUFBQUEsZ0JBQVMsRUFBQztJQUUzRCxXQUFlQyxJQUFBQSxnQkFBVyxvQ0FBQzthQUFNQyxnQkFDbkJDLE1BQU0sRUFBRUMsS0FBSztnQ0FETUY7UUFFN0IsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxLQUFLLEdBQUdBOzs7O1lBR2ZDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsTUFBTTtZQUNwQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsS0FBSztZQUNuQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxTQUFTLElBQUksQ0FBQ0osS0FBSyxDQUFDSSxNQUFNO2dCQUVoQyxPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLGtCQUFrQkMsS0FBSztnQkFDckIsSUFBTUMsaUJBQWlCLElBQUksQ0FBQ1AsS0FBSyxDQUFDTSxNQUFNLElBQUk7Z0JBRTVDLE9BQU9DO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CQyxRQUFRO2dCQUFJLE9BQU8sSUFBSSxDQUFDVCxLQUFLLENBQUNVLElBQUksQ0FBQ0Q7WUFBVzs7O1lBRWpFRSxLQUFBQTttQkFBQUEs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
|
package/lib/dom/parameters.js
DELETED
|
@@ -1,198 +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 _exception = /*#__PURE__*/ _interop_require_default(require("../exception"));
|
|
13
|
-
var _constants = require("../constants");
|
|
14
|
-
var _query = require("../utilities/query");
|
|
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 _Parameters;
|
|
94
|
-
var parameterNodesQuery = (0, _query.nodesQuery)("/parameters/parameter"), arrayAssignmentParametersNodeQuery = (0, _query.nodeQuery)("/arrayAssignment/parameters"), anonymousProcedureParametersNodeQuery = (0, _query.nodeQuery)("/anonymousProcedure/parameters"), procedureDeclarationParametersNodeQuery = (0, _query.nodeQuery)("/procedureDeclaration/parameters");
|
|
95
|
-
var _default = (0, _dom.domAssigned)((_Parameters = /*#__PURE__*/ function() {
|
|
96
|
-
function Parameters(string, array) {
|
|
97
|
-
_class_call_check(this, Parameters);
|
|
98
|
-
this.string = string;
|
|
99
|
-
this.array = array;
|
|
100
|
-
}
|
|
101
|
-
_create_class(Parameters, [
|
|
102
|
-
{
|
|
103
|
-
key: "getString",
|
|
104
|
-
value: function getString() {
|
|
105
|
-
return this.string;
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
key: "getArray",
|
|
110
|
-
value: function getArray() {
|
|
111
|
-
return this.array;
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
key: "getLength",
|
|
116
|
-
value: function getLength() {
|
|
117
|
-
var length = this.array.length;
|
|
118
|
-
return length;
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
key: "getParameter",
|
|
123
|
-
value: function getParameter(index) {
|
|
124
|
-
var parameter = this.array[index] || null;
|
|
125
|
-
return parameter;
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
key: "forEachParameter",
|
|
130
|
-
value: function forEachParameter(callback) {
|
|
131
|
-
this.array.forEach(callback);
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
key: "matchExpressions",
|
|
136
|
-
value: function matchExpressions(expressions, context) {
|
|
137
|
-
var expressionsString = expressions.getString(), parametersString = this.string; ///
|
|
138
|
-
context.trace("Matching the ".concat(expressionsString, " expressions against the '").concat(parametersString, "' parameters..."));
|
|
139
|
-
var expressionsLength = expressions.getLength(), parametersLength = this.getLength();
|
|
140
|
-
if (expressionsLength !== parametersLength) {
|
|
141
|
-
var message = "The ".concat(expressionsString, " expressions and '").concat(parametersString, "' parameters are not of the same length."), exception = _exception.default.fromMessage(message);
|
|
142
|
-
throw exception;
|
|
143
|
-
}
|
|
144
|
-
this.forEachParameter(function(parameter, index) {
|
|
145
|
-
if (parameter !== null) {
|
|
146
|
-
var expression = expressions.getExpression(index);
|
|
147
|
-
parameter.matchExpression(expression, context);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
context.debug("...matched the ".concat(expressionsString, " expressions against the '").concat(parametersString, "' parameters."));
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
], [
|
|
154
|
-
{
|
|
155
|
-
key: "fromArrayAssignmentNode",
|
|
156
|
-
value: function fromArrayAssignmentNode(arrayAssignmentNode, context) {
|
|
157
|
-
var arrayAssignmentParametersNode = arrayAssignmentParametersNodeQuery(arrayAssignmentNode), parametersNode = arrayAssignmentParametersNode, parameters = parametersFromParametersNode(parametersNode, context);
|
|
158
|
-
return parameters;
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
key: "fromAnonymousProcedureNode",
|
|
163
|
-
value: function fromAnonymousProcedureNode(anonymousProcedureNode, context) {
|
|
164
|
-
var anonymousProcedureParametersNode = anonymousProcedureParametersNodeQuery(anonymousProcedureNode), parametersNode = anonymousProcedureParametersNode, parameters = parametersFromParametersNode(parametersNode, context);
|
|
165
|
-
return parameters;
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
key: "fromProcedureDeclarationNode",
|
|
170
|
-
value: function fromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
171
|
-
var procedureDeclarationParametersNode = procedureDeclarationParametersNodeQuery(procedureDeclarationNode), parametersNode = procedureDeclarationParametersNode, parameters = parametersFromParametersNode(parametersNode, context);
|
|
172
|
-
return parameters;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
]);
|
|
176
|
-
return Parameters;
|
|
177
|
-
}(), _define_property(_Parameters, "name", "Parameters"), _Parameters));
|
|
178
|
-
function parametersFromParametersNode(parametersNode, context) {
|
|
179
|
-
var Parameters = _dom.default.Parameters, array = arrayFromParametersNode(parametersNode, context), string = stringFromArray(array, context), parameters = new Parameters(string, array);
|
|
180
|
-
return parameters;
|
|
181
|
-
}
|
|
182
|
-
function arrayFromParametersNode(parametersNode, context) {
|
|
183
|
-
var parameterNodes = parameterNodesQuery(parametersNode), array = parameterNodes.map(function(parameterNode) {
|
|
184
|
-
var Parameter = _dom.default.Parameter, parameter = Parameter.fromParameterNode(parameterNode, context);
|
|
185
|
-
return parameter;
|
|
186
|
-
});
|
|
187
|
-
return array;
|
|
188
|
-
}
|
|
189
|
-
function stringFromArray(array, context) {
|
|
190
|
-
var parametersString = array.reduce(function(parametersString, parameter) {
|
|
191
|
-
var parameterString = parameter !== null ? parameter.getString() : _constants.UNDERSCORE;
|
|
192
|
-
parametersString = parametersString === null ? parameterString : "".concat(parametersString, ", ").concat(parameterString);
|
|
193
|
-
return parametersString;
|
|
194
|
-
}, null), string = parametersString; ///
|
|
195
|
-
return string;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb20vcGFyYW1ldGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi9leGNlcHRpb25cIjtcblxuaW1wb3J0IHsgVU5ERVJTQ09SRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGRvbUFzc2lnbmVkIH0gZnJvbSBcIi4uL2RvbVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBwYXJhbWV0ZXJOb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9wYXJhbWV0ZXJzL3BhcmFtZXRlclwiKSxcbiAgICAgIGFycmF5QXNzaWdubWVudFBhcmFtZXRlcnNOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJyYXlBc3NpZ25tZW50L3BhcmFtZXRlcnNcIiksXG4gICAgICBhbm9ueW1vdXNQcm9jZWR1cmVQYXJhbWV0ZXJzTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2Fub255bW91c1Byb2NlZHVyZS9wYXJhbWV0ZXJzXCIpLFxuICAgICAgcHJvY2VkdXJlRGVjbGFyYXRpb25QYXJhbWV0ZXJzTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Byb2NlZHVyZURlY2xhcmF0aW9uL3BhcmFtZXRlcnNcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGRvbUFzc2lnbmVkKGNsYXNzIFBhcmFtZXRlcnMge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIGFycmF5KSB7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldEFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5O1xuICB9XG5cbiAgZ2V0TGVuZ3RoKCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuYXJyYXkubGVuZ3RoO1xuXG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcihpbmRleCkge1xuICAgIGNvbnN0IHBhcmFtZXRlciA9IHRoaXMuYXJyYXlbaW5kZXhdIHx8IG51bGw7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyO1xuICB9XG5cbiAgZm9yRWFjaFBhcmFtZXRlcihjYWxsYmFjaykgeyB0aGlzLmFycmF5LmZvckVhY2goY2FsbGJhY2spOyB9XG5cbiAgbWF0Y2hFeHByZXNzaW9ucyhleHByZXNzaW9ucywgY29udGV4dCkge1xuICAgIGNvbnN0IGV4cHJlc3Npb25zU3RyaW5nID0gZXhwcmVzc2lvbnMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcGFyYW1ldGVyc1N0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYE1hdGNoaW5nIHRoZSAke2V4cHJlc3Npb25zU3RyaW5nfSBleHByZXNzaW9ucyBhZ2FpbnN0IHRoZSAnJHtwYXJhbWV0ZXJzU3RyaW5nfScgcGFyYW1ldGVycy4uLmApO1xuXG4gICAgY29uc3QgZXhwcmVzc2lvbnNMZW5ndGggPSBleHByZXNzaW9ucy5nZXRMZW5ndGgoKSxcbiAgICAgICAgICBwYXJhbWV0ZXJzTGVuZ3RoID0gdGhpcy5nZXRMZW5ndGgoKTtcblxuICAgIGlmIChleHByZXNzaW9uc0xlbmd0aCAhPT0gcGFyYW1ldGVyc0xlbmd0aCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBUaGUgJHtleHByZXNzaW9uc1N0cmluZ30gZXhwcmVzc2lvbnMgYW5kICcke3BhcmFtZXRlcnNTdHJpbmd9JyBwYXJhbWV0ZXJzIGFyZSBub3Qgb2YgdGhlIHNhbWUgbGVuZ3RoLmAsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICB9XG5cbiAgICB0aGlzLmZvckVhY2hQYXJhbWV0ZXIoKHBhcmFtZXRlciwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChwYXJhbWV0ZXIgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25zLmdldEV4cHJlc3Npb24oaW5kZXgpO1xuXG4gICAgICAgIHBhcmFtZXRlci5tYXRjaEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5tYXRjaGVkIHRoZSAke2V4cHJlc3Npb25zU3RyaW5nfSBleHByZXNzaW9ucyBhZ2FpbnN0IHRoZSAnJHtwYXJhbWV0ZXJzU3RyaW5nfScgcGFyYW1ldGVycy5gKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQYXJhbWV0ZXJzXCI7XG5cbiAgc3RhdGljIGZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBhcnJheUFzc2lnbm1lbnRQYXJhbWV0ZXJzTm9kZSA9IGFycmF5QXNzaWdubWVudFBhcmFtZXRlcnNOb2RlUXVlcnkoYXJyYXlBc3NpZ25tZW50Tm9kZSksXG4gICAgICAgICAgcGFyYW1ldGVyc05vZGUgPSBhcnJheUFzc2lnbm1lbnRQYXJhbWV0ZXJzTm9kZSwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBhbm9ueW1vdXNQcm9jZWR1cmVQYXJhbWV0ZXJzTm9kZSA9IGFub255bW91c1Byb2NlZHVyZVBhcmFtZXRlcnNOb2RlUXVlcnkoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSksXG4gICAgICAgICAgcGFyYW1ldGVyc05vZGUgPSBhbm9ueW1vdXNQcm9jZWR1cmVQYXJhbWV0ZXJzTm9kZSwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlRGVjbGFyYXRpb25QYXJhbWV0ZXJzTm9kZSA9IHByb2NlZHVyZURlY2xhcmF0aW9uUGFyYW1ldGVyc05vZGVRdWVyeShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUpLFxuICAgICAgICAgIHBhcmFtZXRlcnNOb2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25QYXJhbWV0ZXJzTm9kZSwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICB9XG59KTtcblxuZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFBhcmFtZXRlcnMgfSA9IGRvbSxcbiAgICAgICAgYXJyYXkgPSBhcnJheUZyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21BcnJheShhcnJheSwgY29udGV4dCksXG4gICAgICAgIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycyhzdHJpbmcsIGFycmF5KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZnVuY3Rpb24gYXJyYXlGcm9tUGFyYW1ldGVyc05vZGUocGFyYW1ldGVyc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcGFyYW1ldGVyTm9kZXMgPSBwYXJhbWV0ZXJOb2Rlc1F1ZXJ5KHBhcmFtZXRlcnNOb2RlKSxcbiAgICAgICAgYXJyYXkgPSBwYXJhbWV0ZXJOb2Rlcy5tYXAoKHBhcmFtZXRlck5vZGUpID0+IHsgLy8vXG4gICAgICAgICAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGRvbSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgPSBQYXJhbWV0ZXIuZnJvbVBhcmFtZXRlck5vZGUocGFyYW1ldGVyTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21BcnJheShhcnJheSwgY29udGV4dCkge1xuICBjb25zdCBwYXJhbWV0ZXJzU3RyaW5nID0gYXJyYXkucmVkdWNlKChwYXJhbWV0ZXJzU3RyaW5nLCBwYXJhbWV0ZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSAocGFyYW1ldGVyICE9PSBudWxsKT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRTdHJpbmcoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOREVSU0NPUkU7XG5cbiAgICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gKHBhcmFtZXRlcnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJTdHJpbmcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtwYXJhbWV0ZXJzU3RyaW5nfSwgJHtwYXJhbWV0ZXJTdHJpbmd9YDtcblxuICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzU3RyaW5nO1xuICAgICAgICB9LCBudWxsKSxcbiAgICAgICAgc3RyaW5nID0gcGFyYW1ldGVyc1N0cmluZzsgIC8vL1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG4iXSwibmFtZXMiOlsicGFyYW1ldGVyTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJhcnJheUFzc2lnbm1lbnRQYXJhbWV0ZXJzTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwiYW5vbnltb3VzUHJvY2VkdXJlUGFyYW1ldGVyc05vZGVRdWVyeSIsInByb2NlZHVyZURlY2xhcmF0aW9uUGFyYW1ldGVyc05vZGVRdWVyeSIsImRvbUFzc2lnbmVkIiwiUGFyYW1ldGVycyIsInN0cmluZyIsImFycmF5IiwiZ2V0U3RyaW5nIiwiZ2V0QXJyYXkiLCJnZXRMZW5ndGgiLCJsZW5ndGgiLCJnZXRQYXJhbWV0ZXIiLCJpbmRleCIsInBhcmFtZXRlciIsImZvckVhY2hQYXJhbWV0ZXIiLCJjYWxsYmFjayIsImZvckVhY2giLCJtYXRjaEV4cHJlc3Npb25zIiwiZXhwcmVzc2lvbnMiLCJjb250ZXh0IiwiZXhwcmVzc2lvbnNTdHJpbmciLCJwYXJhbWV0ZXJzU3RyaW5nIiwidHJhY2UiLCJleHByZXNzaW9uc0xlbmd0aCIsInBhcmFtZXRlcnNMZW5ndGgiLCJtZXNzYWdlIiwiZXhjZXB0aW9uIiwiRXhjZXB0aW9uIiwiZnJvbU1lc3NhZ2UiLCJleHByZXNzaW9uIiwiZ2V0RXhwcmVzc2lvbiIsIm1hdGNoRXhwcmVzc2lvbiIsImRlYnVnIiwiZnJvbUFycmF5QXNzaWdubWVudE5vZGUiLCJhcnJheUFzc2lnbm1lbnROb2RlIiwiYXJyYXlBc3NpZ25tZW50UGFyYW1ldGVyc05vZGUiLCJwYXJhbWV0ZXJzTm9kZSIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlIiwiZnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUiLCJhbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwiYW5vbnltb3VzUHJvY2VkdXJlUGFyYW1ldGVyc05vZGUiLCJmcm9tUHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlIiwicHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlIiwicHJvY2VkdXJlRGVjbGFyYXRpb25QYXJhbWV0ZXJzTm9kZSIsIm5hbWUiLCJkb20iLCJhcnJheUZyb21QYXJhbWV0ZXJzTm9kZSIsInN0cmluZ0Zyb21BcnJheSIsInBhcmFtZXRlck5vZGVzIiwibWFwIiwicGFyYW1ldGVyTm9kZSIsIlBhcmFtZXRlciIsImZyb21QYXJhbWV0ZXJOb2RlIiwicmVkdWNlIiwicGFyYW1ldGVyU3RyaW5nIiwiVU5ERVJTQ09SRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7MkRBWmdCO2dFQUNNO3lCQUVLO3FCQUVXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0QyxJQUFNQSxzQkFBc0JDLElBQUFBLGlCQUFVLEVBQUMsMEJBQ2pDQyxxQ0FBcUNDLElBQUFBLGdCQUFTLEVBQUMsZ0NBQy9DQyx3Q0FBd0NELElBQUFBLGdCQUFTLEVBQUMsbUNBQ2xERSwwQ0FBMENGLElBQUFBLGdCQUFTLEVBQUM7SUFFMUQsV0FBZUcsSUFBQUEsZ0JBQVcsK0JBQUM7YUFBTUMsV0FDbkJDLE1BQU0sRUFBRUMsS0FBSztnQ0FETUY7UUFFN0IsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxLQUFLLEdBQUdBOzs7O1lBR2ZDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsTUFBTTtZQUNwQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsS0FBSztZQUNuQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxTQUFTLElBQUksQ0FBQ0osS0FBSyxDQUFDSSxNQUFNO2dCQUVoQyxPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLGFBQWFDLEtBQUs7Z0JBQ2hCLElBQU1DLFlBQVksSUFBSSxDQUFDUCxLQUFLLENBQUNNLE1BQU0sSUFBSTtnQkFF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
|
|
@@ -1,181 +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 _exception = /*#__PURE__*/ _interop_require_default(require("../../exception"));
|
|
13
|
-
var _query = require("../../utilities/query");
|
|
14
|
-
var _procedure = require("../procedure");
|
|
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 _AnonymousProcedure;
|
|
94
|
-
var typeTerminalNodeQuery = (0, _query.nodeQuery)("/anonymousProcedure/@type"), someAnonymousProcedureNodeQuery = (0, _query.nodeQuery)("/some/anonymousProcedure"), everyAnonymousProcedureNodeQuery = (0, _query.nodeQuery)("/every/anonymousProcedure"), reduceAnonymousProcedureNodeQuery = (0, _query.nodeQuery)("/reduce/anonymousProcedure");
|
|
95
|
-
var _default = (0, _dom.domAssigned)((_AnonymousProcedure = /*#__PURE__*/ function() {
|
|
96
|
-
function AnonymousProcedure(string, type, parameters, returnBlock) {
|
|
97
|
-
_class_call_check(this, AnonymousProcedure);
|
|
98
|
-
this.string = string;
|
|
99
|
-
this.type = type;
|
|
100
|
-
this.parameters = parameters;
|
|
101
|
-
this.returnBlock = returnBlock;
|
|
102
|
-
}
|
|
103
|
-
_create_class(AnonymousProcedure, [
|
|
104
|
-
{
|
|
105
|
-
key: "getString",
|
|
106
|
-
value: function getString() {
|
|
107
|
-
return this.string;
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
key: "getType",
|
|
112
|
-
value: function getType() {
|
|
113
|
-
return this.type;
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
key: "getParameters",
|
|
118
|
-
value: function getParameters() {
|
|
119
|
-
return this.paramters;
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
key: "getReturnBlock",
|
|
124
|
-
value: function getReturnBlock() {
|
|
125
|
-
return this.returnBlock;
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
key: "call",
|
|
130
|
-
value: function call(expressions, context) {
|
|
131
|
-
var anonymousProcedureString = this.string; ///
|
|
132
|
-
context.trace("Calling the '".concat(anonymousProcedureString, "' anonymous procedure..."));
|
|
133
|
-
this.parameters.matchExpressions(expressions, context);
|
|
134
|
-
var variables = (0, _procedure.variablesFromExpressionsAndParameters)(expressions, this.parameters, context), expression = this.returnBlock.evaluate(variables, context), expressionType = expression.getType();
|
|
135
|
-
if (this.type !== expressionType) {
|
|
136
|
-
var expressionString = expression.asString(context), message = "The ".concat(expressionString, " expression's '").concat(expressionType, "' type and the '").concat(anonymousProcedureString, "' anonymous procedure's '").concat(this.type, "' type do not match."), exception = _exception.default.fromMessage(message);
|
|
137
|
-
throw exception;
|
|
138
|
-
}
|
|
139
|
-
context.debug("...called the '".concat(anonymousProcedureString, "' anonymous procedure."));
|
|
140
|
-
return expression;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
], [
|
|
144
|
-
{
|
|
145
|
-
key: "fromSomeNode",
|
|
146
|
-
value: function fromSomeNode(someNode, context) {
|
|
147
|
-
var someAnonymousProcedureNode = someAnonymousProcedureNodeQuery(someNode), anonymousProcedureNode = someAnonymousProcedureNode, anonymousProcedure = anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context);
|
|
148
|
-
return anonymousProcedure;
|
|
149
|
-
}
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
key: "fromEveryNode",
|
|
153
|
-
value: function fromEveryNode(everyNode, context) {
|
|
154
|
-
var everyAnonymousProcedureNode = everyAnonymousProcedureNodeQuery(everyNode), anonymousProcedureNode = everyAnonymousProcedureNode, anonymousProcedure = anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context);
|
|
155
|
-
return anonymousProcedure;
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
key: "fromReduceNode",
|
|
160
|
-
value: function fromReduceNode(reduceNode, context) {
|
|
161
|
-
var reduceAnonymousProcedureNode = reduceAnonymousProcedureNodeQuery(reduceNode), anonymousProcedureNode = reduceAnonymousProcedureNode, anonymousProcedure = anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context);
|
|
162
|
-
return anonymousProcedure;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
]);
|
|
166
|
-
return AnonymousProcedure;
|
|
167
|
-
}(), _define_property(_AnonymousProcedure, "name", "AnonymousProcedure"), _AnonymousProcedure));
|
|
168
|
-
function anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context) {
|
|
169
|
-
var Parameters = _dom.default.Parameters, ReturnBlock = _dom.default.ReturnBlock, AnonymousProcedure = _dom.default.AnonymousProcedure, returnBlock = ReturnBlock.fromAnonymousProcedureNode(anonymousProcedureNode, context), parameters = Parameters.fromAnonymousProcedureNode(anonymousProcedureNode, context), type = typeFromProcedureAnonymousProcedureNode(anonymousProcedureNode, context), string = stringFromTypeParametersAndReturnBlock(type, parameters, returnBlock, context), anonymousProcedure = new AnonymousProcedure(string, type, parameters, returnBlock);
|
|
170
|
-
return anonymousProcedure;
|
|
171
|
-
}
|
|
172
|
-
function stringFromTypeParametersAndReturnBlock(type, parameters, returnBlock, context) {
|
|
173
|
-
var typeString = type, parametersString = parameters.getString(), returnBlockString = returnBlock.getString(), string = "".concat(typeString, " (").concat(parametersString, ") ").concat(returnBlockString);
|
|
174
|
-
return string;
|
|
175
|
-
}
|
|
176
|
-
function typeFromProcedureAnonymousProcedureNode(anonymousProcedureNode, context) {
|
|
177
|
-
var typeTerminalNode = typeTerminalNodeQuery(anonymousProcedureNode), typeTerminalNodeContent = typeTerminalNode.getContent(), type = typeTerminalNodeContent; ///
|
|
178
|
-
return type;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vcHJvY2VkdXJlL2Fub255bW91cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vLi4vZG9tXCI7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi8uLi9leGNlcHRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vLi4vZG9tXCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tRXhwcmVzc2lvbnNBbmRQYXJhbWV0ZXJzIH0gZnJvbSBcIi4uL3Byb2NlZHVyZVwiO1xuXG5jb25zdCB0eXBlVGVybWluYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYW5vbnltb3VzUHJvY2VkdXJlL0B0eXBlXCIpLFxuICAgICAgc29tZUFub255bW91c1Byb2NlZHVyZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zb21lL2Fub255bW91c1Byb2NlZHVyZVwiKSxcbiAgICAgIGV2ZXJ5QW5vbnltb3VzUHJvY2VkdXJlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2V2ZXJ5L2Fub255bW91c1Byb2NlZHVyZVwiKSxcbiAgICAgIHJlZHVjZUFub255bW91c1Byb2NlZHVyZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9yZWR1Y2UvYW5vbnltb3VzUHJvY2VkdXJlXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBkb21Bc3NpZ25lZChjbGFzcyBBbm9ueW1vdXNQcm9jZWR1cmUge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIHR5cGUsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSB7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICAgIHRoaXMucmV0dXJuQmxvY2sgPSByZXR1cm5CbG9jaztcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRQYXJhbWV0ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmFtdGVycztcbiAgfVxuXG4gIGdldFJldHVybkJsb2NrKCkge1xuICAgIHJldHVybiB0aGlzLnJldHVybkJsb2NrO1xuICB9XG5cbiAgY2FsbChleHByZXNzaW9ucywgY29udGV4dCkge1xuICAgIGNvbnN0IGFub255bW91c1Byb2NlZHVyZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYENhbGxpbmcgdGhlICcke2Fub255bW91c1Byb2NlZHVyZVN0cmluZ30nIGFub255bW91cyBwcm9jZWR1cmUuLi5gKTtcblxuICAgIHRoaXMucGFyYW1ldGVycy5tYXRjaEV4cHJlc3Npb25zKGV4cHJlc3Npb25zLCBjb250ZXh0KTtcblxuICAgIGNvbnN0IHZhcmlhYmxlcyA9IHZhcmlhYmxlc0Zyb21FeHByZXNzaW9uc0FuZFBhcmFtZXRlcnMoZXhwcmVzc2lvbnMsIHRoaXMucGFyYW1ldGVycywgY29udGV4dCksXG4gICAgICAgICAgZXhwcmVzc2lvbiA9IHRoaXMucmV0dXJuQmxvY2suZXZhbHVhdGUodmFyaWFibGVzLCBjb250ZXh0KSxcbiAgICAgICAgICBleHByZXNzaW9uVHlwZSA9IGV4cHJlc3Npb24uZ2V0VHlwZSgpO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gZXhwcmVzc2lvblR5cGUpIHtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNzaW9uLmFzU3RyaW5nKGNvbnRleHQpLFxuICAgICAgICAgICAgbWVzc2FnZSA9IGBUaGUgJHtleHByZXNzaW9uU3RyaW5nfSBleHByZXNzaW9uJ3MgJyR7ZXhwcmVzc2lvblR5cGV9JyB0eXBlIGFuZCB0aGUgJyR7YW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nfScgYW5vbnltb3VzIHByb2NlZHVyZSdzICcke3RoaXMudHlwZX0nIHR5cGUgIGRvIG5vdCBtYXRjaC5gLFxuICAgICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uLmZyb21NZXNzYWdlKG1lc3NhZ2UpO1xuXG4gICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uY2FsbGVkIHRoZSAnJHthbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmd9JyBhbm9ueW1vdXMgcHJvY2VkdXJlLmApO1xuXG4gICAgcmV0dXJuIGV4cHJlc3Npb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQW5vbnltb3VzUHJvY2VkdXJlXCI7XG5cbiAgc3RhdGljIGZyb21Tb21lTm9kZShzb21lTm9kZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHNvbWVBbm9ueW1vdXNQcm9jZWR1cmVOb2RlID0gc29tZUFub255bW91c1Byb2NlZHVyZU5vZGVRdWVyeShzb21lTm9kZSksXG4gICAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlTm9kZSA9IHNvbWVBbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCAgLy8vXG4gICAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xuICB9XG5cbiAgc3RhdGljIGZyb21FdmVyeU5vZGUoZXZlcnlOb2RlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgZXZlcnlBbm9ueW1vdXNQcm9jZWR1cmVOb2RlID0gZXZlcnlBbm9ueW1vdXNQcm9jZWR1cmVOb2RlUXVlcnkoZXZlcnlOb2RlKSxcbiAgICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlID0gZXZlcnlBbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCAgLy8vXG4gICAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCByZWR1Y2VBbm9ueW1vdXNQcm9jZWR1cmVOb2RlID0gcmVkdWNlQW5vbnltb3VzUHJvY2VkdXJlTm9kZVF1ZXJ5KHJlZHVjZU5vZGUpLFxuICAgICAgICAgIGFub255bW91c1Byb2NlZHVyZU5vZGUgPSByZWR1Y2VBbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCAgLy8vXG4gICAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xuICB9XG59KTtcblxuZnVuY3Rpb24gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFBhcmFtZXRlcnMsIFJldHVybkJsb2NrLCBBbm9ueW1vdXNQcm9jZWR1cmUgfSA9IGRvbSxcbiAgICAgICAgcmV0dXJuQmxvY2sgPSBSZXR1cm5CbG9jay5mcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcGFyYW1ldGVycyA9IFBhcmFtZXRlcnMuZnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVByb2NlZHVyZUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21UeXBlUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrKHR5cGUsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrLCBjb250ZXh0KSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gbmV3IEFub255bW91c1Byb2NlZHVyZShzdHJpbmcsIHR5cGUsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKTtcblxuICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jaywgY29udGV4dCkge1xuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZSwgIC8vL1xuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVycy5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmV0dXJuQmxvY2tTdHJpbmcgPSByZXR1cm5CbG9jay5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RyaW5nID0gYCR7dHlwZVN0cmluZ30gKCR7cGFyYW1ldGVyc1N0cmluZ30pICR7cmV0dXJuQmxvY2tTdHJpbmd9YDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiB0eXBlRnJvbVByb2NlZHVyZUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlVGVybWluYWxOb2RlID0gdHlwZVRlcm1pbmFsTm9kZVF1ZXJ5KGFub255bW91c1Byb2NlZHVyZU5vZGUpLFxuICAgICAgICB0eXBlVGVybWluYWxOb2RlQ29udGVudCA9IHR5cGVUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICB0eXBlID0gdHlwZVRlcm1pbmFsTm9kZUNvbnRlbnQ7IC8vL1xuXG4gIHJldHVybiB0eXBlO1xufVxuIl0sIm5hbWVzIjpbInR5cGVUZXJtaW5hbE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInNvbWVBbm9ueW1vdXNQcm9jZWR1cmVOb2RlUXVlcnkiLCJldmVyeUFub255bW91c1Byb2NlZHVyZU5vZGVRdWVyeSIsInJlZHVjZUFub255bW91c1Byb2NlZHVyZU5vZGVRdWVyeSIsImRvbUFzc2lnbmVkIiwiQW5vbnltb3VzUHJvY2VkdXJlIiwic3RyaW5nIiwidHlwZSIsInBhcmFtZXRlcnMiLCJyZXR1cm5CbG9jayIsImdldFN0cmluZyIsImdldFR5cGUiLCJnZXRQYXJhbWV0ZXJzIiwicGFyYW10ZXJzIiwiZ2V0UmV0dXJuQmxvY2siLCJjYWxsIiwiZXhwcmVzc2lvbnMiLCJjb250ZXh0IiwiYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nIiwidHJhY2UiLCJtYXRjaEV4cHJlc3Npb25zIiwidmFyaWFibGVzIiwidmFyaWFibGVzRnJvbUV4cHJlc3Npb25zQW5kUGFyYW1ldGVycyIsImV4cHJlc3Npb24iLCJldmFsdWF0ZSIsImV4cHJlc3Npb25UeXBlIiwiZXhwcmVzc2lvblN0cmluZyIsImFzU3RyaW5nIiwibWVzc2FnZSIsImV4Y2VwdGlvbiIsIkV4Y2VwdGlvbiIsImZyb21NZXNzYWdlIiwiZGVidWciLCJmcm9tU29tZU5vZGUiLCJzb21lTm9kZSIsInNvbWVBbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwiYW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsImFub255bW91c1Byb2NlZHVyZSIsImFub255bW91c1Byb2NlZHVyZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwiZnJvbUV2ZXJ5Tm9kZSIsImV2ZXJ5Tm9kZSIsImV2ZXJ5QW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsImZyb21SZWR1Y2VOb2RlIiwicmVkdWNlTm9kZSIsInJlZHVjZUFub255bW91c1Byb2NlZHVyZU5vZGUiLCJuYW1lIiwiUGFyYW1ldGVycyIsImRvbSIsIlJldHVybkJsb2NrIiwiZnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUiLCJ0eXBlRnJvbVByb2NlZHVyZUFub255bW91c1Byb2NlZHVyZU5vZGUiLCJzdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayIsInR5cGVTdHJpbmciLCJwYXJhbWV0ZXJzU3RyaW5nIiwicmV0dXJuQmxvY2tTdHJpbmciLCJ0eXBlVGVybWluYWxOb2RlIiwidHlwZVRlcm1pbmFsTm9kZUNvbnRlbnQiLCJnZXRDb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OzsyREFaZ0I7Z0VBQ007cUJBRUk7eUJBRTRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0RCxJQUFNQSx3QkFBd0JDLElBQUFBLGdCQUFTLEVBQUMsOEJBQ2xDQyxrQ0FBa0NELElBQUFBLGdCQUFTLEVBQUMsNkJBQzVDRSxtQ0FBbUNGLElBQUFBLGdCQUFTLEVBQUMsOEJBQzdDRyxvQ0FBb0NILElBQUFBLGdCQUFTLEVBQUM7SUFFcEQsV0FBZUksSUFBQUEsZ0JBQVcsdUNBQUM7YUFBTUMsbUJBQ25CQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxXQUFXO2dDQURsQko7UUFFN0IsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTs7OztZQUdyQkMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixNQUFNO1lBQ3BCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixJQUFJO1lBQ2xCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDQyxTQUFTO1lBQ3ZCOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDTCxXQUFXO1lB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
|