occam-verify-cli 0.0.535 → 0.0.536

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.
@@ -1,22 +1,27 @@
1
1
  "use strict";
2
2
 
3
- import Equality from "../equality";
3
+ import Verifier from "../verifier";
4
4
  import Variable from "../variable";
5
- import Assignment from "../assignment";
5
+ import Equality from "../equality";
6
6
  import verifyTerm from "../verify/term";
7
- import statementVerifier from "../verifier/statement";
8
7
  import equalityCombinator from "../ocmbinator/equality";
9
8
  import bracketedCombinator from "../ocmbinator/bracketed";
10
9
  import verifyTypeAssertion from "../verify/assertion/type";
11
10
 
12
- import { first } from "../utilities/array";
13
- import { nodeQuery } from "../utilities/query";
14
- import { nodeAsString } from "../utilities/string";
11
+ import { objectType } from "../type";
12
+ import { first, second } from "../utilities/array";
13
+ import { OBJECT_TYPE_NAME } from "../typeNames";
14
+ import { STATEMENT_META_TYPE } from "../metaTypes";
15
15
  import { verifyTermAsVariable } from "../verify/term";
16
+ import { nodeQuery, typeNameFromTypeNode } from "../utilities/query";
17
+ import { ARGUMENT_RULE_NAME, META_ARGUMENT_RULE_NAME } from "../ruleNames";
16
18
 
17
- const leftTermNodeQuery = nodeQuery("/statement/argument[0]/term!"),
18
- rightTermNodeQuery = nodeQuery("/statement/argument[1]/term!"),
19
- typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!");
19
+ const termNodeQuery = nodeQuery("/argument/term!"),
20
+ typeNodeQuery = nodeQuery("/argument/type!"),
21
+ metaTypeNodeQuery = nodeQuery("/metaArgument/metaType!"),
22
+ statementNodeQuery = nodeQuery("/metaArgument/statement!"),
23
+ typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
24
+ metaTypeTerminalNodeQuery = nodeQuery("/metaType/@meta-type");
20
25
 
