occam-verify-cli 1.0.366 → 1.0.369

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 (44) hide show
  1. package/lib/abbreviations.js +22 -0
  2. package/lib/action/help.js +15 -0
  3. package/lib/action/verify.js +59 -0
  4. package/lib/action/version.js +19 -0
  5. package/lib/commands.js +26 -0
  6. package/lib/configure.js +25 -0
  7. package/lib/constants.js +5 -1
  8. package/lib/context/partial/metavariable.js +1 -1
  9. package/lib/context/partial/statement.js +1 -1
  10. package/lib/context/partial/substitution/frame.js +1 -1
  11. package/lib/context/partial/substitution/reference.js +1 -1
  12. package/lib/context/partial/substitution/statement.js +1 -1
  13. package/lib/context/partial/substitution/term.js +1 -1
  14. package/lib/context/partial/term.js +1 -1
  15. package/lib/context/partial/variable.js +1 -1
  16. package/lib/defaults.js +36 -0
  17. package/lib/dom/lemma.js +1 -1
  18. package/lib/main.js +64 -0
  19. package/lib/messages.js +13 -0
  20. package/lib/options.js +34 -0
  21. package/lib/utilities/releaseContext.js +80 -10
  22. package/lib/utilities/string.js +8 -1
  23. package/package.json +3 -3
  24. package/{bin → src}/abbreviations.js +4 -2
  25. package/{bin → src}/action/help.js +1 -3
  26. package/{bin → src}/action/verify.js +5 -7
  27. package/src/action/version.js +13 -0
  28. package/src/commands.js +5 -0
  29. package/{bin → src}/configure.js +3 -5
  30. package/src/constants.js +1 -0
  31. package/src/defaults.js +11 -0
  32. package/{bin → src}/main.js +8 -10
  33. package/src/messages.js +3 -0
  34. package/src/options.js +7 -0
  35. package/src/utilities/releaseContext.js +100 -8
  36. package/src/utilities/string.js +6 -0
  37. package/bin/action/version.js +0 -15
  38. package/bin/commands.js +0 -11
  39. package/bin/constants.js +0 -9
  40. package/bin/defaults.js +0 -19
  41. package/bin/messages.js +0 -7
  42. package/bin/options.js +0 -15
  43. package/bin/utilities/releaseContext.js +0 -103
  44. package/bin/utilities/string.js +0 -13
@@ -2,13 +2,33 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get createReleaseContext () {
13
+ return createReleaseContext;
14
+ },
15
+ get initialiseReleaseContext () {
16
+ return initialiseReleaseContext;
17
+ },
18
+ get releaseContextFromDependency () {
19
+ return releaseContextFromDependency;
20
+ },
21
+ get releaseContextFromJSON () {
22
+ return releaseContextFromJSON;
23
+ },
24
+ get releaseContextFromProject () {
25
+ return releaseContextFromProject;
9
26
  }
10
27
  });
11
28
  var _necessary = require("necessary");
