occam-file-system 5.0.15 → 5.0.16

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.
@@ -95,15 +95,15 @@ function saveFiles(files, projectsDirectoryPath) {
95
95
  saveFile(file, projectsDirectoryPath);
96
96
  });
97
97
  }
98
- function loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories) {
98
+ function loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
99
99
  var entries = _entries.default.fromNothing(), relativeDirectoryPath = topmostDirectoryName; ///
100
- entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories);
100
+ entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles);
101
101
  return entries;
102
102
  }
103
103
  function loadRelease(topmostDirectoryName) {
104
104
  var projectsDirectoryPath = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _constants.PERIOD;
105
105
  var release = null;
106
- var name = topmostDirectoryName, loadOnlyRecognisedFiles = true, doNotLoadHiddenFilesAndDirectories = true, entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories), files = entries.getFiles(), readmeFile = (0, _files1.readmeFileFromFiles)(files), metaJSONFile = (0, _files1.metaJSONFileFromFiles)(files);
106
+ var name = topmostDirectoryName, loadOnlyRecognisedFiles = true, entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles), files = entries.getFiles(), readmeFile = (0, _files1.readmeFileFromFiles)(files), metaJSONFile = (0, _files1.metaJSONFileFromFiles)(files);
107
107
  if (readmeFile !== null && metaJSONFile !== null) {
108
108
  var metaJSONNode = metaJSONNodeFromMetaJSONFile(metaJSONFile);
109
109
  if (metaJSONNode !== null) {
@@ -113,8 +113,8 @@ function loadRelease(topmostDirectoryName) {
113
113
  }
114
114
  return release;
115
115
  }
116
- function loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories) {
117
- var name = topmostDirectoryName, entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories), files = entries.getFiles(), metaJSONFile = (0, _files1.metaJSONFileFromFiles)(files);
116
+ function loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
117
+ var name = topmostDirectoryName, entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles), files = entries.getFiles(), metaJSONFile = (0, _files1.metaJSONFileFromFiles)(files);
118
118
  var repository = null, dependencies = [];
119
119
  if (metaJSONFile !== null) {
120
120
  var metaJSONNode = metaJSONNodeFromMetaJSONFile(metaJSONFile), node = metaJSONNode;
@@ -130,19 +130,21 @@ function loadReleases(projectsDirectoryPath) {
130
130
  var releases1 = _releases.default.fromNothing(), topmostFileNames = topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath);
131
131
  topmostFileNames.forEach(function(topmostFileName) {
132
132
  var release = loadRelease(topmostFileName, projectsDirectoryPath);
133
- releases1.addRelease(release);
133
+ if (release !== null) {
134
+ releases1.addRelease(release);
135
+ }
134
136
  });
135
137
  } catch (error) {
136
138
  releases = null;
137
139
  }
138
140
  return releases;
139
141
  }
140
- function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories) {
142
+ function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles) {
141
143
  var projects;
142
144
  try {
143
- var projects1 = _projects.default.fromNothing(), topmostDirectoryNames = topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath, doNotLoadHiddenFilesAndDirectories);
145
+ var projects1 = _projects.default.fromNothing(), topmostDirectoryNames = topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath);
144
146
  topmostDirectoryNames.forEach(function(topmostDirectoryName) {
145
- var project = loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories);
147
+ var project = loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles);
146
148
  projects1.addProject(project);
147
149
  });
