occam-verify-cli 0.0.309 → 0.0.310

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/bin/abbreviations.js +2 -4
  2. package/bin/main.js +10 -10
  3. package/bin/options.js +1 -3
  4. package/bin/utilities/logging.js +42 -0
  5. package/bin/utilities/release.js +77 -0
  6. package/lib/context/file.js +33 -16
  7. package/lib/context/metaproof.js +13 -13
  8. package/lib/context/proof.js +13 -13
  9. package/lib/context/release.js +37 -68
  10. package/lib/mixins/log.js +41 -0
  11. package/lib/utilities/customGrammar.js +32 -0
  12. package/lib/utilities/tokens.js +63 -0
  13. package/lib/verify/assertion/type.js +4 -4
  14. package/lib/verify/axiom.js +3 -3
  15. package/lib/verify/label.js +2 -2
  16. package/lib/verify/metastatement/qualified.js +2 -2
  17. package/lib/verify/metastatement/unqualified.js +2 -2
  18. package/lib/verify/release.js +2 -2
  19. package/lib/verify/rule.js +3 -3
  20. package/lib/verify/statement.js +3 -3
  21. package/lib/verify/statementAsCombinator.js +4 -4
  22. package/lib/verify/term.js +2 -2
  23. package/lib/verify/termAsConstructor.js +7 -7
  24. package/lib/verify/termAsVariable.js +2 -2
  25. package/lib/verify/type.js +5 -5
  26. package/lib/verify/variable.js +4 -4
  27. package/package.json +2 -2
  28. package/src/context/file.js +26 -10
  29. package/src/context/metaproof.js +6 -6
  30. package/src/context/proof.js +6 -6
  31. package/src/context/release.js +37 -58
  32. package/src/mixins/log.js +28 -0
  33. package/src/utilities/customGrammar.js +27 -0
  34. package/src/utilities/tokens.js +67 -0
  35. package/src/verify/assertion/type.js +3 -3
  36. package/src/verify/axiom.js +2 -2
  37. package/src/verify/label.js +1 -1
  38. package/src/verify/metastatement/qualified.js +1 -1
  39. package/src/verify/metastatement/unqualified.js +1 -1
  40. package/src/verify/release.js +1 -1
  41. package/src/verify/rule.js +2 -2
  42. package/src/verify/statement.js +2 -2
  43. package/src/verify/statementAsCombinator.js +3 -3
  44. package/src/verify/term.js +1 -1
  45. package/src/verify/termAsConstructor.js +6 -6
  46. package/src/verify/termAsVariable.js +1 -1
  47. package/src/verify/type.js +4 -4
  48. package/src/verify/variable.js +3 -3
  49. package/bin/loadReleaseContexts.js +0 -68
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  Object.defineProperty(exports, "default", {
6
6
  enumerable: true,
7
7
  get: function() {
8
- return ReleaseContext;
8
+ return _default;
9
9
  }
10
10
  });
11
11
  var _occamCustomGrammars = require("occam-custom-grammars");
12
+ var _log = /*#__PURE__*/ _interopRequireDefault(require("../mixins/log"));
12
13
  var _array = require("../utilities/array");