29
+ var _occamentities = require("occam-entities");
30
+ var _occamfilesystem = require("occam-file-system");
31
+ var _release = /*#__PURE__*/ _interop_require_default(require("../context/release"));
12
32
  function _array_like_to_array(arr, len) {
13
33
  if (len == null || len > arr.length) len = arr.length;
14
34
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -17,6 +37,11 @@ function _array_like_to_array(arr, len) {
17
37
  function _array_without_holes(arr) {
18
38
  if (Array.isArray(arr)) return _array_like_to_array(arr);
19
39
  }
40
+ function _interop_require_default(obj) {
41
+ return obj && obj.__esModule ? obj : {
42
+ default: obj
43
+ };
44
+ }
20
45
  function _iterable_to_array(iter) {
21
46
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
22
47
  }
@@ -34,7 +59,56 @@ function _unsupported_iterable_to_array(o, minLen) {
34
59
  if (n === "Map" || n === "Set") return Array.from(n);
35
60
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
36
61
  }
37
- var last = _necessary.arrayUtilities.last;
62
+ var last = _necessary.arrayUtilities.last, loadProject = _occamfilesystem.fileSystemUtilities.loadProject, concatenatePaths = _necessary.pathUtilities.concatenatePaths, isMetaJSONFileValid = _occamentities.metaJSONUtilities.isMetaJSONFileValid, readFile = _necessary.fileSystemUtilities.readFile, isEntryFile = _necessary.fileSystemUtilities.isEntryFile, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists;
63
+ function releaseContextFromDependency(dependency, context, callback) {
64
+ var projectsDirectoryPath = process.cwd(), dependencyName = dependency.getName(), entryPath = concatenatePaths(projectsDirectoryPath, dependencyName), entryExists = checkEntryExists(entryPath);
65
+ if (!entryExists) {
66
+ var _$error = null, releaseContext = null;
67
+ callback(_$error, releaseContext);
68
+ return;
69
+ }
70
+ var releaseContext1 = null;
71
+ try {
72
+ var entryFile = isEntryFile(entryPath);
73
+ if (entryFile) {
74
+ var filePath = entryPath, content = readFile(filePath), jsonString = content, json = JSON.parse(jsonString);
75
+ releaseContext1 = releaseContextFromJSON(json, context);
76
+ } else {
77
+ var projectName = dependencyName, project = loadProject(projectName, projectsDirectoryPath);
78
+ if (project !== null) {
79
+ releaseContext1 = releaseContextFromProject(project, context);
80
+ }
81
+ }
82
+ } catch (error) {
83
+ callback(error, releaseContext1);
84
+ return;
85
+ }
86
+ var _$error1 = null;
87
+ callback(_$error1, releaseContext1);
88
+ }
89
+ function releaseContextFromJSON(json, context) {
90
+ var log = context.log, name = json.name;
91
+ context = json.context; ///
92
+ var entries = json.entries;
93
+ json = entries; ///
94
+ entries = _occamentities.Entries.fromJSON(json);
95
+ var contextJSON = context; ///
96
+ json = contextJSON; ///
97
+ var releaseContext = _release.default.fromLogNameJSONAndEntries(log, name, json, entries);
98
+ return releaseContext;
99
+ }
100
+ function releaseContextFromProject(project, context) {
101
+ var releaseContext = null;
102
+ var metaJSONFile = project.getMetaJSONFile();
103
+ if (metaJSONFile !== null) {
104
+ var metaJSONFileValid = isMetaJSONFileValid(metaJSONFile);
105
+ if (metaJSONFileValid) {
106
+ var log = context.log, name = project.getName(), json = null, entries = project.getEntries();
107
+ releaseContext = _release.default.fromLogNameJSONAndEntries(log, name, json, entries);
108
+ }
109
+ }
110
+ return releaseContext;
111
+ }
38
112
  function createReleaseContext(dependency, dependentNames, context, callback) {
39
113
  var log = context.log, releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
40
114
  if (releaseContext !== null) {
@@ -105,10 +179,6 @@ function initialiseReleaseContext(dependency, context) {
105
179
  }
106
180
  }
107
181
  }
108
- var _default = {
109
- createReleaseContext: createReleaseContext,
110
- initialiseReleaseContext: initialiseReleaseContext
111
- };
112
182
  function retrieveReleaseContexts(releaseContext, releaseContextMap) {
113
183
  var releaseContexts = [], remainingReleaseContext = releaseContext, remainingReleaseContexts = [
114
184
  remainingReleaseContext
@@ -204,4 +274,4 @@ function initialiseDependencyReleaseContexts(dependency, releaseContext, context
204
274
  });
205
275
  }
206
276
 
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5mdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyBsb2csIHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgIT09IG51bGwpIHtcbiAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgaWYgKHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSkge1xuICAgICAgbG9nLmRlYnVnKGBBbHJlYWR5IGNyZWF0ZWQgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dC5gKTtcblxuICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCksXG4gICAgICAgIGRlcGVuZGVudE5hbWVzTGVuZ3RoID0gZGVwZW5kZW50TmFtZXMubGVuZ3RoO1xuXG4gIGlmIChkZXBlbmRlbnROYW1lc0xlbmd0aCA9PT0gMCkge1xuICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0Li4uYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWU7ICAvLy9cblxuICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0IGdpdmVuIHRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kYW50J3MgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kuLi5gKTtcbiAgfVxuXG4gIHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3koZGVwZW5kZW5jeSwgY29udGV4dCwgKGVycm9yLCByZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gY2hlY2tSZWxlYXNlQ29udGV4dENyZWF0ZWQocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbnVsbCxcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSA9IHJlbGVhc2VDb250ZXh0O1xuXG4gICAgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvciwgc3VjY2VzcykgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBsb2cud2FybmluZyhgLi4udW5hYmxlIHRvIGNyZWF0ZSB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApO1xuXG4gICAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uY3JlYXRlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApO1xuXG4gICAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG4gICAgfSk7XG4gIH0sIGNvbnRleHQpO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgPT09IG51bGwpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgIGxvZy53YXJuaW5nKGBVbmFibGUgdG8gaW5pdGlhbGlzZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0IGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNyZWF0ZWQuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzSW5pdGlhbGlzZWQoKTtcblxuICAgIGlmICghcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCkge1xuICAgICAgaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC4uLmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cyk7XG5cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uaW5pdGlhbGlzZWQgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC5gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVSZWxlYXNlQ29udGV4dCxcbiAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0XG59O1xuXG5mdW5jdGlvbiByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRzID0gW10sXG4gICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHQsICAvLy9cbiAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzID0gW1xuICAgICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0XG4gICAgICAgIF07XG5cbiAgbGV0IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0xlbmd0aCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5sZW5ndGg7XG5cbiAgd2hpbGUgKHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0xlbmd0aCA+IDApIHtcbiAgICBjb25zdCByZW1haW5pbmdSZWxlYXNlQ29udGV4dCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5zaGlmdCgpLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHQ7ICAvLy9cblxuICAgIHJlbGVhc2VDb250ZXh0cy5wdXNoKHJlbGVhc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpO1xuXG4gICAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSxcbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMocmVsZWFzZUNvbnRleHQpLFxuICAgICAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgICAgIGlmICghcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCAmJiAhcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCkge1xuICAgICAgICBjb25zdCByZW1haW5pbmdSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMucHVzaChyZW1haW5pbmdSZWxlYXNlQ29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0cztcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlQ29udGV4dENyZWF0ZWQocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKTtcblxuICBpZiAoIXJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZTsgLy8vXG5cbiAgICBsb2cud2FybmluZyhgVGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dCBjb3VsZCBub3QgYmUgY3JlYXRlZC4gUGVyaGFwcyB0aGUgJ21ldGEuanNvbicgZmlsZSBpcyBtaXNzaW5nIG9yIGludmFsaWQuIE9yIHRoZXJlIGNvdWxkIGJlIGEgZGVwZW5kZW5jeSBtaXNtYXRjaC5gKTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dENyZWF0ZWQ7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbnROYW1lcy5pbmNsdWRlcyhkZXBlbmRlbmN5TmFtZSksXG4gICAgICAgIGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMgPSBkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWU7ICAvLy9cblxuICBpZiAoY3ljbGljRGVwZW5kZW5jeUV4aXN0cykge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgIGZpcnN0RGVwZW5kZW50TmFtZSA9IGZpcnN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZXMgPSBbICAvLy9cbiAgICAgICAgICAgIC4uLmRlcGVuZGVudE5hbWVzLFxuICAgICAgICAgICAgZmlyc3REZXBlbmRlbnROYW1lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZXNTdHJpbmcgPSBkZXBlbmRlbmN5TmFtZXMuam9pbihgJyAtPiAnYCk7XG5cbiAgICBsb2cud2FybmluZyhgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeSwgJyR7ZGVwZW5kZW5jeU5hbWVzU3RyaW5nfScuYCk7XG4gIH1cblxuICByZXR1cm4gY3ljbGljRGVwZW5kZW5jeUV4aXN0cztcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSB0cnVlO1xuXG4gIGNvbnN0IGVudHJpZXMgPSByZWxlYXNlQ29udGV4dC5nZXRFbnRyaWVzKCksXG4gICAgICAgIHNob3J0ZW5lZFZlcnNpb24gPSBkZXBlbmRlbmN5LmdldFNob3J0ZWRWZXJzaW9uKCk7XG5cbiAgaWYgKHNob3J0ZW5lZFZlcnNpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uID0gZW50cmllcy5tYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbik7XG5cbiAgICBpZiAoIWVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24pIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgdmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWUsICAvLy9cbiAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSB2ZXJzaW9uLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgcmVxdWlyZXMgdGhlICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5IGJ1dCBhIGNvbnRleHQgd2l0aCB2ZXJzaW9uICcke3ZlcnNpb25TdHJpbmd9JyB3YXMgcHJvdmlkZWQuYCk7XG5cbiAgICAgIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3k7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCBjYWxsYmFjaykge1xuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICBkZXBlbmRlbnROYW1lcyA9IFsgLi4uZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVuY3lOYW1lIF07ICAvLy9cblxuICBkZXBlbmRlbmNpZXMuYXN5bmNocm9ub3VzRm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3ksIG5leHQsIGRvbmUpID0+IHtcbiAgICBjb25zdCBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzKGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzKTtcblxuICAgIGlmIChjeWNsaWNEZXBlbmRlbmN5RXhpc3RzKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgY2FsbGJhY2sgPSBudWxsO1xuXG4gICAgICBkb25lKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgKGVycm9yLCBzdWNjZXNzKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgIGNhbGxiYWNrID0gbnVsbDtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgICAgIGNhbGxiYWNrID0gbnVsbDtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sIGRvbmUpO1xuXG4gIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgaWYgKGNhbGxiYWNrICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0aWFsaXNlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHsgIC8vL1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsibGFzdCIsImFycmF5VXRpbGl0aWVzIiwiY3JlYXRlUmVsZWFzZUNvbnRleHQiLCJkZXBlbmRlbmN5IiwiZGVwZW5kZW50TmFtZXMiLCJjb250ZXh0IiwiY2FsbGJhY2siLCJsb2ciLCJyZWxlYXNlQ29udGV4dE1hcCIsImRlcGVuZGVuY3lOYW1lIiwiZ2V0TmFtZSIsInJlbGVhc2VOYW1lIiwicmVsZWFzZUNvbnRleHQiLCJlcnJvciIsInJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSIsImNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5Iiwic3VjY2VzcyIsImRlYnVnIiwicmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsImRlcGVuZGVudE5hbWVzTGVuZ3RoIiwibGVuZ3RoIiwiaW5mbyIsImxhc3REZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50TmFtZSIsInJlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkIiwiY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsIndhcm5pbmciLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkIiwiaXNJbml0aWFsaXNlZCIsImluaXRpYWxpc2VEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHRzIiwicmV0cmlldmVSZWxlYXNlQ29udGV4dHMiLCJpbml0aWFsaXNlIiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHQiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHMiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGgiLCJzaGlmdCIsInB1c2giLCJkZXBlbmRlbmNpZXMiLCJnZXREZXBlbmRlbmNpZXMiLCJmb3JFYWNoRGVwZW5kZW5jeSIsInJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJpbmNsdWRlcyIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWUiLCJjeWNsaWNEZXBlbmRlbmN5RXhpc3RzIiwiZmlyc3REZXBlbmRlbnROYW1lIiwiZmlyc3QiLCJkZXBlbmRlbmN5TmFtZXMiLCJkZXBlbmRlbmN5TmFtZXNTdHJpbmciLCJqb2luIiwiZW50cmllcyIsImdldEVudHJpZXMiLCJzaG9ydGVuZWRWZXJzaW9uIiwiZ2V0U2hvcnRlZFZlcnNpb24iLCJlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwibWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidG9TdHJpbmciLCJhc3luY2hyb25vdXNGb3JFYWNoRGVwZW5kZW5jeSIsIm5leHQiLCJkb25lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE2SEE7OztlQUFBOzs7eUJBM0grQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0IsSUFBTSxBQUFFQSxPQUFTQyx5QkFBYyxDQUF2QkQ7QUFFUixTQUFTRSxxQkFBcUJDLFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxPQUFPLEVBQUVDLFFBQVE7SUFDekUsSUFBUUMsTUFBMkJGLFFBQTNCRSxLQUFLQyxvQkFBc0JILFFBQXRCRyxtQkFDUEMsaUJBQWlCTixXQUFXTyxPQUFPLElBQ25DQyxjQUFjRixnQkFDZEcsaUJBQWlCSixpQkFBaUIsQ0FBQ0csWUFBWSxJQUFJO0lBRXpELElBQUlDLG1CQUFtQixNQUFNO1FBQzNCLElBQU1DLFFBQVEsTUFDUkMsMkJBQTJCQyw4QkFBOEJILGdCQUFnQlQsWUFBWUMsZ0JBQWdCQztRQUUzRyxJQUFJVztRQUVKLElBQUlGLDBCQUEwQjtZQUM1QlAsSUFBSVUsS0FBSyxDQUFDLEFBQUMsd0JBQW1DLE9BQVpOLGFBQVk7WUFFOUNLLFVBQVU7UUFDWixPQUFPO1lBQ0xBLFVBQVU7UUFDWjtRQUVBVixTQUFTTyxPQUFPRztRQUVoQjtJQUNGO0lBRUEsSUFBTSxBQUFFRSwrQkFBaUNiLFFBQWpDYSw4QkFDRkMsbUJBQW1CaEIsV0FBV2lCLFFBQVEsSUFDdENDLHVCQUF1QmpCLGVBQWVrQixNQUFNO0lBRWxELElBQUlELHlCQUF5QixHQUFHO1FBQzlCZCxJQUFJZ0IsSUFBSSxDQUFDLEFBQUMsaUJBQTRCLE9BQVpaLGFBQVk7SUFDeEMsT0FBTztRQUNMLElBQU1hLG9CQUFvQnhCLEtBQUtJLGlCQUN6QnFCLGdCQUFnQkQsbUJBQW9CLEdBQUc7UUFF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
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRW50cmllcywgbWV0YUpTT05VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tZW50aXRpZXNcIjtcbmltcG9ydCB7IGZpbGVTeXN0ZW1VdGlsaXRpZXMgYXMgb2NjYW1GaWxlU3lzdGVtVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWZpbGUtc3lzdGVtXCI7XG5pbXBvcnQgeyBwYXRoVXRpbGl0aWVzLCBmaWxlU3lzdGVtVXRpbGl0aWVzIGFzIG5lY2Vzc2FyeUZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBSZWxlYXNlQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9yZWxlYXNlXCI7XG5cbmNvbnN0IHsgbGFzdCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGxvYWRQcm9qZWN0IH0gPSBvY2NhbUZpbGVTeXN0ZW1VdGlsaXRpZXMsXG4gICAgICB7IGNvbmNhdGVuYXRlUGF0aHMgfSA9IHBhdGhVdGlsaXRpZXMsXG4gICAgICB7IGlzTWV0YUpTT05GaWxlVmFsaWQgfSA9IG1ldGFKU09OVXRpbGl0aWVzLFxuICAgICAgeyByZWFkRmlsZSwgaXNFbnRyeUZpbGUsIGNoZWNrRW50cnlFeGlzdHMgfSA9IG5lY2Vzc2FyeUZpbGVTeXN0ZW1VdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IHByb2Nlc3MuY3dkKCksIC8vL1xuICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgZW50cnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGRlcGVuZGVuY3lOYW1lKSxcbiAgICBlbnRyeUV4aXN0cyA9IGNoZWNrRW50cnlFeGlzdHMoZW50cnlQYXRoKTtcblxuICBpZiAoIWVudHJ5RXhpc3RzKSB7XG4gICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgcmVsZWFzZUNvbnRleHQgPSBudWxsO1xuXG4gICAgY2FsbGJhY2soZXJyb3IsIHJlbGVhc2VDb250ZXh0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCByZWxlYXNlQ29udGV4dCA9IG51bGw7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShlbnRyeVBhdGgpO1xuXG4gICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgY29uc3QgZmlsZVBhdGggPSBlbnRyeVBhdGgsIC8vL1xuICAgICAgICBjb250ZW50ID0gcmVhZEZpbGUoZmlsZVBhdGgpLFxuICAgICAgICBqc29uU3RyaW5nID0gY29udGVudCwgLy8vXG4gICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xuXG4gICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByb2plY3ROYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICBwcm9qZWN0ID0gbG9hZFByb2plY3QocHJvamVjdE5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgIGlmIChwcm9qZWN0ICE9PSBudWxsKSB7XG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdChwcm9qZWN0LCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY2FsbGJhY2soZXJyb3IsIHJlbGVhc2VDb250ZXh0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGVycm9yID0gbnVsbDtcblxuICBjYWxsYmFjayhlcnJvciwgcmVsZWFzZUNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUNvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgIHsgbmFtZSB9ID0ganNvbjtcblxuICAoe2NvbnRleHR9ID0ganNvbik7IC8vL1xuXG4gIGxldCB7IGVudHJpZXMgfSA9IGpzb247XG5cbiAganNvbiA9IGVudHJpZXM7IC8vL1xuXG4gIGVudHJpZXMgPSBFbnRyaWVzLmZyb21KU09OKGpzb24pO1xuXG4gIGNvbnN0IGNvbnRleHRKU09OID0gY29udGV4dDsgIC8vL1xuXG4gIGpzb24gPSBjb250ZXh0SlNPTjsgLy8vXG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBSZWxlYXNlQ29udGV4dC5mcm9tTG9nTmFtZUpTT05BbmRFbnRyaWVzKGxvZywgbmFtZSwganNvbiwgZW50cmllcyk7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdChwcm9qZWN0LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgbWV0YUpTT05GaWxlID0gcHJvamVjdC5nZXRNZXRhSlNPTkZpbGUoKTtcblxuICBpZiAobWV0YUpTT05GaWxlICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YUpTT05GaWxlVmFsaWQgPSBpc01ldGFKU09ORmlsZVZhbGlkKG1ldGFKU09ORmlsZSk7XG5cbiAgICBpZiAobWV0YUpTT05GaWxlVmFsaWQpIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICBuYW1lID0gcHJvamVjdC5nZXROYW1lKCksXG4gICAgICAgIGpzb24gPSBudWxsLFxuICAgICAgICBlbnRyaWVzID0gcHJvamVjdC5nZXRFbnRyaWVzKCk7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0ID0gUmVsZWFzZUNvbnRleHQuZnJvbUxvZ05hbWVKU09OQW5kRW50cmllcyhsb2csIG5hbWUsIGpzb24sIGVudHJpZXMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCBjYWxsYmFjaykge1xuICBjb25zdCB7IGxvZywgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVycm9yID0gbnVsbCxcbiAgICAgICAgICByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAocmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICBsb2cuZGVidWcoYEFscmVhZHkgY3JlYXRlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApO1xuXG4gICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGg7XG5cbiAgaWYgKGRlcGVuZGVudE5hbWVzTGVuZ3RoID09PSAwKSB7XG4gICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuLi5gKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZTsgIC8vL1xuXG4gICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICB9XG5cbiAgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0LCAoZXJyb3IsIHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBjaGVja1JlbGVhc2VDb250ZXh0Q3JlYXRlZChyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgICBpZiAoIXJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbnVsbCxcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdID0gcmVsZWFzZUNvbnRleHQ7XG5cbiAgICBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgKGVycm9yLCBzdWNjZXNzKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGxvZy53YXJuaW5nKGAuLi51bmFibGUgdG8gY3JlYXRlIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuYCk7XG5cbiAgICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbG9nLmRlYnVnKGAuLi5jcmVhdGVkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuYCk7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcbiAgICB9KTtcbiAgfSwgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgPT09IG51bGwpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgIGxvZy53YXJuaW5nKGBVbmFibGUgdG8gaW5pdGlhbGlzZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0IGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNyZWF0ZWQuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzSW5pdGlhbGlzZWQoKTtcblxuICAgIGlmICghcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCkge1xuICAgICAgaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC4uLmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cyk7XG5cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uaW5pdGlhbGlzZWQgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC5gKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0cyA9IFtdLFxuICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0LCAgLy8vXG4gICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cyA9IFtcbiAgICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dFxuICAgICAgICBdO1xuXG4gIGxldCByZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMubGVuZ3RoO1xuXG4gIHdoaWxlIChyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPiAwKSB7XG4gICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuc2hpZnQoKSxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0OyAgLy8vXG5cbiAgICByZWxlYXNlQ29udGV4dHMucHVzaChyZWxlYXNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICAgIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0sXG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KSxcbiAgICAgICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMocmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICBpZiAoIXJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgJiYgIXJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLnB1c2gocmVtYWluaW5nUmVsZWFzZUNvbnRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWU7IC8vL1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLiBPciB0aGVyZSBjb3VsZCBiZSBhIGRlcGVuZGVuY3kgbWlzbWF0Y2guYCk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRDcmVhdGVkO1xufVxuXG5mdW5jdGlvbiBjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW50TmFtZXMuaW5jbHVkZXMoZGVwZW5kZW5jeU5hbWUpLFxuICAgICAgICBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lOyAgLy8vXG5cbiAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBmaXJzdERlcGVuZGVudE5hbWUgPSBmaXJzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzID0gWyAgLy8vXG4gICAgICAgICAgICAuLi5kZXBlbmRlbnROYW1lcyxcbiAgICAgICAgICAgIGZpcnN0RGVwZW5kZW50TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzU3RyaW5nID0gZGVwZW5kZW5jeU5hbWVzLmpvaW4oYCcgLT4gJ2ApO1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZXJlIGlzIGEgY3ljbGljIGRlcGVuZGVuY3ksICcke2RlcGVuZGVuY3lOYW1lc1N0cmluZ30nLmApO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gdHJ1ZTtcblxuICBjb25zdCBlbnRyaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RW50cmllcygpLFxuICAgICAgICBzaG9ydGVuZWRWZXJzaW9uID0gZGVwZW5kZW5jeS5nZXRTaG9ydGVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IGVudHJpZXMubWF0Y2hTaG9ydGVuZWRWZXJzaW9uKHNob3J0ZW5lZFZlcnNpb24pO1xuXG4gICAgaWYgKCFlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIHZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5nZXRWZXJzaW9uKCksXG4gICAgICAgICAgICBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lLCAgLy8vXG4gICAgICAgICAgICB2ZXJzaW9uU3RyaW5nID0gdmVyc2lvbi50b1N0cmluZygpLFxuICAgICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgICAgbG9nLndhcm5pbmcoYFRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IHJlcXVpcmVzIHRoZSAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeSBidXQgYSBjb250ZXh0IHdpdGggdmVyc2lvbiAnJHt2ZXJzaW9uU3RyaW5nfScgd2FzIHByb3ZpZGVkLmApO1xuXG4gICAgICByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW50TmFtZXMgPSBbIC4uLmRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbmN5TmFtZSBdOyAgLy8vXG5cbiAgZGVwZW5kZW5jaWVzLmFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcyk7XG5cbiAgICBpZiAoY3ljbGljRGVwZW5kZW5jeUV4aXN0cykge1xuICAgICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG5cbiAgICAgIGNhbGxiYWNrID0gbnVsbDtcblxuICAgICAgZG9uZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvciwgc3VjY2VzcykgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICBjYWxsYmFjayA9IG51bGw7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgICBjYWxsYmFjayA9IG51bGw7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCBkb25lKTtcblxuICBmdW5jdGlvbiBkb25lKCkge1xuICAgIGlmIChjYWxsYmFjayAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7ICAvLy9cbiAgICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0IiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSIsInJlbGVhc2VDb250ZXh0RnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0IiwibGFzdCIsImFycmF5VXRpbGl0aWVzIiwibG9hZFByb2plY3QiLCJvY2NhbUZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJjb25jYXRlbmF0ZVBhdGhzIiwicGF0aFV0aWxpdGllcyIsImlzTWV0YUpTT05GaWxlVmFsaWQiLCJtZXRhSlNPTlV0aWxpdGllcyIsInJlYWRGaWxlIiwibmVjZXNzYXJ5RmlsZVN5c3RlbVV0aWxpdGllcyIsImlzRW50cnlGaWxlIiwiY2hlY2tFbnRyeUV4aXN0cyIsImRlcGVuZGVuY3kiLCJjb250ZXh0IiwiY2FsbGJhY2siLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJwcm9jZXNzIiwiY3dkIiwiZGVwZW5kZW5jeU5hbWUiLCJnZXROYW1lIiwiZW50cnlQYXRoIiwiZW50cnlFeGlzdHMiLCJlcnJvciIsInJlbGVhc2VDb250ZXh0IiwiZW50cnlGaWxlIiwiZmlsZVBhdGgiLCJjb250ZW50IiwianNvblN0cmluZyIsImpzb24iLCJKU09OIiwicGFyc2UiLCJwcm9qZWN0TmFtZSIsInByb2plY3QiLCJsb2ciLCJuYW1lIiwiZW50cmllcyIsIkVudHJpZXMiLCJmcm9tSlNPTiIsImNvbnRleHRKU09OIiwiUmVsZWFzZUNvbnRleHQiLCJmcm9tTG9nTmFtZUpTT05BbmRFbnRyaWVzIiwibWV0YUpTT05GaWxlIiwiZ2V0TWV0YUpTT05GaWxlIiwibWV0YUpTT05GaWxlVmFsaWQiLCJnZXRFbnRyaWVzIiwiZGVwZW5kZW50TmFtZXMiLCJyZWxlYXNlQ29udGV4dE1hcCIsInJlbGVhc2VOYW1lIiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJzdWNjZXNzIiwiZGVidWciLCJkZXBlbmRlbmN5U3RyaW5nIiwiYXNTdHJpbmciLCJkZXBlbmRlbnROYW1lc0xlbmd0aCIsImxlbmd0aCIsImluZm8iLCJsYXN0RGVwZW5kZW50TmFtZSIsImRlcGVuZGVudE5hbWUiLCJyZWxlYXNlQ29udGV4dENyZWF0ZWQiLCJjaGVja1JlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJ3YXJuaW5nIiwicmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCIsImlzSW5pdGlhbGlzZWQiLCJpbml0aWFsaXNlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwiaW5pdGlhbGlzZSIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0IiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHRzIiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoIiwic2hpZnQiLCJwdXNoIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiaW5jbHVkZXMiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzIiwiZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lIiwiY3ljbGljRGVwZW5kZW5jeUV4aXN0cyIsImZpcnN0RGVwZW5kZW50TmFtZSIsImZpcnN0IiwiZGVwZW5kZW5jeU5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzU3RyaW5nIiwiam9pbiIsInNob3J0ZW5lZFZlcnNpb24iLCJnZXRTaG9ydGVkVmVyc2lvbiIsImVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInZlcnNpb25TdHJpbmciLCJ0b1N0cmluZyIsImFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5IiwibmV4dCIsImRvbmUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXVHZ0JBO2VBQUFBOztRQTJGQUM7ZUFBQUE7O1FBbkxBQztlQUFBQTs7UUE4Q0FDO2VBQUFBOztRQXFCQUM7ZUFBQUE7Ozt5QkFoRmU7NkJBQ1k7K0JBQ3FCOzhEQUdyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUzQixJQUFNLEFBQUVDLE9BQVNDLHlCQUFjLENBQXZCRCxNQUNGLEFBQUVFLGNBQWdCQyxvQ0FBd0IsQ0FBeENELGFBQ0YsQUFBRUUsbUJBQXFCQyx3QkFBYSxDQUFsQ0Qsa0JBQ0YsQUFBRUUsc0JBQXdCQyxnQ0FBaUIsQ0FB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
@@ -20,6 +20,9 @@ _export(exports, {
20
20
  },
21
21
  get tokensAsString () {
22
22
  return tokensAsString;
23
+ },
24
+ get trimTrailingSlash () {
25
+ return trimTrailingSlash;
23
26
  }
24
27
  });
25
28
  var _constants = require("../constants");
@@ -57,6 +60,10 @@ function nodeAsTokens(node, tokens) {
57
60
  }
58
61
  return tokens;
59
62
  }