148
150
  } catch (error) {
@@ -166,18 +168,18 @@ function metaJSONNodeFromMetaJSONFile(metaJSONFile) {
166
168
  var content = metaJSONFile.getContent(), tokens = metaJSONLexer.tokenise(content), node = metaJSONParser.parse(tokens), metaJSONNode = node; ///
167
169
  return metaJSONNode;
168
170
  }
169
- function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories) {
171
+ function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles) {
170
172
  var absoluteDirectoryPath = concatenatePaths(projectsDirectoryPath, relativeDirectoryPath), subEntryNames = readDirectory(absoluteDirectoryPath);
171
173
  subEntryNames.forEach(function(subEntryName) {
172
- var subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName), subEntryNameNotHiddenName = !subEntryNameHiddenName, loadHiddenFilesAndDirectories = !doNotLoadHiddenFilesAndDirectories, loadUnrecognisedFilesAndDirectories = !loadOnlyRecognisedFiles;
173
- if (subEntryNameNotHiddenName || loadHiddenFilesAndDirectories) {
174
+ var subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName), loadUnrecognisedFilesAndDirectories = !loadOnlyRecognisedFiles;
175
+ if (!subEntryNameHiddenName) {
174
176
  var path = concatenatePaths(relativeDirectoryPath, subEntryName), directory = loadDirectory(path, projectsDirectoryPath);
175
177
  if (directory !== null) {
176
178
  var directoryPath = path; ///
177
179
  if (loadUnrecognisedFilesAndDirectories) {
178
180
  entries.addDirectory(directory);
179
181
  }
180
- entriesFromRelativeDirectoryPath(entries, directoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories); ///
182
+ entriesFromRelativeDirectoryPath(entries, directoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles); ///
181
183
  } else {
182
184
  var file = loadFile(path, projectsDirectoryPath);
183
185
  if (file !== null) {
@@ -194,8 +196,8 @@ function topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
194
196
  var topmostFileNames;
195
197
  var subEntryNames = readDirectory(projectsDirectoryPath);
196
198
  topmostFileNames = subEntryNames.reduce(function(topmostFileNames, subEntryName) {
197
- var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName), subEntryNameNotHiddenName = !subEntryNameHiddenName;
198
- if (subEntryNameNotHiddenName) {
199
+ var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName);
200
+ if (!subEntryNameHiddenName) {
199
201
  var subEntryFile = isEntryFile(absoluteSubEntryPath);
200
202
  if (subEntryFile) {
201
203
  var topmostFileName = subEntryName; ///
@@ -206,12 +208,12 @@ function topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
206
208
  }, []);
207
209
  return topmostFileNames;
208
210
  }
209
- function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath, doNotLoadHiddenFilesAndDirectories) {
211
+ function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
210
212
  var topmostDirectoryNames;
211
213
  var subEntryNames = readDirectory(projectsDirectoryPath);
212
214
  topmostDirectoryNames = subEntryNames.reduce(function(topmostDirectoryNames, subEntryName) {
213
- var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName), subEntryNameNotHiddenName = !subEntryNameHiddenName, loadHiddenFilesAndDirectories = !doNotLoadHiddenFilesAndDirectories;
214
- if (subEntryNameNotHiddenName || loadHiddenFilesAndDirectories) {
215
+ var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName);
216
+ if (!subEntryNameHiddenName) {
215
217
  var subEntryDirectory = isEntryDirectory(absoluteSubEntryPath);
216
218
  if (subEntryDirectory) {
217
219
  var topmostDirectoryName = subEntryName; ///
@@ -223,4 +225,4 @@ function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath, d
223
225
  return topmostDirectoryNames;
224
226
  }
225
227
 
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCBta2RpcnAgZnJvbSBcIm1rZGlycFwiO1xyXG5cclxuaW1wb3J0IHsgTWV0YUpTT05MZXhlciwgTWV0YUpTT05QYXJzZXIgfSBmcm9tIFwib2NjYW0tZ3JhbW1hcnNcIjtcclxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcclxuXHJcbmltcG9ydCBGaWxlIGZyb20gXCIuLi9maWxlXCI7XHJcbmltcG9ydCBGaWxlcyBmcm9tIFwiLi4vZmlsZXNcIjtcclxuaW1wb3J0IEVudHJpZXMgZnJvbSBcIi4uL2VudHJpZXNcIjtcclxuaW1wb3J0IFByb2plY3QgZnJvbSBcIi4uL3Byb2plY3RcIjtcclxuaW1wb3J0IFByb2plY3RzIGZyb20gXCIuLi9wcm9qZWN0c1wiO1xyXG5pbXBvcnQgUmVsZWFzZXMgZnJvbSBcIi4uL3JlbGVhc2VzXCI7XHJcbmltcG9ydCBEaXJlY3RvcnkgZnJvbSBcIi4uL2RpcmVjdG9yeVwiO1xyXG5cclxuaW1wb3J0IHsgUEVSSU9EIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBpc05hbWVIaWRkZW5OYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9uYW1lXCI7XHJcbmltcG9ydCB7IGlzRmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGggfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVQYXRoXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGVudFwiO1xyXG5pbXBvcnQgeyBtZXRhSlNPTkZpbGVGcm9tRmlsZXMsIHJlYWRtZUZpbGVGcm9tRmlsZXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVzXCI7XHJcbmltcG9ydCB7IHZlcnNpb25Gcm9tTm9kZSwgcmVwb3NpdG9yeUZyb21Ob2RlLCBkZXBlbmRlbmNpZXNGcm9tTm9kZSB9IGZyb20gXCIuL21ldGFKU09OXCI7XHJcblxyXG5jb25zdCB7IGNvbmNhdGVuYXRlUGF0aHMsIHRvcG1vc3REaXJlY3RvcnlQYXRoRnJvbVBhdGggfSA9IHBhdGhVdGlsaXRpZXMsXHJcbiAgICAgIHsgcmVhZEZpbGUsIHdyaXRlRmlsZSwgaXNFbnRyeUZpbGUsIHJlYWREaXJlY3RvcnksIGlzRW50cnlEaXJlY3RvcnkgfSA9IGZpbGVTeXN0ZW1VdGlsaXRpZXM7XHJcblxyXG5jb25zdCBtZXRhSlNPTkxleGVyID0gTWV0YUpTT05MZXhlci5mcm9tTm90aGluZygpLFxyXG4gICAgICBtZXRhSlNPTlBhcnNlciA9IE1ldGFKU09OUGFyc2VyLmZyb21Ob3RoaW5nKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IGZpbGUgPSBudWxsO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgICAgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICBpZiAoZW50cnlGaWxlKSB7XHJcbiAgICAgIGxldCBjb250ZW50ID0gcmVhZEZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICAgIGNvbnRlbnQgPSBjb252ZXJ0Q29udGVudFRhYnNUb1doaXRlc3BhY2UoY29udGVudCk7ICAvLy9cclxuXHJcbiAgICAgIGZpbGUgPSBGaWxlLmZyb21QYXRoQW5kQ29udGVudChwYXRoLCBjb250ZW50KTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmlsZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVGaWxlKGZpbGUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGNvbnN0IHBhdGggPSBmaWxlLmdldFBhdGgoKSxcclxuICAgICAgICBjb250ZW50ID0gZmlsZS5nZXRDb250ZW50KCksXHJcbiAgICAgICAgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgIHRvcG1vc3RBYnNvbHV0ZURpcmVjdG9yeVBhdGggPSB0b3Btb3N0RGlyZWN0b3J5UGF0aEZyb21QYXRoKGFic29sdXRlUGF0aCk7XHJcblxyXG4gIG1rZGlycC5zeW5jKHRvcG1vc3RBYnNvbHV0ZURpcmVjdG9yeVBhdGgpO1xyXG5cclxuICB3cml0ZUZpbGUoYWJzb2x1dGVQYXRoLCBjb250ZW50KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlcyhwYXRocywgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgZmlsZXMgPSBGaWxlcy5mcm9tTm90aGluZygpO1xyXG5cclxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICBmaWxlcy5hZGRGaWxlKGZpbGUpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZmlsZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZXMoZmlsZXMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGZpbGVzLmZvckVhY2hGaWxlKChmaWxlKSA9PiB7XHJcbiAgICBzYXZlRmlsZShmaWxlLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudHJpZXModG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICBjb25zdCBlbnRyaWVzID0gRW50cmllcy5mcm9tTm90aGluZygpLFxyXG4gICAgICAgIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCA9IHRvcG1vc3REaXJlY3RvcnlOYW1lOyAgLy8vXHJcblxyXG4gIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGVudHJpZXMsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcyk7XHJcblxyXG4gIHJldHVybiBlbnRyaWVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2UodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IFBFUklPRCkge1xyXG4gIGxldCByZWxlYXNlID0gbnVsbDtcclxuXHJcbiAgY29uc3QgbmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lLCAgLy8vXHJcbiAgICAgICAgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMgPSB0cnVlLFxyXG4gICAgICAgIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMgPSB0cnVlLFxyXG4gICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyksXHJcbiAgICAgICAgZmlsZXMgPSBlbnRyaWVzLmdldEZpbGVzKCksXHJcbiAgICAgICAgcmVhZG1lRmlsZSA9IHJlYWRtZUZpbGVGcm9tRmlsZXMoZmlsZXMpLFxyXG4gICAgICAgIG1ldGFKU09ORmlsZSA9IG1ldGFKU09ORmlsZUZyb21GaWxlcyhmaWxlcyk7XHJcblxyXG4gIGlmICgocmVhZG1lRmlsZSAhPT0gbnVsbCkgJiYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkpIHtcclxuICAgIGNvbnN0IG1ldGFKU09OTm9kZSA9IG1ldGFKU09OTm9kZUZyb21NZXRhSlNPTkZpbGUobWV0YUpTT05GaWxlKTtcclxuXHJcbiAgICBpZiAobWV0YUpTT05Ob2RlICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBtZXRhSlNPTk5vZGUsICAvLy9cclxuICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25Gcm9tTm9kZShub2RlKSxcclxuICAgICAgICAgICAgcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlGcm9tTm9kZShub2RlKSxcclxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzRnJvbU5vZGUobm9kZSk7XHJcblxyXG4gICAgICByZWxlYXNlID0gUmVsZWFzZS5mcm9tTmFtZUVudHJpZXNWZXJzaW9uUmVwb3NpdG9yeUFuZERlcGVuZGVuY2llcyhuYW1lLCBlbnRyaWVzLCB2ZXJzaW9uLCByZXBvc2l0b3J5LCBkZXBlbmRlbmNpZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlbGVhc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdCh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gIGNvbnN0IG5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZSwgIC8vL1xyXG4gICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyksXHJcbiAgICAgICAgZmlsZXMgPSBlbnRyaWVzLmdldEZpbGVzKCksXHJcbiAgICAgICAgbWV0YUpTT05GaWxlID0gbWV0YUpTT05GaWxlRnJvbUZpbGVzKGZpbGVzKTtcclxuXHJcbiAgbGV0IHJlcG9zaXRvcnkgPSBudWxsLFxyXG4gICAgICBkZXBlbmRlbmNpZXMgPSBbXTtcclxuXHJcbiAgaWYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkge1xyXG4gICAgY29uc3QgbWV0YUpTT05Ob2RlID0gbWV0YUpTT05Ob2RlRnJvbU1ldGFKU09ORmlsZShtZXRhSlNPTkZpbGUpLFxyXG4gICAgICAgICAgbm9kZSA9IG1ldGFKU09OTm9kZTtcclxuXHJcbiAgICByZXBvc2l0b3J5ID0gcmVwb3NpdG9yeUZyb21Ob2RlKG5vZGUpO1xyXG4gICAgZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzRnJvbU5vZGUobm9kZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBwcm9qZWN0ID0gUHJvamVjdC5mcm9tTmFtZUVudHJpZXNSZXBvc2l0b3J5QW5kRGVwZW5kZW5jaWVzKG5hbWUsIGVudHJpZXMsIHJlcG9zaXRvcnksIGRlcGVuZGVuY2llcyk7XHJcblxyXG4gIHJldHVybiBwcm9qZWN0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2VzKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCByZWxlYXNlcztcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlbGVhc2VzID0gUmVsZWFzZXMuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICAgIHRvcG1vc3RGaWxlTmFtZXMgPSB0b3Btb3N0RmlsZU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgIHRvcG1vc3RGaWxlTmFtZXMuZm9yRWFjaCgodG9wbW9zdEZpbGVOYW1lKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSBsb2FkUmVsZWFzZSh0b3Btb3N0RmlsZU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICByZWxlYXNlcy5hZGRSZWxlYXNlKHJlbGVhc2UpO1xyXG4gICAgfSk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHJlbGVhc2VzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHJldHVybiByZWxlYXNlcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcm9qZWN0cyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgbGV0IHByb2plY3RzO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgcHJvamVjdHMgPSBQcm9qZWN0cy5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWVzID0gdG9wbW9zdERpcmVjdG9yeU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpO1xyXG5cclxuICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lcy5mb3JFYWNoKCh0b3Btb3N0RGlyZWN0b3J5TmFtZSkgPT4ge1xyXG4gICAgICBjb25zdCBwcm9qZWN0ID0gbG9hZFByb2plY3QodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpO1xyXG5cclxuICAgICAgcHJvamVjdHMuYWRkUHJvamVjdChwcm9qZWN0KTtcclxuICAgIH0pO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBwcm9qZWN0cyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcHJvamVjdHM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGlyZWN0b3J5KHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCBkaXJlY3RvcnkgPSBudWxsO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgICAgZW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgaWYgKGVudHJ5RGlyZWN0b3J5KSB7XHJcbiAgICAgIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5mcm9tUGF0aChwYXRoKTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZGlyZWN0b3J5O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXRhSlNPTk5vZGVGcm9tTWV0YUpTT05GaWxlKG1ldGFKU09ORmlsZSkge1xyXG4gIGNvbnN0IGNvbnRlbnQgPSBtZXRhSlNPTkZpbGUuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHRva2VucyA9IG1ldGFKU09OTGV4ZXIudG9rZW5pc2UoY29udGVudCksXHJcbiAgICAgICAgbm9kZSA9IG1ldGFKU09OUGFyc2VyLnBhcnNlKHRva2VucyksXHJcbiAgICAgICAgbWV0YUpTT05Ob2RlID0gbm9kZTsgIC8vL1xyXG5cclxuICByZXR1cm4gbWV0YUpTT05Ob2RlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aChlbnRyaWVzLCByZWxhdGl2ZURpcmVjdG9yeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICBjb25zdCBhYnNvbHV0ZURpcmVjdG9yeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcmVsYXRpdmVEaXJlY3RvcnlQYXRoKSxcclxuICAgICAgICBzdWJFbnRyeU5hbWVzID0gcmVhZERpcmVjdG9yeShhYnNvbHV0ZURpcmVjdG9yeVBhdGgpO1xyXG5cclxuICBzdWJFbnRyeU5hbWVzLmZvckVhY2goKHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3Qgc3ViRW50cnlOYW1lSGlkZGVuTmFtZSA9IGlzTmFtZUhpZGRlbk5hbWUoc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUgPSAhc3ViRW50cnlOYW1lSGlkZGVuTmFtZSxcclxuICAgICAgICAgIGxvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzID0gIWRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMsXHJcbiAgICAgICAgICBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyA9ICFsb2FkT25seVJlY29nbmlzZWRGaWxlcztcclxuXHJcbiAgICBpZiAoc3ViRW50cnlOYW1lTm90SGlkZGVuTmFtZSB8fCBsb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICBjb25zdCBwYXRoID0gY29uY2F0ZW5hdGVQYXRocyhyZWxhdGl2ZURpcmVjdG9yeVBhdGgsIHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IGxvYWREaXJlY3RvcnkocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChkaXJlY3RvcnkgIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBkaXJlY3RvcnlQYXRoID0gcGF0aDsgLy8vXHJcblxyXG4gICAgICAgIGlmIChsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICAgICAgZW50cmllcy5hZGREaXJlY3RvcnkoZGlyZWN0b3J5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGVudHJpZXMsIGRpcmVjdG9yeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpOyAvLy9cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBmaWxlID0gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICAgICAgaWYgKGZpbGUgIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gZmlsZS5nZXRQYXRoKCksXHJcbiAgICAgICAgICAgICAgICBmaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aCA9IGlzRmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGgoZmlsZVBhdGgpLFxyXG4gICAgICAgICAgICAgICAgZmlsZVJlY29nbmlzZWRGaWxlID0gZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGg7ICAvLy9cclxuXHJcbiAgICAgICAgICBpZiAoZmlsZVJlY29nbmlzZWRGaWxlIHx8IGxvYWRVbnJlY29nbmlzZWRGaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgICAgICAgICAgIGVudHJpZXMuYWRkRmlsZShmaWxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9wbW9zdEZpbGVOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IHRvcG1vc3RGaWxlTmFtZXM7XHJcblxyXG4gIGNvbnN0IHN1YkVudHJ5TmFtZXMgPSByZWFkRGlyZWN0b3J5KHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHRvcG1vc3RGaWxlTmFtZXMgPSBzdWJFbnRyeU5hbWVzLnJlZHVjZSgodG9wbW9zdEZpbGVOYW1lcywgc3ViRW50cnlOYW1lKSA9PiB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVN1YkVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgc3ViRW50cnlOYW1lSGlkZGVuTmFtZSA9IGlzTmFtZUhpZGRlbk5hbWUoc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUgPSAhc3ViRW50cnlOYW1lSGlkZGVuTmFtZTtcclxuXHJcbiAgICBpZiAoc3ViRW50cnlOYW1lTm90SGlkZGVuTmFtZSkge1xyXG4gICAgICBjb25zdCBzdWJFbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShhYnNvbHV0ZVN1YkVudHJ5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoc3ViRW50cnlGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgdG9wbW9zdEZpbGVOYW1lID0gc3ViRW50cnlOYW1lOyAgLy8vXHJcblxyXG4gICAgICAgIHRvcG1vc3RGaWxlTmFtZXMucHVzaCh0b3Btb3N0RmlsZU5hbWUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG9wbW9zdEZpbGVOYW1lcztcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiB0b3Btb3N0RmlsZU5hbWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b3Btb3N0RGlyZWN0b3J5TmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcblxyXG4gIGNvbnN0IHN1YkVudHJ5TmFtZXMgPSByZWFkRGlyZWN0b3J5KHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHRvcG1vc3REaXJlY3RvcnlOYW1lcyA9IHN1YkVudHJ5TmFtZXMucmVkdWNlKCh0b3Btb3N0RGlyZWN0b3J5TmFtZXMsIHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3QgYWJzb2x1dGVTdWJFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICBzdWJFbnRyeU5hbWVOb3RIaWRkZW5OYW1lID0gIXN1YkVudHJ5TmFtZUhpZGRlbk5hbWUsXHJcbiAgICAgICAgICBsb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyA9ICFkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzO1xyXG5cclxuICAgIGlmIChzdWJFbnRyeU5hbWVOb3RIaWRkZW5OYW1lIHx8IGxvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgICAgIGNvbnN0IHN1YkVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShhYnNvbHV0ZVN1YkVudHJ5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoc3ViRW50cnlEaXJlY3RvcnkpIHtcclxuICAgICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHN1YkVudHJ5TmFtZTsgIC8vL1xyXG5cclxuICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZXMucHVzaCh0b3Btb3N0RGlyZWN0b3J5TmFtZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcbiAgfSwgW10pO1xyXG5cclxuICByZXR1cm4gdG9wbW9zdERpcmVjdG9yeU5hbWVzO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJsb2FkRmlsZSIsInNhdmVGaWxlIiwibG9hZEZpbGVzIiwic2F2ZUZpbGVzIiwibG9hZEVudHJpZXMiLCJsb2FkUmVsZWFzZSIsImxvYWRQcm9qZWN0IiwibG9hZFJlbGVhc2VzIiwibG9hZFByb2plY3RzIiwibG9hZERpcmVjdG9yeSIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwidG9wbW9zdERpcmVjdG9yeVBhdGhGcm9tUGF0aCIsInJlYWRGaWxlIiwiZmlsZVN5c3RlbVV0aWxpdGllcyIsIndyaXRlRmlsZSIsImlzRW50cnlGaWxlIiwicmVhZERpcmVjdG9yeSIsImlzRW50cnlEaXJlY3RvcnkiLCJtZXRhSlNPTkxleGVyIiwiTWV0YUpTT05MZXhlciIsImZyb21Ob3RoaW5nIiwibWV0YUpTT05QYXJzZXIiLCJNZXRhSlNPTlBhcnNlciIsInBhdGgiLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJmaWxlIiwiYWJzb2x1dGVQYXRoIiwiZW50cnlGaWxlIiwiY29udGVudCIsImNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZSIsIkZpbGUiLCJmcm9tUGF0aEFuZENvbnRlbnQiLCJlcnJvciIsImdldFBhdGgiLCJnZXRDb250ZW50IiwidG9wbW9zdEFic29sdXRlRGlyZWN0b3J5UGF0aCIsIm1rZGlycCIsInN5bmMiLCJwYXRocyIsImZpbGVzIiwiRmlsZXMiLCJmb3JFYWNoIiwiYWRkRmlsZSIsImZvckVhY2hGaWxlIiwidG9wbW9zdERpcmVjdG9yeU5hbWUiLCJsb2FkT25seVJlY29nbmlzZWRGaWxlcyIsImRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMiLCJlbnRyaWVzIiwiRW50cmllcyIsInJlbGF0aXZlRGlyZWN0b3J5UGF0aCIsImVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoIiwiUEVSSU9EIiwicmVsZWFzZSIsIm5hbWUiLCJnZXRGaWxlcyIsInJlYWRtZUZpbGUiLCJyZWFkbWVGaWxlRnJvbUZpbGVzIiwibWV0YUpTT05GaWxlIiwibWV0YUpTT05GaWxlRnJvbUZpbGVzIiwibWV0YUpTT05Ob2RlIiwibWV0YUpTT05Ob2RlRnJvbU1ldGFKU09ORmlsZSIsIm5vZGUiLCJ2ZXJzaW9uIiwidmVyc2lvbkZyb21Ob2RlIiwicmVwb3NpdG9yeSIsInJlcG9zaXRvcnlGcm9tTm9kZSIsImRlcGVuZGVuY2llcyIsImRlcGVuZGVuY2llc0Zyb21Ob2RlIiwiUmVsZWFzZSIsImZyb21OYW1lRW50cmllc1ZlcnNpb25SZXBvc2l0b3J5QW5kRGVwZW5kZW5jaWVzIiwicHJvamVjdCIsIlByb2plY3QiLCJmcm9tTmFtZUVudHJpZXNSZXBvc2l0b3J5QW5kRGVwZW5kZW5jaWVzIiwicmVsZWFzZXMiLCJSZWxlYXNlcyIsInRvcG1vc3RGaWxlTmFtZXMiLCJ0b3Btb3N0RmlsZU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aCIsInRvcG1vc3RGaWxlTmFtZSIsImFkZFJlbGVhc2UiLCJwcm9qZWN0cyIsIlByb2plY3RzIiwidG9wbW9zdERpcmVjdG9yeU5hbWVzIiwidG9wbW9zdERpcmVjdG9yeU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aCIsImFkZFByb2plY3QiLCJkaXJlY3RvcnkiLCJlbnRyeURpcmVjdG9yeSIsIkRpcmVjdG9yeSIsImZyb21QYXRoIiwidG9rZW5zIiwidG9rZW5pc2UiLCJwYXJzZSIsImFic29sdXRlRGlyZWN0b3J5UGF0aCIsInN1YkVudHJ5TmFtZXMiLCJzdWJFbnRyeU5hbWUiLCJzdWJFbnRyeU5hbWVIaWRkZW5OYW1lIiwiaXNOYW1lSGlkZGVuTmFtZSIsInN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUiLCJsb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyIsImxvYWRVbnJlY29nbmlzZWRGaWxlc0FuZERpcmVjdG9yaWVzIiwiZGlyZWN0b3J5UGF0aCIsImFkZERpcmVjdG9yeSIsImZpbGVQYXRoIiwiZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGgiLCJpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIiwiZmlsZVJlY29nbmlzZWRGaWxlIiwicmVkdWNlIiwiYWJzb2x1dGVTdWJFbnRyeVBhdGgiLCJzdWJFbnRyeUZpbGUiLCJwdXNoIiwic3ViRW50cnlEaXJlY3RvcnkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQTRCZ0JBLFFBQVE7ZUFBUkE7O0lBcUJBQyxRQUFRO2VB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
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCBta2RpcnAgZnJvbSBcIm1rZGlycFwiO1xyXG5cclxuaW1wb3J0IHsgTWV0YUpTT05MZXhlciwgTWV0YUpTT05QYXJzZXIgfSBmcm9tIFwib2NjYW0tZ3JhbW1hcnNcIjtcclxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcclxuXHJcbmltcG9ydCBGaWxlIGZyb20gXCIuLi9maWxlXCI7XHJcbmltcG9ydCBGaWxlcyBmcm9tIFwiLi4vZmlsZXNcIjtcclxuaW1wb3J0IEVudHJpZXMgZnJvbSBcIi4uL2VudHJpZXNcIjtcclxuaW1wb3J0IFByb2plY3QgZnJvbSBcIi4uL3Byb2plY3RcIjtcclxuaW1wb3J0IFByb2plY3RzIGZyb20gXCIuLi9wcm9qZWN0c1wiO1xyXG5pbXBvcnQgUmVsZWFzZXMgZnJvbSBcIi4uL3JlbGVhc2VzXCI7XHJcbmltcG9ydCBEaXJlY3RvcnkgZnJvbSBcIi4uL2RpcmVjdG9yeVwiO1xyXG5cclxuaW1wb3J0IHsgUEVSSU9EIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBpc05hbWVIaWRkZW5OYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9uYW1lXCI7XHJcbmltcG9ydCB7IGlzRmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGggfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVQYXRoXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGVudFwiO1xyXG5pbXBvcnQgeyBtZXRhSlNPTkZpbGVGcm9tRmlsZXMsIHJlYWRtZUZpbGVGcm9tRmlsZXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVzXCI7XHJcbmltcG9ydCB7IHZlcnNpb25Gcm9tTm9kZSwgcmVwb3NpdG9yeUZyb21Ob2RlLCBkZXBlbmRlbmNpZXNGcm9tTm9kZSB9IGZyb20gXCIuL21ldGFKU09OXCI7XHJcblxyXG5jb25zdCB7IGNvbmNhdGVuYXRlUGF0aHMsIHRvcG1vc3REaXJlY3RvcnlQYXRoRnJvbVBhdGggfSA9IHBhdGhVdGlsaXRpZXMsXHJcbiAgICAgIHsgcmVhZEZpbGUsIHdyaXRlRmlsZSwgaXNFbnRyeUZpbGUsIHJlYWREaXJlY3RvcnksIGlzRW50cnlEaXJlY3RvcnkgfSA9IGZpbGVTeXN0ZW1VdGlsaXRpZXM7XHJcblxyXG5jb25zdCBtZXRhSlNPTkxleGVyID0gTWV0YUpTT05MZXhlci5mcm9tTm90aGluZygpLFxyXG4gICAgICBtZXRhSlNPTlBhcnNlciA9IE1ldGFKU09OUGFyc2VyLmZyb21Ob3RoaW5nKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IGZpbGUgPSBudWxsO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgICAgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICBpZiAoZW50cnlGaWxlKSB7XHJcbiAgICAgIGxldCBjb250ZW50ID0gcmVhZEZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICAgIGNvbnRlbnQgPSBjb252ZXJ0Q29udGVudFRhYnNUb1doaXRlc3BhY2UoY29udGVudCk7ICAvLy9cclxuXHJcbiAgICAgIGZpbGUgPSBGaWxlLmZyb21QYXRoQW5kQ29udGVudChwYXRoLCBjb250ZW50KTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmlsZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVGaWxlKGZpbGUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGNvbnN0IHBhdGggPSBmaWxlLmdldFBhdGgoKSxcclxuICAgICAgICBjb250ZW50ID0gZmlsZS5nZXRDb250ZW50KCksXHJcbiAgICAgICAgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgIHRvcG1vc3RBYnNvbHV0ZURpcmVjdG9yeVBhdGggPSB0b3Btb3N0RGlyZWN0b3J5UGF0aEZyb21QYXRoKGFic29sdXRlUGF0aCk7XHJcblxyXG4gIG1rZGlycC5zeW5jKHRvcG1vc3RBYnNvbHV0ZURpcmVjdG9yeVBhdGgpO1xyXG5cclxuICB3cml0ZUZpbGUoYWJzb2x1dGVQYXRoLCBjb250ZW50KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlcyhwYXRocywgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgZmlsZXMgPSBGaWxlcy5mcm9tTm90aGluZygpO1xyXG5cclxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICBmaWxlcy5hZGRGaWxlKGZpbGUpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZmlsZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZXMoZmlsZXMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGZpbGVzLmZvckVhY2hGaWxlKChmaWxlKSA9PiB7XHJcbiAgICBzYXZlRmlsZShmaWxlLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudHJpZXModG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMpIHtcclxuICBjb25zdCBlbnRyaWVzID0gRW50cmllcy5mcm9tTm90aGluZygpLFxyXG4gICAgICAgIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCA9IHRvcG1vc3REaXJlY3RvcnlOYW1lOyAgLy8vXHJcblxyXG4gIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGVudHJpZXMsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyk7XHJcblxyXG4gIHJldHVybiBlbnRyaWVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2UodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IFBFUklPRCkge1xyXG4gIGxldCByZWxlYXNlID0gbnVsbDtcclxuXHJcbiAgY29uc3QgbmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lLCAgLy8vXHJcbiAgICAgICAgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMgPSB0cnVlLFxyXG4gICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyksXHJcbiAgICAgICAgZmlsZXMgPSBlbnRyaWVzLmdldEZpbGVzKCksXHJcbiAgICAgICAgcmVhZG1lRmlsZSA9IHJlYWRtZUZpbGVGcm9tRmlsZXMoZmlsZXMpLFxyXG4gICAgICAgIG1ldGFKU09ORmlsZSA9IG1ldGFKU09ORmlsZUZyb21GaWxlcyhmaWxlcyk7XHJcblxyXG4gIGlmICgocmVhZG1lRmlsZSAhPT0gbnVsbCkgJiYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkpIHtcclxuICAgIGNvbnN0IG1ldGFKU09OTm9kZSA9IG1ldGFKU09OTm9kZUZyb21NZXRhSlNPTkZpbGUobWV0YUpTT05GaWxlKTtcclxuXHJcbiAgICBpZiAobWV0YUpTT05Ob2RlICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBtZXRhSlNPTk5vZGUsICAvLy9cclxuICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25Gcm9tTm9kZShub2RlKSxcclxuICAgICAgICAgICAgcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlGcm9tTm9kZShub2RlKSxcclxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzRnJvbU5vZGUobm9kZSk7XHJcblxyXG4gICAgICByZWxlYXNlID0gUmVsZWFzZS5mcm9tTmFtZUVudHJpZXNWZXJzaW9uUmVwb3NpdG9yeUFuZERlcGVuZGVuY2llcyhuYW1lLCBlbnRyaWVzLCB2ZXJzaW9uLCByZXBvc2l0b3J5LCBkZXBlbmRlbmNpZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlbGVhc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdCh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcykge1xyXG4gIGNvbnN0IG5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZSwgIC8vL1xyXG4gICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyksXHJcbiAgICAgICAgZmlsZXMgPSBlbnRyaWVzLmdldEZpbGVzKCksXHJcbiAgICAgICAgbWV0YUpTT05GaWxlID0gbWV0YUpTT05GaWxlRnJvbUZpbGVzKGZpbGVzKTtcclxuXHJcbiAgbGV0IHJlcG9zaXRvcnkgPSBudWxsLFxyXG4gICAgICBkZXBlbmRlbmNpZXMgPSBbXTtcclxuXHJcbiAgaWYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkge1xyXG4gICAgY29uc3QgbWV0YUpTT05Ob2RlID0gbWV0YUpTT05Ob2RlRnJvbU1ldGFKU09ORmlsZShtZXRhSlNPTkZpbGUpLFxyXG4gICAgICAgICAgbm9kZSA9IG1ldGFKU09OTm9kZTtcclxuXHJcbiAgICByZXBvc2l0b3J5ID0gcmVwb3NpdG9yeUZyb21Ob2RlKG5vZGUpO1xyXG4gICAgZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzRnJvbU5vZGUobm9kZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBwcm9qZWN0ID0gUHJvamVjdC5mcm9tTmFtZUVudHJpZXNSZXBvc2l0b3J5QW5kRGVwZW5kZW5jaWVzKG5hbWUsIGVudHJpZXMsIHJlcG9zaXRvcnksIGRlcGVuZGVuY2llcyk7XHJcblxyXG4gIHJldHVybiBwcm9qZWN0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2VzKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCByZWxlYXNlcztcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlbGVhc2VzID0gUmVsZWFzZXMuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICAgIHRvcG1vc3RGaWxlTmFtZXMgPSB0b3Btb3N0RmlsZU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgIHRvcG1vc3RGaWxlTmFtZXMuZm9yRWFjaCgodG9wbW9zdEZpbGVOYW1lKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSBsb2FkUmVsZWFzZSh0b3Btb3N0RmlsZU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICBpZiAocmVsZWFzZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHJlbGVhc2VzLmFkZFJlbGVhc2UocmVsZWFzZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICByZWxlYXNlcyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVsZWFzZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcykge1xyXG4gIGxldCBwcm9qZWN0cztcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHByb2plY3RzID0gUHJvamVjdHMuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lcyA9IHRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZXMuZm9yRWFjaCgodG9wbW9zdERpcmVjdG9yeU5hbWUpID0+IHtcclxuICAgICAgY29uc3QgcHJvamVjdCA9IGxvYWRQcm9qZWN0KHRvcG1vc3REaXJlY3RvcnlOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKTtcclxuXHJcbiAgICAgIHByb2plY3RzLmFkZFByb2plY3QocHJvamVjdCk7XHJcbiAgICB9KTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgcHJvamVjdHMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHByb2plY3RzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZERpcmVjdG9yeShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgZGlyZWN0b3J5ID0gbnVsbDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBwYXRoKSxcclxuICAgICAgICAgIGVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgIGlmIChlbnRyeURpcmVjdG9yeSkge1xyXG4gICAgICBkaXJlY3RvcnkgPSBEaXJlY3RvcnkuZnJvbVBhdGgocGF0aCk7XHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIC8vL1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGRpcmVjdG9yeTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWV0YUpTT05Ob2RlRnJvbU1ldGFKU09ORmlsZShtZXRhSlNPTkZpbGUpIHtcclxuICBjb25zdCBjb250ZW50ID0gbWV0YUpTT05GaWxlLmdldENvbnRlbnQoKSxcclxuICAgICAgICB0b2tlbnMgPSBtZXRhSlNPTkxleGVyLnRva2VuaXNlKGNvbnRlbnQpLFxyXG4gICAgICAgIG5vZGUgPSBtZXRhSlNPTlBhcnNlci5wYXJzZSh0b2tlbnMpLFxyXG4gICAgICAgIG1ldGFKU09OTm9kZSA9IG5vZGU7ICAvLy9cclxuXHJcbiAgcmV0dXJuIG1ldGFKU09OTm9kZTtcclxufVxyXG5cclxuZnVuY3Rpb24gZW50cmllc0Zyb21SZWxhdGl2ZURpcmVjdG9yeVBhdGgoZW50cmllcywgcmVsYXRpdmVEaXJlY3RvcnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKSB7XHJcbiAgY29uc3QgYWJzb2x1dGVEaXJlY3RvcnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCksXHJcbiAgICAgICAgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkoYWJzb2x1dGVEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgc3ViRW50cnlOYW1lcy5mb3JFYWNoKChzdWJFbnRyeU5hbWUpID0+IHtcclxuICAgIGNvbnN0IHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyA9ICFsb2FkT25seVJlY29nbmlzZWRGaWxlcztcclxuXHJcbiAgICBpZiAoIXN1YkVudHJ5TmFtZUhpZGRlbk5hbWUpIHtcclxuICAgICAgY29uc3QgcGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocmVsYXRpdmVEaXJlY3RvcnlQYXRoLCBzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgICBkaXJlY3RvcnkgPSBsb2FkRGlyZWN0b3J5KHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoZGlyZWN0b3J5ICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZGlyZWN0b3J5UGF0aCA9IHBhdGg7IC8vL1xyXG5cclxuICAgICAgICBpZiAobG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICAgICAgICAgIGVudHJpZXMuYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aChlbnRyaWVzLCBkaXJlY3RvcnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKTsgLy8vXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IGxvYWRGaWxlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICAgIGlmIChmaWxlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxyXG4gICAgICAgICAgICAgICAgZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGggPSBpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoKGZpbGVQYXRoKSxcclxuICAgICAgICAgICAgICAgIGZpbGVSZWNvZ25pc2VkRmlsZSA9IGZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoOyAgLy8vXHJcblxyXG4gICAgICAgICAgaWYgKGZpbGVSZWNvZ25pc2VkRmlsZSB8fCBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICAgICAgICBlbnRyaWVzLmFkZEZpbGUoZmlsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvcG1vc3RGaWxlTmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCB0b3Btb3N0RmlsZU5hbWVzO1xyXG5cclxuICBjb25zdCBzdWJFbnRyeU5hbWVzID0gcmVhZERpcmVjdG9yeShwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICB0b3Btb3N0RmlsZU5hbWVzID0gc3ViRW50cnlOYW1lcy5yZWR1Y2UoKHRvcG1vc3RGaWxlTmFtZXMsIHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3QgYWJzb2x1dGVTdWJFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSk7XHJcblxyXG4gICAgaWYgKCFzdWJFbnRyeU5hbWVIaWRkZW5OYW1lKSB7XHJcbiAgICAgIGNvbnN0IHN1YkVudHJ5RmlsZSA9IGlzRW50cnlGaWxlKGFic29sdXRlU3ViRW50cnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChzdWJFbnRyeUZpbGUpIHtcclxuICAgICAgICBjb25zdCB0b3Btb3N0RmlsZU5hbWUgPSBzdWJFbnRyeU5hbWU7ICAvLy9cclxuXHJcbiAgICAgICAgdG9wbW9zdEZpbGVOYW1lcy5wdXNoKHRvcG1vc3RGaWxlTmFtZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b3Btb3N0RmlsZU5hbWVzO1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgcmV0dXJuIHRvcG1vc3RGaWxlTmFtZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IHRvcG1vc3REaXJlY3RvcnlOYW1lcztcclxuXHJcbiAgY29uc3Qgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkocHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgdG9wbW9zdERpcmVjdG9yeU5hbWVzID0gc3ViRW50cnlOYW1lcy5yZWR1Y2UoKHRvcG1vc3REaXJlY3RvcnlOYW1lcywgc3ViRW50cnlOYW1lKSA9PiB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVN1YkVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgc3ViRW50cnlOYW1lSGlkZGVuTmFtZSA9IGlzTmFtZUhpZGRlbk5hbWUoc3ViRW50cnlOYW1lKTtcclxuXHJcbiAgICBpZiAoIXN1YkVudHJ5TmFtZUhpZGRlbk5hbWUpIHtcclxuICAgICAgY29uc3Qgc3ViRW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlU3ViRW50cnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChzdWJFbnRyeURpcmVjdG9yeSkge1xyXG4gICAgICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gc3ViRW50cnlOYW1lOyAgLy8vXHJcblxyXG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lcy5wdXNoKHRvcG1vc3REaXJlY3RvcnlOYW1lKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRvcG1vc3REaXJlY3RvcnlOYW1lcztcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcbn1cclxuIl0sIm5hbWVzIjpbImxvYWRGaWxlIiwic2F2ZUZpbGUiLCJsb2FkRmlsZXMiLCJzYXZlRmlsZXMiLCJsb2FkRW50cmllcyIsImxvYWRSZWxlYXNlIiwibG9hZFByb2plY3QiLCJsb2FkUmVsZWFzZXMiLCJsb2FkUHJvamVjdHMiLCJsb2FkRGlyZWN0b3J5IiwiY29uY2F0ZW5hdGVQYXRocyIsInBhdGhVdGlsaXRpZXMiLCJ0b3Btb3N0RGlyZWN0b3J5UGF0aEZyb21QYXRoIiwicmVhZEZpbGUiLCJmaWxlU3lzdGVtVXRpbGl0aWVzIiwid3JpdGVGaWxlIiwiaXNFbnRyeUZpbGUiLCJyZWFkRGlyZWN0b3J5IiwiaXNFbnRyeURpcmVjdG9yeSIsIm1ldGFKU09OTGV4ZXIiLCJNZXRhSlNPTkxleGVyIiwiZnJvbU5vdGhpbmciLCJtZXRhSlNPTlBhcnNlciIsIk1ldGFKU09OUGFyc2VyIiwicGF0aCIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsImZpbGUiLCJhYnNvbHV0ZVBhdGgiLCJlbnRyeUZpbGUiLCJjb250ZW50IiwiY29udmVydENvbnRlbnRUYWJzVG9XaGl0ZXNwYWNlIiwiRmlsZSIsImZyb21QYXRoQW5kQ29udGVudCIsImVycm9yIiwiZ2V0UGF0aCIsImdldENvbnRlbnQiLCJ0b3Btb3N0QWJzb2x1dGVEaXJlY3RvcnlQYXRoIiwibWtkaXJwIiwic3luYyIsInBhdGhzIiwiZmlsZXMiLCJGaWxlcyIsImZvckVhY2giLCJhZGRGaWxlIiwiZm9yRWFjaEZpbGUiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZSIsImxvYWRPbmx5UmVjb2duaXNlZEZpbGVzIiwiZW50cmllcyIsIkVudHJpZXMiLCJyZWxhdGl2ZURpcmVjdG9yeVBhdGgiLCJlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aCIsIlBFUklPRCIsInJlbGVhc2UiLCJuYW1lIiwiZ2V0RmlsZXMiLCJyZWFkbWVGaWxlIiwicmVhZG1lRmlsZUZyb21GaWxlcyIsIm1ldGFKU09ORmlsZSIsIm1ldGFKU09ORmlsZUZyb21GaWxlcyIsIm1ldGFKU09OTm9kZSIsIm1ldGFKU09OTm9kZUZyb21NZXRhSlNPTkZpbGUiLCJub2RlIiwidmVyc2lvbiIsInZlcnNpb25Gcm9tTm9kZSIsInJlcG9zaXRvcnkiLCJyZXBvc2l0b3J5RnJvbU5vZGUiLCJkZXBlbmRlbmNpZXMiLCJkZXBlbmRlbmNpZXNGcm9tTm9kZSIsIlJlbGVhc2UiLCJmcm9tTmFtZUVudHJpZXNWZXJzaW9uUmVwb3NpdG9yeUFuZERlcGVuZGVuY2llcyIsInByb2plY3QiLCJQcm9qZWN0IiwiZnJvbU5hbWVFbnRyaWVzUmVwb3NpdG9yeUFuZERlcGVuZGVuY2llcyIsInJlbGVhc2VzIiwiUmVsZWFzZXMiLCJ0b3Btb3N0RmlsZU5hbWVzIiwidG9wbW9zdEZpbGVOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJ0b3Btb3N0RmlsZU5hbWUiLCJhZGRSZWxlYXNlIiwicHJvamVjdHMiLCJQcm9qZWN0cyIsInRvcG1vc3REaXJlY3RvcnlOYW1lcyIsInRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJhZGRQcm9qZWN0IiwiZGlyZWN0b3J5IiwiZW50cnlEaXJlY3RvcnkiLCJEaXJlY3RvcnkiLCJmcm9tUGF0aCIsInRva2VucyIsInRva2VuaXNlIiwicGFyc2UiLCJhYnNvbHV0ZURpcmVjdG9yeVBhdGgiLCJzdWJFbnRyeU5hbWVzIiwic3ViRW50cnlOYW1lIiwic3ViRW50cnlOYW1lSGlkZGVuTmFtZSIsImlzTmFtZUhpZGRlbk5hbWUiLCJsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyIsImRpcmVjdG9yeVBhdGgiLCJhZGREaXJlY3RvcnkiLCJmaWxlUGF0aCIsImZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIiwiaXNGaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aCIsImZpbGVSZWNvZ25pc2VkRmlsZSIsInJlZHVjZSIsImFic29sdXRlU3ViRW50cnlQYXRoIiwic3ViRW50cnlGaWxlIiwicHVzaCIsInN1YkVudHJ5RGlyZWN0b3J5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUE0QmdCQSxRQUFRO2VBQVJBOztJQXFCQUMsUUFBUTtlQUFSQTs7SUFXQUMsU0FBUztlQUFUQTs7SUFZQUMsU0FBUztl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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-file-system",
3
3
  "author": "James Smith",
4
- "version": "5.0.15",
4
+ "version": "5.0.16",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-file-system",
7
7
  "description": "Occam's file system functionality.",
@@ -76,11 +76,11 @@ export function saveFiles(files, projectsDirectoryPath) {
76
76
  });
77
77
  }
78
78
 
79
- export function loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories) {
79
+ export function loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
80
80
  const entries = Entries.fromNothing(),
81
81
  relativeDirectoryPath = topmostDirectoryName; ///
82
82
 
83
- entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories);
83
+ entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles);
84
84
 
85
85
  return entries;
86
86
  }
@@ -90,8 +90,7 @@ export function loadRelease(topmostDirectoryName, projectsDirectoryPath = PERIOD
90
90
 
91
91
  const name = topmostDirectoryName, ///
92
92
  loadOnlyRecognisedFiles = true,
93
- doNotLoadHiddenFilesAndDirectories = true,
94
- entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories),
93
+ entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles),
95
94
  files = entries.getFiles(),
96
95
  readmeFile = readmeFileFromFiles(files),
97
96
  metaJSONFile = metaJSONFileFromFiles(files);
@@ -112,9 +111,9 @@ export function loadRelease(topmostDirectoryName, projectsDirectoryPath = PERIOD
112
111
  return release;
113
112
  }
114
113
 
115
- export function loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories) {
114
+ export function loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
116
115
  const name = topmostDirectoryName, ///
117
- entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories),
116
+ entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles),
118
117
  files = entries.getFiles(),