14
+ var _customGrammar = require("../utilities/customGrammar");
13
15
  function _arrayLikeToArray(arr, len) {
14
16
  if (len == null || len > arr.length) len = arr.length;
15
17
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -65,6 +67,11 @@ function _createClass(Constructor, protoProps, staticProps) {
65
67
  if (staticProps) _defineProperties(Constructor, staticProps);
66
68
  return Constructor;
67
69
  }
70
+ function _interopRequireDefault(obj) {
71
+ return obj && obj.__esModule ? obj : {
72
+ default: obj
73
+ };
74
+ }
68
75
  function _iterableToArray(iter) {
69
76
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
70
77
  }
@@ -91,11 +98,12 @@ function _unsupportedIterableToArray(o, minLen) {
91
98
  }
92
99
  var florenceLexerFromCombinedCustomGrammar = _occamCustomGrammars.lexersUtilities.florenceLexerFromCombinedCustomGrammar, florenceParserFromCombinedCustomGrammar = _occamCustomGrammars.parsersUtilities.florenceParserFromCombinedCustomGrammar;
93
100
  var ReleaseContext = /*#__PURE__*/ function() {
94
- function ReleaseContext(log, release, verified, fileContexts, florenceLexer, florenceParser, releaseContexts) {
101
+ function ReleaseContext(log, release, verified, customGrammar, fileContexts, florenceLexer, florenceParser, releaseContexts) {
95
102
  _classCallCheck(this, ReleaseContext);
96
103
  this.log = log;
97
104
  this.release = release;
98
105
  this.verified = verified;
106
+ this.customGrammar = customGrammar;
99
107
  this.fileContexts = fileContexts;
100
108
  this.florenceLexer = florenceLexer;
101
109
  this.florenceParser = florenceParser;
@@ -120,6 +128,12 @@ var ReleaseContext = /*#__PURE__*/ function() {
120
128
  return this.verified;
121
129
  }
122
130
  },
131
+ {
132
+ key: "getCustomGrammar",
133
+ value: function getCustomGrammar() {
134
+ return this.customGrammar;
135
+ }
136
+ },
123
137
  {
124
138
  key: "getFileContexts",
125
139
  value: function getFileContexts() {
@@ -145,10 +159,15 @@ var ReleaseContext = /*#__PURE__*/ function() {
145
159
  }
146
160
  },
147
161
  {
148
- key: "getReleaseName",
149
- value: function getReleaseName() {
150
- var releaseName = this.release.getName();
151
- return releaseName;
162
+ key: "getFile",
163
+ value: function getFile(filePath) {
164
+ return this.release.getFile(filePath);
165
+ }
166
+ },
167
+ {
168
+ key: "getName",
169
+ value: function getName() {
170
+ return this.release.getName();
152
171
  }
153
172
  },
154
173
  {
@@ -163,13 +182,6 @@ var ReleaseContext = /*#__PURE__*/ function() {
163
182
  return this.release.getFilePaths();
164
183
  }
165
184
  },
166
- {
167
- key: "getFileContent",
168
- value: function getFileContent(filePath) {
169
- var file = this.release.getFile(filePath), fileContent = file.getContent();
170
- return fileContent;
171
- }
172
- },
173
185
  {
174
186
  key: "getDependencies",
175
187
  value: function getDependencies() {
@@ -180,7 +192,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
180
192
  key: "getRules",
181
193
  value: function getRules() {
182
194
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
183
- var rules = [], releaseName = this.getReleaseName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
195
+ var name = this.getName(), rules = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
184
196
  if (!releaseNamesIncludesReleaseName) {
185
197
  releaseNames.push(releaseName);
186
198
  var bubble = false;
@@ -200,7 +212,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
200
212
  key: "getTypes",
201
213
  value: function getTypes() {
202
214
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
203
- var types = [], releaseName = this.getReleaesName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
215
+ var name = this.getName(), types = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
204
216
  if (!releaseNamesIncludesReleaseName) {
205
217
  releaseNames.push(releaseName);
206
218
  var bubble = false;
@@ -220,7 +232,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
220
232
  key: "getAxioms",
221
233
  value: function getAxioms() {
222
234
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
223
- var axioms = [], releaseName = this.getReleaseName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
235
+ var name = this.getName(), axioms = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
224
236
  if (!releaseNamesIncludesReleaseName) {
225
237
  releaseNames.push(releaseName);
226
238
  var bubble = false;
@@ -240,7 +252,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
240
252
  key: "getCombinators",
241
253
  value: function getCombinators() {
242
254
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
243
- var combinators = [], releaseName = this.getReleaseName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
255
+ var name = this.getName(), combinators = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
244
256
  if (!releaseNamesIncludesReleaseName) {
245
257
  releaseNames.push(releaseName);
246
258
  var bubble = false;
@@ -260,7 +272,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
260
272
  key: "getConstructors",
261
273
  value: function getConstructors() {
262
274
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
263
- var releaseName = this.getReleaseName(), constructors = [], releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
275
+ var name = this.getName(), constructors = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
264
276
  if (!releaseNamesIncludesReleaseName) {
265
277
  releaseNames.push(releaseName);
266
278
  var bubble = false;
@@ -276,13 +288,6 @@ var ReleaseContext = /*#__PURE__*/ function() {
276
288
  return constructors;
277
289
  }
278
290
  },
279
- {
280
- key: "getCustomGrammar",
281
- value: function getCustomGrammar() {
282
- var releaseName = this.getReleaseName(), name = releaseName, termBNF = this.release.getTermBNF(), statementBNF = this.release.getStatementBNF(), metastatementBNF = this.release.getMetastatementBNF(), typePattern = this.release.getTypePattern(), symbolPattern = this.release.getSymbolPattern(), operatorPattern = this.release.getOperatorPattern(), customGrammar = _occamCustomGrammars.CustomGrammar.fromNameTermBNFStatementBNFMetastatementBNFTypePatternSymbolPatternAndOperatorPattern(name, termBNF, statementBNF, metastatementBNF, typePattern, symbolPattern, operatorPattern);
283
- return customGrammar;
284
- }
285
- },
286
291
  {
287
292
  key: "addFileContext",
288
293
  value: function addFileContext(fileContext) {
@@ -301,56 +306,17 @@ var ReleaseContext = /*#__PURE__*/ function() {
301
306
  return this.florenceParser.parse(tokens);
302
307
  }
303
308
  },
304
- {
305
- key: "trace",
306
- value: function trace(message) {
307
- this.log.trace(message);
308
- }
309
- },
310
- {
311
- key: "debug",
312
- value: function debug(message) {
313
- this.log.debug(message);
314
- }
315
- },
316
- {
317
- key: "info",
318
- value: function info(message) {
319
- this.log.info(message);
320
- }
321
- },
322
- {
323
- key: "warning",
324
- value: function warning(message) {
325
- this.log.warning(message);
326
- }
327
- },
328
- {
329
- key: "error",
330
- value: function error(message) {
331
- this.log.error(message);
332
- }
333
- },
334
- {
335
- key: "fatal",
336
- value: function fatal(message) {
337
- this.log.fatal(message);
338
- }
339
- },
340
309
  {
341
310
  key: "initialise",
342
311
  value: function initialise(releaseContexts, dependencyReleaseContexts) {
343
- this.releaseContexts = releaseContexts;
344
312
  var releaseContext = this; ///
345
313
  releaseContexts = [
346
314
  releaseContext
347
315
  ].concat(_toConsumableArray(dependencyReleaseContexts)); ///
348
- var customGrammars = releaseContexts.map(function(releaseContext) {
349
- var customGrammar = releaseContext.getCustomGrammar();
350
- return customGrammar;
351
- }), combinedCustomGrammar = _occamCustomGrammars.CombinedCustomGrammar.fromCustomGrammars(customGrammars);
316
+ var combinedCustomGrammar = (0, _customGrammar.combinedCustomGrammarFromReleaseContexts)(releaseContexts);
352
317
  this.florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar);
353
318
  this.florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
319
+ this.releaseContexts = releaseContexts;
354
320
  }
355
321
  }
356
322
  ], [
@@ -360,10 +326,11 @@ var ReleaseContext = /*#__PURE__*/ function() {
360
326
  for(var _len = arguments.length, remainingArguments = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
361
327
  remainingArguments[_key - 2] = arguments[_key];
362
328
  }
363
- var verified = false, fileContexts = [], florenceLexer = null, florenceParser = null, releaseContexts = [], releaseContext = _construct(ReleaseContext, [
329
+ var verified = false, customGrammar = (0, _customGrammar.customGrammarFromRelease)(release), fileContexts = [], florenceLexer = null, florenceParser = null, releaseContexts = [], releaseContext = _construct(ReleaseContext, [
364
330
  log,
365
331
  release,
366
332
  verified,
333
+ customGrammar,
367
334
  fileContexts,
368
335
  florenceLexer,
369
336
  florenceParser,
@@ -375,5 +342,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
375
342
  ]);
376
343
  return ReleaseContext;
377
344
  }();
345
+ Object.assign(ReleaseContext.prototype, _log.default);
346
+ var _default = ReleaseContext;
378
347
 
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3JlbGVhc2UuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEN1c3RvbUdyYW1tYXIsIGxleGVyc1V0aWxpdGllcywgcGFyc2Vyc1V0aWxpdGllcywgQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gZnJvbSBcIm9jY2FtLWN1c3RvbS1ncmFtbWFyc1wiO1xuXG5pbXBvcnQgeyBwdXNoIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuXG5jb25zdCB7IGZsb3JlbmNlTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBsZXhlcnNVdGlsaXRpZXMsXG4gICAgICB7IGZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciB9ID0gcGFyc2Vyc1V0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVsZWFzZUNvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihsb2csIHJlbGVhc2UsIHZlcmlmaWVkLCBmaWxlQ29udGV4dHMsIGZsb3JlbmNlTGV4ZXIsIGZsb3JlbmNlUGFyc2VyLCByZWxlYXNlQ29udGV4dHMpIHtcbiAgICB0aGlzLmxvZyA9IGxvZztcbiAgICB0aGlzLnJlbGVhc2UgPSByZWxlYXNlO1xuICAgIHRoaXMudmVyaWZpZWQgPSB2ZXJpZmllZDtcbiAgICB0aGlzLmZpbGVDb250ZXh0cyA9IGZpbGVDb250ZXh0cztcbiAgICB0aGlzLmZsb3JlbmNlTGV4ZXIgPSBmbG9yZW5jZUxleGVyO1xuICAgIHRoaXMuZmxvcmVuY2VQYXJzZXIgPSBmbG9yZW5jZVBhcnNlcjtcbiAgICB0aGlzLnJlbGVhc2VDb250ZXh0cyA9IHJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIGdldExvZygpIHtcbiAgICByZXR1cm4gdGhpcy5sb2c7XG4gIH1cblxuICBnZXRSZWxlYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2U7XG4gIH1cblxuICBpc1ZlcmlmaWVkKCkge1xuICAgIHJldHVybiB0aGlzLnZlcmlmaWVkO1xuICB9XG5cbiAgZ2V0RmlsZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLmZpbGVDb250ZXh0cztcbiAgfVxuXG4gIGdldEZsb3JlbmNlTGV4ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvcmVuY2VMZXhlcjtcbiAgfVxuXG4gIGdldEZsb3JlbmNlUGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLmZsb3JlbmNlUGFyc2VyO1xuICB9XG5cbiAgZ2V0UmVsZWFzZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIGdldFJlbGVhc2VOYW1lKCkge1xuICAgIGNvbnN0IHJlbGVhc2VOYW1lID0gdGhpcy5yZWxlYXNlLmdldE5hbWUoKTtcblxuICAgIHJldHVybiByZWxlYXNlTmFtZTtcbiAgfVxuXG4gIGdldFZlcnNpb24oKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0VmVyc2lvbigpOyB9XG5cbiAgZ2V0RmlsZVBhdGhzKCkgeyByZXR1cm4gdGhpcy5yZWxlYXNlLmdldEZpbGVQYXRocygpOyB9XG5cbiAgZ2V0RmlsZUNvbnRlbnQoZmlsZVBhdGgpIHtcbiAgICBjb25zdCBmaWxlID0gdGhpcy5yZWxlYXNlLmdldEZpbGUoZmlsZVBhdGgpLFxuICAgICAgICAgIGZpbGVDb250ZW50ID0gZmlsZS5nZXRDb250ZW50KCk7XG5cbiAgICByZXR1cm4gZmlsZUNvbnRlbnQ7XG4gIH1cblxuICBnZXREZXBlbmRlbmNpZXMoKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0RGVwZW5kZW5jaWVzKCk7IH1cblxuICBnZXRSdWxlcyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IHJ1bGVzID0gW10sXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSB0aGlzLmdldFJlbGVhc2VOYW1lKCksXG4gICAgICAgICAgcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSA9IHJlbGVhc2VOYW1lcy5pbmNsdWRlcyhyZWxlYXNlTmFtZSk7XG5cbiAgICBpZiAoIXJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUpIHtcbiAgICAgIHJlbGVhc2VOYW1lcy5wdXNoKHJlbGVhc2VOYW1lKTtcblxuICAgICAgY29uc3QgYnViYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZXh0UnVsZXMgPSBmaWxlQ29udGV4dC5nZXRSdWxlcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIGZpbGVDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0UnVsZXMgPSByZWxlYXNlQ29udGV4dC5nZXRSdWxlcyhyZWxlYXNlTmFtZXMpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIHJlbGVhc2VDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGVzO1xuICB9XG5cbiAgZ2V0VHlwZXMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gdGhpcy5nZXRSZWxlYWVzTmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dFR5cGVzID0gZmlsZUNvbnRleHQuZ2V0VHlwZXMoYnViYmxlKTtcblxuICAgICAgICBwdXNoKHR5cGVzLCBmaWxlQ29udGV4dFR5cGVzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dFR5cGVzID0gcmVsZWFzZUNvbnRleHQuZ2V0VHlwZXMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKHR5cGVzLCByZWxlYXNlQ29udGV4dFR5cGVzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlcztcbiAgfVxuXG4gIGdldEF4aW9tcyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IGF4aW9tcyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gdGhpcy5nZXRSZWxlYXNlTmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dEF4aW9tcyA9IGZpbGVDb250ZXh0LmdldEF4aW9tcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2goYXhpb21zLCBmaWxlQ29udGV4dEF4aW9tcyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRBeGlvbXMgPSByZWxlYXNlQ29udGV4dC5nZXRBeGlvbXMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKGF4aW9tcywgcmVsZWFzZUNvbnRleHRBeGlvbXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF4aW9tcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKHJlbGVhc2VOYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgY29tYmluYXRvcnMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IHRoaXMuZ2V0UmVsZWFzZU5hbWUoKSxcbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSkge1xuICAgICAgcmVsZWFzZU5hbWVzLnB1c2gocmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRDb21iaW5hdG9ycyA9IGZpbGVDb250ZXh0LmdldENvbWJpbmF0b3JzKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgZmlsZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmF0b3JzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3RvcnMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCByZWxlYXNlTmFtZSA9IHRoaXMuZ2V0UmVsZWFzZU5hbWUoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSkge1xuICAgICAgcmVsZWFzZU5hbWVzLnB1c2gocmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMgPSBmaWxlQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoYnViYmxlKTtcblxuICAgICAgICBwdXNoKGNvbnN0cnVjdG9ycywgZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzID0gcmVsZWFzZUNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChjb25zdHJ1Y3RvcnMsIHJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcnM7XG4gIH1cblxuICBnZXRDdXN0b21HcmFtbWFyKCkge1xuICAgIGNvbnN0IHJlbGVhc2VOYW1lID0gdGhpcy5nZXRSZWxlYXNlTmFtZSgpLFxuICAgICAgICAgIG5hbWUgPSByZWxlYXNlTmFtZSwgLy8vXG4gICAgICAgICAgdGVybUJORiA9IHRoaXMucmVsZWFzZS5nZXRUZXJtQk5GKCksXG4gICAgICAgICAgc3RhdGVtZW50Qk5GID0gdGhpcy5yZWxlYXNlLmdldFN0YXRlbWVudEJORigpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnRCTkYgPSB0aGlzLnJlbGVhc2UuZ2V0TWV0YXN0YXRlbWVudEJORigpLFxuICAgICAgICAgIHR5cGVQYXR0ZXJuID0gdGhpcy5yZWxlYXNlLmdldFR5cGVQYXR0ZXJuKCksXG4gICAgICAgICAgc3ltYm9sUGF0dGVybiA9IHRoaXMucmVsZWFzZS5nZXRTeW1ib2xQYXR0ZXJuKCksXG4gICAgICAgICAgb3BlcmF0b3JQYXR0ZXJuID0gdGhpcy5yZWxlYXNlLmdldE9wZXJhdG9yUGF0dGVybigpLFxuICAgICAgICAgIGN1c3RvbUdyYW1tYXIgPSBDdXN0b21HcmFtbWFyLmZyb21OYW1lVGVybUJORlN0YXRlbWVudEJORk1ldGFzdGF0ZW1lbnRCTkZUeXBlUGF0dGVyblN5bWJvbFBhdHRlcm5BbmRPcGVyYXRvclBhdHRlcm4obmFtZSwgdGVybUJORiwgc3RhdGVtZW50Qk5GLCBtZXRhc3RhdGVtZW50Qk5GLCB0eXBlUGF0dGVybiwgc3ltYm9sUGF0dGVybiwgb3BlcmF0b3JQYXR0ZXJuKTtcblxuICAgIHJldHVybiBjdXN0b21HcmFtbWFyO1xuICB9XG5cbiAgYWRkRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpIHtcbiAgICB0aGlzLmZpbGVDb250ZXh0cy5wdXNoKGZpbGVDb250ZXh0KTtcbiAgfVxuXG4gIHRva2VuaXNlKGNvbnRlbnQpIHsgcmV0dXJuIHRoaXMuZmxvcmVuY2VMZXhlci50b2tlbmlzZShjb250ZW50KTsgfVxuXG4gIHBhcnNlKHRva2VucykgeyByZXR1cm4gdGhpcy5mbG9yZW5jZVBhcnNlci5wYXJzZSh0b2tlbnMpOyB9XG5cbiAgdHJhY2UobWVzc2FnZSkgeyB0aGlzLmxvZy50cmFjZShtZXNzYWdlKTsgfVxuXG4gIGRlYnVnKG1lc3NhZ2UpIHsgdGhpcy5sb2cuZGVidWcobWVzc2FnZSk7IH1cblxuICBpbmZvKG1lc3NhZ2UpIHsgdGhpcy5sb2cuaW5mbyhtZXNzYWdlKTsgfVxuXG4gIHdhcm5pbmcobWVzc2FnZSkgeyB0aGlzLmxvZy53YXJuaW5nKG1lc3NhZ2UpOyB9XG5cbiAgZXJyb3IobWVzc2FnZSkgeyB0aGlzLmxvZy5lcnJvcihtZXNzYWdlKTsgfVxuXG4gIGZhdGFsKG1lc3NhZ2UpIHsgdGhpcy5sb2cuZmF0YWwobWVzc2FnZSk7IH1cblxuICBpbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cykge1xuICAgIHRoaXMucmVsZWFzZUNvbnRleHRzID0gcmVsZWFzZUNvbnRleHRzO1xuXG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSB0aGlzOyAgLy8vXG5cbiAgICByZWxlYXNlQ29udGV4dHMgPSBbIHJlbGVhc2VDb250ZXh0LCAuLi5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIF07IC8vL1xuXG4gICAgY29uc3QgY3VzdG9tR3JhbW1hcnMgPSByZWxlYXNlQ29udGV4dHMubWFwKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tR3JhbW1hciA9IHJlbGVhc2VDb250ZXh0LmdldEN1c3RvbUdyYW1tYXIoKTtcblxuICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUdyYW1tYXI7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY29tYmluZWRDdXN0b21HcmFtbWFyID0gQ29tYmluZWRDdXN0b21HcmFtbWFyLmZyb21DdXN0b21HcmFtbWFycyhjdXN0b21HcmFtbWFycyk7XG5cbiAgICB0aGlzLmZsb3JlbmNlTGV4ZXIgPSBmbG9yZW5jZUxleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihjb21iaW5lZEN1c3RvbUdyYW1tYXIpO1xuXG4gICAgdGhpcy5mbG9yZW5jZVBhcnNlciA9IGZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihjb21iaW5lZEN1c3RvbUdyYW1tYXIpO1xuICB9XG5cbiAgc3RhdGljIGZyb21Mb2dBbmRSZWxlYXNlKGxvZywgcmVsZWFzZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgdmVyaWZpZWQgPSBmYWxzZSxcbiAgICAgICAgICBmaWxlQ29udGV4dHMgPSBbXSxcbiAgICAgICAgICBmbG9yZW5jZUxleGVyID0gbnVsbCxcbiAgICAgICAgICBmbG9yZW5jZVBhcnNlciA9IG51bGwsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gW10sXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBuZXcgUmVsZWFzZUNvbnRleHQobG9nLCByZWxlYXNlLCB2ZXJpZmllZCwgZmlsZUNvbnRleHRzLCBmbG9yZW5jZUxleGVyLCBmbG9yZW5jZVBhcnNlciwgcmVsZWFzZUNvbnRleHRzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlJlbGVhc2VDb250ZXh0IiwiZmxvcmVuY2VMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJsZXhlcnNVdGlsaXRpZXMiLCJmbG9yZW5jZVBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJwYXJzZXJzVXRpbGl0aWVzIiwibG9nIiwicmVsZWFzZSIsInZlcmlmaWVkIiwiZmlsZUNvbnRleHRzIiwiZmxvcmVuY2VMZXhlciIsImZsb3JlbmNlUGFyc2VyIiwicmVsZWFzZUNvbnRleHRzIiwiZ2V0TG9nIiwiZ2V0UmVsZWFzZSIsImlzVmVyaWZpZWQiLCJnZXRGaWxlQ29udGV4dHMiLCJnZXRGbG9yZW5jZUxleGVyIiwiZ2V0RmxvcmVuY2VQYXJzZXIiLCJnZXRSZWxlYXNlQ29udGV4dHMiLCJnZXRSZWxlYXNlTmFtZSIsInJlbGVhc2VOYW1lIiwiZ2V0TmFtZSIsImdldFZlcnNpb24iLCJnZXRGaWxlUGF0aHMiLCJnZXRGaWxlQ29udGVudCIsImZpbGVQYXRoIiwiZmlsZSIsImdldEZpbGUiLCJmaWxlQ29udGVudCIsImdldENvbnRlbnQiLCJnZXREZXBlbmRlbmNpZXMiLCJnZXRSdWxlcyIsInJlbGVhc2VOYW1lcyIsInJ1bGVzIiwicmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSIsImluY2x1ZGVzIiwicHVzaCIsImJ1YmJsZSIsImZvckVhY2giLCJmaWxlQ29udGV4dCIsImZpbGVDb250ZXh0UnVsZXMiLCJyZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0UnVsZXMiLCJnZXRUeXBlcyIsInR5cGVzIiwiZ2V0UmVsZWFlc05hbWUiLCJmaWxlQ29udGV4dFR5cGVzIiwicmVsZWFzZUNvbnRleHRUeXBlcyIsImdldEF4aW9tcyIsImF4aW9tcyIsImZpbGVDb250ZXh0QXhpb21zIiwicmVsZWFzZUNvbnRleHRBeGlvbXMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZmlsZUNvbnRleHRDb21iaW5hdG9ycyIsInJlbGVhc2VDb250ZXh0Q29tYmluYXRvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJmaWxlQ29udGV4dENvbnN0cnVjdG9ycyIsInJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzIiwiZ2V0Q3VzdG9tR3JhbW1hciIsIm5hbWUiLCJ0ZXJtQk5GIiwiZ2V0VGVybUJORiIsInN0YXRlbWVudEJORiIsImdldFN0YXRlbWVudEJORiIsIm1ldGFzdGF0ZW1lbnRCTkYiLCJnZXRNZXRhc3RhdGVtZW50Qk5GIiwidHlwZVBhdHRlcm4iLCJnZXRUeXBlUGF0dGVybiIsInN5bWJvbFBhdHRlcm4iLCJnZXRTeW1ib2xQYXR0ZXJuIiwib3BlcmF0b3JQYXR0ZXJuIiwiZ2V0T3BlcmF0b3JQYXR0ZXJuIiwiY3VzdG9tR3JhbW1hciIsIkN1c3RvbUdyYW1tYXIiLCJmcm9tTmFtZVRlcm1CTkZTdGF0ZW1lbnRCTkZNZXRhc3RhdGVtZW50Qk5GVHlwZVBhdHRlcm5TeW1ib2xQYXR0ZXJuQW5kT3BlcmF0b3JQYXR0ZXJuIiwiYWRkRmlsZUNvbnRleHQiLCJ0b2tlbmlzZSIsImNvbnRlbnQiLCJwYXJzZSIsInRva2VucyIsInRyYWNlIiwibWVzc2FnZSIsImRlYnVnIiwiaW5mbyIsIndhcm5pbmciLCJlcnJvciIsImZhdGFsIiwiaW5pdGlhbGlzZSIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJjdXN0b21HcmFtbWFycyIsIm1hcCIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIkNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImZyb21DdXN0b21HcmFtbWFycyIsImZyb21Mb2dBbmRSZWxlYXNlIiwicmVtYWluaW5nQXJndW1lbnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVNxQkE7OzttQ0FQbUU7cUJBRW5FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyQixJQUFNLEFBQUVDLHlDQUEyQ0Msb0NBQWUsQ0FBMURELHdDQUNGLEFBQUVFLDBDQUE0Q0MscUNBQWdCLENBQTVERDtBQUVPLElBQUEsQUFBTUgsK0JBQU47YUFBTUEsZUFDUEssR0FBRyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLEVBQUVDLGNBQWMsRUFBRUMsZUFBZTs4QkFEN0VYO1FBRWpCLElBQUksQ0FBQ0ssR0FBRyxHQUFHQTtRQUNYLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtRQUNmLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNDLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO1FBQ3JCLElBQUksQ0FBQ0MsY0FBYyxHQUFHQTtRQUN0QixJQUFJLENBQUNDLGVBQWUsR0FBR0E7O2lCQVJOWDs7WUFXbkJZLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTO2dCQUNQLE9BQU8s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
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3JlbGVhc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxleGVyc1V0aWxpdGllcywgcGFyc2Vyc1V0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1jdXN0b20tZ3JhbW1hcnNcIjtcblxuaW1wb3J0IGxvZ01peGlucyBmcm9tIFwiLi4vbWl4aW5zL2xvZ1wiO1xuXG5pbXBvcnQgeyBwdXNoIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgY3VzdG9tR3JhbW1hckZyb21SZWxlYXNlLCBjb21iaW5lZEN1c3RvbUdyYW1tYXJGcm9tUmVsZWFzZUNvbnRleHRzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jdXN0b21HcmFtbWFyXCI7XG5cbmNvbnN0IHsgZmxvcmVuY2VMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIgfSA9IGxleGVyc1V0aWxpdGllcyxcbiAgICAgIHsgZmxvcmVuY2VQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBwYXJzZXJzVXRpbGl0aWVzO1xuXG5jbGFzcyBSZWxlYXNlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGxvZywgcmVsZWFzZSwgdmVyaWZpZWQsIGN1c3RvbUdyYW1tYXIsIGZpbGVDb250ZXh0cywgZmxvcmVuY2VMZXhlciwgZmxvcmVuY2VQYXJzZXIsIHJlbGVhc2VDb250ZXh0cykge1xuICAgIHRoaXMubG9nID0gbG9nO1xuICAgIHRoaXMucmVsZWFzZSA9IHJlbGVhc2U7XG4gICAgdGhpcy52ZXJpZmllZCA9IHZlcmlmaWVkO1xuICAgIHRoaXMuY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXI7XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cyA9IGZpbGVDb250ZXh0cztcbiAgICB0aGlzLmZsb3JlbmNlTGV4ZXIgPSBmbG9yZW5jZUxleGVyO1xuICAgIHRoaXMuZmxvcmVuY2VQYXJzZXIgPSBmbG9yZW5jZVBhcnNlcjtcbiAgICB0aGlzLnJlbGVhc2VDb250ZXh0cyA9IHJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIGdldExvZygpIHtcbiAgICByZXR1cm4gdGhpcy5sb2c7XG4gIH1cblxuICBnZXRSZWxlYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2U7XG4gIH1cblxuICBpc1ZlcmlmaWVkKCkge1xuICAgIHJldHVybiB0aGlzLnZlcmlmaWVkO1xuICB9XG5cbiAgZ2V0Q3VzdG9tR3JhbW1hcigpIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21HcmFtbWFyO1xuICB9XG5cbiAgZ2V0RmlsZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLmZpbGVDb250ZXh0cztcbiAgfVxuXG4gIGdldEZsb3JlbmNlTGV4ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvcmVuY2VMZXhlcjtcbiAgfVxuXG4gIGdldEZsb3JlbmNlUGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLmZsb3JlbmNlUGFyc2VyO1xuICB9XG5cbiAgZ2V0UmVsZWFzZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIGdldEZpbGUoZmlsZVBhdGgpIHsgcmV0dXJuIHRoaXMucmVsZWFzZS5nZXRGaWxlKGZpbGVQYXRoKTsgfVxuXG4gIGdldE5hbWUoKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0TmFtZSgpOyB9XG5cbiAgZ2V0VmVyc2lvbigpIHsgcmV0dXJuIHRoaXMucmVsZWFzZS5nZXRWZXJzaW9uKCk7IH1cblxuICBnZXRGaWxlUGF0aHMoKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0RmlsZVBhdGhzKCk7IH1cblxuICBnZXREZXBlbmRlbmNpZXMoKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0RGVwZW5kZW5jaWVzKCk7IH1cblxuICBnZXRSdWxlcyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBydWxlcyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgICAgcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSA9IHJlbGVhc2VOYW1lcy5pbmNsdWRlcyhyZWxlYXNlTmFtZSk7XG5cbiAgICBpZiAoIXJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUpIHtcbiAgICAgIHJlbGVhc2VOYW1lcy5wdXNoKHJlbGVhc2VOYW1lKTtcblxuICAgICAgY29uc3QgYnViYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZXh0UnVsZXMgPSBmaWxlQ29udGV4dC5nZXRSdWxlcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIGZpbGVDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0UnVsZXMgPSByZWxlYXNlQ29udGV4dC5nZXRSdWxlcyhyZWxlYXNlTmFtZXMpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIHJlbGVhc2VDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGVzO1xuICB9XG5cbiAgZ2V0VHlwZXMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgdHlwZXMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IG5hbWUsIC8vL1xuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dFR5cGVzID0gZmlsZUNvbnRleHQuZ2V0VHlwZXMoYnViYmxlKTtcblxuICAgICAgICBwdXNoKHR5cGVzLCBmaWxlQ29udGV4dFR5cGVzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dFR5cGVzID0gcmVsZWFzZUNvbnRleHQuZ2V0VHlwZXMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKHR5cGVzLCByZWxlYXNlQ29udGV4dFR5cGVzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlcztcbiAgfVxuXG4gIGdldEF4aW9tcyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBheGlvbXMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IG5hbWUsIC8vL1xuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dEF4aW9tcyA9IGZpbGVDb250ZXh0LmdldEF4aW9tcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2goYXhpb21zLCBmaWxlQ29udGV4dEF4aW9tcyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRBeGlvbXMgPSByZWxlYXNlQ29udGV4dC5nZXRBeGlvbXMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKGF4aW9tcywgcmVsZWFzZUNvbnRleHRBeGlvbXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF4aW9tcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKHJlbGVhc2VOYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JzID0gW10sXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSkge1xuICAgICAgcmVsZWFzZU5hbWVzLnB1c2gocmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRDb21iaW5hdG9ycyA9IGZpbGVDb250ZXh0LmdldENvbWJpbmF0b3JzKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgZmlsZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmF0b3JzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3RvcnMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgY29uc3RydWN0b3JzID0gW10sXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSkge1xuICAgICAgcmVsZWFzZU5hbWVzLnB1c2gocmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMgPSBmaWxlQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoYnViYmxlKTtcblxuICAgICAgICBwdXNoKGNvbnN0cnVjdG9ycywgZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzID0gcmVsZWFzZUNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChjb25zdHJ1Y3RvcnMsIHJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcnM7XG4gIH1cblxuICBhZGRGaWxlQ29udGV4dChmaWxlQ29udGV4dCkge1xuICAgIHRoaXMuZmlsZUNvbnRleHRzLnB1c2goZmlsZUNvbnRleHQpO1xuICB9XG5cbiAgdG9rZW5pc2UoY29udGVudCkgeyByZXR1cm4gdGhpcy5mbG9yZW5jZUxleGVyLnRva2VuaXNlKGNvbnRlbnQpOyB9XG5cbiAgcGFyc2UodG9rZW5zKSB7IHJldHVybiB0aGlzLmZsb3JlbmNlUGFyc2VyLnBhcnNlKHRva2Vucyk7IH1cblxuICBpbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cykge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gdGhpczsgIC8vL1xuXG4gICAgcmVsZWFzZUNvbnRleHRzID0gWyByZWxlYXNlQ29udGV4dCwgLi4uZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyBdOyAvLy9cblxuICAgIGNvbnN0IGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IGNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21SZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHRzKTtcblxuICAgIHRoaXMuZmxvcmVuY2VMZXhlciA9IGZsb3JlbmNlTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKGNvbWJpbmVkQ3VzdG9tR3JhbW1hcik7XG5cbiAgICB0aGlzLmZsb3JlbmNlUGFyc2VyID0gZmxvcmVuY2VQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKGNvbWJpbmVkQ3VzdG9tR3JhbW1hcik7XG5cbiAgICB0aGlzLnJlbGVhc2VDb250ZXh0cyA9IHJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTG9nQW5kUmVsZWFzZShsb2csIHJlbGVhc2UsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IHZlcmlmaWVkID0gZmFsc2UsXG4gICAgICAgICAgY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXJGcm9tUmVsZWFzZShyZWxlYXNlKSxcbiAgICAgICAgICBmaWxlQ29udGV4dHMgPSBbXSxcbiAgICAgICAgICBmbG9yZW5jZUxleGVyID0gbnVsbCxcbiAgICAgICAgICBmbG9yZW5jZVBhcnNlciA9IG51bGwsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gW10sXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBuZXcgUmVsZWFzZUNvbnRleHQobG9nLCByZWxlYXNlLCB2ZXJpZmllZCwgY3VzdG9tR3JhbW1hciwgZmlsZUNvbnRleHRzLCBmbG9yZW5jZUxleGVyLCBmbG9yZW5jZVBhcnNlciwgcmVsZWFzZUNvbnRleHRzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oUmVsZWFzZUNvbnRleHQucHJvdG90eXBlLCBsb2dNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBSZWxlYXNlQ29udGV4dDtcbiJdLCJuYW1lcyI6WyJmbG9yZW5jZUxleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImxleGVyc1V0aWxpdGllcyIsImZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsInBhcnNlcnNVdGlsaXRpZXMiLCJSZWxlYXNlQ29udGV4dCIsImxvZyIsInJlbGVhc2UiLCJ2ZXJpZmllZCIsImN1c3RvbUdyYW1tYXIiLCJmaWxlQ29udGV4dHMiLCJmbG9yZW5jZUxleGVyIiwiZmxvcmVuY2VQYXJzZXIiLCJyZWxlYXNlQ29udGV4dHMiLCJnZXRMb2ciLCJnZXRSZWxlYXNlIiwiaXNWZXJpZmllZCIsImdldEN1c3RvbUdyYW1tYXIiLCJnZXRGaWxlQ29udGV4dHMiLCJnZXRGbG9yZW5jZUxleGVyIiwiZ2V0RmxvcmVuY2VQYXJzZXIiLCJnZXRSZWxlYXNlQ29udGV4dHMiLCJnZXRGaWxlIiwiZmlsZVBhdGgiLCJnZXROYW1lIiwiZ2V0VmVyc2lvbiIsImdldEZpbGVQYXRocyIsImdldERlcGVuZGVuY2llcyIsImdldFJ1bGVzIiwicmVsZWFzZU5hbWVzIiwibmFtZSIsInJ1bGVzIiwicmVsZWFzZU5hbWUiLCJyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lIiwiaW5jbHVkZXMiLCJwdXNoIiwiYnViYmxlIiwiZm9yRWFjaCIsImZpbGVDb250ZXh0IiwiZmlsZUNvbnRleHRSdWxlcyIsInJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRSdWxlcyIsImdldFR5cGVzIiwidHlwZXMiLCJmaWxlQ29udGV4dFR5cGVzIiwicmVsZWFzZUNvbnRleHRUeXBlcyIsImdldEF4aW9tcyIsImF4aW9tcyIsImZpbGVDb250ZXh0QXhpb21zIiwicmVsZWFzZUNvbnRleHRBeGlvbXMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZmlsZUNvbnRleHRDb21iaW5hdG9ycyIsInJlbGVhc2VDb250ZXh0Q29tYmluYXRvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJmaWxlQ29udGV4dENvbnN0cnVjdG9ycyIsInJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzIiwiYWRkRmlsZUNvbnRleHQiLCJ0b2tlbmlzZSIsImNvbnRlbnQiLCJwYXJzZSIsInRva2VucyIsImluaXRpYWxpc2UiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiY29tYmluZWRDdXN0b21HcmFtbWFyIiwiY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbVJlbGVhc2VDb250ZXh0cyIsImZyb21Mb2dBbmRSZWxlYXNlIiwicmVtYWluaW5nQXJndW1lbnRzIiwiY3VzdG9tR3JhbW1hckZyb21SZWxlYXNlIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwibG9nTWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkErT0E7OztlQUFBOzs7bUNBN09rRDt3REFFNUI7cUJBRUQ7NkJB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
@@ -0,0 +1,41 @@
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 _necessary = require("necessary");
12
+ var TRACE_LEVEL = _necessary.levels.TRACE_LEVEL, DEBUG_LEVEL = _necessary.levels.DEBUG_LEVEL, INFO_LEVEL = _necessary.levels.INFO_LEVEL, WARNING_LEVEL = _necessary.levels.WARNING_LEVEL, ERROR_LEVEL = _necessary.levels.ERROR_LEVEL, FATAL_LEVEL = _necessary.levels.FATAL_LEVEL;
13
+ function trace(message) {
14
+ this.log(TRACE_LEVEL, message);
15
+ }
16
+ function debug(message) {
17
+ this.log(DEBUG_LEVEL, message);
18
+ }
19
+ function info(message) {
20
+ this.log(INFO_LEVEL, message);
21
+ }
22
+ function warning(message) {
23
+ this.log(WARNING_LEVEL, message);
24
+ }
25
+ function error(message) {
26
+ this.log(ERROR_LEVEL, message);
27
+ }
28
+ function fatal(message) {
29
+ this.log(FATAL_LEVEL, message);
30
+ }
31
+ var logMixins = {
32
+ trace: trace,
33
+ debug: debug,
34
+ info: info,
35
+ warning: warning,
36
+ error: error,
37
+ fatal: fatal
38
+ };
39
+ var _default = logMixins;
40
+
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taXhpbnMvbG9nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBsZXZlbHMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgVFJBQ0VfTEVWRUwsIERFQlVHX0xFVkVMLCBJTkZPX0xFVkVMLCBXQVJOSU5HX0xFVkVMLCBFUlJPUl9MRVZFTCwgRkFUQUxfTEVWRUwgfSA9IGxldmVscztcblxuZnVuY3Rpb24gdHJhY2UobWVzc2FnZSkgeyB0aGlzLmxvZyhUUkFDRV9MRVZFTCwgbWVzc2FnZSk7IH1cblxuZnVuY3Rpb24gZGVidWcobWVzc2FnZSkgeyB0aGlzLmxvZyhERUJVR19MRVZFTCwgbWVzc2FnZSk7IH1cblxuZnVuY3Rpb24gaW5mbyhtZXNzYWdlKSB7IHRoaXMubG9nKElORk9fTEVWRUwsIG1lc3NhZ2UpOyB9XG5cbmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkgeyB0aGlzLmxvZyhXQVJOSU5HX0xFVkVMLCBtZXNzYWdlKTsgfVxuXG5mdW5jdGlvbiBlcnJvcihtZXNzYWdlKSB7IHRoaXMubG9nKEVSUk9SX0xFVkVMLCBtZXNzYWdlKTsgfVxuXG5mdW5jdGlvbiBmYXRhbChtZXNzYWdlKSB7IHRoaXMubG9nKEZBVEFMX0xFVkVMLCBtZXNzYWdlKTsgfVxuXG5jb25zdCBsb2dNaXhpbnMgPSB7XG4gIHRyYWNlLFxuICBkZWJ1ZyxcbiAgaW5mbyxcbiAgd2FybmluZyxcbiAgZXJyb3IsXG4gIGZhdGFsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dNaXhpbnM7XG4iXSwibmFtZXMiOlsiVFJBQ0VfTEVWRUwiLCJsZXZlbHMiLCJERUJVR19MRVZFTCIsIklORk9fTEVWRUwiLCJXQVJOSU5HX0xFVkVMIiwiRVJST1JfTEVWRUwiLCJGQVRBTF9MRVZFTCIsInRyYWNlIiwibWVzc2FnZSIsImxvZyIsImRlYnVnIiwiaW5mbyIsIndhcm5pbmciLCJlcnJvciIsImZhdGFsIiwibG9nTWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyQkE7OztlQUFBOzs7eUJBekJ1QjtBQUV2QixJQUFRQSxjQUFrRkMsaUJBQU0sQ0FBeEZELGFBQWFFLGNBQXFFRCxpQkFBTSxDQUEzRUMsYUFBYUMsYUFBd0RGLGlCQUFNLENBQTlERSxZQUFZQyxnQkFBNENILGlCQUFNLENBQWxERyxlQUFlQyxjQUE2QkosaUJBQU0sQ0FBbkNJLGFBQWFDLGNBQWdCTCxpQkFBTSxDQUF0Qks7QUFFMUUsU0FBU0MsTUFBTUMsT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNULGFBQWFRO0FBQVU7QUFFMUQsU0FBU0UsTUFBTUYsT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNQLGFBQWFNO0FBQVU7QUFFMUQsU0FBU0csS0FBS0gsT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNOLFlBQVlLO0FBQVU7QUFFeEQsU0FBU0ksUUFBUUosT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNMLGVBQWVJO0FBQVU7QUFFOUQsU0FBU0ssTUFBTUwsT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNKLGFBQWFHO0FBQVU7QUFFMUQsU0FBU00sTUFBTU4sT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNILGFBQWFFO0FBQVU7QUFFMUQsSUFBTU8sWUFBWTtJQUNoQlIsT0FBQUE7SUFDQUcsT0FBQUE7SUFDQUMsTUFBQUE7SUFDQUMsU0FBQUE7SUFDQUMsT0FBQUE7SUFDQUMsT0FBQUE7QUFDRjtJQUVBLFdBQWVDIn0=
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ customGrammarFromRelease: function() {
13
+ return customGrammarFromRelease;
14
+ },
15
+ combinedCustomGrammarFromReleaseContexts: function() {
16
+ return combinedCustomGrammarFromReleaseContexts;
17
+ }
18
+ });
19
+ var _occamCustomGrammars = require("occam-custom-grammars");
20
+ function customGrammarFromRelease(release) {
21
+ var name = release.getName(), termBNF = release.getTermBNF(), statementBNF = release.getStatementBNF(), metastatementBNF = release.getMetastatementBNF(), typePattern = release.getTypePattern(), symbolPattern = release.getSymbolPattern(), operatorPattern = release.getOperatorPattern(), customGrammar = _occamCustomGrammars.CustomGrammar.fromNameTermBNFStatementBNFMetastatementBNFTypePatternSymbolPatternAndOperatorPattern(name, termBNF, statementBNF, metastatementBNF, typePattern, symbolPattern, operatorPattern);
22
+ return customGrammar;
23
+ }
24
+ function combinedCustomGrammarFromReleaseContexts(releaseContexts) {
25
+ var customGrammars = releaseContexts.map(function(releaseContext) {
26
+ var customGrammar = releaseContext.getCustomGrammar();
27
+ return customGrammar;
28
+ }), combinedCustomGrammar = _occamCustomGrammars.CombinedCustomGrammar.fromCustomGrammars(customGrammars);
29
+ return combinedCustomGrammar;
30
+ }
31
+
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY3VzdG9tR3JhbW1hci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgQ3VzdG9tR3JhbW1hciwgQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gZnJvbSBcIm9jY2FtLWN1c3RvbS1ncmFtbWFyc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tR3JhbW1hckZyb21SZWxlYXNlKHJlbGVhc2UpIHtcbiAgY29uc3QgbmFtZSA9IHJlbGVhc2UuZ2V0TmFtZSgpLFxuICAgICAgICB0ZXJtQk5GID0gcmVsZWFzZS5nZXRUZXJtQk5GKCksXG4gICAgICAgIHN0YXRlbWVudEJORiA9IHJlbGVhc2UuZ2V0U3RhdGVtZW50Qk5GKCksXG4gICAgICAgIG1ldGFzdGF0ZW1lbnRCTkYgPSByZWxlYXNlLmdldE1ldGFzdGF0ZW1lbnRCTkYoKSxcbiAgICAgICAgdHlwZVBhdHRlcm4gPSByZWxlYXNlLmdldFR5cGVQYXR0ZXJuKCksXG4gICAgICAgIHN5bWJvbFBhdHRlcm4gPSByZWxlYXNlLmdldFN5bWJvbFBhdHRlcm4oKSxcbiAgICAgICAgb3BlcmF0b3JQYXR0ZXJuID0gcmVsZWFzZS5nZXRPcGVyYXRvclBhdHRlcm4oKSxcbiAgICAgICAgY3VzdG9tR3JhbW1hciA9IEN1c3RvbUdyYW1tYXIuZnJvbU5hbWVUZXJtQk5GU3RhdGVtZW50Qk5GTWV0YXN0YXRlbWVudEJORlR5cGVQYXR0ZXJuU3ltYm9sUGF0dGVybkFuZE9wZXJhdG9yUGF0dGVybihuYW1lLCB0ZXJtQk5GLCBzdGF0ZW1lbnRCTkYsIG1ldGFzdGF0ZW1lbnRCTkYsIHR5cGVQYXR0ZXJuLCBzeW1ib2xQYXR0ZXJuLCBvcGVyYXRvclBhdHRlcm4pO1xuXG4gIHJldHVybiBjdXN0b21HcmFtbWFyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dHMpIHtcbiAgY29uc3QgY3VzdG9tR3JhbW1hcnMgPSByZWxlYXNlQ29udGV4dHMubWFwKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1c3RvbUdyYW1tYXIgPSByZWxlYXNlQ29udGV4dC5nZXRDdXN0b21HcmFtbWFyKCk7XG5cbiAgICAgICAgICByZXR1cm4gY3VzdG9tR3JhbW1hcjtcbiAgICAgICAgfSksXG4gICAgICAgIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IENvbWJpbmVkQ3VzdG9tR3JhbW1hci5mcm9tQ3VzdG9tR3JhbW1hcnMoY3VzdG9tR3JhbW1hcnMpO1xuXG4gIHJldHVybiBjb21iaW5lZEN1c3RvbUdyYW1tYXI7XG59Il0sIm5hbWVzIjpbImN1c3RvbUdyYW1tYXJGcm9tUmVsZWFzZSIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21SZWxlYXNlQ29udGV4dHMiLCJyZWxlYXNlIiwibmFtZSIsImdldE5hbWUiLCJ0ZXJtQk5GIiwiZ2V0VGVybUJORiIsInN0YXRlbWVudEJORiIsImdldFN0YXRlbWVudEJORiIsIm1ldGFzdGF0ZW1lbnRCTkYiLCJnZXRNZXRhc3RhdGVtZW50Qk5GIiwidHlwZVBhdHRlcm4iLCJnZXRUeXBlUGF0dGVybiIsInN5bWJvbFBhdHRlcm4iLCJnZXRTeW1ib2xQYXR0ZXJuIiwib3BlcmF0b3JQYXR0ZXJuIiwiZ2V0T3BlcmF0b3JQYXR0ZXJuIiwiY3VzdG9tR3JhbW1hciIsIkN1c3RvbUdyYW1tYXIiLCJmcm9tTmFtZVRlcm1CTkZTdGF0ZW1lbnRCTkZNZXRhc3RhdGVtZW50Qk5GVHlwZVBhdHRlcm5TeW1ib2xQYXR0ZXJuQW5kT3BlcmF0b3JQYXR0ZXJuIiwicmVsZWFzZUNvbnRleHRzIiwiY3VzdG9tR3JhbW1hcnMiLCJtYXAiLCJyZWxlYXNlQ29udGV4dCIsImdldEN1c3RvbUdyYW1tYXIiLCJjb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJDb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJmcm9tQ3VzdG9tR3JhbW1hcnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUlnQkEsd0JBQXdCO2VBQXhCQTs7SUFhQUMsd0NBQXdDO2VBQXhDQTs7O21DQWZxQztBQUU5QyxTQUFTRCx5QkFBeUJFLE9BQU8sRUFBRTtJQUNoRCxJQUFNQyxPQUFPRCxRQUFRRSxPQUFPLElBQ3RCQyxVQUFVSCxRQUFRSSxVQUFVLElBQzVCQyxlQUFlTCxRQUFRTSxlQUFlLElBQ3RDQyxtQkFBbUJQLFFBQVFRLG1CQUFtQixJQUM5Q0MsY0FBY1QsUUFBUVUsY0FBYyxJQUNwQ0MsZ0JBQWdCWCxRQUFRWSxnQkFBZ0IsSUFDeENDLGtCQUFrQmIsUUFBUWMsa0JBQWtCLElBQzVDQyxnQkFBZ0JDLGtDQUFhLENBQUNDLHFGQUFxRixDQUFDaEIsTUFBTUUsU0FBU0UsY0FBY0Usa0JBQWtCRSxhQUFhRSxlQUFlRTtJQUVyTSxPQUFPRTtBQUNUO0FBRU8sU0FBU2hCLHlDQUF5Q21CLGVBQWUsRUFBRTtJQUN4RSxJQUFNQyxpQkFBaUJELGdCQUFnQkUsR0FBRyxDQUFDLFNBQUNDLGdCQUFtQjtRQUN2RCxJQUFNTixnQkFBZ0JNLGVBQWVDLGdCQUFnQjtRQUVyRCxPQUFPUDtJQUNULElBQ0FRLHdCQUF3QkMsMENBQXFCLENBQUNDLGtCQUFrQixDQUFDTjtJQUV2RSxPQUFPSTtBQUNUIn0=
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ leastLineIndexFromNodeAndTokens: function() {
13
+ return leastLineIndexFromNodeAndTokens;
14
+ },
15
+ greatestLineIndexFromNodeAndTokens: function() {
16
+ return greatestLineIndexFromNodeAndTokens;
17
+ }
18
+ });
19
+ function leastLineIndexFromNodeAndTokens(node, tokens) {
20
+ var leastLineIndex = undefined; ///
21
+ var firstSignificantToken = node.getFirstSignificantToken(), firstSignificantTokenIndex = significantTokenIndexFromSignificantTokenAndTokens(firstSignificantToken, tokens); ///
22
+ var lineIndex = 0;
23
+ tokens.some(function(token, tokenIndex) {
24
+ if (tokenIndex === firstSignificantTokenIndex) {
25
+ leastLineIndex = lineIndex; ///
26
+ return true;
27
+ }
28
+ var tokenEndOfLineToken = token.isEndOfLineToken();
29
+ if (tokenEndOfLineToken) {
30
+ lineIndex += 1;
31
+ }
32
+ });
33
+ return leastLineIndex;
34
+ }
35
+ function greatestLineIndexFromNodeAndTokens(node, tokens) {
36
+ var greatestLineIndex = undefined; ///
37
+ var lastSignificantToken = node.getLastSignificantToken(), lastSignificantTokenIndex = significantTokenIndexFromSignificantTokenAndTokens(lastSignificantToken, tokens);
38
+ var lineIndex = 0;
39
+ tokens.some(function(token, tokenIndex) {
40
+ if (tokenIndex === lastSignificantTokenIndex) {
41
+ greatestLineIndex = lineIndex; ///
42
+ return true;
43
+ }
44
+ var tokenEndOfLineToken = token.isEndOfLineToken();
45
+ if (tokenEndOfLineToken) {
46
+ lineIndex += 1;
47
+ }
48
+ });
49
+ return greatestLineIndex;
50
+ }
51
+ function significantTokenIndexFromSignificantTokenAndTokens(significantToken, tokens) {
52
+ var significantTokenIndex = -1;
53
+ tokens.some(function(token) {
54
+ significantTokenIndex++;
55
+ var tokenEqualToSignificantToken = token.isEqualTo(significantToken);
56
+ if (tokenEqualToSignificantToken) {
57
+ return true;
58
+ }
59
+ });
60
+ return significantTokenIndex;
61
+ }
62
+
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdG9rZW5zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gbGVhc3RMaW5lSW5kZXhGcm9tTm9kZUFuZFRva2Vucyhub2RlLCB0b2tlbnMpIHtcbiAgbGV0IGxlYXN0TGluZUluZGV4ID0gdW5kZWZpbmVkOyAvLy9cblxuICBjb25zdCBmaXJzdFNpZ25pZmljYW50VG9rZW4gPSBub2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbigpLFxuICAgICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IHNpZ25pZmljYW50VG9rZW5JbmRleEZyb21TaWduaWZpY2FudFRva2VuQW5kVG9rZW5zKGZpcnN0U2lnbmlmaWNhbnRUb2tlbiwgdG9rZW5zKTsgLy8vXG5cbiAgbGV0IGxpbmVJbmRleCA9IDA7XG5cbiAgdG9rZW5zLnNvbWUoKHRva2VuLCB0b2tlbkluZGV4KSA9PiB7ICAvLy9cbiAgICBpZiAodG9rZW5JbmRleCA9PT0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgpIHtcbiAgICAgIGxlYXN0TGluZUluZGV4ID0gbGluZUluZGV4OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuRW5kT2ZMaW5lVG9rZW4gPSB0b2tlbi5pc0VuZE9mTGluZVRva2VuKCk7XG5cbiAgICBpZiAodG9rZW5FbmRPZkxpbmVUb2tlbikge1xuICAgICAgbGluZUluZGV4ICs9IDE7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbGVhc3RMaW5lSW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmVhdGVzdExpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zKG5vZGUsIHRva2Vucykge1xuICBsZXQgZ3JlYXRlc3RMaW5lSW5kZXggPSB1bmRlZmluZWQ7ICAvLy9cblxuICBjb25zdCBsYXN0U2lnbmlmaWNhbnRUb2tlbiA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW4oKSxcbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IHNpZ25pZmljYW50VG9rZW5JbmRleEZyb21TaWduaWZpY2FudFRva2VuQW5kVG9rZW5zKGxhc3RTaWduaWZpY2FudFRva2VuLCB0b2tlbnMpO1xuXG4gIGxldCBsaW5lSW5kZXggPSAwO1xuXG4gIHRva2Vucy5zb21lKCh0b2tlbiwgdG9rZW5JbmRleCkgPT4geyAgLy8vXG4gICAgaWYgKHRva2VuSW5kZXggPT09IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgpIHtcbiAgICAgIGdyZWF0ZXN0TGluZUluZGV4ID0gbGluZUluZGV4OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuRW5kT2ZMaW5lVG9rZW4gPSB0b2tlbi5pc0VuZE9mTGluZVRva2VuKCk7XG5cbiAgICBpZiAodG9rZW5FbmRPZkxpbmVUb2tlbikge1xuICAgICAgbGluZUluZGV4ICs9IDE7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZ3JlYXRlc3RMaW5lSW5kZXg7XG59XG5cbmZ1bmN0aW9uIHNpZ25pZmljYW50VG9rZW5JbmRleEZyb21TaWduaWZpY2FudFRva2VuQW5kVG9rZW5zKHNpZ25pZmljYW50VG9rZW4sIHRva2Vucykge1xuICBsZXQgc2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gLTE7XG5cbiAgdG9rZW5zLnNvbWUoKHRva2VuKSA9PiB7XG4gICAgc2lnbmlmaWNhbnRUb2tlbkluZGV4Kys7XG5cbiAgICBjb25zdCB0b2tlbkVxdWFsVG9TaWduaWZpY2FudFRva2VuID0gdG9rZW4uaXNFcXVhbFRvKHNpZ25pZmljYW50VG9rZW4pO1xuXG4gICAgaWYgKHRva2VuRXF1YWxUb1NpZ25pZmljYW50VG9rZW4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25pZmljYW50VG9rZW5JbmRleDtcbn1cbiJdLCJuYW1lcyI6WyJsZWFzdExpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zIiwiZ3JlYXRlc3RMaW5lSW5kZXhGcm9tTm9kZUFuZFRva2VucyIsIm5vZGUiLCJ0b2tlbnMiLCJsZWFzdExpbmVJbmRleCIsInVuZGVmaW5lZCIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbiIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbiIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4Iiwic2lnbmlmaWNhbnRUb2tlbkluZGV4RnJvbVNpZ25pZmljYW50VG9rZW5BbmRUb2tlbnMiLCJsaW5lSW5kZXgiLCJzb21lIiwidG9rZW4iLCJ0b2tlbkluZGV4IiwidG9rZW5FbmRPZkxpbmVUb2tlbiIsImlzRW5kT2ZMaW5lVG9rZW4iLCJncmVhdGVzdExpbmVJbmRleCIsImxhc3RTaWduaWZpY2FudFRva2VuIiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW4iLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4Iiwic2lnbmlmaWNhbnRUb2tlbiIsInNpZ25pZmljYW50VG9rZW5JbmRleCIsInRva2VuRXF1YWxUb1NpZ25pZmljYW50VG9rZW4iLCJpc0VxdWFsVG8iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVnQkEsK0JBQStCO2VBQS9CQTs7SUF5QkFDLGtDQUFrQztlQUFsQ0E7OztBQXpCVCxTQUFTRCxnQ0FBZ0NFLElBQUksRUFBRUMsTUFBTSxFQUFFO0lBQzVELElBQUlDLGlCQUFpQkMsV0FBVyxHQUFHO0lBRW5DLElBQU1DLHdCQUF3QkosS0FBS0ssd0JBQXdCLElBQ3JEQyw2QkFBNkJDLG1EQUFtREgsdUJBQXVCSCxTQUFTLEdBQUc7SUFFekgsSUFBSU8sWUFBWTtJQUVoQlAsT0FBT1EsSUFBSSxDQUFDLFNBQUNDLE9BQU9DLFlBQWU7UUFDakMsSUFBSUEsZUFBZUwsNEJBQTRCO1lBQzdDSixpQkFBaUJNLFdBQVksR0FBRztZQUVoQyxPQUFPLElBQUk7UUFDYixDQUFDO1FBRUQsSUFBTUksc0JBQXNCRixNQUFNRyxnQkFBZ0I7UUFFbEQsSUFBSUQscUJBQXFCO1lBQ3ZCSixhQUFhO1FBQ2YsQ0FBQztJQUNIO0lBRUEsT0FBT047QUFDVDtBQUVPLFNBQVNILG1DQUFtQ0MsSUFBSSxFQUFFQyxNQUFNLEVBQUU7SUFDL0QsSUFBSWEsb0JBQW9CWCxXQUFZLEdBQUc7SUFFdkMsSUFBTVksdUJBQXVCZixLQUFLZ0IsdUJBQXVCLElBQ25EQyw0QkFBNEJWLG1EQUFtRFEsc0JBQXNCZDtJQUUzRyxJQUFJTyxZQUFZO0lBRWhCUCxPQUFPUSxJQUFJLENBQUMsU0FBQ0MsT0FBT0MsWUFBZTtRQUNqQyxJQUFJQSxlQUFlTSwyQkFBMkI7WUFDNUNILG9CQUFvQk4sV0FBWSxHQUFHO1lBRW5DLE9BQU8sSUFBSTtRQUNiLENBQUM7UUFFRCxJQUFNSSxzQkFBc0JGLE1BQU1HLGdCQUFnQjtRQUVsRCxJQUFJRCxxQkFBcUI7WUFDdkJKLGFBQWE7UUFDZixDQUFDO0lBQ0g7SUFFQSxPQUFPTTtBQUNUO0FBRUEsU0FBU1AsbURBQW1EVyxnQkFBZ0IsRUFBRWpCLE1BQU0sRUFBRTtJQUNwRixJQUFJa0Isd0JBQXdCLENBQUM7SUFFN0JsQixPQUFPUSxJQUFJLENBQUMsU0FBQ0MsT0FBVTtRQUNyQlM7UUFFQSxJQUFNQywrQkFBK0JWLE1BQU1XLFNBQVMsQ0FBQ0g7UUFFckQsSUFBSUUsOEJBQThCO1lBQ2hDLE9BQU8sSUFBSTtRQUNiLENBQUM7SUFDSDtJQUVBLE9BQU9EO0FBQ1QifQ==
@@ -22,7 +22,7 @@ function verifyTypeAssertion(typeAssertionNode, context) {
22
22
  var typeAssertionVerified = false;
23
23
  var typeNode = typeNodeQuery(typeAssertionNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = context.isTypePresentByTypeName(typeName);
24
24
  if (!typePresent) {
25
- context.error("The ".concat(typeName, " type is not present."));
25
+ context.error("The ".concat(typeName, " type is not present."), typeAssertionNode);
26
26
  } else {
27
27
  var derived = context.isDerived();
28
28
  if (derived) {
@@ -32,11 +32,11 @@ function verifyTypeAssertion(typeAssertionNode, context) {
32
32
  if (termVerified) {
33
33
  var firstName = (0, _array.first)(names), firstValue = (0, _array.first)(values), variableName = firstName, value = firstValue;
34
34
  if (value !== undefined) {
35
- context.error("The value of the ".concat(variableName, " variable is not undefined."));
35
+ context.error("The value of the ".concat(variableName, " variable is not undefined."), typeAssertionNode);
36
36
  } else {
37
37
  var type = context.findTypeByTypeName(typeName), firstType = (0, _array.first)(types), variableType = firstType, typeSubTypeOfVariableType = type.isSubTypeOf(variableType);
38
38
  if (!typeSubTypeOfVariableType) {
39
- context.error("The asserted type of the ".concat(variableName, " variable is not a sub-type of its declared type."));
39
+ context.error("The asserted type of the ".concat(variableName, " variable is not a sub-type of its declared type."), typeAssertionNode);
40
40
  } else {
41
41
  var name = variableName, variable = _variable.default.fromTypeAndName(type, name);
42
42
  context.addVariable(variable);
@@ -49,4 +49,4 @@ function verifyTypeAssertion(typeAssertionNode, context) {
49
49
  return typeAssertionVerified;
50
50
  }
51
51
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcbmltcG9ydCB2ZXJpZnlUZXJtQXNWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmVyaWZ5L3Rlcm1Bc1ZhcmlhYmxlXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgIGNvbnRleHQuZXJyb3IoYFRoZSAke3R5cGVOYW1lfSB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBjb250ZXh0LmlzRGVyaXZlZCgpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGRlYnVnZ2VyXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVzID0gW10sXG4gICAgICAgICAgICBuYW1lcyA9IFtdLFxuICAgICAgICAgICAgdmFsdWVzID0gW10sXG4gICAgICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgICAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHR5cGVzLCBuYW1lcywgdmFsdWVzLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1WZXJpZmllZCkge1xuICAgICAgICBjb25zdCBmaXJzdE5hbWUgPSBmaXJzdChuYW1lcyksXG4gICAgICAgICAgICAgIGZpcnN0VmFsdWUgPSBmaXJzdCh2YWx1ZXMpLFxuICAgICAgICAgICAgICB2YXJpYWJsZU5hbWUgPSBmaXJzdE5hbWUsIC8vL1xuICAgICAgICAgICAgICB2YWx1ZSA9IGZpcnN0VmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb250ZXh0LmVycm9yKGBUaGUgdmFsdWUgb2YgdGhlICR7dmFyaWFibGVOYW1lfSB2YXJpYWJsZSBpcyBub3QgdW5kZWZpbmVkLmApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSksXG4gICAgICAgICAgICAgICAgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlVHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4gICAgICAgICAgICAgICAgdHlwZVN1YlR5cGVPZlZhcmlhYmxlVHlwZSA9IHR5cGUuaXNTdWJUeXBlT2YodmFyaWFibGVUeXBlKTtcblxuICAgICAgICAgIGlmICghdHlwZVN1YlR5cGVPZlZhcmlhYmxlVHlwZSkge1xuICAgICAgICAgICAgY29udGV4dC5lcnJvcihgVGhlIGFzc2VydGVkIHR5cGUgb2YgdGhlICR7dmFyaWFibGVOYW1lfSB2YXJpYWJsZSBpcyBub3QgYSBzdWItdHlwZSBvZiBpdHMgZGVjbGFyZWQgdHlwZS5gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG5cbiAgICAgICAgICAgIGNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICAgICAgICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VHlwZUFzc2VydGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGUiLCJjb250ZXh0IiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidHlwZU5vZGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsImVycm9yIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInR5cGVzIiwibmFtZXMiLCJ2YWx1ZXMiLCJ0ZXJtTm9kZSIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwiZmlyc3ROYW1lIiwiZmlyc3QiLCJmaXJzdFZhbHVlIiwidmFyaWFibGVOYW1lIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJ0eXBlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiZmlyc3RUeXBlIiwidmFyaWFibGVUeXBlIiwidHlwZVN1YlR5cGVPZlZhcmlhYmxlVHlwZSIsImlzU3ViVHlwZU9mIiwibmFtZSIsInZhcmlhYmxlIiwiVmFyaWFibGUiLCJmcm9tVHlwZUFuZE5hbWUiLCJhZGRWYXJpYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUF3QkE7Ozs2REFUSDttRUFDWTtxQkFFWDtxQkFDMEI7Ozs7OztBQUVoRCxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0Ysb0JBQW9CSSxpQkFBaUIsRUFBRUMsT0FBTyxFQUFFO0lBQ3RFLElBQUlDLHdCQUF3QixLQUFLO0lBRWpDLElBQU1DLFdBQVdKLGNBQWNDLG9CQUN6QkksV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNGLFdBQ2hDRyxjQUFjTCxRQUFRTSx1QkFBdUIsQ0FBQ0g7SUFFcEQsSUFBSSxDQUFDRSxhQUFhO1FBQ2hCTCxRQUFRTyxLQUFLLENBQUMsQUFBQyxPQUFlLE9BQVRKLFVBQVM7SUFDaEMsT0FBTztRQUNMLElBQU1LLFVBQVVSLFFBQVFTLFNBQVM7UUFFakMsSUFBSUQsU0FBUztZQUNYLFFBQVE7UUFDVixPQUFPO1lBQ0wsSUFBTUUsUUFBUSxFQUFFLEVBQ1ZDLFFBQVEsRUFBRSxFQUNWQyxTQUFTLEVBQUUsRUFDWEMsV0FBV2pCLGNBQWNHLG9CQUN6QmUsZUFBZUMsSUFBQUEsdUJBQW9CLEVBQUNGLFVBQVVILE9BQU9DLE9BQU9DLFFBQVFaO1lBRTFFLElBQUljLGNBQWM7Z0JBQ2hCLElBQU1FLFlBQVlDLElBQUFBLFlBQUssRUFBQ04sUUFDbEJPLGFBQWFELElBQUFBLFlBQUssRUFBQ0wsU0FDbkJPLGVBQWVILFdBQ2ZJLFFBQVFGO2dCQUVkLElBQUlFLFVBQVVDLFdBQVc7b0JBQ3ZCckIsUUFBUU8sS0FBSyxDQUFDLEFBQUMsb0JBQWdDLE9BQWJZLGNBQWE7Z0JBQ2pELE9BQU87b0JBQ0wsSUFBTUcsT0FBT3RCLFFBQVF1QixrQkFBa0IsQ0FBQ3BCLFdBQ2xDcUIsWUFBWVAsSUFBQUEsWUFBSyxFQUFDUCxRQUNsQmUsZUFBZUQsV0FDZkUsNEJBQTRCSixLQUFLSyxXQUFXLENBQUNGO29CQUVuRCxJQUFJLENBQUNDLDJCQUEyQjt3QkFDOUIxQixRQUFRTyxLQUFLLENBQUMsQUFBQyw0QkFBd0MsT0FBYlksY0FBYTtvQkFDekQsT0FBTzt3QkFDTCxJQUFNUyxPQUFPVCxjQUNQVSxXQUFXQyxpQkFBUSxDQUFDQyxlQUFlLENBQUNULE1BQU1NO3dCQUVoRDVCLFFBQVFnQyxXQUFXLENBQUNIO3dCQUVwQjVCLHdCQUF3QixJQUFJO29CQUM5QixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPQTtBQUNUIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcbmltcG9ydCB2ZXJpZnlUZXJtQXNWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmVyaWZ5L3Rlcm1Bc1ZhcmlhYmxlXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgIGNvbnRleHQuZXJyb3IoYFRoZSAke3R5cGVOYW1lfSB0eXBlIGlzIG5vdCBwcmVzZW50LmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkZXJpdmVkID0gY29udGV4dC5pc0Rlcml2ZWQoKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICBkZWJ1Z2dlclxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICAgICAgbmFtZXMgPSBbXSxcbiAgICAgICAgICAgIHZhbHVlcyA9IFtdLFxuICAgICAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0eXBlcywgbmFtZXMsIHZhbHVlcywgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3ROYW1lID0gZmlyc3QobmFtZXMpLFxuICAgICAgICAgICAgICBmaXJzdFZhbHVlID0gZmlyc3QodmFsdWVzKSxcbiAgICAgICAgICAgICAgdmFyaWFibGVOYW1lID0gZmlyc3ROYW1lLCAvLy9cbiAgICAgICAgICAgICAgdmFsdWUgPSBmaXJzdFZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29udGV4dC5lcnJvcihgVGhlIHZhbHVlIG9mIHRoZSAke3ZhcmlhYmxlTmFtZX0gdmFyaWFibGUgaXMgbm90IHVuZGVmaW5lZC5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbiAgICAgICAgICAgICAgICBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlID0gZmlyc3RUeXBlLCAvLy9cbiAgICAgICAgICAgICAgICB0eXBlU3ViVHlwZU9mVmFyaWFibGVUeXBlID0gdHlwZS5pc1N1YlR5cGVPZih2YXJpYWJsZVR5cGUpO1xuXG4gICAgICAgICAgaWYgKCF0eXBlU3ViVHlwZU9mVmFyaWFibGVUeXBlKSB7XG4gICAgICAgICAgICBjb250ZXh0LmVycm9yKGBUaGUgYXNzZXJ0ZWQgdHlwZSBvZiB0aGUgJHt2YXJpYWJsZU5hbWV9IHZhcmlhYmxlIGlzIG5vdCBhIHN1Yi10eXBlIG9mIGl0cyBkZWNsYXJlZCB0eXBlLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG5cbiAgICAgICAgICAgIGNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICAgICAgICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VHlwZUFzc2VydGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGUiLCJjb250ZXh0IiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidHlwZU5vZGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsImVycm9yIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInR5cGVzIiwibmFtZXMiLCJ2YWx1ZXMiLCJ0ZXJtTm9kZSIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwiZmlyc3ROYW1lIiwiZmlyc3QiLCJmaXJzdFZhbHVlIiwidmFyaWFibGVOYW1lIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJ0eXBlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiZmlyc3RUeXBlIiwidmFyaWFibGVUeXBlIiwidHlwZVN1YlR5cGVPZlZhcmlhYmxlVHlwZSIsImlzU3ViVHlwZU9mIiwibmFtZSIsInZhcmlhYmxlIiwiVmFyaWFibGUiLCJmcm9tVHlwZUFuZE5hbWUiLCJhZGRWYXJpYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUF3QkE7Ozs2REFUSDttRUFDWTtxQkFFWDtxQkFDMEI7Ozs7OztBQUVoRCxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0Ysb0JBQW9CSSxpQkFBaUIsRUFBRUMsT0FBTyxFQUFFO0lBQ3RFLElBQUlDLHdCQUF3QixLQUFLO0lBRWpDLElBQU1DLFdBQVdKLGNBQWNDLG9CQUN6QkksV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNGLFdBQ2hDRyxjQUFjTCxRQUFRTSx1QkFBdUIsQ0FBQ0g7SUFFcEQsSUFBSSxDQUFDRSxhQUFhO1FBQ2hCTCxRQUFRTyxLQUFLLENBQUMsQUFBQyxPQUFlLE9BQVRKLFVBQVMsMEJBQXdCSjtJQUN4RCxPQUFPO1FBQ0wsSUFBTVMsVUFBVVIsUUFBUVMsU0FBUztRQUVqQyxJQUFJRCxTQUFTO1lBQ1gsUUFBUTtRQUNWLE9BQU87WUFDTCxJQUFNRSxRQUFRLEVBQUUsRUFDVkMsUUFBUSxFQUFFLEVBQ1ZDLFNBQVMsRUFBRSxFQUNYQyxXQUFXakIsY0FBY0csb0JBQ3pCZSxlQUFlQyxJQUFBQSx1QkFBb0IsRUFBQ0YsVUFBVUgsT0FBT0MsT0FBT0MsUUFBUVo7WUFFMUUsSUFBSWMsY0FBYztnQkFDaEIsSUFBTUUsWUFBWUMsSUFBQUEsWUFBSyxFQUFDTixRQUNsQk8sYUFBYUQsSUFBQUEsWUFBSyxFQUFDTCxTQUNuQk8sZUFBZUgsV0FDZkksUUFBUUY7Z0JBRWQsSUFBSUUsVUFBVUMsV0FBVztvQkFDdkJyQixRQUFRTyxLQUFLLENBQUMsQUFBQyxvQkFBZ0MsT0FBYlksY0FBYSxnQ0FBOEJwQjtnQkFDL0UsT0FBTztvQkFDTCxJQUFNdUIsT0FBT3RCLFFBQVF1QixrQkFBa0IsQ0FBQ3BCLFdBQ2xDcUIsWUFBWVAsSUFBQUEsWUFBSyxFQUFDUCxRQUNsQmUsZUFBZUQsV0FDZkUsNEJBQTRCSixLQUFLSyxXQUFXLENBQUNGO29CQUVuRCxJQUFJLENBQUNDLDJCQUEyQjt3QkFDOUIxQixRQUFRTyxLQUFLLENBQUMsQUFBQyw0QkFBd0MsT0FBYlksY0FBYSxzREFBb0RwQjtvQkFDN0csT0FBTzt3QkFDTCxJQUFNNkIsT0FBT1QsY0FDUFUsV0FBV0MsaUJBQVEsQ0FBQ0MsZUFBZSxDQUFDVCxNQUFNTTt3QkFFaEQ1QixRQUFRZ0MsV0FBVyxDQUFDSDt3QkFFcEI1Qix3QkFBd0IsSUFBSTtvQkFDOUIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT0E7QUFDVCJ9
@@ -22,7 +22,7 @@ function _interopRequireDefault(obj) {
22
22
  var labelNodesQuery = (0, _query.nodesQuery)("/axiom/label"), statementNodeQuery = (0, _query.nodeQuery)("/*/statement"), unqualifiedStatementNodeQuery = (0, _query.nodeQuery)("/axiom/unqualifiedStatement!"), indicativeConditionalNodeQuery = (0, _query.nodeQuery)("/axiom/indicativeConditional!");
23
23
  function verifyAxiom(axiomNode, context) {
24
24
  var labelNodes = labelNodesQuery(axiomNode), labelsString = (0, _string.nodesAsString)(labelNodes);
25
- context.debug("Verifying the '".concat(labelsString, "' axiom..."));
25
+ context.debug("Verifying the '".concat(labelsString, "' axiom..."), axiomNode);
26
26
  var proofContext = _proof.default.fromContext(context);
27
27
  context = proofContext; ///
28
28
  var unqualifiedStatementNode = unqualifiedStatementNodeQuery(axiomNode), indicativeConditionalNode = indicativeConditionalNodeQuery(axiomNode);
@@ -44,9 +44,9 @@ function verifyAxiom(axiomNode, context) {
44
44
  }
45
45
  }
46
46
  if (axiomVerified) {
47
- context.info("Verified the '".concat(labelsString, "' axiom."));
47
+ context.info("Verified the '".concat(labelsString, "' axiom."), axiomNode);
48
48
  }
49
49
  return axiomVerified;
50
50
  }
51
51
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvYXhpb20uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBQcm9vZkNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCBmcm9tIFwiLi4vdmVyaWZ5L3N0YXRlbWVudC91bnF1YWxpZmllZFwiO1xuaW1wb3J0IHZlcmlmeUluZGljYXRpdmVDb25kaXRpb25hbCBmcm9tIFwiLi4vdmVyaWZ5L2luZGljYXRpdmVDb25kaXRpb25hbFwiO1xuXG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZXNBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGxhYmVsTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvYXhpb20vbGFiZWxcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9zdGF0ZW1lbnRcIiksXG4gICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9heGlvbS91bnF1YWxpZmllZFN0YXRlbWVudCFcIiksXG4gICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXhpb20vaW5kaWNhdGl2ZUNvbmRpdGlvbmFsIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5QXhpb20oYXhpb21Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxhYmVsTm9kZXMgPSBsYWJlbE5vZGVzUXVlcnkoYXhpb21Ob2RlKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbm9kZXNBc1N0cmluZyhsYWJlbE5vZGVzKTtcblxuICBjb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke2xhYmVsc1N0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgY29uc3QgcHJvb2ZDb250ZXh0ID0gUHJvb2ZDb250ZXh0LmZyb21Db250ZXh0KGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBwcm9vZkNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSA9IHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZVF1ZXJ5KGF4aW9tTm9kZSksXG4gICAgICAgIGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUgPSBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlUXVlcnkoYXhpb21Ob2RlKTtcblxuICBsZXQgYXhpb21WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICBsYWJlbHMgPSBsYWJlbHNTdHJpbmcsICAvLy9cbiAgICAgICAgICAgIGF4aW9tID0gQXhpb20uZnJvbVN0YXRlbWVudE5vZGVBbmRMYWJlbHMoc3RhdGVtZW50Tm9kZSwgbGFiZWxzKTtcblxuICAgICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG5cbiAgICAgIGF4aW9tVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZXMgPSBbXSxcbiAgICAgICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxWZXJpZmllZCA9IHZlcmlmeUluZGljYXRpdmVDb25kaXRpb25hbChpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlLCBzdGF0ZW1lbnROb2RlcywgY29udGV4dCk7XG5cbiAgICBpZiAoaW5kaWNhdGl2ZUNvbmRpdGlvbmFsVmVyaWZpZWQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxhYmVscyA9IGxhYmVsc1N0cmluZywgIC8vL1xuICAgICAgICAgICAgZmlyc3RTdGF0ZW1lbnROb2RlID0gZmlyc3Qoc3RhdGVtZW50Tm9kZXMpLFxuICAgICAgICAgICAgc2Vjb25kU3RhdGVtZW50Tm9kZSA9IHNlY29uZChzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgICAgICBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGUgPSBmaXJzdFN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlID0gc2Vjb25kU3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tU3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlQ29uc2VxdWVudFN0YXRlbWVudE5vZGVBbmRMYWJlbHMoc3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlLCBjb25zZXF1ZW50U3RhdGVtZW50Tm9kZSwgbGFiZWxzKTtcblxuICAgICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG5cbiAgICAgIGF4aW9tVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChheGlvbVZlcmlmaWVkKSB7XG4gICAgY29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7bGFiZWxzU3RyaW5nfScgYXhpb20uYCk7XG4gIH1cblxuICByZXR1cm4gYXhpb21WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlBeGlvbSIsImxhYmVsTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeSIsImluZGljYXRpdmVDb25kaXRpb25hbE5vZGVRdWVyeSIsImF4aW9tTm9kZSIsImNvbnRleHQiLCJsYWJlbE5vZGVzIiwibGFiZWxzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsImRlYnVnIiwicHJvb2ZDb250ZXh0IiwiUHJvb2ZDb250ZXh0IiwiZnJvbUNvbnRleHQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlIiwiYXhpb21WZXJpZmllZCIsInVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJsYWJlbHMiLCJheGlvbSIsIkF4aW9tIiwiZnJvbVN0YXRlbWVudE5vZGVBbmRMYWJlbHMiLCJhZGRBeGlvbSIsInN0YXRlbWVudE5vZGVzIiwiaW5kaWNhdGl2ZUNvbmRpdGlvbmFsVmVyaWZpZWQiLCJ2ZXJpZnlJbmRpY2F0aXZlQ29uZGl0aW9uYWwiLCJmaXJzdFN0YXRlbWVudE5vZGUiLCJmaXJzdCIsInNlY29uZFN0YXRlbWVudE5vZGUiLCJzZWNvbmQiLCJzdXBwb3NpdGlvblN0YXRlbWVudE5vZGUiLCJjb25zZXF1ZW50U3RhdGVtZW50Tm9kZSIsImZyb21TdXBwb3NpdGlvblN0YXRlbWVudE5vZGVDb25zZXF1ZW50U3RhdGVtZW50Tm9kZUFuZExhYmVscyIsImluZm8iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBd0JBOzs7MERBYkM7Z0VBQ2M7MEVBQ0M7cUJBRVY7c0JBQ0E7cUJBQ1E7Ozs7OztBQUV0QyxJQUFNQyxrQkFBa0JDLElBQUFBLGlCQUFVLEVBQUMsaUJBQzdCQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsaUJBQy9CQyxnQ0FBZ0NELElBQUFBLGdCQUFTLEVBQUMsaUNBQzFDRSxpQ0FBaUNGLElBQUFBLGdCQUFTLEVBQUM7QUFFbEMsU0FBU0osWUFBWU8sU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDdEQsSUFBTUMsYUFBYVIsZ0JBQWdCTSxZQUM3QkcsZUFBZUMsSUFBQUEscUJBQWEsRUFBQ0Y7SUFFbkNELFFBQVFJLEtBQUssQ0FBQyxBQUFDLGtCQUE4QixPQUFiRixjQUFhO0lBRTdDLElBQU1HLGVBQWVDLGNBQVksQ0FBQ0MsV0FBVyxDQUFDUDtJQUU5Q0EsVUFBVUssY0FBYyxHQUFHO0lBRTNCLElBQU1HLDJCQUEyQlgsOEJBQThCRSxZQUN6RFUsNEJBQTRCWCwrQkFBK0JDO0lBRWpFLElBQUlXLGdCQUFnQixLQUFLO0lBRXpCLElBQUlGLDZCQUE2QixJQUFJLEVBQUU7UUFDckMsSUFBTUcsK0JBQStCQyxJQUFBQSxvQkFBMEIsRUFBQ0osMEJBQTBCUjtRQUUxRixJQUFJVyw4QkFBOEI7WUFDaEMsSUFBTUUsZ0JBQWdCbEIsbUJBQW1CYSwyQkFDbkNNLFNBQVNaLGNBQ1RhLFFBQVFDLE1BQU1DLDBCQUEwQixDQUFDSixlQUFlQztZQUU5RGQsUUFBUWtCLFFBQVEsQ0FBQ0g7WUFFakJMLGdCQUFnQixJQUFJO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSUQsOEJBQThCLElBQUksRUFBRTtRQUN0QyxJQUFNVSxpQkFBaUIsRUFBRSxFQUNuQkMsZ0NBQWdDQyxJQUFBQSw4QkFBMkIsRUFBQ1osMkJBQTJCVSxnQkFBZ0JuQjtRQUU3RyxJQUFJb0Isa0NBQWtDLElBQUksRUFBRTtZQUMxQyxJQUFNTixVQUFTWixjQUNUb0IscUJBQXFCQyxJQUFBQSxZQUFLLEVBQUNKLGlCQUMzQkssc0JBQXNCQyxJQUFBQSxhQUFNLEVBQUNOLGlCQUM3Qk8sMkJBQTJCSixvQkFDM0JLLDBCQUEwQkgscUJBQzFCVCxTQUFRQyxNQUFNWSw0REFBNEQsQ0FBQ0YsMEJBQTBCQyx5QkFBeUJiO1lBRXBJZCxRQUFRa0IsUUFBUSxDQUFDSDtZQUVqQkwsZ0JBQWdCLElBQUk7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJQSxlQUFlO1FBQ2pCVixRQUFRNkIsSUFBSSxDQUFDLEFBQUMsaUJBQTZCLE9BQWIzQixjQUFhO0lBQzdDLENBQUM7SUFFRCxPQUFPUTtBQUNUIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvYXhpb20uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBQcm9vZkNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCBmcm9tIFwiLi4vdmVyaWZ5L3N0YXRlbWVudC91bnF1YWxpZmllZFwiO1xuaW1wb3J0IHZlcmlmeUluZGljYXRpdmVDb25kaXRpb25hbCBmcm9tIFwiLi4vdmVyaWZ5L2luZGljYXRpdmVDb25kaXRpb25hbFwiO1xuXG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZXNBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGxhYmVsTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvYXhpb20vbGFiZWxcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9zdGF0ZW1lbnRcIiksXG4gICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9heGlvbS91bnF1YWxpZmllZFN0YXRlbWVudCFcIiksXG4gICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXhpb20vaW5kaWNhdGl2ZUNvbmRpdGlvbmFsIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5QXhpb20oYXhpb21Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxhYmVsTm9kZXMgPSBsYWJlbE5vZGVzUXVlcnkoYXhpb21Ob2RlKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbm9kZXNBc1N0cmluZyhsYWJlbE5vZGVzKTtcblxuICBjb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke2xhYmVsc1N0cmluZ30nIGF4aW9tLi4uYCwgYXhpb21Ob2RlKTtcblxuICBjb25zdCBwcm9vZkNvbnRleHQgPSBQcm9vZkNvbnRleHQuZnJvbUNvbnRleHQoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHByb29mQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlUXVlcnkoYXhpb21Ob2RlKSxcbiAgICAgICAgaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZSA9IGluZGljYXRpdmVDb25kaXRpb25hbE5vZGVRdWVyeShheGlvbU5vZGUpO1xuXG4gIGxldCBheGlvbVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgaWYgKHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgIGxhYmVscyA9IGxhYmVsc1N0cmluZywgIC8vL1xuICAgICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tU3RhdGVtZW50Tm9kZUFuZExhYmVscyhzdGF0ZW1lbnROb2RlLCBsYWJlbHMpO1xuXG4gICAgICBjb250ZXh0LmFkZEF4aW9tKGF4aW9tKTtcblxuICAgICAgYXhpb21WZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlcyA9IFtdLFxuICAgICAgICAgIGluZGljYXRpdmVDb25kaXRpb25hbFZlcmlmaWVkID0gdmVyaWZ5SW5kaWNhdGl2ZUNvbmRpdGlvbmFsKGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUsIHN0YXRlbWVudE5vZGVzLCBjb250ZXh0KTtcblxuICAgIGlmIChpbmRpY2F0aXZlQ29uZGl0aW9uYWxWZXJpZmllZCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbGFiZWxzID0gbGFiZWxzU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICBmaXJzdFN0YXRlbWVudE5vZGUgPSBmaXJzdChzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgICAgICBzZWNvbmRTdGF0ZW1lbnROb2RlID0gc2Vjb25kKHN0YXRlbWVudE5vZGVzKSxcbiAgICAgICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZSA9IGZpcnN0U3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uc2VxdWVudFN0YXRlbWVudE5vZGUgPSBzZWNvbmRTdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21TdXBwb3NpdGlvblN0YXRlbWVudE5vZGVDb25zZXF1ZW50U3RhdGVtZW50Tm9kZUFuZExhYmVscyhzdXBwb3NpdGlvblN0YXRlbWVudE5vZGUsIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlLCBsYWJlbHMpO1xuXG4gICAgICBjb250ZXh0LmFkZEF4aW9tKGF4aW9tKTtcblxuICAgICAgYXhpb21WZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGF4aW9tVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyBheGlvbS5gLCBheGlvbU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGF4aW9tVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5QXhpb20iLCJsYWJlbE5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlUXVlcnkiLCJpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlUXVlcnkiLCJheGlvbU5vZGUiLCJjb250ZXh0IiwibGFiZWxOb2RlcyIsImxhYmVsc1N0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJkZWJ1ZyIsInByb29mQ29udGV4dCIsIlByb29mQ29udGV4dCIsImZyb21Db250ZXh0IiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwiaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZSIsImF4aW9tVmVyaWZpZWQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwibGFiZWxzIiwiYXhpb20iLCJBeGlvbSIsImZyb21TdGF0ZW1lbnROb2RlQW5kTGFiZWxzIiwiYWRkQXhpb20iLCJzdGF0ZW1lbnROb2RlcyIsImluZGljYXRpdmVDb25kaXRpb25hbFZlcmlmaWVkIiwidmVyaWZ5SW5kaWNhdGl2ZUNvbmRpdGlvbmFsIiwiZmlyc3RTdGF0ZW1lbnROb2RlIiwiZmlyc3QiLCJzZWNvbmRTdGF0ZW1lbnROb2RlIiwic2Vjb25kIiwic3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlIiwiY29uc2VxdWVudFN0YXRlbWVudE5vZGUiLCJmcm9tU3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlQ29uc2VxdWVudFN0YXRlbWVudE5vZGVBbmRMYWJlbHMiLCJpbmZvIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQXdCQTs7OzBEQWJDO2dFQUNjOzBFQUNDO3FCQUVWO3NCQUNBO3FCQUNROzs7Ozs7QUFFdEMsSUFBTUMsa0JBQWtCQyxJQUFBQSxpQkFBVSxFQUFDLGlCQUM3QkMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDLGlCQUMvQkMsZ0NBQWdDRCxJQUFBQSxnQkFBUyxFQUFDLGlDQUMxQ0UsaUNBQWlDRixJQUFBQSxnQkFBUyxFQUFDO0FBRWxDLFNBQVNKLFlBQVlPLFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQ3RELElBQU1DLGFBQWFSLGdCQUFnQk0sWUFDN0JHLGVBQWVDLElBQUFBLHFCQUFhLEVBQUNGO0lBRW5DRCxRQUFRSSxLQUFLLENBQUMsQUFBQyxrQkFBOEIsT0FBYkYsY0FBYSxlQUFhSDtJQUUxRCxJQUFNTSxlQUFlQyxjQUFZLENBQUNDLFdBQVcsQ0FBQ1A7SUFFOUNBLFVBQVVLLGNBQWMsR0FBRztJQUUzQixJQUFNRywyQkFBMkJYLDhCQUE4QkUsWUFDekRVLDRCQUE0QlgsK0JBQStCQztJQUVqRSxJQUFJVyxnQkFBZ0IsS0FBSztJQUV6QixJQUFJRiw2QkFBNkIsSUFBSSxFQUFFO1FBQ3JDLElBQU1HLCtCQUErQkMsSUFBQUEsb0JBQTBCLEVBQUNKLDBCQUEwQlI7UUFFMUYsSUFBSVcsOEJBQThCO1lBQ2hDLElBQU1FLGdCQUFnQmxCLG1CQUFtQmEsMkJBQ25DTSxTQUFTWixjQUNUYSxRQUFRQyxNQUFNQywwQkFBMEIsQ0FBQ0osZUFBZUM7WUFFOURkLFFBQVFrQixRQUFRLENBQUNIO1lBRWpCTCxnQkFBZ0IsSUFBSTtRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlELDhCQUE4QixJQUFJLEVBQUU7UUFDdEMsSUFBTVUsaUJBQWlCLEVBQUUsRUFDbkJDLGdDQUFnQ0MsSUFBQUEsOEJBQTJCLEVBQUNaLDJCQUEyQlUsZ0JBQWdCbkI7UUFFN0csSUFBSW9CLGtDQUFrQyxJQUFJLEVBQUU7WUFDMUMsSUFBTU4sVUFBU1osY0FDVG9CLHFCQUFxQkMsSUFBQUEsWUFBSyxFQUFDSixpQkFDM0JLLHNCQUFzQkMsSUFBQUEsYUFBTSxFQUFDTixpQkFDN0JPLDJCQUEyQkosb0JBQzNCSywwQkFBMEJILHFCQUMxQlQsU0FBUUMsTUFBTVksNERBQTRELENBQUNGLDBCQUEwQkMseUJBQXlCYjtZQUVwSWQsUUFBUWtCLFFBQVEsQ0FBQ0g7WUFFakJMLGdCQUFnQixJQUFJO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSUEsZUFBZTtRQUNqQlYsUUFBUTZCLElBQUksQ0FBQyxBQUFDLGlCQUE2QixPQUFiM0IsY0FBYSxhQUFXSDtJQUN4RCxDQUFDO0lBRUQsT0FBT1c7QUFDVCJ9
@@ -13,7 +13,7 @@ function verifyLabel(labelNode, labels, context) {
13
13
  var labelVerified = false;
14
14
  var labelName = (0, _query.labelNameFromLabelNode)(labelNode), label = labelName, labelPresent = context.isLabelPresent(label);
15
15
  if (labelPresent) {
16
- context.error("The label ".concat(label, " is already present"));
16
+ context.error("The label ".concat(label, " is already present"), labelNode);
17
17
  } else {
18
18
  labels.push(label);
19
19
  labelVerified = true;
@@ -21,4 +21,4 @@ function verifyLabel(labelNode, labels, context) {
21
21
  return labelVerified;
22
22
  }
23
23
 
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbGFiZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxhYmVsTmFtZUZyb21MYWJlbE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeUxhYmVsKGxhYmVsTm9kZSwgbGFiZWxzLCBjb250ZXh0KSB7XG4gIGxldCBsYWJlbFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbGFiZWxOYW1lID0gbGFiZWxOYW1lRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUpLFxuICAgICAgICBsYWJlbCA9IGxhYmVsTmFtZSwgIC8vL1xuICAgICAgICBsYWJlbFByZXNlbnQgPSBjb250ZXh0LmlzTGFiZWxQcmVzZW50KGxhYmVsKTtcblxuICBpZiAobGFiZWxQcmVzZW50KSB7XG4gICAgY29udGV4dC5lcnJvcihgVGhlIGxhYmVsICR7bGFiZWx9IGlzIGFscmVhZHkgcHJlc2VudGApO1xuICB9IGVsc2Uge1xuICAgIGxhYmVscy5wdXNoKGxhYmVsKTtcblxuICAgIGxhYmVsVmVyaWZpZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGxhYmVsVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5TGFiZWwiLCJsYWJlbE5vZGUiLCJsYWJlbHMiLCJjb250ZXh0IiwibGFiZWxWZXJpZmllZCIsImxhYmVsTmFtZSIsImxhYmVsTmFtZUZyb21MYWJlbE5vZGUiLCJsYWJlbCIsImxhYmVsUHJlc2VudCIsImlzTGFiZWxQcmVzZW50IiwiZXJyb3IiLCJwdXNoIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXdCQTs7O3FCQUZlO0FBRXhCLFNBQVNBLFlBQVlDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUU7SUFDOUQsSUFBSUMsZ0JBQWdCLEtBQUs7SUFFekIsSUFBTUMsWUFBWUMsSUFBQUEsNkJBQXNCLEVBQUNMLFlBQ25DTSxRQUFRRixXQUNSRyxlQUFlTCxRQUFRTSxjQUFjLENBQUNGO0lBRTVDLElBQUlDLGNBQWM7UUFDaEJMLFFBQVFPLEtBQUssQ0FBQyxBQUFDLGFBQWtCLE9BQU5ILE9BQU07SUFDbkMsT0FBTztRQUNMTCxPQUFPUyxJQUFJLENBQUNKO1FBRVpILGdCQUFnQixJQUFJO0lBQ3RCLENBQUM7SUFFRCxPQUFPQTtBQUNUIn0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbGFiZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxhYmVsTmFtZUZyb21MYWJlbE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeUxhYmVsKGxhYmVsTm9kZSwgbGFiZWxzLCBjb250ZXh0KSB7XG4gIGxldCBsYWJlbFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbGFiZWxOYW1lID0gbGFiZWxOYW1lRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUpLFxuICAgICAgICBsYWJlbCA9IGxhYmVsTmFtZSwgIC8vL1xuICAgICAgICBsYWJlbFByZXNlbnQgPSBjb250ZXh0LmlzTGFiZWxQcmVzZW50KGxhYmVsKTtcblxuICBpZiAobGFiZWxQcmVzZW50KSB7XG4gICAgY29udGV4dC5lcnJvcihgVGhlIGxhYmVsICR7bGFiZWx9IGlzIGFscmVhZHkgcHJlc2VudGAsIGxhYmVsTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgbGFiZWxzLnB1c2gobGFiZWwpO1xuXG4gICAgbGFiZWxWZXJpZmllZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gbGFiZWxWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlMYWJlbCIsImxhYmVsTm9kZSIsImxhYmVscyIsImNvbnRleHQiLCJsYWJlbFZlcmlmaWVkIiwibGFiZWxOYW1lIiwibGFiZWxOYW1lRnJvbUxhYmVsTm9kZSIsImxhYmVsIiwibGFiZWxQcmVzZW50IiwiaXNMYWJlbFByZXNlbnQiLCJlcnJvciIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBd0JBOzs7cUJBRmU7QUFFeEIsU0FBU0EsWUFBWUMsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRTtJQUM5RCxJQUFJQyxnQkFBZ0IsS0FBSztJQUV6QixJQUFNQyxZQUFZQyxJQUFBQSw2QkFBc0IsRUFBQ0wsWUFDbkNNLFFBQVFGLFdBQ1JHLGVBQWVMLFFBQVFNLGNBQWMsQ0FBQ0Y7SUFFNUMsSUFBSUMsY0FBYztRQUNoQkwsUUFBUU8sS0FBSyxDQUFDLEFBQUMsYUFBa0IsT0FBTkgsT0FBTSx3QkFBc0JOO0lBQ3pELE9BQU87UUFDTEMsT0FBT1MsSUFBSSxDQUFDSjtRQUVaSCxnQkFBZ0IsSUFBSTtJQUN0QixDQUFDO0lBRUQsT0FBT0E7QUFDVCJ9
@@ -23,9 +23,9 @@ function verifyQualifiedMetastatement(qualifiedMetastatementNode, context) {
23
23
  }
24
24
  if (qualifiedMetastatementVerified) {
25
25
  var metastatementString = (0, _string.nodeAsString)(metastatementNode);
26
- context.debug("Verified the '".concat(metastatementString, "' qualified metastatement."));
26
+ context.debug("Verified the '".concat(metastatementString, "' qualified metastatement."), qualifiedMetastatementNode);
27
27
  }
28
28
  return qualifiedMetastatementVerified;
29
29
  }
30
30
 
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnQvcXVhbGlmaWNhdGlvbiEvcmVmZXJlbmNlIVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkTWV0YXN0YXRlbWVudC9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudChxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAobWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICByZWZlcmVuY2VOYW1lID0gcmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpLFxuICAgICAgICAgIHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2VOYW1lKHJlZmVyZW5jZU5hbWUpO1xuXG4gICAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJ1bGVNYXRjaGVzTWV0YXN0YXRlbWVudCA9IHJ1bGUubWF0Y2hNZXRhc3RhdGVtZW50KG1ldGFzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gcnVsZU1hdGNoZXNNZXRhc3RhdGVtZW50OyAgLy8vXG4gICAgfVxuICB9XG5cbiAgaWYgKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgVmVyaWZpZWQgdGhlICcke21ldGFzdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgbWV0YXN0YXRlbWVudC5gKTtcbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudCIsInJlZmVyZW5jZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGFzdGF0ZW1lbnROb2RlUXVlcnkiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsImNvbnRleHQiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQiLCJtZXRhc3RhdGVtZW50Tm9kZSIsInJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2VOYW1lIiwicmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2VOYW1lIiwicnVsZU1hdGNoZXNNZXRhc3RhdGVtZW50IiwibWF0Y2hNZXRhc3RhdGVtZW50IiwibWV0YXN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQXdCQTs7O3NCQU5LO3FCQUM2QjtBQUUxRCxJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsc0RBQy9CQyx5QkFBeUJELElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsNkJBQTZCSSwwQkFBMEIsRUFBRUMsT0FBTyxFQUFFO0lBQ3hGLElBQUlDLGlDQUFpQyxLQUFLO0lBRTFDLElBQU1DLG9CQUFvQkosdUJBQXVCQztJQUVqRCxJQUFJRyxzQkFBc0IsSUFBSSxFQUFFO1FBQzlCLElBQU1DLGdCQUFnQlAsbUJBQW1CRyw2QkFDbkNLLGdCQUFnQkMsSUFBQUEscUNBQThCLEVBQUNGLGdCQUMvQ0csT0FBT04sUUFBUU8sdUJBQXVCLENBQUNIO1FBRTdDLElBQUlFLFNBQVMsSUFBSSxFQUFFO1lBQ2pCLElBQU1FLDJCQUEyQkYsS0FBS0csa0JBQWtCLENBQUNQLG1CQUFtQkY7WUFFNUVDLGlDQUFpQ08sMEJBQTJCLEdBQUc7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJUCxnQ0FBZ0M7UUFDbEMsSUFBTVMsc0JBQXNCQyxJQUFBQSxvQkFBWSxFQUFDVDtRQUV6Q0YsUUFBUVksS0FBSyxDQUFDLEFBQUMsaUJBQW9DLE9BQXBCRixxQkFBb0I7SUFDckQsQ0FBQztJQUVELE9BQU9UO0FBQ1QifQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnQvcXVhbGlmaWNhdGlvbiEvcmVmZXJlbmNlIVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkTWV0YXN0YXRlbWVudC9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudChxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAobWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICByZWZlcmVuY2VOYW1lID0gcmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpLFxuICAgICAgICAgIHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2VOYW1lKHJlZmVyZW5jZU5hbWUpO1xuXG4gICAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJ1bGVNYXRjaGVzTWV0YXN0YXRlbWVudCA9IHJ1bGUubWF0Y2hNZXRhc3RhdGVtZW50KG1ldGFzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gcnVsZU1hdGNoZXNNZXRhc3RhdGVtZW50OyAgLy8vXG4gICAgfVxuICB9XG5cbiAgaWYgKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgVmVyaWZpZWQgdGhlICcke21ldGFzdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgbWV0YXN0YXRlbWVudC5gLCBxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5IiwicXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJjb250ZXh0IiwicXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkIiwibWV0YXN0YXRlbWVudE5vZGUiLCJyZWZlcmVuY2VOb2RlIiwicmVmZXJlbmNlTmFtZSIsInJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSIsInJ1bGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlTmFtZSIsInJ1bGVNYXRjaGVzTWV0YXN0YXRlbWVudCIsIm1hdGNoTWV0YXN0YXRlbWVudCIsIm1ldGFzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUF3QkE7OztzQkFOSztxQkFDNkI7QUFFMUQsSUFBTUMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDLHNEQUMvQkMseUJBQXlCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRTFCLFNBQVNGLDZCQUE2QkksMEJBQTBCLEVBQUVDLE9BQU8sRUFBRTtJQUN4RixJQUFJQyxpQ0FBaUMsS0FBSztJQUUxQyxJQUFNQyxvQkFBb0JKLHVCQUF1QkM7SUFFakQsSUFBSUcsc0JBQXNCLElBQUksRUFBRTtRQUM5QixJQUFNQyxnQkFBZ0JQLG1CQUFtQkcsNkJBQ25DSyxnQkFBZ0JDLElBQUFBLHFDQUE4QixFQUFDRixnQkFDL0NHLE9BQU9OLFFBQVFPLHVCQUF1QixDQUFDSDtRQUU3QyxJQUFJRSxTQUFTLElBQUksRUFBRTtZQUNqQixJQUFNRSwyQkFBMkJGLEtBQUtHLGtCQUFrQixDQUFDUCxtQkFBbUJGO1lBRTVFQyxpQ0FBaUNPLDBCQUEyQixHQUFHO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSVAsZ0NBQWdDO1FBQ2xDLElBQU1TLHNCQUFzQkMsSUFBQUEsb0JBQVksRUFBQ1Q7UUFFekNGLFFBQVFZLEtBQUssQ0FBQyxBQUFDLGlCQUFvQyxPQUFwQkYscUJBQW9CLCtCQUE2Qlg7SUFDbEYsQ0FBQztJQUVELE9BQU9FO0FBQ1QifQ==