63
+ function trimTrailingSlash(string) {
64
+ string = string.replace(/\/$/, _constants.EMPTY_STRING); ///
65
+ return string;
66
+ }
60
67
  function trimString(string) {
61
68
  string = string.replace(/\s+$/, _constants.EMPTY_STRING); ///
62
69
  return string;
@@ -74,4 +81,4 @@ function nonTerminalNodeAsTokens(nonTerminalNode, tokens) {
74
81
  return tokens;
75
82
  }
76
83
 
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlQXNTdHJpbmcobm9kZSwgdG9rZW5zKSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgdG9rZW5zID0gbm9kZUFzVG9rZW5zKG5vZGUsIHRva2Vucyk7ICAvLy9cblxuICBzdHJpbmcgPSB0b2tlbnNBc1N0cmluZyh0b2tlbnMpO1xuXG4gIHN0cmluZyA9IHRyaW1TdHJpbmcoc3RyaW5nKTsgIC8vL1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc0FzU3RyaW5nKG5vZGVzLCB0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXMucmVkdWNlKChzdHJpbmcsIG5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlU3RyaW5nID0gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucyk7XG5cbiAgICBzdHJpbmcgPSAoc3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICBub2RlU3RyaW5nIDpcbiAgICAgICAgICAgICAgICBgJHtzdHJpbmd9LCAke25vZGVTdHJpbmd9YDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbnNBc1N0cmluZyh0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gdG9rZW5zLnJlZHVjZSgoc3RyaW5nLCB0b2tlbikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0b2tlbi5nZXRDb250ZW50KCk7XG5cbiAgICBzdHJpbmcgPSBgJHtzdHJpbmd9JHtjb250ZW50fWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9LCBFTVBUWV9TVFJJTkcpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlQXNUb2tlbnMobm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICB0b2tlbnMgPSB0ZXJtaW5hbE5vZGVBc1Rva2Vucyh0ZXJtaW5hbE5vZGUsIHRva2Vucyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgLy8vXG5cbiAgICB0b2tlbnMgPSBub25UZXJtaW5hbE5vZGVBc1Rva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2Vucyk7XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiB0cmltU3RyaW5nKHN0cmluZykge1xuICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvXFxzKyQvLCBFTVBUWV9TVFJJTkcpOyAgLy8vXG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gdGVybWluYWxOb2RlQXNUb2tlbnModGVybWluYWxOb2RlLCB0b2tlbnMpIHtcbiAgY29uc3Qgc2lnbmlmaWNhbnRUb2tlbiA9IHRlcm1pbmFsTm9kZS5nZXRTaWduaWZpY2FudFRva2VuKCksXG4gICAgICAgIHRva2VuID0gc2lnbmlmaWNhbnRUb2tlbjsgLy8vXG5cbiAgdG9rZW5zID0gWyAgLy8vXG4gICAgdG9rZW5cbiAgXTtcblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBub25UZXJtaW5hbE5vZGVBc1Rva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2Vucykge1xuICBjb25zdCBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9uVGVybWluYWxOb2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub25UZXJtaW5hbE5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCwgLy8vXG4gICAgICAgIGVuZCA9IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggKyAxO1xuXG4gIHRva2VucyA9IHRva2Vucy5zbGljZShzdGFydCwgZW5kKTsgIC8vL1xuXG4gIHJldHVybiB0b2tlbnM7XG59XG4iXSwibmFtZXMiOlsibm9kZUFzU3RyaW5nIiwibm9kZUFzVG9rZW5zIiwibm9kZXNBc1N0cmluZyIsInRva2Vuc0FzU3RyaW5nIiwibm9kZSIsInRva2VucyIsInN0cmluZyIsInRyaW1TdHJpbmciLCJub2RlcyIsInJlZHVjZSIsIm5vZGVTdHJpbmciLCJ0b2tlbiIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwiRU1QVFlfU1RSSU5HIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQXNUb2tlbnMiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVBc1Rva2VucyIsInJlcGxhY2UiLCJzaWduaWZpY2FudFRva2VuIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbiIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInN0YXJ0IiwiZW5kIiwic2xpY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUlnQkE7ZUFBQUE7O1FBc0NBQztlQUFBQTs7UUExQkFDO2VBQUFBOztRQWNBQztlQUFBQTs7O3lCQTVCYTtBQUV0QixTQUFTSCxhQUFhSSxJQUFJLEVBQUVDLE1BQU07SUFDdkMsSUFBSUM7SUFFSkQsU0FBU0osYUFBYUcsTUFBTUMsU0FBVSxHQUFHO0lBRXpDQyxTQUFTSCxlQUFlRTtJQUV4QkMsU0FBU0MsV0FBV0QsU0FBVSxHQUFHO0lBRWpDLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTSixjQUFjTSxLQUFLLEVBQUVILE1BQU07SUFDekMsSUFBTUMsU0FBU0UsTUFBTUMsTUFBTSxDQUFDLFNBQUNILFFBQVFGO1FBQ25DLElBQU1NLGFBQWFWLGFBQWFJLE1BQU1DO1FBRXRDQyxTQUFTLEFBQUNBLFdBQVcsT0FDVkksYUFDQyxBQUFDLEdBQWFBLE9BQVhKLFFBQU8sTUFBZSxPQUFYSTtRQUUxQixPQUFPSjtJQUNULEdBQUc7SUFFSCxPQUFPQTtBQUNUO0FBRU8sU0FBU0gsZUFBZUUsTUFBTTtJQUNuQyxJQUFNQyxTQUFTRCxPQUFPSSxNQUFNLENBQUMsU0FBQ0gsUUFBUUs7UUFDcEMsSUFBTUMsVUFBVUQsTUFBTUUsVUFBVTtRQUVoQ1AsU0FBUyxBQUFDLEdBQVdNLE9BQVROLFFBQWlCLE9BQVJNO1FBRXJCLE9BQU9OO0lBQ1QsR0FBR1EsdUJBQVk7SUFFZixPQUFPUjtBQUNUO0FBRU8sU0FBU0wsYUFBYUcsSUFBSSxFQUFFQyxNQUFNO0lBQ3ZDLElBQU1VLG1CQUFtQlgsS0FBS1ksY0FBYztJQUU1QyxJQUFJRCxrQkFBa0I7UUFDcEIsSUFBTUUsZUFBZWIsTUFBTyxHQUFHO1FBRS9CQyxTQUFTYSxxQkFBcUJELGNBQWNaO0lBQzlDLE9BQU87UUFDTCxJQUFNYyxrQkFBa0JmLE1BQU0sR0FBRztRQUVqQ0MsU0FBU2Usd0JBQXdCRCxpQkFBaUJkO0lBQ3BEO0lBRUEsT0FBT0E7QUFDVDtBQUVBLFNBQVNFLFdBQVdELE1BQU07SUFDeEJBLFNBQVNBLE9BQU9lLE9BQU8sQ0FBQyxRQUFRUCx1QkFBWSxHQUFJLEdBQUc7SUFFbkQsT0FBT1I7QUFDVDtBQUVBLFNBQVNZLHFCQUFxQkQsWUFBWSxFQUFFWixNQUFNO0lBQ2hELElBQU1pQixtQkFBbUJMLGFBQWFNLG1CQUFtQixJQUNuRFosUUFBUVcsa0JBQWtCLEdBQUc7SUFFbkNqQixTQUFTO1FBQ1BNO0tBQ0Q7SUFFRCxPQUFPTjtBQUNUO0FBRUEsU0FBU2Usd0JBQXdCRCxlQUFlLEVBQUVkLE1BQU07SUFDdEQsSUFBTW1CLDRCQUE0QkwsZ0JBQWdCTSw0QkFBNEIsQ0FBQ3BCLFNBQ3pFcUIsNkJBQTZCUCxnQkFBZ0JRLDZCQUE2QixDQUFDdEIsU0FDM0V1QixRQUFRRiw0QkFDUkcsTUFBTUwsNEJBQTRCO0lBRXhDbkIsU0FBU0EsT0FBT3lCLEtBQUssQ0FBQ0YsT0FBT0MsTUFBTyxHQUFHO0lBRXZDLE9BQU94QjtBQUNUIn0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlQXNTdHJpbmcobm9kZSwgdG9rZW5zKSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgdG9rZW5zID0gbm9kZUFzVG9rZW5zKG5vZGUsIHRva2Vucyk7ICAvLy9cblxuICBzdHJpbmcgPSB0b2tlbnNBc1N0cmluZyh0b2tlbnMpO1xuXG4gIHN0cmluZyA9IHRyaW1TdHJpbmcoc3RyaW5nKTsgIC8vL1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc0FzU3RyaW5nKG5vZGVzLCB0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXMucmVkdWNlKChzdHJpbmcsIG5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlU3RyaW5nID0gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucyk7XG5cbiAgICBzdHJpbmcgPSAoc3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICBub2RlU3RyaW5nIDpcbiAgICAgICAgICAgICAgICBgJHtzdHJpbmd9LCAke25vZGVTdHJpbmd9YDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbnNBc1N0cmluZyh0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gdG9rZW5zLnJlZHVjZSgoc3RyaW5nLCB0b2tlbikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0b2tlbi5nZXRDb250ZW50KCk7XG5cbiAgICBzdHJpbmcgPSBgJHtzdHJpbmd9JHtjb250ZW50fWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9LCBFTVBUWV9TVFJJTkcpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlQXNUb2tlbnMobm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICB0b2tlbnMgPSB0ZXJtaW5hbE5vZGVBc1Rva2Vucyh0ZXJtaW5hbE5vZGUsIHRva2Vucyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgLy8vXG5cbiAgICB0b2tlbnMgPSBub25UZXJtaW5hbE5vZGVBc1Rva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2Vucyk7XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJpbVRyYWlsaW5nU2xhc2goc3RyaW5nKSB7XG4gIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9cXC8kLywgRU1QVFlfU1RSSU5HKTsgLy8vXG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gdHJpbVN0cmluZyhzdHJpbmcpIHtcbiAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoL1xccyskLywgRU1QVFlfU1RSSU5HKTsgIC8vL1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHRlcm1pbmFsTm9kZUFzVG9rZW5zKHRlcm1pbmFsTm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IHNpZ25pZmljYW50VG9rZW4gPSB0ZXJtaW5hbE5vZGUuZ2V0U2lnbmlmaWNhbnRUb2tlbigpLFxuICAgICAgICB0b2tlbiA9IHNpZ25pZmljYW50VG9rZW47IC8vL1xuXG4gIHRva2VucyA9IFsgIC8vL1xuICAgIHRva2VuXG4gIF07XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuZnVuY3Rpb24gbm9uVGVybWluYWxOb2RlQXNUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpIHtcbiAgY29uc3QgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vblRlcm1pbmFsTm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9uVGVybWluYWxOb2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIHN0YXJ0ID0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgsIC8vL1xuICAgICAgICBlbmQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMTtcblxuICB0b2tlbnMgPSB0b2tlbnMuc2xpY2Uoc3RhcnQsIGVuZCk7ICAvLy9cblxuICByZXR1cm4gdG9rZW5zO1xufVxuIl0sIm5hbWVzIjpbIm5vZGVBc1N0cmluZyIsIm5vZGVBc1Rva2VucyIsIm5vZGVzQXNTdHJpbmciLCJ0b2tlbnNBc1N0cmluZyIsInRyaW1UcmFpbGluZ1NsYXNoIiwibm9kZSIsInRva2VucyIsInN0cmluZyIsInRyaW1TdHJpbmciLCJub2RlcyIsInJlZHVjZSIsIm5vZGVTdHJpbmciLCJ0b2tlbiIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwiRU1QVFlfU1RSSU5HIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQXNUb2tlbnMiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVBc1Rva2VucyIsInJlcGxhY2UiLCJzaWduaWZpY2FudFRva2VuIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbiIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInN0YXJ0IiwiZW5kIiwic2xpY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUlnQkE7ZUFBQUE7O1FBc0NBQztlQUFBQTs7UUExQkFDO2VBQUFBOztRQWNBQztlQUFBQTs7UUE0QkFDO2VBQUFBOzs7eUJBeERhO0FBRXRCLFNBQVNKLGFBQWFLLElBQUksRUFBRUMsTUFBTTtJQUN2QyxJQUFJQztJQUVKRCxTQUFTTCxhQUFhSSxNQUFNQyxTQUFVLEdBQUc7SUFFekNDLFNBQVNKLGVBQWVHO0lBRXhCQyxTQUFTQyxXQUFXRCxTQUFVLEdBQUc7SUFFakMsT0FBT0E7QUFDVDtBQUVPLFNBQVNMLGNBQWNPLEtBQUssRUFBRUgsTUFBTTtJQUN6QyxJQUFNQyxTQUFTRSxNQUFNQyxNQUFNLENBQUMsU0FBQ0gsUUFBUUY7UUFDbkMsSUFBTU0sYUFBYVgsYUFBYUssTUFBTUM7UUFFdENDLFNBQVMsQUFBQ0EsV0FBVyxPQUNWSSxhQUNDLEFBQUMsR0FBYUEsT0FBWEosUUFBTyxNQUFlLE9BQVhJO1FBRTFCLE9BQU9KO0lBQ1QsR0FBRztJQUVILE9BQU9BO0FBQ1Q7QUFFTyxTQUFTSixlQUFlRyxNQUFNO0lBQ25DLElBQU1DLFNBQVNELE9BQU9JLE1BQU0sQ0FBQyxTQUFDSCxRQUFRSztRQUNwQyxJQUFNQyxVQUFVRCxNQUFNRSxVQUFVO1FBRWhDUCxTQUFTLEFBQUMsR0FBV00sT0FBVE4sUUFBaUIsT0FBUk07UUFFckIsT0FBT047SUFDVCxHQUFHUSx1QkFBWTtJQUVmLE9BQU9SO0FBQ1Q7QUFFTyxTQUFTTixhQUFhSSxJQUFJLEVBQUVDLE1BQU07SUFDdkMsSUFBTVUsbUJBQW1CWCxLQUFLWSxjQUFjO0lBRTVDLElBQUlELGtCQUFrQjtRQUNwQixJQUFNRSxlQUFlYixNQUFPLEdBQUc7UUFFL0JDLFNBQVNhLHFCQUFxQkQsY0FBY1o7SUFDOUMsT0FBTztRQUNMLElBQU1jLGtCQUFrQmYsTUFBTSxHQUFHO1FBRWpDQyxTQUFTZSx3QkFBd0JELGlCQUFpQmQ7SUFDcEQ7SUFFQSxPQUFPQTtBQUNUO0FBRU8sU0FBU0Ysa0JBQWtCRyxNQUFNO0lBQ3RDQSxTQUFTQSxPQUFPZSxPQUFPLENBQUMsT0FBT1AsdUJBQVksR0FBRyxHQUFHO0lBRWpELE9BQU9SO0FBQ1Q7QUFFQSxTQUFTQyxXQUFXRCxNQUFNO0lBQ3hCQSxTQUFTQSxPQUFPZSxPQUFPLENBQUMsUUFBUVAsdUJBQVksR0FBSSxHQUFHO0lBRW5ELE9BQU9SO0FBQ1Q7QUFFQSxTQUFTWSxxQkFBcUJELFlBQVksRUFBRVosTUFBTTtJQUNoRCxJQUFNaUIsbUJBQW1CTCxhQUFhTSxtQkFBbUIsSUFDbkRaLFFBQVFXLGtCQUFrQixHQUFHO0lBRW5DakIsU0FBUztRQUNQTTtLQUNEO0lBRUQsT0FBT047QUFDVDtBQUVBLFNBQVNlLHdCQUF3QkQsZUFBZSxFQUFFZCxNQUFNO0lBQ3RELElBQU1tQiw0QkFBNEJMLGdCQUFnQk0sNEJBQTRCLENBQUNwQixTQUN6RXFCLDZCQUE2QlAsZ0JBQWdCUSw2QkFBNkIsQ0FBQ3RCLFNBQzNFdUIsUUFBUUYsNEJBQ1JHLE1BQU1MLDRCQUE0QjtJQUV4Q25CLFNBQVNBLE9BQU95QixLQUFLLENBQUNGLE9BQU9DLE1BQU8sR0FBRztJQUV2QyxPQUFPeEI7QUFDVCJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "1.0.366",
4
+ "version": "1.0.369",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -10,7 +10,7 @@
10
10
  "url": "https://github.com/djalbat/occam-verify-cli"
11
11
  },