119
118
  metaJSONFile = metaJSONFileFromFiles(files);
120
119
 
@@ -144,7 +143,9 @@ export function loadReleases(projectsDirectoryPath) {
144
143
  topmostFileNames.forEach((topmostFileName) => {
145
144
  const release = loadRelease(topmostFileName, projectsDirectoryPath);
146
145
 
147
- releases.addRelease(release);
146
+ if (release !== null) {
147
+ releases.addRelease(release);
148
+ }
148
149
  });
149
150
  } catch (error) {
150
151
  releases = null;
@@ -153,15 +154,15 @@ export function loadReleases(projectsDirectoryPath) {
153
154
  return releases;
154
155
  }
155
156
 
156
- export function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories) {
157
+ export function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles) {
157
158
  let projects;
158
159
 
159
160
  try {
160
161
  const projects = Projects.fromNothing(),
161
- topmostDirectoryNames = topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath, doNotLoadHiddenFilesAndDirectories);
162
+ topmostDirectoryNames = topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath);
162
163
 
163
164
  topmostDirectoryNames.forEach((topmostDirectoryName) => {
164
- const project = loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories);
165
+ const project = loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles);
165
166
 
166
167
  projects.addProject(project);
167
168
  });
@@ -198,17 +199,15 @@ function metaJSONNodeFromMetaJSONFile(metaJSONFile) {
198
199
  return metaJSONNode;
199
200
  }