21
26
  export default function verifyStatement(statementNode, assignments, derived, context) {
22
27
  let statementVerified = false;
@@ -34,7 +39,7 @@ export default function verifyStatement(statementNode, assignments, derived, con
34
39
  }
35
40
 
36
41
  if (!statementVerified) {
37
- const statementVerifiedAsEquality = verifyStatementAsEquality(statementNode, assignments, derived, context);
42
+ const statementVerifiedAsEquality = verifyStatementAsEquality(statementNode, derived, context);
38
43
 
39
44
  statementVerified = statementVerifiedAsEquality; //
40
45
  }
@@ -42,6 +47,121 @@ export default function verifyStatement(statementNode, assignments, derived, con
42
47
  return statementVerified;
43
48
  }
44
49
 
50
+ class StatementVerifier extends Verifier {
51
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, context) {
52
+ let nonTerminalNodeVerified = false;
53
+
54
+ const nonTerminalNode = nonTerminalNodeA, ///
55
+ combinatorNonTerminalNode = nonTerminalNodeB; ///
56
+
57
+ const ruleName = nonTerminalNode.getRuleName(), ///
58
+ combinatorRuleName = combinatorNonTerminalNode.getRuleName(); ///
59
+
60
+ if (ruleName === combinatorRuleName) {
61
+ switch (ruleName) {
62
+ case ARGUMENT_RULE_NAME: {
63
+ const argumentNode = nonTerminalNode, ///
64
+ combinatorArgumentNode = combinatorNonTerminalNode, ///
65
+ argumentNodeVerified = this.verifyArgumentNode(argumentNode, combinatorArgumentNode, context);
66
+
67
+ nonTerminalNodeVerified = argumentNodeVerified; ///
68
+
69
+ break;
70
+ }
71
+
72
+ case META_ARGUMENT_RULE_NAME: {
73
+ const metaArgumentNode = nonTerminalNode, ///
74
+ combinatorMetaargumentNode = combinatorNonTerminalNode, ///
75
+ metaArgumentNodeVerified = this.verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, context);
76
+
77
+ nonTerminalNodeVerified = metaArgumentNodeVerified; ///
78
+
79
+ break;
80
+ }
81
+
82
+ default: {
83
+ const childNodes = nonTerminalNode.getChildNodes(),
84
+ combinatorChildNodes = combinatorNonTerminalNode.getChildNodes(),
85
+ nodesA = childNodes, ///
86
+ nodesB = combinatorChildNodes, ///
87
+ nodesVerified = this.verifyNodes(nodesA, nodesB, context);
88
+
89
+ nonTerminalNodeVerified = nodesVerified; ///
90
+
91
+ break;
92
+ }
93
+ }
94
+ }
95
+
96
+ return nonTerminalNodeVerified;
97
+ }
98
+
99
+ verifyArgumentNode(argumentNode, combinatorArgumentNode, context) {
100
+ let argumentNodeVerified = false;
101
+
102
+ const termNode = termNodeQuery(argumentNode);
103
+
104
+ if (termNode === null) {
105
+ const argumentString = context.nodeAsString(argumentNode);
106
+
107
+ context.error(`The ${argumentString} argument should be a term, not a type`, argumentNode);
108
+ } else {
109
+ const types = [],
110
+ termVerified = verifyTerm(termNode, types, context);
111
+
112
+ if (termVerified) {
113
+ const firstType = first(types),
114
+ termType = firstType, ///
115
+ typeNode = typeNodeQuery(combinatorArgumentNode),
116
+ typeName = typeNameFromTypeNode(typeNode),
117
+ type = (typeName === OBJECT_TYPE_NAME) ?
118
+ objectType : ///
119
+ context.findTypeByTypeName(typeName),
120
+ statementTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
121
+
122
+ if (statementTypeEqualToOrSubTypeOfType) {
123
+ argumentNodeVerified = true;
124
+ }
125
+ }
126
+ }
127
+
128
+ return argumentNodeVerified;
129
+ }
130
+
131
+ verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, context) {
132
+ let metaArgumentNodeVerified = false;
133
+
134
+ const statementNode = statementNodeQuery(metaArgumentNode),
135
+ combinatorMetaTYpeNode = metaTypeNodeQuery(combinatorMetaargumentNode);
136
+
137
+ if (statementNode === null) {
138
+ const metaArgumentString = context.nodeAsString(metaArgumentNode);
139
+
140
+ context.error(`Expected a statement but got a '${metaArgumentString}' meta-type.`, metaArgumentNode);
141
+ } else {
142
+ if (combinatorMetaTYpeNode === null) {
143
+ const combinatorMetaargumentString = context.nodeAsString(combinatorMetaargumentNode);
144
+
145
+ context.error(`Expected a meta-type but got a '${combinatorMetaargumentString}' statement.`, metaArgumentNode);
146
+ } else {
147
+ const combinatorMetaTypeTerminalNode = metaTypeTerminalNodeQuery(combinatorMetaTYpeNode),
148
+ content = combinatorMetaTypeTerminalNode.getContent(),
149
+ contentStatementMetaType = (content === STATEMENT_META_TYPE);
150
+
151
+ if (!contentStatementMetaType) {
152
+ context.error(`Expected the meta-type to be 'Statement' but got '${content}'.`, metaArgumentNode);
153
+ } else {
154
+ metaArgumentNodeVerified = true;
155
+ }
156
+ }
157
+ }
158
+
159
+ return metaArgumentNodeVerified;
160
+ }
161
+ }
162
+
163
+ const statementVerifier = new StatementVerifier();
164
+
45
165
  function verifyStatementAgainstCombinators(statementNode, context) {
46
166
  let statementVerifiedAgainstCombinators = false;
47
167
 
@@ -71,8 +191,7 @@ function verifyStatementAgainstCombinator(statementNode, combinator, context) {
71
191
  const combinatorStatementNode = combinator.getStatementNode(),
72
192
  nonTerminalNodeA = statementNode, ///
73
193
  nonTerminalNodeB = combinatorStatementNode, ///
74
- substitutions = null,
75
- nodeVerified = statementVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, context),
194
+ nodeVerified = statementVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, context),
76
195
  statementVerifiedAgainstCombinator = nodeVerified; ///
77
196
 
78
197
  return statementVerifiedAgainstCombinator;
@@ -92,66 +211,129 @@ function verifyStatementAsTypeAssertion(statementNode, assignments, derived, con
92
211
  return statementVerifiedAsTypeAssertion;
93
212
  }
94
213
 