12
12
  "dependencies": {
13
- "argumentative": "^2.0.32",
13
+ "argumentative": "^2.0.35",
14
14
  "necessary": "^15.0.1",
15
15
  "occam-custom-grammars": "^5.0.1308",
16
16
  "occam-entities": "^1.0.424",
@@ -22,7 +22,7 @@
22
22
  "occam-query": "^4.1.118"
23
23
  },
24
24
  "devDependencies": {
25
- "@swc/core": "^1.5.6",
25
+ "@swc/core": "1.13.20",
26
26
  "watchful-cli": "^1.7.56"
27
27
  },
28
28
  "scripts": {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- const { HELP_OPTION, TAIL_OPTION, FOLLOW_OPTION, VERSION_OPTION, LOG_LEVEL_OPTION } = require("./options");
3
+ import { HELP_OPTION, TAIL_OPTION, FOLLOW_OPTION, VERSION_OPTION, LOG_LEVEL_OPTION } from "./options";
4
4
 
5
5
  const h = HELP_OPTION,
6
6
  t = TAIL_OPTION,
@@ -8,10 +8,12 @@ const h = HELP_OPTION,
8
8
  v = VERSION_OPTION,
9
9
  l = LOG_LEVEL_OPTION
10
10
 
11
- module.exports = {
11
+ const abbreviations = {
12
12
  h,
13
13
  t,
14
14
  f,
15
15
  v,
16
16
  l
17
17
  };
18
+
19
+ export default abbreviations;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- function helpAction() {
3
+ export default function helpAction() {
4
4
  console.log(`Usage:
5
5
 
6
6
  verify [<options>] [<command>] [<argument>]
@@ -28,5 +28,3 @@ Please see the readme file on GitHub:
28
28
  https://github.com/djalbat/occam-verify-cli
29
29
  `);
30
30
  }
31
-
32
- module.exports = helpAction;
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
 
3
- const { Dependency } = require("occam-entities"),
4
- { releaseUtilities, releaseContextUtilities } = require("../../lib/index"); ///
3
+ import { Dependency } from "occam-entities";
4
+ import { releaseUtilities, releaseContextUtilities } from "../../lib/index";
5
5
 
6
- const { trimTrailingSlash } = require("../utilities/string"),
7
- { releaseContextFromDependency } = require("../utilities/releaseContext");
6
+ import { trimTrailingSlash } from "../utilities/string";
7
+ import { releaseContextFromDependency } from "../utilities/releaseContext";
8
8
 
9
9
  const { verifyRelease } = releaseUtilities,
10
10
  { createReleaseContext, initialiseReleaseContext } = releaseContextUtilities;
11
11
 
12
- function verifyAction(argument, log) {
12
+ export default function verifyAction(argument, log) {
13
13
  const name = trimTrailingSlash(argument), ///
14
14
  context = {},
15
15
  dependency = Dependency.fromName(name),
@@ -63,8 +63,6 @@ function verifyAction(argument, log) {
63
63
  });
64
64
  }
65
65
 
66
- module.exports = verifyAction;
67
-
68
66
  function startClock() {
69
67
  let now;
70
68
 
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import { packageUtilities } from "necessary";
4
+
5
+ import { OCCAM_VERIFY_CLI } from "../constants";
6
+
7
+ const { getVersion } = packageUtilities;
8
+
9
+ export default function versionAction() {
10
+ const version = getVersion(); ///
11
+
12
+ console.log(`${OCCAM_VERIFY_CLI} version ${version}`);
13
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export const HELP_COMMAND = "help";
4
+ export const VERIFY_COMMAND = "verify";
5
+ export const VERSION_COMMAND = "version";
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- const { DEFAULT_HELP, DEFAULT_VERSION } = require("./defaults"),
4
- { HELP_COMMAND, VERSION_COMMAND } = require("./commands");
3
+ import { DEFAULT_HELP, DEFAULT_VERSION } from "./defaults";
4
+ import { HELP_COMMAND, VERSION_COMMAND } from "./commands";
5
5
 
6
- function configure(command, argument, options, main) {
6
+ export default function configure(command, argument, options, main) {
7
7
  const { help = DEFAULT_HELP, version = DEFAULT_VERSION } = options;
8
8
 
9
9
  if (false) {
@@ -16,5 +16,3 @@ function configure(command, argument, options, main) {
16
16
 
17
17
  main(command, argument, options);
18
18
  }
19
-
20
- module.exports = configure;
package/src/constants.js CHANGED
@@ -11,5 +11,6 @@ export const EMPTY_STRING = "";
11
11
  export const SINGLE_SPACE = " ";
12
12
  export const PROVISIONALLY = "provisionally";
13
13
  export const BASE_TYPE_SYMBOL = "<>";
14
+ export const OCCAM_VERIFY_CLI = "Occam Verify-CLI";
14
15
  export const BRACKETED_TERM_DEPTH = 2;
15
16
  export const BRACKETED_STATEMENT_DEPTH = 2;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import { levels } from "necessary";
4
+
5
+ const { INFO_LEVEL } = levels;
6
+
7
+ export const DEFAULT_HELP = false;
8
+ export const DEFAULT_TAIL = 10;
9
+ export const DEFAULT_FOLLOW = false;
10
+ export const DEFAULT_VERSION = false;
11
+ export const DEFAULT_LOG_LEVEL = INFO_LEVEL;
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
 
3
- const { Log } = require("../lib/index"); ///
3
+ import { Log } from "../lib/index";
4
4
 
5
- const helpAction = require("./action/help"),
6
- verifyAction = require("./action/verify"),
7
- versionAction = require("./action/version");
5
+ import helpAction from "./action/help";
6
+ import verifyAction from "./action/verify";
7
+ import versionAction from "./action/version";
8
8
 
9
- const { NO_COMMAND_GIVEN_MESSAGE } = require("./messages"),
10
- { HELP_COMMAND, VERIFY_COMMAND, VERSION_COMMAND } = require("./commands"),
11
- { DEFAULT_TAIL, DEFAULT_FOLLOW, DEFAULT_LOG_LEVEL } = require("./defaults");
9
+ import { NO_COMMAND_GIVEN_MESSAGE } from "./messages";
10
+ import { HELP_COMMAND, VERIFY_COMMAND, VERSION_COMMAND } from "./commands";
11
+ import { DEFAULT_TAIL, DEFAULT_FOLLOW, DEFAULT_LOG_LEVEL } from "./defaults";
12
12
 
13
- function main(command, argument, options) {
13
+ export default function main(command, argument, options) {
14
14
  const { tail = DEFAULT_TAIL,
15
15
  follow = DEFAULT_FOLLOW,
16
16
  logLevel = DEFAULT_LOG_LEVEL } = options;
@@ -63,5 +63,3 @@ function main(command, argument, options) {
63
63
  });
64
64
  }
65
65
  }
66
-
67
- module.exports = main;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ export const NO_COMMAND_GIVEN_MESSAGE = "No command has been given.";
package/src/options.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ export const HELP_OPTION = "help";
4
+ export const TAIL_OPTION = "tail";
5
+ export const FOLLOW_OPTION = "follow";
6
+ export const VERSION_OPTION = "version";
7
+ export const LOG_LEVEL_OPTION = "log-level";
@@ -1,10 +1,107 @@
1
1
  "use strict";
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
+ import { Entries, metaJSONUtilities } from "occam-entities";
5
+ import { fileSystemUtilities as occamFileSystemUtilities } from "occam-file-system";
6
+ import { pathUtilities, fileSystemUtilities as necessaryFileSystemUtilities } from "necessary";
4
7
 
5
- const { last } = arrayUtilities;
8
+ import ReleaseContext from "../context/release";
6
9
 
7
- function createReleaseContext(dependency, dependentNames, context, callback) {
10
+ const { last } = arrayUtilities,
11
+ { loadProject } = occamFileSystemUtilities,
12
+ { concatenatePaths } = pathUtilities,
13
+ { isMetaJSONFileValid } = metaJSONUtilities,
14
+ { readFile, isEntryFile, checkEntryExists } = necessaryFileSystemUtilities;
15
+
16
+ export function releaseContextFromDependency(dependency, context, callback) {
17
+ const projectsDirectoryPath = process.cwd(), ///
18
+ dependencyName = dependency.getName(),
19
+ entryPath = concatenatePaths(projectsDirectoryPath, dependencyName),
20
+ entryExists = checkEntryExists(entryPath);
21
+
22
+ if (!entryExists) {
23
+ const error = null,
24
+ releaseContext = null;
25
+
26
+ callback(error, releaseContext);
27
+
28
+ return;
29
+ }
30
+
31
+ let releaseContext = null;
32
+
33
+ try {
34
+ const entryFile = isEntryFile(entryPath);
35
+
36
+ if (entryFile) {
37
+ const filePath = entryPath, ///
38
+ content = readFile(filePath),
39
+ jsonString = content, ///
40
+ json = JSON.parse(jsonString);
41
+
42
+ releaseContext = releaseContextFromJSON(json, context);
43
+ } else {
44
+ const projectName = dependencyName, ///
45
+ project = loadProject(projectName, projectsDirectoryPath);
46
+
47
+ if (project !== null) {
48
+ releaseContext = releaseContextFromProject(project, context);
49
+ }
50
+ }
51
+ } catch (error) {
52
+ callback(error, releaseContext);
53
+
54
+ return;
55
+ }
56
+
57
+ const error = null;
58
+
59
+ callback(error, releaseContext);
60
+ }
61
+
62
+ export function releaseContextFromJSON(json, context) {
63
+ const { log } = context,
64
+ { name } = json;
65
+
66
+ ({context} = json); ///
67
+
68
+ let { entries } = json;
69
+
70
+ json = entries; ///
71
+
72
+ entries = Entries.fromJSON(json);
73
+
74
+ const contextJSON = context; ///
75
+
76
+ json = contextJSON; ///
77
+
78
+ const releaseContext = ReleaseContext.fromLogNameJSONAndEntries(log, name, json, entries);
79
+
80
+ return releaseContext;
81
+ }
82
+
83
+ export function releaseContextFromProject(project, context) {
84
+ let releaseContext = null;
85
+
86
+ const metaJSONFile = project.getMetaJSONFile();
87
+
88
+ if (metaJSONFile !== null) {
89
+ const metaJSONFileValid = isMetaJSONFileValid(metaJSONFile);
90
+
91
+ if (metaJSONFileValid) {
92
+ const { log } = context,
93
+ name = project.getName(),
94
+ json = null,
95
+ entries = project.getEntries();
96
+
97
+ releaseContext = ReleaseContext.fromLogNameJSONAndEntries(log, name, json, entries);
98
+ }
99
+ }
100
+
101
+ return releaseContext;
102
+ }
103
+
104
+ export function createReleaseContext(dependency, dependentNames, context, callback) {
8
105
  const { log, releaseContextMap } = context,
9
106
  dependencyName = dependency.getName(),
10
107
  releaseName = dependencyName, ///
@@ -95,7 +192,7 @@ function createReleaseContext(dependency, dependentNames, context, callback) {
95
192
  }, context);
96
193
  }
97
194
 
98
- function initialiseReleaseContext(dependency, context) {
195
+ export function initialiseReleaseContext(dependency, context) {
99
196
  const { releaseContextMap } = context,
100
197
  dependencyName = dependency.getName(),
101
198
  releaseName = dependencyName, ///
@@ -123,11 +220,6 @@ function initialiseReleaseContext(dependency, context) {
123
220
  }
124
221
  }
125
222
 
126
- export default {
127
- createReleaseContext,
128
- initialiseReleaseContext
129
- };
130
-
131
223
  function retrieveReleaseContexts(releaseContext, releaseContextMap) {
132
224
  const releaseContexts = [],
133
225
  remainingReleaseContext = releaseContext, ///
@@ -56,6 +56,12 @@ export function nodeAsTokens(node, tokens) {
56
56
  return tokens;
57
57
  }
58
58
 
59
+ export function trimTrailingSlash(string) {
60
+ string = string.replace(/\/$/, EMPTY_STRING); ///
61
+
62
+ return string;
63
+ }
64
+
59
65
  function trimString(string) {
60
66
  string = string.replace(/\s+$/, EMPTY_STRING); ///
61
67
 
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- const { packageUtilities } = require("necessary");
4
-
5
- const { OCCAM_VERIFY_CLI } = require("../constants");
6
-
7
- const { getVersion } = packageUtilities;
8
-
9
- function versionAction() {
10
- const version = getVersion(); ///
11
-
12
- console.log(`${OCCAM_VERIFY_CLI} version ${version}`);
13
- }
14
-
15
- module.exports = versionAction;
package/bin/commands.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
-
3
- const HELP_COMMAND = "help",
4
- VERIFY_COMMAND = "verify",
5
- VERSION_COMMAND = "version";
6
-
7
- module.exports = {
8
- HELP_COMMAND,
9
- VERIFY_COMMAND,
10
- VERSION_COMMAND
11
- };