200
201
 
201
- function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories) {
202
+ function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles) {
202
203
  const absoluteDirectoryPath = concatenatePaths(projectsDirectoryPath, relativeDirectoryPath),
203
204
  subEntryNames = readDirectory(absoluteDirectoryPath);
204
205
 
205
206
  subEntryNames.forEach((subEntryName) => {
206
207
  const subEntryNameHiddenName = isNameHiddenName(subEntryName),
207
- subEntryNameNotHiddenName = !subEntryNameHiddenName,
208
- loadHiddenFilesAndDirectories = !doNotLoadHiddenFilesAndDirectories,
209
208
  loadUnrecognisedFilesAndDirectories = !loadOnlyRecognisedFiles;
210
209
 
211
- if (subEntryNameNotHiddenName || loadHiddenFilesAndDirectories) {
210
+ if (!subEntryNameHiddenName) {
212
211
  const path = concatenatePaths(relativeDirectoryPath, subEntryName),
213
212
  directory = loadDirectory(path, projectsDirectoryPath);
214
213
 
@@ -219,7 +218,7 @@ function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projec
219
218
  entries.addDirectory(directory);
220
219
  }
221
220
 
222
- entriesFromRelativeDirectoryPath(entries, directoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories); ///
221
+ entriesFromRelativeDirectoryPath(entries, directoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles); ///
223
222
  } else {
224
223
  const file = loadFile(path, projectsDirectoryPath);
225
224
 
@@ -244,10 +243,9 @@ function topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
244
243
 
245
244
  topmostFileNames = subEntryNames.reduce((topmostFileNames, subEntryName) => {
246
245
  const absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName),
247
- subEntryNameHiddenName = isNameHiddenName(subEntryName),
248
- subEntryNameNotHiddenName = !subEntryNameHiddenName;
246
+ subEntryNameHiddenName = isNameHiddenName(subEntryName);
249
247
 
250
- if (subEntryNameNotHiddenName) {
248
+ if (!subEntryNameHiddenName) {
251
249
  const subEntryFile = isEntryFile(absoluteSubEntryPath);
252
250
 
253
251
  if (subEntryFile) {
@@ -263,18 +261,16 @@ function topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
263
261
  return topmostFileNames;
264
262
  }
265
263
 
266
- function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath, doNotLoadHiddenFilesAndDirectories) {
264
+ function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
267
265
  let topmostDirectoryNames;
268
266
 
269
267
  const subEntryNames = readDirectory(projectsDirectoryPath);
270
268
 
271
269
  topmostDirectoryNames = subEntryNames.reduce((topmostDirectoryNames, subEntryName) => {
272
270
  const absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName),
273
- subEntryNameHiddenName = isNameHiddenName(subEntryName),
274
- subEntryNameNotHiddenName = !subEntryNameHiddenName,
275
- loadHiddenFilesAndDirectories = !doNotLoadHiddenFilesAndDirectories;
271
+ subEntryNameHiddenName = isNameHiddenName(subEntryName);
276
272
 
277
- if (subEntryNameNotHiddenName || loadHiddenFilesAndDirectories) {
273
+ if (!subEntryNameHiddenName) {
278
274
  const subEntryDirectory = isEntryDirectory(absoluteSubEntryPath);
279
275
 
280
276
  if (subEntryDirectory) {