95
- function verifyStatementAsEquality(statementNode, assignments, derived, context) {
214
+ function verifyStatementAsEquality(statementNode, derived, context) {
96
215
  let statementVerifiedAsEquality = false;
97
216
 
98
- const statementString = context.nodeAsString(statementNode);
99
-
100
217
  const combinator = equalityCombinator, ///
101
218
  statementVerifiedAgainstCombinator = verifyStatementAgainstCombinator(statementNode, combinator, context);
102
219
 
103
220
  if (statementVerifiedAgainstCombinator) {
104
- const leftTermNode = leftTermNodeQuery(statementNode),
105
- rightTermNode = rightTermNodeQuery(statementNode);
221
+ const equality = Equality.fromStatementNode(statementNode);
106
222
 
107
223
  if (derived) {
108
- const equality = Equality.fromLeftTermNodeAndRightTermNode(leftTermNode, rightTermNode),
109
- equalityEquates = equality.equate(context);
224
+ const equalities = context.getEqualities(),
225
+ equalityVerified = equality.verify(equalities, context);
110
226
 
111
- statementVerifiedAsEquality = equalityEquates; ///
227
+ statementVerifiedAsEquality = equalityVerified; ///
112
228
  } else {
113
- const types = [],
114
- variables = [],
115
- leftTermVerifiedAsVariable = verifyTermAsVariable(leftTermNode, variables, context);
229
+ const variables = [],
230
+ leftTermNode = equality.getLeftTermNode(),
231
+ rightTermNode = equality.getRightTermNode(),
232
+ leftTermVerifiedAsVariable = verifyTermAsVariable(leftTermNode, variables, context),
233
+ rightTermVerifiedAsVariable = verifyTermAsVariable(rightTermNode, variables, context);
234
+
235
+ if (leftTermVerifiedAsVariable && rightTermVerifiedAsVariable) {
236
+ const firstVariable = first(variables),
237
+ secondVariable = second(variables),
238
+ leftVariable = firstVariable, ///
239
+ rightVariable = secondVariable, ///
240
+ leftVariableName = leftVariable.getName(),
241
+ leftVariableType = leftVariable.getType(),
242
+ rightVariableName = rightVariable.getName(),
243
+ rightVariableType = rightVariable.getType(),
244
+ leftVariableTypeEqualToOrSubTypeOfOfSuperTypeOfRightVariableType = leftVariableType.isEqualToOrSubTypeOfOfSuperTypeOf(rightVariableType);
245
+
246
+ if (!leftVariableTypeEqualToOrSubTypeOfOfSuperTypeOfRightVariableType) {
247
+ const leftVariableTypeName = leftVariableType.getName(),
248
+ rightVariableTypeName = rightVariableType.getName();
249
+
250
+ context.error(`The left '${leftVariableName}' variable's '${leftVariableTypeName}' type is not equal to, a sub-type of or a super-type of the right '${rightVariableName}' variable's '${rightVariableTypeName}' type.`, statementNode);
251
+ } else {
252
+ const leftVariableTypeSuperTypeOfRightVariableType = leftVariableType.isSuperTypeOf(rightVariableType),
253
+ rightVariableTypeSuperTypeOfLeftVariableType = rightVariableType.isSuperTypeOf(leftVariableType);
254
+
255
+ if (leftVariableTypeSuperTypeOfRightVariableType) {
256
+ const type = rightVariableType, ///
257
+ name = leftVariableName, ///
258
+ variable = Variable.fromTypeAndName(type, name);
259
+
260
+ context.addVariable(variable);
261
+ }
262
+
263
+ if (rightVariableTypeSuperTypeOfLeftVariableType) {
264
+ const type = leftVariableType, ///
265
+ name = rightVariableName, ///
266
+ variable = Variable.fromTypeAndName(type, name);
267
+
268
+ context.addVariable(variable);
269
+ }
270
+
271
+ statementVerifiedAsEquality = true;
272
+ }
273
+ } else if (leftTermVerifiedAsVariable) {
274
+ const types = [];
116
275
 
117
- if (leftTermVerifiedAsVariable) {
118
276
  verifyTerm(rightTermNode, types, context);
119
277
 
120
- const firstVariable = first(variables),
278
+ const firstType = first(types),
279
+ firstVariable = first(variables),
121
280
  leftVariable = firstVariable, ///
122
- firstType = first(types),
123
- rightTermType = firstType, ///
281
+ rightTermType = firstType, ///
124
282
  leftVariableType = leftVariable.getType(),
125
- leftVariableName = leftVariable.getName(),
126
283
  leftVariableTypeEqualToOrSuperTypeOfRightTermType = leftVariableType.isEqualToOrSuperTypeOf(rightTermType);
127
284
 
128
285
  if (!leftVariableTypeEqualToOrSuperTypeOfRightTermType) {
129
- const rightTermString = nodeAsString(rightTermNode),
286
+ const rightTermString = context.nodeAsString(rightTermNode),
287
+ leftVariableName = leftVariable.getName(),
130
288
  rightTermTypeName = rightTermType.getName(),
131
289
  leftVariableTypeName = leftVariableType.getName();
132
290
 
133
291
  context.error(`The left '${leftVariableName}' variable's '${leftVariableTypeName}' type is not equal to or a super-type of the right '${rightTermString}' term's '${rightTermTypeName}' type.`, statementNode);
134
292
  } else {
135
- const type = leftVariableType, ///
136
- name = leftVariableName, ///
137
- termNode = rightTermNode, ///
138
- variable = Variable.fromTypeNameAndTermNode(type, name, termNode),
139
- assignment = Assignment.fromVariable(variable);
293
+ statementVerifiedAsEquality = true;
294
+ }
295
+ } else if (rightTermVerifiedAsVariable) {
296
+ const types = [];
297
+
298
+ verifyTerm(leftTermNode, types, context);
299
+
300
+ const firstType = first(types),
301
+ firstVariable = first(variables),
302
+ leftTermType = firstType, ///
303
+ rightVariable = firstVariable, ///
304
+ rightVariableType = rightVariable.getType(),
305
+ rightVariableTypeEqualToOrSuperTypeOfRightTermType = rightVariableType.isEqualToOrSuperTypeOf(leftTermType);
140
306
 
141
- assignments.push(assignment);
307
+ if (!rightVariableTypeEqualToOrSuperTypeOfRightTermType) {
308
+ const leftTermString = context.nodeAsString(leftTermNode),
309
+ rightVariableName = rightVariable.getName(),
310
+ leftTermTypeName = leftTermType.getName(),
311
+ rightVariableTypeName = rightVariableType.getName();
142
312
 
313
+ context.error(`The right '${rightVariableName}' variable's '${rightVariableTypeName}' type is not equal to or a super-type of the left '${leftTermString}' term's '${leftTermTypeName}' type.`, statementNode);
314
+ } else {
143
315
  statementVerifiedAsEquality = true;
144
316
  }
145
317
  } else {
146
- const rightTermVerifiedAsVariable = verifyTermAsVariable(rightTermNode, variables, context);
318
+ const types = [];
147
319
 
148
- if (rightTermVerifiedAsVariable) {
149
- const firstVariable = first(variables),
150
- rightVariable = firstVariable, ///
151
- leftTermString = nodeAsString(leftTermNode),
152
- rightVariableName = rightVariable.getName();
320
+ verifyTerm(leftTermNode, types, context);
153
321
 
154
- context.error(`The left '${leftTermString}' term cannot be equated with the right '${rightVariableName}' variable.`, statementNode);
322
+ verifyTerm(rightTermNode, types, context);
323
+
324
+ const firstType = first(types),
325
+ secondType = second(types),
326
+ leftTermType = firstType, ///
327
+ rightTermType = secondType, ///
328
+ leftTermTypeEqualToOrSubTypeOfOfSuperTypeOf = leftTermType.isEqualToOrSubTypeOfOfSuperTypeOf(rightTermType);
329
+
330
+ if (!leftTermTypeEqualToOrSubTypeOfOfSuperTypeOf) {
331
+ const leftTermString = context.nodeAsString(leftTermNode),
332
+ rightTermString = context.nodeAsString(rightTermNode),
333
+ leftTermTypeName = leftTermType.getName(),
334
+ rightTermTypeName = rightTermType.getName();
335
+
336
+ context.error(`The left '${leftTermString}' term's '${leftTermTypeName}' type is not equal to, a sub-type of or a super-type of the right '${rightTermString}' term's '${rightTermTypeName}' type.`, statementNode);
155
337
  } else {
156
338
  statementVerifiedAsEquality = true;
157
339
  }
@@ -160,6 +342,8 @@ function verifyStatementAsEquality(statementNode, assignments, derived, context)
160
342
  }
161
343
 
162
344
  if (statementVerifiedAsEquality) {
345
+ const statementString = context.nodeAsString(statementNode);
346
+
163
347
  context.info(`Verified the '${statementString}' statement as an equality.`, statementNode);
164
348
  }
165
349
 
@@ -1,199 +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 _verifier = /*#__PURE__*/ _interopRequireDefault(require("../verifier"));
12
- var _term = /*#__PURE__*/ _interopRequireDefault(require("../verify/term"));
13
- var _array = require("../utilities/array");
14
- var _type = require("../type");
15
- var _typeNames = require("../typeNames");
16
- var _metaTypes = require("../metaTypes");
17
- var _query = require("../utilities/query");
18
- var _ruleNames = require("../ruleNames");
19
- function _assertThisInitialized(self) {
20
- if (self === void 0) {
21
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
22
- }
23
- return self;
24
- }
25
- function _classCallCheck(instance, Constructor) {
26
- if (!(instance instanceof Constructor)) {
27
- throw new TypeError("Cannot call a class as a function");
28
- }
29
- }
30
- function _defineProperties(target, props) {
31
- for(var i = 0; i < props.length; i++){
32
- var descriptor = props[i];
33
- descriptor.enumerable = descriptor.enumerable || false;
34
- descriptor.configurable = true;
35
- if ("value" in descriptor) descriptor.writable = true;
36
- Object.defineProperty(target, descriptor.key, descriptor);
37
- }
38
- }
39
- function _createClass(Constructor, protoProps, staticProps) {
40
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
41
- if (staticProps) _defineProperties(Constructor, staticProps);
42
- return Constructor;
43
- }
44
- function _getPrototypeOf(o) {
45
- _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
46
- return o.__proto__ || Object.getPrototypeOf(o);
47
- };
48
- return _getPrototypeOf(o);
49
- }
50
- function _inherits(subClass, superClass) {
51
- if (typeof superClass !== "function" && superClass !== null) {
52
- throw new TypeError("Super expression must either be null or a function");
53
- }
54
- subClass.prototype = Object.create(superClass && superClass.prototype, {
55
- constructor: {
56
- value: subClass,
57
- writable: true,
58
- configurable: true
59
- }
60
- });
61
- if (superClass) _setPrototypeOf(subClass, superClass);
62
- }
63
- function _interopRequireDefault(obj) {
64
- return obj && obj.__esModule ? obj : {
65
- default: obj
66
- };
67
- }
68
- function _possibleConstructorReturn(self, call) {
69
- if (call && (_typeof(call) === "object" || typeof call === "function")) {
70
- return call;
71
- }
72
- return _assertThisInitialized(self);
73
- }
74
- function _setPrototypeOf(o, p) {
75
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
76
- o.__proto__ = p;
77
- return o;
78
- };
79
- return _setPrototypeOf(o, p);
80
- }
81
- var _typeof = function(obj) {
82
- "@swc/helpers - typeof";
83
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
84
- };
85
- function _isNativeReflectConstruct() {
86
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
87
- if (Reflect.construct.sham) return false;
88
- if (typeof Proxy === "function") return true;
89
- try {
90
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
91
- return true;
92
- } catch (e) {
93
- return false;
94
- }
95
- }
96
- function _createSuper(Derived) {
97
- var hasNativeReflectConstruct = _isNativeReflectConstruct();
98
- return function _createSuperInternal() {
99
- var Super = _getPrototypeOf(Derived), result;
100
- if (hasNativeReflectConstruct) {
101
- var NewTarget = _getPrototypeOf(this).constructor;
102
- result = Reflect.construct(Super, arguments, NewTarget);
103
- } else {
104
- result = Super.apply(this, arguments);
105
- }
106
- return _possibleConstructorReturn(this, result);
107
- };
108
- }
109
- var termNodeQuery = (0, _query.nodeQuery)("/argument/term!"), typeNodeQuery = (0, _query.nodeQuery)("/argument/type!"), metaTypeNodeQuery = (0, _query.nodeQuery)("/metaArgument/metaType!"), statementNodeQuery = (0, _query.nodeQuery)("/metaArgument/statement!"), metaTypeTerminalNodeQuery = (0, _query.nodeQuery)("/metaType/@meta-type");
110
- var StatementVerifier = /*#__PURE__*/ function(Verifier) {
111
- _inherits(StatementVerifier, Verifier);
112
- var _super = _createSuper(StatementVerifier);
113
- function StatementVerifier() {
114
- _classCallCheck(this, StatementVerifier);
115
- return _super.apply(this, arguments);
116
- }
117
- _createClass(StatementVerifier, [
118
- {
119
- key: "verifyNonTerminalNode",
120
- value: function verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, context) {
121
- var nonTerminalNodeVerified = false;
122
- var nonTerminalNode = nonTerminalNodeA, combinatorNonTerminalNode = nonTerminalNodeB; ///
123
- var ruleName = nonTerminalNode.getRuleName(), combinatorRuleName = combinatorNonTerminalNode.getRuleName(); ///
124
- if (ruleName === combinatorRuleName) {
125
- switch(ruleName){
126
- case _ruleNames.ARGUMENT_RULE_NAME:
127
- {
128
- var argumentNode = nonTerminalNode, combinatorArgumentNode = combinatorNonTerminalNode, argumentNodeVerified = this.verifyArgumentNode(argumentNode, combinatorArgumentNode, substitutions, context);
129
- nonTerminalNodeVerified = argumentNodeVerified; ///
130
- break;
131
- }
132
- case _ruleNames.META_ARGUMENT_RULE_NAME:
133
- {
134
- var metaArgumentNode = nonTerminalNode, combinatorMetaargumentNode = combinatorNonTerminalNode, metaArgumentNodeVerified = this.verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, substitutions, context);
135
- nonTerminalNodeVerified = metaArgumentNodeVerified; ///
136
- break;
137
- }
138
- default:
139
- {
140
- var childNodes = nonTerminalNode.getChildNodes(), combinatorChildNodes = combinatorNonTerminalNode.getChildNodes(), nodesA = childNodes, nodesB = combinatorChildNodes, nodesVerified = this.verifyNodes(nodesA, nodesB, substitutions, context);
141
- nonTerminalNodeVerified = nodesVerified; ///
142
- break;
143
- }
144
- }
145
- }
146
- return nonTerminalNodeVerified;
147
- }
148
- },
149
- {
150
- key: "verifyArgumentNode",
151
- value: function verifyArgumentNode(argumentNode, combinatorArgumentNode, substitutions, context) {
152
- var argumentNodeVerified = false;
153
- var termNode = termNodeQuery(argumentNode);
154
- if (termNode === null) {
155
- var argumentString = context.nodeAsString(argumentNode);
156
- context.error("The ".concat(argumentString, " argument should be a term, not a type"), argumentNode);
157
- } else {
158
- var types = [], termVerified = (0, _term.default)(termNode, types, context);
159
- if (termVerified) {
160
- var firstType = (0, _array.first)(types), termType = firstType, typeNode = typeNodeQuery(combinatorArgumentNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), type = typeName === _typeNames.OBJECT_TYPE_NAME ? _type.objectType : context.findTypeByTypeName(typeName), statementTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
161
- if (statementTypeEqualToOrSubTypeOfType) {
162
- argumentNodeVerified = true;
163
- }
164
- }
165
- }
166
- return argumentNodeVerified;
167
- }
168
- },
169
- {
170
- key: "verifyMetaargumentNode",
171
- value: function verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, substitutions, context) {
172
- var metaArgumentNodeVerified = false;
173
- var statementNode = statementNodeQuery(metaArgumentNode), combinatorMetaTYpeNode = metaTypeNodeQuery(combinatorMetaargumentNode);
174
- if (statementNode === null) {
175
- var metaArgumentString = context.nodeAsString(metaArgumentNode);
176
- context.error("Expected a statement but got a '".concat(metaArgumentString, "' meta-type."), metaArgumentNode);
177
- } else {
178
- if (combinatorMetaTYpeNode === null) {
179
- var combinatorMetaargumentString = context.nodeAsString(combinatorMetaargumentNode);
180
- context.error("Expected a meta-type but got a '".concat(combinatorMetaargumentString, "' statement."), metaArgumentNode);
181
- } else {
182
- var combinatorMetaTypeTerminalNode = metaTypeTerminalNodeQuery(combinatorMetaTYpeNode), content = combinatorMetaTypeTerminalNode.getContent(), contentStatementMetaType = content === _metaTypes.STATEMENT_META_TYPE;
183
- if (!contentStatementMetaType) {
184
- context.error("Expected the meta-type to be 'Statement' but got '".concat(content, "'."), metaArgumentNode);
185
- } else {
186
- metaArgumentNodeVerified = true;
187
- }
188
- }
189
- }
190
- return metaArgumentNodeVerified;
191
- }
192
- }
193
- ]);
194
- return StatementVerifier;
195
- }(_verifier.default);
196
- var statementVerifier = new StatementVerifier();
197
- var _default = statementVerifier;
198
-
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9zdGF0ZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXJcIjtcbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuaW1wb3J0IHsgT0JKRUNUX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IFNUQVRFTUVOVF9NRVRBX1RZUEUgfSBmcm9tIFwiLi4vbWV0YVR5cGVzXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHR5cGVOYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgQVJHVU1FTlRfUlVMRV9OQU1FLCBNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJndW1lbnQvdHlwZSFcIiksXG4gICAgICBtZXRhVHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhQXJndW1lbnQvbWV0YVR5cGUhXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFBcmd1bWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgbWV0YVR5cGVUZXJtaW5hbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhVHlwZS9AbWV0YS10eXBlXCIpO1xuXG5jbGFzcyBTdGF0ZW1lbnRWZXJpZmllciBleHRlbmRzIFZlcmlmaWVyIHtcbiAgdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgICBsZXQgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vblRlcm1pbmFsTm9kZUEsIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JOb25UZXJtaW5hbE5vZGUgPSBub25UZXJtaW5hbE5vZGVCOyAvLy9cblxuICAgIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JSdWxlTmFtZSA9IGNvbWJpbmF0b3JOb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgICBpZiAocnVsZU5hbWUgPT09IGNvbWJpbmF0b3JSdWxlTmFtZSkge1xuICAgICAgc3dpdGNoIChydWxlTmFtZSkge1xuICAgICAgICBjYXNlIEFSR1VNRU5UX1JVTEVfTkFNRToge1xuICAgICAgICAgIGNvbnN0IGFyZ3VtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgY29tYmluYXRvckFyZ3VtZW50Tm9kZSA9IGNvbWJpbmF0b3JOb25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIGFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBjb21iaW5hdG9yQXJndW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KTtcblxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gYXJndW1lbnROb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIE1FVEFfQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgICAgY29uc3QgbWV0YUFyZ3VtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgY29tYmluYXRvck1ldGFhcmd1bWVudE5vZGUgPSBjb21iaW5hdG9yTm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgICBtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQgPSB0aGlzLnZlcmlmeU1ldGFhcmd1bWVudE5vZGUobWV0YUFyZ3VtZW50Tm9kZSwgY29tYmluYXRvck1ldGFhcmd1bWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgY29tYmluYXRvckNoaWxkTm9kZXMgPSBjb21iaW5hdG9yTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICBub2Rlc0EgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICBub2Rlc0IgPSBjb21iaW5hdG9yQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgICAgbm9kZXNWZXJpZmllZCA9IHRoaXMudmVyaWZ5Tm9kZXMobm9kZXNBLCBub2Rlc0IsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBub2Rlc1ZlcmlmaWVkOyAvLy9cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5QXJndW1lbnROb2RlKGFyZ3VtZW50Tm9kZSwgY29tYmluYXRvckFyZ3VtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBhcmd1bWVudE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSk7XG5cbiAgICBpZiAodGVybU5vZGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGFyZ3VtZW50U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcoYXJndW1lbnROb2RlKTtcblxuICAgICAgY29udGV4dC5lcnJvcihgVGhlICR7YXJndW1lbnRTdHJpbmd9IGFyZ3VtZW50IHNob3VsZCBiZSBhIHRlcm0sIG5vdCBhIHR5cGVgLCBhcmd1bWVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICAgICAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0VHlwZSA9IGZpcnN0KHR5cGVzKSxcbiAgICAgICAgICAgICAgdGVybVR5cGUgPSBmaXJzdFR5cGUsIC8vL1xuICAgICAgICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkoY29tYmluYXRvckFyZ3VtZW50Tm9kZSksXG4gICAgICAgICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgICAgICB0eXBlID0gKHR5cGVOYW1lID09PSBPQkpFQ1RfVFlQRV9OQU1FKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RUeXBlIDogIC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSksXG4gICAgICAgICAgICAgIHN0YXRlbWVudFR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3VtZW50Tm9kZVZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5TWV0YWFyZ3VtZW50Tm9kZShtZXRhQXJndW1lbnROb2RlLCBjb21iaW5hdG9yTWV0YWFyZ3VtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkobWV0YUFyZ3VtZW50Tm9kZSksXG4gICAgICAgICAgY29tYmluYXRvck1ldGFUWXBlTm9kZSA9IG1ldGFUeXBlTm9kZVF1ZXJ5KGNvbWJpbmF0b3JNZXRhYXJndW1lbnROb2RlKTtcblxuICAgIGlmIChzdGF0ZW1lbnROb2RlID09PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhQXJndW1lbnRTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhQXJndW1lbnROb2RlKTtcblxuICAgICAgY29udGV4dC5lcnJvcihgRXhwZWN0ZWQgYSBzdGF0ZW1lbnQgYnV0IGdvdCBhICcke21ldGFBcmd1bWVudFN0cmluZ30nIG1ldGEtdHlwZS5gLCBtZXRhQXJndW1lbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvbWJpbmF0b3JNZXRhVFlwZU5vZGUgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgY29tYmluYXRvck1ldGFhcmd1bWVudFN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKGNvbWJpbmF0b3JNZXRhYXJndW1lbnROb2RlKTtcblxuICAgICAgICBjb250ZXh0LmVycm9yKGBFeHBlY3RlZCBhIG1ldGEtdHlwZSBidXQgZ290IGEgJyR7Y29tYmluYXRvck1ldGFhcmd1bWVudFN0cmluZ30nIHN0YXRlbWVudC5gLCBtZXRhQXJndW1lbnROb2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbWJpbmF0b3JNZXRhVHlwZVRlcm1pbmFsTm9kZSA9IG1ldGFUeXBlVGVybWluYWxOb2RlUXVlcnkoY29tYmluYXRvck1ldGFUWXBlTm9kZSksXG4gICAgICAgICAgICAgIGNvbnRlbnQgPSBjb21iaW5hdG9yTWV0YVR5cGVUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgICBjb250ZW50U3RhdGVtZW50TWV0YVR5cGUgPSAoY29udGVudCA9PT0gU1RBVEVNRU5UX01FVEFfVFlQRSk7XG5cbiAgICAgICAgaWYgKCFjb250ZW50U3RhdGVtZW50TWV0YVR5cGUpIHtcbiAgICAgICAgICBjb250ZXh0LmVycm9yKGBFeHBlY3RlZCB0aGUgbWV0YS10eXBlIHRvIGJlICdTdGF0ZW1lbnQnIGJ1dCBnb3QgJyR7Y29udGVudH0nLmAsIG1ldGFBcmd1bWVudE5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1ldGFBcmd1bWVudE5vZGVWZXJpZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YUFyZ3VtZW50Tm9kZVZlcmlmaWVkO1xuICB9XG59XG5cbmNvbnN0IHN0YXRlbWVudFZlcmlmaWVyID0gbmV3IFN0YXRlbWVudFZlcmlmaWVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHN0YXRlbWVudFZlcmlmaWVyO1xuXG4iXSwibmFtZXMiOlsidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJtZXRhVHlwZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm1ldGFUeXBlVGVybWluYWxOb2RlUXVlcnkiLCJTdGF0ZW1lbnRWZXJpZmllciIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZUEiLCJub25UZXJtaW5hbE5vZGVCIiwic3Vic3RpdHV0aW9ucyIsImNvbnRleHQiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsIm5vblRlcm1pbmFsTm9kZSIsImNvbWJpbmF0b3JOb25UZXJtaW5hbE5vZGUiLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiY29tYmluYXRvclJ1bGVOYW1lIiwiQVJHVU1FTlRfUlVMRV9OQU1FIiwiYXJndW1lbnROb2RlIiwiY29tYmluYXRvckFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50Tm9kZVZlcmlmaWVkIiwidmVyaWZ5QXJndW1lbnROb2RlIiwiTUVUQV9BUkdVTUVOVF9SVUxFX05BTUUiLCJtZXRhQXJndW1lbnROb2RlIiwiY29tYmluYXRvck1ldGFhcmd1bWVudE5vZGUiLCJtZXRhQXJndW1lbnROb2RlVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhYXJndW1lbnROb2RlIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJjb21iaW5hdG9yQ2hpbGROb2RlcyIsIm5vZGVzQSIsIm5vZGVzQiIsIm5vZGVzVmVyaWZpZWQiLCJ2ZXJpZnlOb2RlcyIsInRlcm1Ob2RlIiwiYXJndW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJlcnJvciIsInR5cGVzIiwidGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsImZpcnN0VHlwZSIsImZpcnN0IiwidGVybVR5cGUiLCJ0eXBlTm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJ0eXBlIiwiT0JKRUNUX1RZUEVfTkFNRSIsIm9iamVjdFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJzdGF0ZW1lbnRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwic3RhdGVtZW50Tm9kZSIsImNvbWJpbmF0b3JNZXRhVFlwZU5vZGUiLCJtZXRhQXJndW1lbnRTdHJpbmciLCJjb21iaW5hdG9yTWV0YWFyZ3VtZW50U3RyaW5nIiwiY29tYmluYXRvck1ldGFUeXBlVGVybWluYWxOb2RlIiwiY29udGVudCIsImdldENvbnRlbnQiLCJjb250ZW50U3RhdGVtZW50TWV0YVR5cGUiLCJTVEFURU1FTlRfTUVUQV9UWVBFIiwiVmVyaWZpZXIiLCJzdGF0ZW1lbnRWZXJpZmllciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBcUlBOzs7ZUFBQTs7OzZEQW5JcUI7eURBQ0U7cUJBRUQ7b0JBQ0s7eUJBQ007eUJBQ0c7cUJBQ1k7eUJBQ1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUQsSUFBTUEsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLG9CQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDLG9CQUMxQkUsb0JBQW9CRixJQUFBQSxnQkFBUyxFQUFDLDRCQUM5QkcscUJBQXFCSCxJQUFBQSxnQkFBUyxFQUFDLDZCQUMvQkksNEJBQTRCSixJQUFBQSxnQkFBUyxFQUFDO0FBRTVDLElBQUEsQUFBTUssa0NBaUhILEFBakhIO2NBQU1BOzhCQUFBQTthQUFBQTs4QkFBQUE7OztpQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0JDLGdCQUFnQixFQUFFQyxnQkFBZ0IsRUFBRUMsYUFBYSxFQUFFQyxPQUFPLEVBQUU7Z0JBQ2hGLElBQUlDLDBCQUEwQixLQUFLO2dCQUVuQyxJQUFNQyxrQkFBa0JMLGtCQUNsQk0sNEJBQTRCTCxrQkFBa0IsR0FBRztnQkFFdkQsSUFBTU0sV0FBV0YsZ0JBQWdCRyxXQUFXLElBQ3RDQyxxQkFBcUJILDBCQUEwQkUsV0FBVyxJQUFJLEdBQUc7Z0JBRXZFLElBQUlELGFBQWFFLG9CQUFvQjtvQkFDbkMsT0FBUUY7d0JBQ04sS0FBS0csNkJBQWtCOzRCQUFFO2dDQUN2QixJQUFNQyxlQUFlTixpQkFDZk8seUJBQXlCTiwyQkFDekJPLHVCQUF1QixJQUFJLENBQUNDLGtCQUFrQixDQUFDSCxjQUFj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