occam-languages 3.0.68 → 3.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/context/release.js
CHANGED
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _necessary = require("necessary");
|
|
12
|
+
const _continuation = require("../utilities/continuation");
|
|
12
13
|
const _verify = require("../utilities/verify");
|
|
13
14
|
const _customGrammar = require("../utilities/customGrammar");
|
|
14
15
|
const _fileContext = require("../utilities/fileContext");
|
|
@@ -323,15 +324,25 @@ class ReleaseContext {
|
|
|
323
324
|
return this.callback(breakPoint, context, forward, back);
|
|
324
325
|
}
|
|
325
326
|
verify(forward, back) {
|
|
327
|
+
forward = (0, _continuation.cut)(forward, back); ///
|
|
328
|
+
this.info(`Verifying the '${this.name}' project... `);
|
|
326
329
|
const typePrefixes = this.getTypePrefixes(), releaseContext = this, typePrefixesVerify = (0, _verify.verifyTypePrefixes)(typePrefixes, releaseContext);
|
|
327
330
|
if (!typePrefixesVerify) {
|
|
331
|
+
this.info(`Unable to verify the '${this.name}' project. `);
|
|
328
332
|
return back();
|
|
329
333
|
}
|
|
330
334
|
return (0, _verify.verifyFileContexts)(this.fileContexts, (fileContexts, back)=>{
|
|
335
|
+
this.info(`...verified the '${this.name}' project. `);
|
|
331
336
|
this.fileContexts = fileContexts; ///
|
|
332
337
|
this.verifies = true;
|
|
333
338
|
return forward(back);
|
|
334
|
-
},
|
|
339
|
+
}, (exception)=>{
|
|
340
|
+
if (exception) {
|
|
341
|
+
return back(exception);
|
|
342
|
+
}
|
|
343
|
+
this.info(`Unable to verify the '${this.name}' project. `);
|
|
344
|
+
return back();
|
|
345
|
+
});
|
|
335
346
|
}
|
|
336
347
|
toJSON() {
|
|
337
348
|
const fileContextsJSON = this.fileContexts.map((fileContext)=>{
|
|
@@ -355,4 +366,4 @@ class ReleaseContext {
|
|
|
355
366
|
}
|
|
356
367
|
}
|
|
357
368
|
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3JlbGVhc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyB2ZXJpZnlUeXBlUHJlZml4ZXMsIHZlcmlmeUZpbGVDb250ZXh0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmVyaWZ5XCI7XG5pbXBvcnQgeyBjb21iaW5lZEN1c3RvbUdyYW1tYXJGcm9tUmVsZWFzZUNvbnRleHRzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jdXN0b21HcmFtbWFyXCI7XG5pbXBvcnQgeyBmaWxlQ29udGV4dHNGcm9tSlNPTiwgZmlsZUNvbnRleHRzRnJvbUVudHJpZXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVDb250ZXh0XCI7XG5pbXBvcnQgeyBUUkFDRV9MRVZFTCwgREVCVUdfTEVWRUwsIElORk9fTEVWRUwsIFdBUk5JTkdfTEVWRUwsIEVSUk9SX0xFVkVMLCBCUkVBS19NRVNTQUdFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IHB1c2gsIHRhaWwsIGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVsZWFzZUNvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihsb2csIG5hbWUsIGpzb24sIGVudHJpZXMsIGNhbGxiYWNrLCBjdXN0b21HcmFtbWFyLCB2ZXJpZmllcywgaW5pdGlhbGlzZWQsIGZpbGVDb250ZXh0cywgY29tYmluZWRDdXN0b21HcmFtbWFyLCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKSB7XG4gICAgdGhpcy5sb2cgPSBsb2c7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmpzb24gPSBqc29uO1xuICAgIHRoaXMuZW50cmllcyA9IGVudHJpZXM7XG4gICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHRoaXMuY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXI7XG4gICAgdGhpcy52ZXJpZmllcyA9IHZlcmlmaWVzO1xuICAgIHRoaXMuaW5pdGlhbGlzZWQgPSBpbml0aWFsaXNlZDtcbiAgICB0aGlzLmZpbGVDb250ZXh0cyA9IGZpbGVDb250ZXh0cztcbiAgICB0aGlzLmNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IGNvbWJpbmVkQ3VzdG9tR3JhbW1hcjtcbiAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMgPSBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzO1xuICB9XG5cbiAgZ2V0TG9nKCkge1xuICAgIHJldHVybiB0aGlzLmxvZztcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldEpTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMuanNvbjtcbiAgfVxuXG4gIGdldEVudHJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW50cmllcztcbiAgfVxuXG4gIGdldENhbGxiYWNrKCkge1xuICAgIHJldHVybiB0aGlzLmNhbGxiYWNrO1xuICB9XG5cbiAgZ2V0Q3VzdG9tR3JhbW1hcigpIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21HcmFtbWFyO1xuICB9XG5cbiAgZ2V0VmVyaWZpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmVyaWZpZXM7XG4gIH1cblxuICBpc0luaXRpYWxpc2VkKCkge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpc2VkO1xuICB9XG5cbiAgZ2V0RmlsZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLmZpbGVDb250ZXh0cztcbiAgfVxuXG4gIGdldENvbWJpbmVkQ3VzdG9tR3JhbW1hcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb21iaW5lZEN1c3RvbUdyYW1tYXI7XG4gIH1cblxuICBnZXREZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHM7XG4gIH1cblxuICBnZXRWZXJzaW9uKCkgeyByZXR1cm4gdGhpcy5lbnRyaWVzLmdldFZlcnNpb24oKTsgfVxuXG4gIG1hdGNoRGVwZW5kZW5jeU5hbWUoZGVwZW5kZW5jeU5hbWUpIHtcbiAgICBjb25zdCBkZXBlbmRlbmN5TmFtZU1hdGNoZXMgPSAodGhpcy5uYW1lID09PSBkZXBlbmRlbmN5TmFtZSk7XG5cbiAgICByZXR1cm4gZGVwZW5kZW5jeU5hbWVNYXRjaGVzO1xuICB9XG5cbiAgZ2V0UmVsZWFzZUNvbnRleHQoKSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSB0aGlzOyAgLy8vXG5cbiAgICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG4gIH1cblxuICBnZXRDb250ZXh0KCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBudWxsO1xuXG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cblxuICBnZXREZXB0aCgpIHtcbiAgICBjb25zdCBkZXB0aCA9IDA7XG5cbiAgICByZXR1cm4gZGVwdGg7XG4gIH1cblxuICBoYXNWZXJpZmllZCgpIHtcbiAgICBjb25zdCB2ZXJpZmllZCA9IHRoaXMudmVyaWZpZXM7IC8vL1xuXG4gICAgcmV0dXJuIHZlcmlmaWVkO1xuICB9XG5cbiAgaXNSZWxlYXNlZCgpIHtcbiAgICBjb25zdCByZWxlYXNlZCA9ICh0aGlzLmpzb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHJlbGVhc2VkO1xuICB9XG5cbiAgaXNVbnJlbGVhc2VkKCkge1xuICAgIGNvbnN0IHJlbGVhc2VkID0gdGhpcy5pc1JlbGVhc2VkKCksXG4gICAgICAgICAgdW5yZWxlYXNlZCA9ICFyZWxlYXNlZDtcblxuICAgIHJldHVybiB1bnJlbGVhc2VkO1xuICB9XG5cbiAgZ2V0VHlwZVByZWZpeCgpIHtcbiAgICBsZXQgdHlwZVByZWZpeCA9IG51bGw7XG5cbiAgICBjb25zdCBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gdGhpcy5nZXRUeXBlUHJlZml4ZXMoaW5jbHVkZURlcGVuZGVuY2llcyksXG4gICAgICAgICAgdHlwZVByZWZpeGVzTGVuZ3RoID0gdHlwZVByZWZpeGVzLmxlbmd0aDtcblxuICAgIGlmICh0eXBlUHJlZml4ZXNMZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZpcnN0VHlwZVByZWZpeCA9IGZpcnN0KHR5cGVQcmVmaXhlcyk7XG5cbiAgICAgIHR5cGVQcmVmaXggPSBmaXJzdFR5cGVQcmVmaXg7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9XG5cbiAgZ2V0TGFiZWxzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgbGFiZWxzID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0TGFiZWxzID0gZmlsZUNvbnRleHQuZ2V0TGFiZWxzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChsYWJlbHMsIGZpbGVDb250ZXh0TGFiZWxzKTtcbiAgICB9KTtcblxuICAgIGlmIChpbmNsdWRlRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dExhYmVscyA9IHJlbGVhc2VDb250ZXh0LmdldExhYmVscyhpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgcmVsZWFzZUNvbnRleHRMYWJlbHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVscztcbiAgfVxuXG4gIGdldFR5cGVzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZXMgPSBbXTtcblxuICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlLFxuICAgICAgICAgICAgZmlsZUNvbnRleHRUeXBlcyA9IGZpbGVDb250ZXh0LmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaCh0eXBlcywgZmlsZUNvbnRleHRUeXBlcyk7XG4gICAgfSk7XG5cbiAgICBpZiAoaW5jbHVkZURlcGVuZGVuY2llcykge1xuICAgICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRUeXBlcyA9IHJlbGVhc2VDb250ZXh0LmdldFR5cGVzKGluY2x1ZGVEZXBlbmRlbmNpZXMpO1xuXG4gICAgICAgIHB1c2godHlwZXMsIHJlbGVhc2VDb250ZXh0VHlwZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xuICB9XG5cbiAgZ2V0UnVsZXMoaW5jbHVkZURlcGVuZGVuY2llcyA9IHRydWUpIHtcbiAgICBjb25zdCBydWxlcyA9IFtdO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgICBmaWxlQ29udGV4dFJ1bGVzID0gZmlsZUNvbnRleHQuZ2V0UnVsZXMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgICBwdXNoKHJ1bGVzLCBmaWxlQ29udGV4dFJ1bGVzKTtcbiAgICB9KTtcblxuICAgIGlmIChpbmNsdWRlRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dFJ1bGVzID0gcmVsZWFzZUNvbnRleHQuZ2V0UnVsZXMoaW5jbHVkZURlcGVuZGVuY2llcyk7XG5cbiAgICAgICAgcHVzaChydWxlcywgcmVsZWFzZUNvbnRleHRSdWxlcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICBnZXRBeGlvbXMoaW5jbHVkZURlcGVuZGVuY2llcyA9IHRydWUpIHtcbiAgICBjb25zdCBheGlvbXMgPSBbXTtcblxuICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlLFxuICAgICAgICAgICAgZmlsZUNvbnRleHRBeGlvbXMgPSBmaWxlQ29udGV4dC5nZXRBeGlvbXMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgICBwdXNoKGF4aW9tcywgZmlsZUNvbnRleHRBeGlvbXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKGluY2x1ZGVEZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0QXhpb21zID0gcmVsZWFzZUNvbnRleHQuZ2V0QXhpb21zKGluY2x1ZGVEZXBlbmRlbmNpZXMpO1xuXG4gICAgICAgIHB1c2goYXhpb21zLCByZWxlYXNlQ29udGV4dEF4aW9tcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXhpb21zO1xuICB9XG5cbiAgZ2V0TGVtbWFzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0TGVtbWFzID0gZmlsZUNvbnRleHQuZ2V0TGVtbWFzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChsZW1tYXMsIGZpbGVDb250ZXh0TGVtbWFzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBsZW1tYXM7XG4gIH1cblxuICBnZXRTY2hlbWFzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IFtdO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgICBmaWxlQ29udGV4dFNjaGVtYXMgPSBmaWxlQ29udGV4dC5nZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChzY2hlbWFzLCBmaWxlQ29udGV4dFNjaGVtYXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKGluY2x1ZGVEZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0U2NoZW1hcyA9IHJlbGVhc2VDb250ZXh0LmdldFNjaGVtYXMoaW5jbHVkZURlcGVuZGVuY2llcyk7XG5cbiAgICAgICAgcHVzaChzY2hlbWFzLCByZWxlYXNlQ29udGV4dFNjaGVtYXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYXM7XG4gIH1cblxuICBnZXRUaGVvcmVtcyhpbmNsdWRlRGVwZW5kZW5jaWVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IHRoZW9yZW1zID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0VGhlb3JlbXMgPSBmaWxlQ29udGV4dC5nZXRUaGVvcmVtcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICAgIHB1c2godGhlb3JlbXMsIGZpbGVDb250ZXh0VGhlb3JlbXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKGluY2x1ZGVEZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0VGhlb3JlbXMgPSByZWxlYXNlQ29udGV4dC5nZXRUaGVvcmVtcyhpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgICAgICBwdXNoKHRoZW9yZW1zLCByZWxlYXNlQ29udGV4dFRoZW9yZW1zKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGVvcmVtcztcbiAgfVxuXG4gIGdldFByb2NlZHVyZXMoaW5jbHVkZURlcGVuZGVuY2llcyA9IHRydWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVzID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0UHJvY2VkdXJlcyA9IGZpbGVDb250ZXh0LmdldFByb2NlZHVyZXMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgICBwdXNoKHByb2NlZHVyZXMsIGZpbGVDb250ZXh0UHJvY2VkdXJlcyk7XG4gICAgfSk7XG5cbiAgICBpZiAoaW5jbHVkZURlcGVuZGVuY2llcykge1xuICAgICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRQcm9jZWR1cmVzID0gcmVsZWFzZUNvbnRleHQuZ2V0UHJvY2VkdXJlcyhpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgICAgICBwdXNoKHByb2NlZHVyZXMsIHJlbGVhc2VDb250ZXh0UHJvY2VkdXJlcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlcztcbiAgfVxuXG4gIGdldEdlbmVyYXRvcnMoaW5jbHVkZURlcGVuZGVuY2llcyA9IHRydWUpIHtcbiAgICBjb25zdCBnZW5lcmF0b3JzID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0R2VuZXJhdG9ycyA9IGZpbGVDb250ZXh0LmdldEdlbmVyYXRvcnMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgICBwdXNoKGdlbmVyYXRvcnMsIGZpbGVDb250ZXh0R2VuZXJhdG9ycyk7XG4gICAgfSk7XG5cbiAgICBpZiAoaW5jbHVkZURlcGVuZGVuY2llcykge1xuICAgICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRHZW5lcmF0b3JzID0gcmVsZWFzZUNvbnRleHQuZ2V0R2VuZXJhdG9ycyhpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgICAgICBwdXNoKGdlbmVyYXRvcnMsIHJlbGVhc2VDb250ZXh0R2VuZXJhdG9ycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9ycztcbiAgfVxuXG4gIGdldENvbmplY3R1cmVzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgY29uamVjdHVyZXMgPSBbXTtcblxuICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlLFxuICAgICAgICAgICAgZmlsZUNvbnRleHRDb25qZWN0dXJlcyA9IGZpbGVDb250ZXh0LmdldENvbmplY3R1cmVzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChjb25qZWN0dXJlcywgZmlsZUNvbnRleHRDb25qZWN0dXJlcyk7XG4gICAgfSk7XG5cbiAgICBpZiAoaW5jbHVkZURlcGVuZGVuY2llcykge1xuICAgICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRDb25qZWN0dXJlcyA9IHJlbGVhc2VDb250ZXh0LmdldENvbmplY3R1cmVzKGluY2x1ZGVEZXBlbmRlbmNpZXMpO1xuXG4gICAgICAgIHB1c2goY29uamVjdHVyZXMsIHJlbGVhc2VDb250ZXh0Q29uamVjdHVyZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmplY3R1cmVzO1xuICB9XG5cbiAgZ2V0Q29tYmluYXRvcnMoaW5jbHVkZURlcGVuZGVuY2llcyA9IHRydWUpIHtcbiAgICBjb25zdCBjb21iaW5hdG9ycyA9IFtdO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgICBmaWxlQ29udGV4dENvbWJpbmF0b3JzID0gZmlsZUNvbnRleHQuZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgICBwdXNoKGNvbWJpbmF0b3JzLCBmaWxlQ29udGV4dENvbWJpbmF0b3JzKTtcbiAgICB9KTtcblxuICAgIGlmIChpbmNsdWRlRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dENvbWJpbmF0b3JzID0gcmVsZWFzZUNvbnRleHQuZ2V0Q29tYmluYXRvcnMoaW5jbHVkZURlcGVuZGVuY2llcyk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRUeXBlUHJlZml4ZXMoaW5jbHVkZURlcGVuZGVuY2llcyA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlUHJlZml4ZXMgPSBbXTtcblxuICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlLFxuICAgICAgICAgICAgZmlsZUNvbnRleHRUeXBlUHJlZml4ZXMgPSBmaWxlQ29udGV4dC5nZXRUeXBlUHJlZml4ZXMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgICBwdXNoKHR5cGVQcmVmaXhlcywgZmlsZUNvbnRleHRUeXBlUHJlZml4ZXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKGluY2x1ZGVEZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0VHlwZVByZWZpeGVzID0gcmVsZWFzZUNvbnRleHQuZ2V0VHlwZVByZWZpeGVzKGluY2x1ZGVEZXBlbmRlbmNpZXMpO1xuXG4gICAgICAgIHB1c2godHlwZVByZWZpeGVzLCByZWxlYXNlQ29udGV4dFR5cGVQcmVmaXhlcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeGVzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3JzID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0Q29uc3RydWN0b3JzID0gZmlsZUNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChjb25zdHJ1Y3RvcnMsIGZpbGVDb250ZXh0Q29uc3RydWN0b3JzKTtcbiAgICB9KTtcblxuICAgIGlmIChpbmNsdWRlRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dENvbnN0cnVjdG9ycyA9IHJlbGVhc2VDb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgICAgICBwdXNoKGNvbnN0cnVjdG9ycywgcmVsZWFzZUNvbnRleHRDb25zdHJ1Y3RvcnMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbiAgfVxuXG4gIGdldERlcGVuZGVuY2llcygpIHsgcmV0dXJuIHRoaXMuZW50cmllcy5nZXREZXBlbmRlbmNpZXMoKTsgfVxuXG4gIG1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKSB7IHJldHVybiB0aGlzLmVudHJpZXMubWF0Y2hTaG9ydGVuZWRWZXJzaW9uKHNob3J0ZW5lZFZlcnNpb24pOyB9XG5cbiAgdHJhY2UobWVzc2FnZSkge1xuICAgIGNvbnN0IGxldmVsID0gVFJBQ0VfTEVWRUw7XG5cbiAgICB0aGlzLndyaXRlVG9Mb2cobGV2ZWwsIG1lc3NhZ2UpO1xuICB9XG5cbiAgZGVidWcobWVzc2FnZSkge1xuICAgIGNvbnN0IGxldmVsID0gREVCVUdfTEVWRUw7XG5cbiAgICB0aGlzLndyaXRlVG9Mb2cobGV2ZWwsIG1lc3NhZ2UpO1xuICB9XG5cbiAgaW5mbyhtZXNzYWdlKSB7XG4gICAgY29uc3QgbGV2ZWwgPSBJTkZPX0xFVkVMO1xuXG4gICAgdGhpcy53cml0ZVRvTG9nKGxldmVsLCBtZXNzYWdlKTtcbiAgfVxuXG4gIHdhcm5pbmcobWVzc2FnZSkge1xuICAgIGNvbnN0IGxldmVsID0gV0FSTklOR19MRVZFTDtcblxuICAgIHRoaXMud3JpdGVUb0xvZyhsZXZlbCwgbWVzc2FnZSk7XG4gIH1cblxuICBlcnJvcihtZXNzYWdlKSB7XG4gICAgY29uc3QgbGV2ZWwgPSBFUlJPUl9MRVZFTDtcblxuICAgIHRoaXMud3JpdGVUb0xvZyhsZXZlbCwgbWVzc2FnZSk7XG4gIH1cblxuICB3cml0ZVRvTG9nKGxldmVsLCBtZXNzYWdlLCBmaWxlUGF0aCA9IG51bGwsIGxpbmVJbmRleCA9IG51bGwpIHtcbiAgICB0aGlzLmxvZy53cml0ZShsZXZlbCwgbWVzc2FnZSwgZmlsZVBhdGgsIGxpbmVJbmRleCk7XG4gIH1cblxuICBpbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgpIHtcbiAgICBjb25zdCByZWxlYXNlZCA9IHRoaXMuaXNSZWxlYXNlZCgpLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gdGhpcywgIC8vL1xuICAgICAgICAgIHJlbGVhc2VDb250ZXh0c1RhaWwgPSB0YWlsKHJlbGVhc2VDb250ZXh0cyk7XG5cbiAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMgPSByZWxlYXNlQ29udGV4dHNUYWlsOyAvLy9cblxuICAgIHRoaXMuY29tYmluZWRDdXN0b21HcmFtbWFyID0gY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dHMpO1xuXG4gICAgcmVsZWFzZWQgP1xuICAgICAgZmlsZUNvbnRleHRzRnJvbUpTT04odGhpcy5qc29uLCB0aGlzLmZpbGVDb250ZXh0cywgcmVsZWFzZUNvbnRleHQsIEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoKSA6XG4gICAgICAgIGZpbGVDb250ZXh0c0Zyb21FbnRyaWVzKHRoaXMuZW50cmllcywgdGhpcy5maWxlQ29udGV4dHMsIHJlbGVhc2VDb250ZXh0LCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCk7XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgZmlsZUNvbnRleHQuaW5pdGlhbGlzZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0aWFsaXNlZCA9IHRydWU7XG4gIH1cblxuICBicmVhayhicmVha1BvaW50LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgbGV2ZWwgPSBUUkFDRV9MRVZFTCxcbiAgICAgICAgICBtZXNzYWdlID0gQlJFQUtfTUVTU0FHRSxcbiAgICAgICAgICBmaWxlUGF0aCA9IGJyZWFrUG9pbnQuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBsaW5lSW5kZXggPSBicmVha1BvaW50LmdldExpbmVJbmRleCgpO1xuXG4gICAgdGhpcy53cml0ZVRvTG9nKGxldmVsLCBtZXNzYWdlLCBmaWxlUGF0aCwgbGluZUluZGV4KTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzOyAvLy9cblxuICAgIHJldHVybiB0aGlzLmNhbGxiYWNrKGJyZWFrUG9pbnQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5KGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlUHJlZml4ZXMgPSB0aGlzLmdldFR5cGVQcmVmaXhlcygpLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeGVzVmVyaWZ5ID0gdmVyaWZ5VHlwZVByZWZpeGVzKHR5cGVQcmVmaXhlcywgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgaWYgKCF0eXBlUHJlZml4ZXNWZXJpZnkpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmeUZpbGVDb250ZXh0cyh0aGlzLmZpbGVDb250ZXh0cywgKGZpbGVDb250ZXh0cywgYmFjaykgPT4ge1xuICAgICAgdGhpcy5maWxlQ29udGV4dHMgPSBmaWxlQ29udGV4dHM7IC8vL1xuXG4gICAgICB0aGlzLnZlcmlmaWVzID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgZmlsZUNvbnRleHRzSlNPTiA9IHRoaXMuZmlsZUNvbnRleHRzLm1hcCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVDb250ZXh0SlNPTiA9IGZpbGVDb250ZXh0LnRvSlNPTigpO1xuXG4gICAgICAgICAgICByZXR1cm4gZmlsZUNvbnRleHRKU09OO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGpzb24gPSBmaWxlQ29udGV4dHNKU09OOyAgLy8vXG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTG9nTmFtZUpTT05FbnRyaWVzQ2FsbGJhY2tBbmRDdXN0b21HcmFtbWFyKENsYXNzLCBsb2csIG5hbWUsIGpzb24sIGVudHJpZXMsIGNhbGxiYWNrLCBjdXN0b21HcmFtbWFyKSB7XG4gICAgaWYgKGN1c3RvbUdyYW1tYXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY3VzdG9tR3JhbW1hciA9IGNhbGxiYWNrOyAvLy9cblxuICAgICAgY2FsbGJhY2sgPSBlbnRyaWVzOyAvLy9cblxuICAgICAgZW50cmllcyA9IGpzb247IC8vL1xuXG4gICAgICBqc29uID0gbmFtZTsgIC8vL1xuXG4gICAgICBuYW1lID0gbG9nOyAvLy9cblxuICAgICAgbG9nID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBSZWxlYXNlQ29udGV4dDsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgdmVyaWZpZXMgPSBmYWxzZSxcbiAgICAgICAgICBpbml0aWFsaXNlZCA9IGZhbHNlLFxuICAgICAgICAgIGZpbGVDb250ZXh0cyA9IFtdLFxuICAgICAgICAgIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IG51bGwsXG4gICAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyA9IG51bGwsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBuZXcgQ2xhc3MobG9nLCBuYW1lLCBqc29uLCBlbnRyaWVzLCBjYWxsYmFjaywgY3VzdG9tR3JhbW1hciwgdmVyaWZpZXMsIGluaXRpYWxpc2VkLCBmaWxlQ29udGV4dHMsIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciwgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyk7XG5cbiAgICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJSZWxlYXNlQ29udGV4dCIsInB1c2giLCJ0YWlsIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsImxvZyIsIm5hbWUiLCJqc29uIiwiZW50cmllcyIsImNhbGxiYWNrIiwiY3VzdG9tR3JhbW1hciIsInZlcmlmaWVzIiwiaW5pdGlhbGlzZWQiLCJmaWxlQ29udGV4dHMiLCJjb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiZ2V0TG9nIiwiZ2V0TmFtZSIsImdldEpTT04iLCJnZXRFbnRyaWVzIiwiZ2V0Q2FsbGJhY2siLCJnZXRDdXN0b21HcmFtbWFyIiwiZ2V0VmVyaWZpZXMiLCJpc0luaXRpYWxpc2VkIiwiZ2V0RmlsZUNvbnRleHRzIiwiZ2V0Q29tYmluZWRDdXN0b21HcmFtbWFyIiwiZ2V0RGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImdldFZlcnNpb24iLCJtYXRjaERlcGVuZGVuY3lOYW1lIiwiZGVwZW5kZW5jeU5hbWUiLCJkZXBlbmRlbmN5TmFtZU1hdGNoZXMiLCJnZXRSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0IiwiZ2V0Q29udGV4dCIsImNvbnRleHQiLCJnZXREZXB0aCIsImRlcHRoIiwiaGFzVmVyaWZpZWQiLCJ2ZXJpZmllZCIsImlzUmVsZWFzZWQiLCJyZWxlYXNlZCIsImlzVW5yZWxlYXNlZCIsInVucmVsZWFzZWQiLCJnZXRUeXBlUHJlZml4IiwidHlwZVByZWZpeCIsImluY2x1ZGVEZXBlbmRlbmNpZXMiLCJ0eXBlUHJlZml4ZXMiLCJnZXRUeXBlUHJlZml4ZXMiLCJ0eXBlUHJlZml4ZXNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdFR5cGVQcmVmaXgiLCJnZXRMYWJlbHMiLCJsYWJlbHMiLCJmb3JFYWNoIiwiZmlsZUNvbnRleHQiLCJpbmNsdWRlUmVsZWFzZSIsImZpbGVDb250ZXh0TGFiZWxzIiwicmVsZWFzZUNvbnRleHRMYWJlbHMiLCJnZXRUeXBlcyIsInR5cGVzIiwiZmlsZUNvbnRleHRUeXBlcyIsInJlbGVhc2VDb250ZXh0VHlwZXMiLCJnZXRSdWxlcyIsInJ1bGVzIiwiZmlsZUNvbnRleHRSdWxlcyIsInJlbGVhc2VDb250ZXh0UnVsZXMiLCJnZXRBeGlvbXMiLCJheGlvbXMiLCJmaWxlQ29udGV4dEF4aW9tcyIsInJlbGVhc2VDb250ZXh0QXhpb21zIiwiZ2V0TGVtbWFzIiwibGVtbWFzIiwiZmlsZUNvbnRleHRMZW1tYXMiLCJnZXRTY2hlbWFzIiwic2NoZW1hcyIsImZpbGVDb250ZXh0U2NoZW1hcyIsInJlbGVhc2VDb250ZXh0U2NoZW1hcyIsImdldFRoZW9yZW1zIiwidGhlb3JlbXMiLCJmaWxlQ29udGV4dFRoZW9yZW1zIiwicmVsZWFzZUNvbnRleHRUaGVvcmVtcyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZmlsZUNvbnRleHRQcm9jZWR1cmVzIiwicmVsZWFzZUNvbnRleHRQcm9jZWR1cmVzIiwiZ2V0R2VuZXJhdG9ycyIsImdlbmVyYXRvcnMiLCJmaWxlQ29udGV4dEdlbmVyYXRvcnMiLCJyZWxlYXNlQ29udGV4dEdlbmVyYXRvcnMiLCJnZXRDb25qZWN0dXJlcyIsImNvbmplY3R1cmVzIiwiZmlsZUNvbnRleHRDb25qZWN0dXJlcyIsInJlbGVhc2VDb250ZXh0Q29uamVjdHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZmlsZUNvbnRleHRDb21iaW5hdG9ycyIsInJlbGVhc2VDb250ZXh0Q29tYmluYXRvcnMiLCJmaWxlQ29udGV4dFR5cGVQcmVmaXhlcyIsInJlbGVhc2VDb250ZXh0VHlwZVByZWZpeGVzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzIiwiZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMiLCJyZWxlYXNlQ29udGV4dENvbnN0cnVjdG9ycyIsImdldERlcGVuZGVuY2llcyIsIm1hdGNoU2hvcnRlbmVkVmVyc2lvbiIsInNob3J0ZW5lZFZlcnNpb24iLCJ0cmFjZSIsIm1lc3NhZ2UiLCJsZXZlbCIsIlRSQUNFX0xFVkVMIiwid3JpdGVUb0xvZyIsImRlYnVnIiwiREVCVUdfTEVWRUwiLCJpbmZvIiwiSU5GT19MRVZFTCIsIndhcm5pbmciLCJXQVJOSU5HX0xFVkVMIiwiZXJyb3IiLCJFUlJPUl9MRVZFTCIsImZpbGVQYXRoIiwibGluZUluZGV4Iiwid3JpdGUiLCJpbml0aWFsaXNlIiwicmVsZWFzZUNvbnRleHRzIiwiRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgiLCJyZWxlYXNlQ29udGV4dHNUYWlsIiwiY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbVJlbGVhc2VDb250ZXh0cyIsImZpbGVDb250ZXh0c0Zyb21KU09OIiwiZmlsZUNvbnRleHRzRnJvbUVudHJpZXMiLCJicmVhayIsImJyZWFrUG9pbnQiLCJmb3J3YXJkIiwiYmFjayIsIkJSRUFLX01FU1NBR0UiLCJnZXRGaWxlUGF0aCIsImdldExpbmVJbmRleCIsInZlcmlmeSIsInR5cGVQcmVmaXhlc1ZlcmlmeSIsInZlcmlmeVR5cGVQcmVmaXhlcyIsInZlcmlmeUZpbGVDb250ZXh0cyIsInRvSlNPTiIsImZpbGVDb250ZXh0c0pTT04iLCJtYXAiLCJmaWxlQ29udGV4dEpTT04iLCJmcm9tTG9nTmFtZUpTT05FbnRyaWVzQ2FsbGJhY2tBbmRDdXN0b21HcmFtbWFyIiwiQ2xhc3MiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBcUJBOzs7MkJBVFU7d0JBRXdCOytCQUNFOzZCQUNLOzJCQUNrQztBQUVoRyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUUsR0FBR0MseUJBQWM7QUFFN0IsTUFBTUo7SUFDbkIsWUFBWUssR0FBRyxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLGFBQWEsRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLFlBQVksRUFBRUMscUJBQXFCLEVBQUVDLHlCQUF5QixDQUFFO1FBQ3BKLElBQUksQ0FBQ1YsR0FBRyxHQUFHQTtRQUNYLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtRQUNmLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxRQUFR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
|
|
369
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3JlbGVhc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyBjdXQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgdmVyaWZ5VHlwZVByZWZpeGVzLCB2ZXJpZnlGaWxlQ29udGV4dHMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZlcmlmeVwiO1xuaW1wb3J0IHsgY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbVJlbGVhc2VDb250ZXh0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY3VzdG9tR3JhbW1hclwiO1xuaW1wb3J0IHsgZmlsZUNvbnRleHRzRnJvbUpTT04sIGZpbGVDb250ZXh0c0Zyb21FbnRyaWVzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9maWxlQ29udGV4dFwiO1xuaW1wb3J0IHsgVFJBQ0VfTEVWRUwsIERFQlVHX0xFVkVMLCBJTkZPX0xFVkVMLCBXQVJOSU5HX0xFVkVMLCBFUlJPUl9MRVZFTCwgQlJFQUtfTUVTU0FHRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBwdXNoLCB0YWlsLCBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlbGVhc2VDb250ZXh0IHtcbiAgY29uc3RydWN0b3IobG9nLCBuYW1lLCBqc29uLCBlbnRyaWVzLCBjYWxsYmFjaywgY3VzdG9tR3JhbW1hciwgdmVyaWZpZXMsIGluaXRpYWxpc2VkLCBmaWxlQ29udGV4dHMsIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciwgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cykge1xuICAgIHRoaXMubG9nID0gbG9nO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5qc29uID0ganNvbjtcbiAgICB0aGlzLmVudHJpZXMgPSBlbnRyaWVzO1xuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLmN1c3RvbUdyYW1tYXIgPSBjdXN0b21HcmFtbWFyO1xuICAgIHRoaXMudmVyaWZpZXMgPSB2ZXJpZmllcztcbiAgICB0aGlzLmluaXRpYWxpc2VkID0gaW5pdGlhbGlzZWQ7XG4gICAgdGhpcy5maWxlQ29udGV4dHMgPSBmaWxlQ29udGV4dHM7XG4gICAgdGhpcy5jb21iaW5lZEN1c3RvbUdyYW1tYXIgPSBjb21iaW5lZEN1c3RvbUdyYW1tYXI7XG4gICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzID0gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIGdldExvZygpIHtcbiAgICByZXR1cm4gdGhpcy5sb2c7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRKU09OKCkge1xuICAgIHJldHVybiB0aGlzLmpzb247XG4gIH1cblxuICBnZXRFbnRyaWVzKCkge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXM7XG4gIH1cblxuICBnZXRDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5jYWxsYmFjaztcbiAgfVxuXG4gIGdldEN1c3RvbUdyYW1tYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tR3JhbW1hcjtcbiAgfVxuXG4gIGdldFZlcmlmaWVzKCkge1xuICAgIHJldHVybiB0aGlzLnZlcmlmaWVzO1xuICB9XG5cbiAgaXNJbml0aWFsaXNlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXNlZDtcbiAgfVxuXG4gIGdldEZpbGVDb250ZXh0cygpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlQ29udGV4dHM7XG4gIH1cblxuICBnZXRDb21iaW5lZEN1c3RvbUdyYW1tYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tYmluZWRDdXN0b21HcmFtbWFyO1xuICB9XG5cbiAgZ2V0RGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cygpIHtcbiAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzO1xuICB9XG5cbiAgZ2V0VmVyc2lvbigpIHsgcmV0dXJuIHRoaXMuZW50cmllcy5nZXRWZXJzaW9uKCk7IH1cblxuICBtYXRjaERlcGVuZGVuY3lOYW1lKGRlcGVuZGVuY3lOYW1lKSB7XG4gICAgY29uc3QgZGVwZW5kZW5jeU5hbWVNYXRjaGVzID0gKHRoaXMubmFtZSA9PT0gZGVwZW5kZW5jeU5hbWUpO1xuXG4gICAgcmV0dXJuIGRlcGVuZGVuY3lOYW1lTWF0Y2hlcztcbiAgfVxuXG4gIGdldFJlbGVhc2VDb250ZXh0KCkge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gdGhpczsgIC8vL1xuXG4gICAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xuICB9XG5cbiAgZ2V0Q29udGV4dCgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gbnVsbDtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG5cbiAgZ2V0RGVwdGgoKSB7XG4gICAgY29uc3QgZGVwdGggPSAwO1xuXG4gICAgcmV0dXJuIGRlcHRoO1xuICB9XG5cbiAgaGFzVmVyaWZpZWQoKSB7XG4gICAgY29uc3QgdmVyaWZpZWQgPSB0aGlzLnZlcmlmaWVzOyAvLy9cblxuICAgIHJldHVybiB2ZXJpZmllZDtcbiAgfVxuXG4gIGlzUmVsZWFzZWQoKSB7XG4gICAgY29uc3QgcmVsZWFzZWQgPSAodGhpcy5qc29uICE9PSBudWxsKTtcblxuICAgIHJldHVybiByZWxlYXNlZDtcbiAgfVxuXG4gIGlzVW5yZWxlYXNlZCgpIHtcbiAgICBjb25zdCByZWxlYXNlZCA9IHRoaXMuaXNSZWxlYXNlZCgpLFxuICAgICAgICAgIHVucmVsZWFzZWQgPSAhcmVsZWFzZWQ7XG5cbiAgICByZXR1cm4gdW5yZWxlYXNlZDtcbiAgfVxuXG4gIGdldFR5cGVQcmVmaXgoKSB7XG4gICAgbGV0IHR5cGVQcmVmaXggPSBudWxsO1xuXG4gICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgIHR5cGVQcmVmaXhlcyA9IHRoaXMuZ2V0VHlwZVByZWZpeGVzKGluY2x1ZGVEZXBlbmRlbmNpZXMpLFxuICAgICAgICAgIHR5cGVQcmVmaXhlc0xlbmd0aCA9IHR5cGVQcmVmaXhlcy5sZW5ndGg7XG5cbiAgICBpZiAodHlwZVByZWZpeGVzTGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBmaXJzdFR5cGVQcmVmaXggPSBmaXJzdCh0eXBlUHJlZml4ZXMpO1xuXG4gICAgICB0eXBlUHJlZml4ID0gZmlyc3RUeXBlUHJlZml4OyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeDtcbiAgfVxuXG4gIGdldExhYmVscyhpbmNsdWRlRGVwZW5kZW5jaWVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxhYmVscyA9IFtdO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgICBmaWxlQ29udGV4dExhYmVscyA9IGZpbGVDb250ZXh0LmdldExhYmVscyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICAgIHB1c2gobGFiZWxzLCBmaWxlQ29udGV4dExhYmVscyk7XG4gICAgfSk7XG5cbiAgICBpZiAoaW5jbHVkZURlcGVuZGVuY2llcykge1xuICAgICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRMYWJlbHMgPSByZWxlYXNlQ29udGV4dC5nZXRMYWJlbHMoaW5jbHVkZURlcGVuZGVuY2llcyk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIHJlbGVhc2VDb250ZXh0TGFiZWxzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBnZXRUeXBlcyhpbmNsdWRlRGVwZW5kZW5jaWVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVzID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0VHlwZXMgPSBmaWxlQ29udGV4dC5nZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICAgIHB1c2godHlwZXMsIGZpbGVDb250ZXh0VHlwZXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKGluY2x1ZGVEZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0VHlwZXMgPSByZWxlYXNlQ29udGV4dC5nZXRUeXBlcyhpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgICAgICBwdXNoKHR5cGVzLCByZWxlYXNlQ29udGV4dFR5cGVzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlcztcbiAgfVxuXG4gIGdldFJ1bGVzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgcnVsZXMgPSBbXTtcblxuICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlLFxuICAgICAgICAgICAgZmlsZUNvbnRleHRSdWxlcyA9IGZpbGVDb250ZXh0LmdldFJ1bGVzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChydWxlcywgZmlsZUNvbnRleHRSdWxlcyk7XG4gICAgfSk7XG5cbiAgICBpZiAoaW5jbHVkZURlcGVuZGVuY2llcykge1xuICAgICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRSdWxlcyA9IHJlbGVhc2VDb250ZXh0LmdldFJ1bGVzKGluY2x1ZGVEZXBlbmRlbmNpZXMpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIHJlbGVhc2VDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGVzO1xuICB9XG5cbiAgZ2V0QXhpb21zKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgYXhpb21zID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0QXhpb21zID0gZmlsZUNvbnRleHQuZ2V0QXhpb21zKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChheGlvbXMsIGZpbGVDb250ZXh0QXhpb21zKTtcbiAgICB9KTtcblxuICAgIGlmIChpbmNsdWRlRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dEF4aW9tcyA9IHJlbGVhc2VDb250ZXh0LmdldEF4aW9tcyhpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgICAgICBwdXNoKGF4aW9tcywgcmVsZWFzZUNvbnRleHRBeGlvbXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF4aW9tcztcbiAgfVxuXG4gIGdldExlbW1hcyhpbmNsdWRlRGVwZW5kZW5jaWVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbW1hcyA9IFtdO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgICBmaWxlQ29udGV4dExlbW1hcyA9IGZpbGVDb250ZXh0LmdldExlbW1hcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICAgIHB1c2gobGVtbWFzLCBmaWxlQ29udGV4dExlbW1hcyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGVtbWFzO1xuICB9XG5cbiAgZ2V0U2NoZW1hcyhpbmNsdWRlRGVwZW5kZW5jaWVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IHNjaGVtYXMgPSBbXTtcblxuICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlLFxuICAgICAgICAgICAgZmlsZUNvbnRleHRTY2hlbWFzID0gZmlsZUNvbnRleHQuZ2V0U2NoZW1hcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICAgIHB1c2goc2NoZW1hcywgZmlsZUNvbnRleHRTY2hlbWFzKTtcbiAgICB9KTtcblxuICAgIGlmIChpbmNsdWRlRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dFNjaGVtYXMgPSByZWxlYXNlQ29udGV4dC5nZXRTY2hlbWFzKGluY2x1ZGVEZXBlbmRlbmNpZXMpO1xuXG4gICAgICAgIHB1c2goc2NoZW1hcywgcmVsZWFzZUNvbnRleHRTY2hlbWFzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VGhlb3JlbXMoaW5jbHVkZURlcGVuZGVuY2llcyA9IHRydWUpIHtcbiAgICBjb25zdCB0aGVvcmVtcyA9IFtdO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgICBmaWxlQ29udGV4dFRoZW9yZW1zID0gZmlsZUNvbnRleHQuZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgICBwdXNoKHRoZW9yZW1zLCBmaWxlQ29udGV4dFRoZW9yZW1zKTtcbiAgICB9KTtcblxuICAgIGlmIChpbmNsdWRlRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dFRoZW9yZW1zID0gcmVsZWFzZUNvbnRleHQuZ2V0VGhlb3JlbXMoaW5jbHVkZURlcGVuZGVuY2llcyk7XG5cbiAgICAgICAgcHVzaCh0aGVvcmVtcywgcmVsZWFzZUNvbnRleHRUaGVvcmVtcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhlb3JlbXM7XG4gIH1cblxuICBnZXRQcm9jZWR1cmVzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlcyA9IFtdO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgICBmaWxlQ29udGV4dFByb2NlZHVyZXMgPSBmaWxlQ29udGV4dC5nZXRQcm9jZWR1cmVzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChwcm9jZWR1cmVzLCBmaWxlQ29udGV4dFByb2NlZHVyZXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKGluY2x1ZGVEZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0UHJvY2VkdXJlcyA9IHJlbGVhc2VDb250ZXh0LmdldFByb2NlZHVyZXMoaW5jbHVkZURlcGVuZGVuY2llcyk7XG5cbiAgICAgICAgcHVzaChwcm9jZWR1cmVzLCByZWxlYXNlQ29udGV4dFByb2NlZHVyZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2NlZHVyZXM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgZ2VuZXJhdG9ycyA9IFtdO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgICBmaWxlQ29udGV4dEdlbmVyYXRvcnMgPSBmaWxlQ29udGV4dC5nZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChnZW5lcmF0b3JzLCBmaWxlQ29udGV4dEdlbmVyYXRvcnMpO1xuICAgIH0pO1xuXG4gICAgaWYgKGluY2x1ZGVEZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0R2VuZXJhdG9ycyA9IHJlbGVhc2VDb250ZXh0LmdldEdlbmVyYXRvcnMoaW5jbHVkZURlcGVuZGVuY2llcyk7XG5cbiAgICAgICAgcHVzaChnZW5lcmF0b3JzLCByZWxlYXNlQ29udGV4dEdlbmVyYXRvcnMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdlbmVyYXRvcnM7XG4gIH1cblxuICBnZXRDb25qZWN0dXJlcyhpbmNsdWRlRGVwZW5kZW5jaWVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbmplY3R1cmVzID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0Q29uamVjdHVyZXMgPSBmaWxlQ29udGV4dC5nZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICAgIHB1c2goY29uamVjdHVyZXMsIGZpbGVDb250ZXh0Q29uamVjdHVyZXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKGluY2x1ZGVEZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2UsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q29uamVjdHVyZXMgPSByZWxlYXNlQ29udGV4dC5nZXRDb25qZWN0dXJlcyhpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgICAgICBwdXNoKGNvbmplY3R1cmVzLCByZWxlYXNlQ29udGV4dENvbmplY3R1cmVzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25qZWN0dXJlcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgY29tYmluYXRvcnMgPSBbXTtcblxuICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlLFxuICAgICAgICAgICAgZmlsZUNvbnRleHRDb21iaW5hdG9ycyA9IGZpbGVDb250ZXh0LmdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaChjb21iaW5hdG9ycywgZmlsZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgfSk7XG5cbiAgICBpZiAoaW5jbHVkZURlcGVuZGVuY2llcykge1xuICAgICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmF0b3JzKGluY2x1ZGVEZXBlbmRlbmNpZXMpO1xuXG4gICAgICAgIHB1c2goY29tYmluYXRvcnMsIHJlbGVhc2VDb250ZXh0Q29tYmluYXRvcnMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JzO1xuICB9XG5cbiAgZ2V0VHlwZVByZWZpeGVzKGluY2x1ZGVEZXBlbmRlbmNpZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZVByZWZpeGVzID0gW107XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVDb250ZXh0VHlwZVByZWZpeGVzID0gZmlsZUNvbnRleHQuZ2V0VHlwZVByZWZpeGVzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgICAgcHVzaCh0eXBlUHJlZml4ZXMsIGZpbGVDb250ZXh0VHlwZVByZWZpeGVzKTtcbiAgICB9KTtcblxuICAgIGlmIChpbmNsdWRlRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dFR5cGVQcmVmaXhlcyA9IHJlbGVhc2VDb250ZXh0LmdldFR5cGVQcmVmaXhlcyhpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgICAgICBwdXNoKHR5cGVQcmVmaXhlcywgcmVsZWFzZUNvbnRleHRUeXBlUHJlZml4ZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhlcztcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9ycyhpbmNsdWRlRGVwZW5kZW5jaWVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IFtdO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgICBmaWxlQ29udGV4dENvbnN0cnVjdG9ycyA9IGZpbGVDb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICAgIHB1c2goY29uc3RydWN0b3JzLCBmaWxlQ29udGV4dENvbnN0cnVjdG9ycyk7XG4gICAgfSk7XG5cbiAgICBpZiAoaW5jbHVkZURlcGVuZGVuY2llcykge1xuICAgICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRDb25zdHJ1Y3RvcnMgPSByZWxlYXNlQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoaW5jbHVkZURlcGVuZGVuY2llcyk7XG5cbiAgICAgICAgcHVzaChjb25zdHJ1Y3RvcnMsIHJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcnM7XG4gIH1cblxuICBnZXREZXBlbmRlbmNpZXMoKSB7IHJldHVybiB0aGlzLmVudHJpZXMuZ2V0RGVwZW5kZW5jaWVzKCk7IH1cblxuICBtYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbikgeyByZXR1cm4gdGhpcy5lbnRyaWVzLm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTsgfVxuXG4gIHRyYWNlKG1lc3NhZ2UpIHtcbiAgICBjb25zdCBsZXZlbCA9IFRSQUNFX0xFVkVMO1xuXG4gICAgdGhpcy53cml0ZVRvTG9nKGxldmVsLCBtZXNzYWdlKTtcbiAgfVxuXG4gIGRlYnVnKG1lc3NhZ2UpIHtcbiAgICBjb25zdCBsZXZlbCA9IERFQlVHX0xFVkVMO1xuXG4gICAgdGhpcy53cml0ZVRvTG9nKGxldmVsLCBtZXNzYWdlKTtcbiAgfVxuXG4gIGluZm8obWVzc2FnZSkge1xuICAgIGNvbnN0IGxldmVsID0gSU5GT19MRVZFTDtcblxuICAgIHRoaXMud3JpdGVUb0xvZyhsZXZlbCwgbWVzc2FnZSk7XG4gIH1cblxuICB3YXJuaW5nKG1lc3NhZ2UpIHtcbiAgICBjb25zdCBsZXZlbCA9IFdBUk5JTkdfTEVWRUw7XG5cbiAgICB0aGlzLndyaXRlVG9Mb2cobGV2ZWwsIG1lc3NhZ2UpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZSkge1xuICAgIGNvbnN0IGxldmVsID0gRVJST1JfTEVWRUw7XG5cbiAgICB0aGlzLndyaXRlVG9Mb2cobGV2ZWwsIG1lc3NhZ2UpO1xuICB9XG5cbiAgd3JpdGVUb0xvZyhsZXZlbCwgbWVzc2FnZSwgZmlsZVBhdGggPSBudWxsLCBsaW5lSW5kZXggPSBudWxsKSB7XG4gICAgdGhpcy5sb2cud3JpdGUobGV2ZWwsIG1lc3NhZ2UsIGZpbGVQYXRoLCBsaW5lSW5kZXgpO1xuICB9XG5cbiAgaW5pdGlhbGlzZShyZWxlYXNlQ29udGV4dHMsIEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoKSB7XG4gICAgY29uc3QgcmVsZWFzZWQgPSB0aGlzLmlzUmVsZWFzZWQoKSxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IHRoaXMsICAvLy9cbiAgICAgICAgICByZWxlYXNlQ29udGV4dHNUYWlsID0gdGFpbChyZWxlYXNlQ29udGV4dHMpO1xuXG4gICAgdGhpcy5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzID0gcmVsZWFzZUNvbnRleHRzVGFpbDsgLy8vXG5cbiAgICB0aGlzLmNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IGNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21SZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHRzKTtcblxuICAgIHJlbGVhc2VkID9cbiAgICAgIGZpbGVDb250ZXh0c0Zyb21KU09OKHRoaXMuanNvbiwgdGhpcy5maWxlQ29udGV4dHMsIHJlbGVhc2VDb250ZXh0LCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCkgOlxuICAgICAgICBmaWxlQ29udGV4dHNGcm9tRW50cmllcyh0aGlzLmVudHJpZXMsIHRoaXMuZmlsZUNvbnRleHRzLCByZWxlYXNlQ29udGV4dCwgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgpO1xuXG4gICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgIGZpbGVDb250ZXh0LmluaXRpYWxpc2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaW5pdGlhbGlzZWQgPSB0cnVlO1xuICB9XG5cbiAgYnJlYWsoYnJlYWtQb2ludCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGxldmVsID0gVFJBQ0VfTEVWRUwsXG4gICAgICAgICAgbWVzc2FnZSA9IEJSRUFLX01FU1NBR0UsXG4gICAgICAgICAgZmlsZVBhdGggPSBicmVha1BvaW50LmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgbGluZUluZGV4ID0gYnJlYWtQb2ludC5nZXRMaW5lSW5kZXgoKTtcblxuICAgIHRoaXMud3JpdGVUb0xvZyhsZXZlbCwgbWVzc2FnZSwgZmlsZVBhdGgsIGxpbmVJbmRleCk7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICByZXR1cm4gdGhpcy5jYWxsYmFjayhicmVha1BvaW50LCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeShmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICB0aGlzLmluZm8oYFZlcmlmeWluZyB0aGUgJyR7dGhpcy5uYW1lfScgcHJvamVjdC4uLiBgKTtcblxuICAgIGNvbnN0IHR5cGVQcmVmaXhlcyA9IHRoaXMuZ2V0VHlwZVByZWZpeGVzKCksXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICB0eXBlUHJlZml4ZXNWZXJpZnkgPSB2ZXJpZnlUeXBlUHJlZml4ZXModHlwZVByZWZpeGVzLCByZWxlYXNlQ29udGV4dCk7XG5cbiAgICBpZiAoIXR5cGVQcmVmaXhlc1ZlcmlmeSkge1xuICAgICAgdGhpcy5pbmZvKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHt0aGlzLm5hbWV9JyBwcm9qZWN0LiBgKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZ5RmlsZUNvbnRleHRzKHRoaXMuZmlsZUNvbnRleHRzLCAoZmlsZUNvbnRleHRzLCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLmluZm8oYC4uLnZlcmlmaWVkIHRoZSAnJHt0aGlzLm5hbWV9JyBwcm9qZWN0LiBgKTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMgPSBmaWxlQ29udGV4dHM7IC8vL1xuXG4gICAgICB0aGlzLnZlcmlmaWVzID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmluZm8oYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3RoaXMubmFtZX0nIHByb2plY3QuIGApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGZpbGVDb250ZXh0c0pTT04gPSB0aGlzLmZpbGVDb250ZXh0cy5tYXAoKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlQ29udGV4dEpTT04gPSBmaWxlQ29udGV4dC50b0pTT04oKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZpbGVDb250ZXh0SlNPTjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBqc29uID0gZmlsZUNvbnRleHRzSlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUxvZ05hbWVKU09ORW50cmllc0NhbGxiYWNrQW5kQ3VzdG9tR3JhbW1hcihDbGFzcywgbG9nLCBuYW1lLCBqc29uLCBlbnRyaWVzLCBjYWxsYmFjaywgY3VzdG9tR3JhbW1hcikge1xuICAgIGlmIChjdXN0b21HcmFtbWFyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGN1c3RvbUdyYW1tYXIgPSBjYWxsYmFjazsgLy8vXG5cbiAgICAgIGNhbGxiYWNrID0gZW50cmllczsgLy8vXG5cbiAgICAgIGVudHJpZXMgPSBqc29uOyAvLy9cblxuICAgICAganNvbiA9IG5hbWU7ICAvLy9cblxuICAgICAgbmFtZSA9IGxvZzsgLy8vXG5cbiAgICAgIGxvZyA9IENsYXNzOyAgLy8vXG5cbiAgICAgIENsYXNzID0gUmVsZWFzZUNvbnRleHQ7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHZlcmlmaWVzID0gZmFsc2UsXG4gICAgICAgICAgaW5pdGlhbGlzZWQgPSBmYWxzZSxcbiAgICAgICAgICBmaWxlQ29udGV4dHMgPSBbXSxcbiAgICAgICAgICBjb21iaW5lZEN1c3RvbUdyYW1tYXIgPSBudWxsLFxuICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMgPSBudWxsLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gbmV3IENsYXNzKGxvZywgbmFtZSwganNvbiwgZW50cmllcywgY2FsbGJhY2ssIGN1c3RvbUdyYW1tYXIsIHZlcmlmaWVzLCBpbml0aWFsaXNlZCwgZmlsZUNvbnRleHRzLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIsIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMpO1xuXG4gICAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiUmVsZWFzZUNvbnRleHQiLCJwdXNoIiwidGFpbCIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJsb2ciLCJuYW1lIiwianNvbiIsImVudHJpZXMiLCJjYWxsYmFjayIsImN1c3RvbUdyYW1tYXIiLCJ2ZXJpZmllcyIsImluaXRpYWxpc2VkIiwiZmlsZUNvbnRleHRzIiwiY29tYmluZWRDdXN0b21HcmFtbWFyIiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImdldExvZyIsImdldE5hbWUiLCJnZXRKU09OIiwiZ2V0RW50cmllcyIsImdldENhbGxiYWNrIiwiZ2V0Q3VzdG9tR3JhbW1hciIsImdldFZlcmlmaWVzIiwiaXNJbml0aWFsaXNlZCIsImdldEZpbGVDb250ZXh0cyIsImdldENvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImdldERlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJnZXRWZXJzaW9uIiwibWF0Y2hEZXBlbmRlbmN5TmFtZSIsImRlcGVuZGVuY3lOYW1lIiwiZGVwZW5kZW5jeU5hbWVNYXRjaGVzIiwiZ2V0UmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dCIsImdldENvbnRleHQiLCJjb250ZXh0IiwiZ2V0RGVwdGgiLCJkZXB0aCIsImhhc1ZlcmlmaWVkIiwidmVyaWZpZWQiLCJpc1JlbGVhc2VkIiwicmVsZWFzZWQiLCJpc1VucmVsZWFzZWQiLCJ1bnJlbGVhc2VkIiwiZ2V0VHlwZVByZWZpeCIsInR5cGVQcmVmaXgiLCJpbmNsdWRlRGVwZW5kZW5jaWVzIiwidHlwZVByZWZpeGVzIiwiZ2V0VHlwZVByZWZpeGVzIiwidHlwZVByZWZpeGVzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RUeXBlUHJlZml4IiwiZ2V0TGFiZWxzIiwibGFiZWxzIiwiZm9yRWFjaCIsImZpbGVDb250ZXh0IiwiaW5jbHVkZVJlbGVhc2UiLCJmaWxlQ29udGV4dExhYmVscyIsInJlbGVhc2VDb250ZXh0TGFiZWxzIiwiZ2V0VHlwZXMiLCJ0eXBlcyIsImZpbGVDb250ZXh0VHlwZXMiLCJyZWxlYXNlQ29udGV4dFR5cGVzIiwiZ2V0UnVsZXMiLCJydWxlcyIsImZpbGVDb250ZXh0UnVsZXMiLCJyZWxlYXNlQ29udGV4dFJ1bGVzIiwiZ2V0QXhpb21zIiwiYXhpb21zIiwiZmlsZUNvbnRleHRBeGlvbXMiLCJyZWxlYXNlQ29udGV4dEF4aW9tcyIsImdldExlbW1hcyIsImxlbW1hcyIsImZpbGVDb250ZXh0TGVtbWFzIiwiZ2V0U2NoZW1hcyIsInNjaGVtYXMiLCJmaWxlQ29udGV4dFNjaGVtYXMiLCJyZWxlYXNlQ29udGV4dFNjaGVtYXMiLCJnZXRUaGVvcmVtcyIsInRoZW9yZW1zIiwiZmlsZUNvbnRleHRUaGVvcmVtcyIsInJlbGVhc2VDb250ZXh0VGhlb3JlbXMiLCJnZXRQcm9jZWR1cmVzIiwicHJvY2VkdXJlcyIsImZpbGVDb250ZXh0UHJvY2VkdXJlcyIsInJlbGVhc2VDb250ZXh0UHJvY2VkdXJlcyIsImdldEdlbmVyYXRvcnMiLCJnZW5lcmF0b3JzIiwiZmlsZUNvbnRleHRHZW5lcmF0b3JzIiwicmVsZWFzZUNvbnRleHRHZW5lcmF0b3JzIiwiZ2V0Q29uamVjdHVyZXMiLCJjb25qZWN0dXJlcyIsImZpbGVDb250ZXh0Q29uamVjdHVyZXMiLCJyZWxlYXNlQ29udGV4dENvbmplY3R1cmVzIiwiZ2V0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImZpbGVDb250ZXh0Q29tYmluYXRvcnMiLCJyZWxlYXNlQ29udGV4dENvbWJpbmF0b3JzIiwiZmlsZUNvbnRleHRUeXBlUHJlZml4ZXMiLCJyZWxlYXNlQ29udGV4dFR5cGVQcmVmaXhlcyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImZpbGVDb250ZXh0Q29uc3RydWN0b3JzIiwicmVsZWFzZUNvbnRleHRDb25zdHJ1Y3RvcnMiLCJnZXREZXBlbmRlbmNpZXMiLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJzaG9ydGVuZWRWZXJzaW9uIiwidHJhY2UiLCJtZXNzYWdlIiwibGV2ZWwiLCJUUkFDRV9MRVZFTCIsIndyaXRlVG9Mb2ciLCJkZWJ1ZyIsIkRFQlVHX0xFVkVMIiwiaW5mbyIsIklORk9fTEVWRUwiLCJ3YXJuaW5nIiwiV0FSTklOR19MRVZFTCIsImVycm9yIiwiRVJST1JfTEVWRUwiLCJmaWxlUGF0aCIsImxpbmVJbmRleCIsIndyaXRlIiwiaW5pdGlhbGlzZSIsInJlbGVhc2VDb250ZXh0cyIsIkZpbGVDb250ZXh0RnJvbUZpbGVQYXRoIiwicmVsZWFzZUNvbnRleHRzVGFpbCIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21SZWxlYXNlQ29udGV4dHMiLCJmaWxlQ29udGV4dHNGcm9tSlNPTiIsImZpbGVDb250ZXh0c0Zyb21FbnRyaWVzIiwiYnJlYWsiLCJicmVha1BvaW50IiwiZm9yd2FyZCIsImJhY2siLCJCUkVBS19NRVNTQUdFIiwiZ2V0RmlsZVBhdGgiLCJnZXRMaW5lSW5kZXgiLCJ2ZXJpZnkiLCJjdXQiLCJ0eXBlUHJlZml4ZXNWZXJpZnkiLCJ2ZXJpZnlUeXBlUHJlZml4ZXMiLCJ2ZXJpZnlGaWxlQ29udGV4dHMiLCJleGNlcHRpb24iLCJ0b0pTT04iLCJmaWxlQ29udGV4dHNKU09OIiwibWFwIiwiZmlsZUNvbnRleHRKU09OIiwiZnJvbUxvZ05hbWVKU09ORW50cmllc0NhbGxiYWNrQW5kQ3VzdG9tR3JhbW1hciIs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
|
|
@@ -57,18 +57,9 @@ function verifyReleaseContext(releaseContext, context, forward, back) {
|
|
|
57
57
|
if (released || verified) {
|
|
58
58
|
return forward(context, back);
|
|
59
59
|
}
|
|
60
|
-
const { log } = context, name = releaseContext.getName(), releaseName = name; ///
|
|
61
|
-
log.info(`Verifying the '${releaseName}' project...`);
|
|
62
60
|
return releaseContext.verify((back)=>{
|
|
63
|
-
log.info(`...verified the '${releaseName}' project.`);
|
|
64
61
|
return forward(context, back);
|
|
65
|
-
},
|
|
66
|
-
if (exception) {
|
|
67
|
-
return back(exception);
|
|
68
|
-
}
|
|
69
|
-
log.info(`Unable to verify the '${releaseName}' project.`);
|
|
70
|
-
return back();
|
|
71
|
-
});
|
|
62
|
+
}, back);
|
|
72
63
|
}
|
|
73
64
|
function createReleaseContext(dependency, dependentNames, dependentReleased, context, succeed, fail) {
|
|
74
65
|
const { log } = context, releaseContext = findReleaseContext(dependency, context);
|
|
@@ -210,4 +201,4 @@ function checkProjectDependencyOfPackage(releaseContext, dependentReleased, depe
|
|
|
210
201
|
return projectDependencyOfPackage;
|
|
211
202
|
}
|
|
212
203
|
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEZXBlbmRlbmN5IH0gZnJvbSBcIm9jY2FtLW1vZGVsXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZXZlcnkgIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IFNJTkdMRV9TUEFDRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5TmFtZSwgY29udGV4dCwgc3VjY2VlZCwgZmFpbCkge1xuICBjb25zdCBuYW1lID0gZGVwZW5kZW5jeU5hbWUsICAvLy9cbiAgICAgICAgZGVwZW5kZW5jeSA9IERlcGVuZGVuY3kuZnJvbU5hbWUobmFtZSksXG4gICAgICAgIGRlcGVuZGVudE5hbWVzID0gW10sXG4gICAgICAgIGRlcGVuZGVudFJlbGVhc2VkID0gZmFsc2U7XG5cbiAgcmV0dXJuIGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbnRSZWxlYXNlZCwgY29udGV4dCwgKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCkgPT4ge1xuICAgIGxldCByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gZmFsc2U7XG5cbiAgICBpZiAocmVsZWFzZUNvbnRleHRDcmVhdGVkKSB7XG4gICAgICByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VlZChyZWxlYXNlQ29udGV4dHNDcmVhdGVkKTtcbiAgfSwgZmFpbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzKGNvbnRleHQpIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dHMgfSA9IGNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlSZWxlYXNlQ29udGV4dHMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZXR1cm4gZXZlcnkocmVsZWFzZUNvbnRleHRzLCB2ZXJpZnlSZWxlYXNlQ29udGV4dCwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHRzLFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzLFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dHNcbn07XG5cbmZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpLFxuICAgICAgICB2ZXJpZmllZCA9IHJlbGVhc2VDb250ZXh0Lmhhc1ZlcmlmaWVkKCk7XG5cbiAgaWYgKHJlbGVhc2VkIHx8IHZlcmlmaWVkKSB7XG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lOyAvLy9cblxuICBsb2cuaW5mbyhgVmVyaWZ5aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuLi5gKTtcblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgbG9nLmluZm8oYC4uLnZlcmlmaWVkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgfVxuXG4gICAgbG9nLmluZm8oYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3JlbGVhc2VOYW1lfScgcHJvamVjdC5gKTtcblxuICAgIHJldHVybiBiYWNrKCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQsIHN1Y2NlZWQsIGZhaWwpIHtcbiAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gc3VjY2VlZChyZWxlYXNlQ29udGV4dENyZWF0ZWQpO1xuICB9XG5cbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGg7XG5cbiAgaWYgKGRlcGVuZGVudE5hbWVzTGVuZ3RoID09PSAwKSB7XG4gICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lLCAgLy8vXG4gICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICB9XG5cbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IH0gPSBjb250ZXh0O1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQsIChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHJlbGVhdGVQcmVzZW50ID0gY2hlY2tSZWxlYXNlUHJlc2VudChyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeU5hbWUsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFyZWxlYXRlUHJlc2VudCkge1xuICAgICAgcmV0dXJuIHN1Y2NlZWQocmVsZWFzZUNvbnRleHRDcmVhdGVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSA9IGNoZWNrUHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudFJlbGVhc2VkLCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICBpZiAocHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UpIHtcbiAgICAgIHJldHVybiBzdWNjZWVkKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICByZXR1cm4gc3VjY2VlZChyZWxlYXNlQ29udGV4dENyZWF0ZWQpO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkKSA9PiB7XG4gICAgICBpZiAoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQpIHtcbiAgICAgICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgICAgICBhZGRSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA/XG4gICAgICAgIGxvZy5kZWJ1ZyhgLi4uY3JlYXRlZCB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCkgOlxuICAgICAgICAgIGxvZy53YXJuaW5nKGAuLi51bmFibGUgdG8gY3JlYXRlIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKTtcblxuICAgICAgcmV0dXJuIHN1Y2NlZWQocmVsZWFzZUNvbnRleHRDcmVhdGVkKTtcbiAgICB9LCBmYWlsKTtcbiAgfSwgZmFpbCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCBzdWNjZWVkLCBmYWlsKSB7XG4gIGNvbnN0IG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSByZWxlYXNlZDsgIC8vL1xuXG4gIGRlcGVuZGVudE5hbWVzID0gWyAuLi5kZXBlbmRlbnROYW1lcywgZGVwZW5kZW50TmFtZSBdOyAgLy8vXG5cbiAgY29uc3QgYXJyYXkgPSBkZXBlbmRlbmNpZXMuZ2V0QXJyYXkoKTtcblxuICByZXR1cm4gZXZlcnkoYXJyYXksIChkZXBlbmRlbmN5LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmIChjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0LCAocmVsZWFzZUNvbnRleHRDcmVhdGVkKSA9PiB7XG4gICAgICBpZiAoIXJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICB9LCBmYWlsKTtcbiAgfSwgKCkgPT4gc3VjY2VlZCh0cnVlKSwgKCkgPT4gc3VjY2VlZChmYWxzZSkpO1xufVxuXG5mdW5jdGlvbiBhZGRSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dHMucHVzaChyZWxlYXNlQ29udGV4dCk7XG59XG5cbmZ1bmN0aW9uIGZpbmRSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5maW5kKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lOYW1lTWF0Y2hlcyA9IHJlbGVhc2VDb250ZXh0Lm1hdGNoRGVwZW5kZW5jeU5hbWUoZGVwZW5kZW5jeU5hbWUpO1xuXG4gICAgICAgICAgaWYgKGRlcGVuZGVuY3lOYW1lTWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dDtcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlUHJlc2VudChyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeU5hbWUsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VQcmVzZW50ID0gdHJ1ZTtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgPT09IG51bGwpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLmApO1xuXG4gICAgcmVsZWFzZVByZXNlbnQgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlUHJlc2VudDtcbn1cblxuZnVuY3Rpb24gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQsIHJlbGVhc2VDb250ZXh0cyA9IFtdKSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMocmVsZWFzZUNvbnRleHQpO1xuXG4gIGlmICghcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCkge1xuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpO1xuXG4gICAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGZpbmRSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KTtcblxuICAgICAgcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQsIHJlbGVhc2VDb250ZXh0cyk7XG4gICAgfSk7XG5cbiAgICByZWxlYXNlQ29udGV4dHMudW5zaGlmdChyZWxlYXNlQ29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRzO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgIG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgIHJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcblxuICBsb2cuaW5mbyhgSW5pdGlhbGlzaW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuXG4gIGNvbnN0IHsgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGggfSA9IGNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHQuaW5pdGlhbGlzZShyZWxlYXNlQ29udGV4dHMsIEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoKTtcblxuICBsb2cuZGVidWcoYC4uLmluaXRpYWxpc2VkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tDeWNsaWNEZXBlbmRlbmN5UHJlc2VudChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBpbmRleCA9IGRlcGVuZGVudE5hbWVzLmluZGV4T2YoZGVwZW5kZW5jeU5hbWUpO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbnROYW1lcyA9IGRlcGVuZGVudE5hbWVzLnNsaWNlKGluZGV4KSxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcyA9IFtcbiAgICAgICAgICAgIC4uLmNpcmN1bGFyRGVwZW5kZW50TmFtZXMsXG4gICAgICAgICAgICBkZXBlbmRlbmN5TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmcgPSBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcy5qb2luKFNJTkdMRV9TUEFDRSk7XG5cbiAgICBsb2cud2FybmluZyhgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeSwgJyR7Y2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmd9Jy5gKTtcblxuICAgIGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudDtcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSB0cnVlO1xuXG4gIGNvbnN0IHNob3J0ZW5lZFZlcnNpb24gPSBkZXBlbmRlbmN5LmdldFNob3J0ZW5lZFZlcnNpb24oKTtcblxuICBpZiAoc2hvcnRlbmVkVmVyc2lvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5tYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbik7XG5cbiAgICBpZiAoIWVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24pIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgdmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWUsICAvLy9cbiAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSB2ZXJzaW9uLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgcmVxdWlyZXMgdGhlICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5IGJ1dCBhIGNvbnRleHQgd2l0aCB2ZXJzaW9uICcke3ZlcnNpb25TdHJpbmd9JyB3YXMgcHJvdmlkZWQuYCk7XG5cbiAgICAgIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3k7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudFJlbGVhc2VkLCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UgPSBmYWxzZTtcblxuICBpZiAoZGVwZW5kZW50UmVsZWFzZWQpIHtcbiAgICBjb25zdCB1bnJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNVbnJlbGVhc2VkKCk7XG5cbiAgICBpZiAodW5yZWxlYXNlZCkge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lOYW1lID0gbmFtZSwvLy9cbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZTsgIC8vL1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVuY3lOYW1lfScgZGVwZW5kZW5jeSBpcyBhIHByb2plY3Qgd2hpbHN0IGl0cyAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IGlzIGEgcGFja2FnZS5gKTtcblxuICAgICAgcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZTtcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVSZWxlYXNlQ29udGV4dHMiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzIiwidmVyaWZ5UmVsZWFzZUNvbnRleHRzIiwibGFzdCIsImFycmF5VXRpbGl0aWVzIiwiZGVwZW5kZW5jeU5hbWUiLCJjb250ZXh0Iiwic3VjY2VlZCIsImZhaWwiLCJuYW1lIiwiZGVwZW5kZW5jeSIsIkRlcGVuZGVuY3kiLCJmcm9tTmFtZSIsImRlcGVuZGVudE5hbWVzIiwiZGVwZW5kZW50UmVsZWFzZWQiLCJjcmVhdGVSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0Q3JlYXRlZCIsInJlbGVhc2VDb250ZXh0c0NyZWF0ZWQiLCJyZWxlYXNlQ29udGV4dHMiLCJmb3JFYWNoIiwicmVsZWFzZUNvbnRleHQiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsImV2ZXJ5IiwidmVyaWZ5UmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlZCIsImlzUmVsZWFzZWQiLCJ2ZXJpZmllZCIsImhhc1ZlcmlmaWVkIiwibG9nIiwiZ2V0TmFtZSIsInJlbGVhc2VOYW1lIiwiaW5mbyIsInZlcmlmeSIsImV4Y2VwdGlvbiIsImZpbmRSZWxlYXNlQ29udGV4dCIsImRlcGVuZGVudE5hbWVzTGVuZ3RoIiwibGVuZ3RoIiwibGFzdERlcGVuZGVudE5hbWUiLCJkZXBlbmRlbnROYW1lIiwiZGVwZW5kZW5jeVN0cmluZyIsImFzU3RyaW5nIiwicmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSIsInJlbGVhdGVQcmVzZW50IiwiY2hlY2tSZWxlYXNlUHJlc2VudCIsInByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlIiwiY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSIsInJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSIsImNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkIiwiYWRkUmVsZWFzZUNvbnRleHQiLCJkZWJ1ZyIsIndhcm5pbmciLCJkZXBlbmRlbmNpZXMiLCJnZXREZXBlbmRlbmNpZXMiLCJhcnJheSIsImdldEFycmF5IiwiY3ljbGljRGVwZW5kZW5jeVByZXNlbnQiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50IiwicHVzaCIsImZpbmQiLCJkZXBlbmRlbmN5TmFtZU1hdGNoZXMiLCJtYXRjaERlcGVuZGVuY3lOYW1lIiwicmVsZWFzZVByZXNlbnQiLCJyZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJpbmNsdWRlcyIsImZvckVhY2hEZXBlbmRlbmN5IiwidW5zaGlmdCIsIkZpbGVDb250ZXh0RnJvbUZpbGVQYXRoIiwiaW5pdGlhbGlzZSIsImluZGV4IiwiaW5kZXhPZiIsImNpcmN1bGFyRGVwZW5kZW50TmFtZXMiLCJzbGljZSIsImNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzIiwiY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmciLCJqb2luIiwiU0lOR0xFX1NQQUNFIiwic2hvcnRlbmVkVmVyc2lvbiIsImdldFNob3J0ZW5lZFZlcnNpb24iLCJlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwibWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidG9TdHJpbmciLCJ1bnJlbGVhc2VkIiwiaXNVbnJlbGVhc2VkIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFVZ0JBO2VBQUFBOztRQStCaEI7ZUFBQTs7UUFkZ0JDO2VBQUFBOztRQVFBQztlQUFBQTs7OzRCQWpDVzsyQkFDSTs4QkFFUjsyQkFDTTtBQUU3QixNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5QkFBYztBQUV4QixTQUFTSixzQkFBc0JLLGNBQWMsRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDMUUsTUFBTUMsT0FBT0osZ0JBQ1BLLGFBQWFDLHNCQUFVLENBQUNDLFFBQVEsQ0FBQ0gsT0FDakNJLGlCQUFpQixFQUFFLEVBQ25CQyxvQkFBb0I7SUFFMUIsT0FBT0MscUJBQXFCTCxZQUFZRyxn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
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEZXBlbmRlbmN5IH0gZnJvbSBcIm9jY2FtLW1vZGVsXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZXZlcnkgIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IFNJTkdMRV9TUEFDRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5TmFtZSwgY29udGV4dCwgc3VjY2VlZCwgZmFpbCkge1xuICBjb25zdCBuYW1lID0gZGVwZW5kZW5jeU5hbWUsICAvLy9cbiAgICAgICAgZGVwZW5kZW5jeSA9IERlcGVuZGVuY3kuZnJvbU5hbWUobmFtZSksXG4gICAgICAgIGRlcGVuZGVudE5hbWVzID0gW10sXG4gICAgICAgIGRlcGVuZGVudFJlbGVhc2VkID0gZmFsc2U7XG5cbiAgcmV0dXJuIGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbnRSZWxlYXNlZCwgY29udGV4dCwgKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCkgPT4ge1xuICAgIGxldCByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gZmFsc2U7XG5cbiAgICBpZiAocmVsZWFzZUNvbnRleHRDcmVhdGVkKSB7XG4gICAgICByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VlZChyZWxlYXNlQ29udGV4dHNDcmVhdGVkKTtcbiAgfSwgZmFpbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzKGNvbnRleHQpIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dHMgfSA9IGNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlSZWxlYXNlQ29udGV4dHMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZXR1cm4gZXZlcnkocmVsZWFzZUNvbnRleHRzLCB2ZXJpZnlSZWxlYXNlQ29udGV4dCwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHRzLFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzLFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dHNcbn07XG5cbmZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpLFxuICAgICAgICB2ZXJpZmllZCA9IHJlbGVhc2VDb250ZXh0Lmhhc1ZlcmlmaWVkKCk7XG5cbiAgaWYgKHJlbGVhc2VkIHx8IHZlcmlmaWVkKSB7XG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH0sIGJhY2spO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQsIHN1Y2NlZWQsIGZhaWwpIHtcbiAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gc3VjY2VlZChyZWxlYXNlQ29udGV4dENyZWF0ZWQpO1xuICB9XG5cbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGg7XG5cbiAgaWYgKGRlcGVuZGVudE5hbWVzTGVuZ3RoID09PSAwKSB7XG4gICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lLCAgLy8vXG4gICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICB9XG5cbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IH0gPSBjb250ZXh0O1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQsIChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHJlbGVhdGVQcmVzZW50ID0gY2hlY2tSZWxlYXNlUHJlc2VudChyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeU5hbWUsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFyZWxlYXRlUHJlc2VudCkge1xuICAgICAgcmV0dXJuIHN1Y2NlZWQocmVsZWFzZUNvbnRleHRDcmVhdGVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSA9IGNoZWNrUHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudFJlbGVhc2VkLCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICBpZiAocHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UpIHtcbiAgICAgIHJldHVybiBzdWNjZWVkKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICByZXR1cm4gc3VjY2VlZChyZWxlYXNlQ29udGV4dENyZWF0ZWQpO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkKSA9PiB7XG4gICAgICBpZiAoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQpIHtcbiAgICAgICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgICAgICBhZGRSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA/XG4gICAgICAgIGxvZy5kZWJ1ZyhgLi4uY3JlYXRlZCB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCkgOlxuICAgICAgICAgIGxvZy53YXJuaW5nKGAuLi51bmFibGUgdG8gY3JlYXRlIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKTtcblxuICAgICAgcmV0dXJuIHN1Y2NlZWQocmVsZWFzZUNvbnRleHRDcmVhdGVkKTtcbiAgICB9LCBmYWlsKTtcbiAgfSwgZmFpbCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCBzdWNjZWVkLCBmYWlsKSB7XG4gIGNvbnN0IG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSByZWxlYXNlZDsgIC8vL1xuXG4gIGRlcGVuZGVudE5hbWVzID0gWyAuLi5kZXBlbmRlbnROYW1lcywgZGVwZW5kZW50TmFtZSBdOyAgLy8vXG5cbiAgY29uc3QgYXJyYXkgPSBkZXBlbmRlbmNpZXMuZ2V0QXJyYXkoKTtcblxuICByZXR1cm4gZXZlcnkoYXJyYXksIChkZXBlbmRlbmN5LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmIChjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0LCAocmVsZWFzZUNvbnRleHRDcmVhdGVkKSA9PiB7XG4gICAgICBpZiAoIXJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICB9LCBmYWlsKTtcbiAgfSwgKCkgPT4gc3VjY2VlZCh0cnVlKSwgKCkgPT4gc3VjY2VlZChmYWxzZSkpO1xufVxuXG5mdW5jdGlvbiBhZGRSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dHMucHVzaChyZWxlYXNlQ29udGV4dCk7XG59XG5cbmZ1bmN0aW9uIGZpbmRSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5maW5kKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lOYW1lTWF0Y2hlcyA9IHJlbGVhc2VDb250ZXh0Lm1hdGNoRGVwZW5kZW5jeU5hbWUoZGVwZW5kZW5jeU5hbWUpO1xuXG4gICAgICAgICAgaWYgKGRlcGVuZGVuY3lOYW1lTWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dDtcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlUHJlc2VudChyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeU5hbWUsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VQcmVzZW50ID0gdHJ1ZTtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgPT09IG51bGwpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLmApO1xuXG4gICAgcmVsZWFzZVByZXNlbnQgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlUHJlc2VudDtcbn1cblxuZnVuY3Rpb24gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQsIHJlbGVhc2VDb250ZXh0cyA9IFtdKSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMocmVsZWFzZUNvbnRleHQpO1xuXG4gIGlmICghcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCkge1xuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpO1xuXG4gICAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGZpbmRSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KTtcblxuICAgICAgcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQsIHJlbGVhc2VDb250ZXh0cyk7XG4gICAgfSk7XG5cbiAgICByZWxlYXNlQ29udGV4dHMudW5zaGlmdChyZWxlYXNlQ29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRzO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgIG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgIHJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcblxuICBsb2cuaW5mbyhgSW5pdGlhbGlzaW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuXG4gIGNvbnN0IHsgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGggfSA9IGNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHQuaW5pdGlhbGlzZShyZWxlYXNlQ29udGV4dHMsIEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoKTtcblxuICBsb2cuZGVidWcoYC4uLmluaXRpYWxpc2VkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tDeWNsaWNEZXBlbmRlbmN5UHJlc2VudChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBpbmRleCA9IGRlcGVuZGVudE5hbWVzLmluZGV4T2YoZGVwZW5kZW5jeU5hbWUpO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbnROYW1lcyA9IGRlcGVuZGVudE5hbWVzLnNsaWNlKGluZGV4KSxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcyA9IFtcbiAgICAgICAgICAgIC4uLmNpcmN1bGFyRGVwZW5kZW50TmFtZXMsXG4gICAgICAgICAgICBkZXBlbmRlbmN5TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmcgPSBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcy5qb2luKFNJTkdMRV9TUEFDRSk7XG5cbiAgICBsb2cud2FybmluZyhgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeSwgJyR7Y2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmd9Jy5gKTtcblxuICAgIGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudDtcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSB0cnVlO1xuXG4gIGNvbnN0IHNob3J0ZW5lZFZlcnNpb24gPSBkZXBlbmRlbmN5LmdldFNob3J0ZW5lZFZlcnNpb24oKTtcblxuICBpZiAoc2hvcnRlbmVkVmVyc2lvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5tYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbik7XG5cbiAgICBpZiAoIWVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24pIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgdmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWUsICAvLy9cbiAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSB2ZXJzaW9uLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgcmVxdWlyZXMgdGhlICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5IGJ1dCBhIGNvbnRleHQgd2l0aCB2ZXJzaW9uICcke3ZlcnNpb25TdHJpbmd9JyB3YXMgcHJvdmlkZWQuYCk7XG5cbiAgICAgIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3k7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudFJlbGVhc2VkLCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UgPSBmYWxzZTtcblxuICBpZiAoZGVwZW5kZW50UmVsZWFzZWQpIHtcbiAgICBjb25zdCB1bnJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNVbnJlbGVhc2VkKCk7XG5cbiAgICBpZiAodW5yZWxlYXNlZCkge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lOYW1lID0gbmFtZSwvLy9cbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZTsgIC8vL1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVuY3lOYW1lfScgZGVwZW5kZW5jeSBpcyBhIHByb2plY3Qgd2hpbHN0IGl0cyAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IGlzIGEgcGFja2FnZS5gKTtcblxuICAgICAgcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZTtcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVSZWxlYXNlQ29udGV4dHMiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzIiwidmVyaWZ5UmVsZWFzZUNvbnRleHRzIiwibGFzdCIsImFycmF5VXRpbGl0aWVzIiwiZGVwZW5kZW5jeU5hbWUiLCJjb250ZXh0Iiwic3VjY2VlZCIsImZhaWwiLCJuYW1lIiwiZGVwZW5kZW5jeSIsIkRlcGVuZGVuY3kiLCJmcm9tTmFtZSIsImRlcGVuZGVudE5hbWVzIiwiZGVwZW5kZW50UmVsZWFzZWQiLCJjcmVhdGVSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0Q3JlYXRlZCIsInJlbGVhc2VDb250ZXh0c0NyZWF0ZWQiLCJyZWxlYXNlQ29udGV4dHMiLCJmb3JFYWNoIiwicmVsZWFzZUNvbnRleHQiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsImV2ZXJ5IiwidmVyaWZ5UmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlZCIsImlzUmVsZWFzZWQiLCJ2ZXJpZmllZCIsImhhc1ZlcmlmaWVkIiwidmVyaWZ5IiwibG9nIiwiZmluZFJlbGVhc2VDb250ZXh0IiwiZ2V0TmFtZSIsImRlcGVuZGVudE5hbWVzTGVuZ3RoIiwibGVuZ3RoIiwiaW5mbyIsImxhc3REZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50TmFtZSIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsInJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kiLCJyZWxlYXRlUHJlc2VudCIsImNoZWNrUmVsZWFzZVByZXNlbnQiLCJwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSIsImNoZWNrUHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UiLCJyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImFkZFJlbGVhc2VDb250ZXh0IiwiZGVidWciLCJ3YXJuaW5nIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiYXJyYXkiLCJnZXRBcnJheSIsImN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50IiwiY2hlY2tDeWNsaWNEZXBlbmRlbmN5UHJlc2VudCIsInB1c2giLCJmaW5kIiwiZGVwZW5kZW5jeU5hbWVNYXRjaGVzIiwibWF0Y2hEZXBlbmRlbmN5TmFtZSIsInJlbGVhc2VQcmVzZW50IiwicmV0cmlldmVSZWxlYXNlQ29udGV4dHMiLCJyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiaW5jbHVkZXMiLCJmb3JFYWNoRGVwZW5kZW5jeSIsInVuc2hpZnQiLCJyZWxlYXNlTmFtZSIsIkZpbGVDb250ZXh0RnJvbUZpbGVQYXRoIiwiaW5pdGlhbGlzZSIsImluZGV4IiwiaW5kZXhPZiIsImNpcmN1bGFyRGVwZW5kZW50TmFtZXMiLCJzbGljZSIsImNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzIiwiY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmciLCJqb2luIiwiU0lOR0xFX1NQQUNFIiwic2hvcnRlbmVkVmVyc2lvbiIsImdldFNob3J0ZW5lZFZlcnNpb24iLCJlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwibWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidG9TdHJpbmciLCJ1bnJlbGVhc2VkIiwiaXNVbnJlbGVhc2VkIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFVZ0JBO2VBQUFBOztRQStCaEI7ZUFBQTs7UUFkZ0JDO2VBQUFBOztRQVFBQztlQUFBQTs7OzRCQWpDVzsyQkFDSTs4QkFFUjsyQkFDTTtBQUU3QixNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5QkFBYztBQUV4QixTQUFTSixzQkFBc0JLLGNBQWMsRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDMUUsTUFBTUMsT0FBT0osZ0JBQ1BLLGFBQWFDLHNCQUFVLENBQUNDLFFBQVEsQ0FBQ0gsT0FDakNJLGlCQUFpQixFQUFFLEVBQ25CQyxvQkFBb0I7SUFFMUIsT0FBT0MscUJBQXFCTCxZQUFZRyxnQkFBZ0JDLG1CQUFtQlIsU0FBUyxDQUFDVTtRQUNuRixJQUFJQyx5QkFBeUI7UUFFN0IsSUFBSUQsdUJBQXVCO1lBQ3pCQyx5QkFBeUI7UUFDM0I7UUFFQSxPQUFPVixRQUFRVTtJQUNqQixHQUFHVDtBQUNMO0FBRU8sU0FBU1AsMEJBQTBCSyxPQUFPO0lBQy9DLE1BQU0sRUFBRVksZUFBZSxFQUFFLEdBQUdaO0lBRTVCWSxnQkFBZ0JDLE9BQU8sQ0FBQyxDQUFDQztRQUN2QkMseUJBQXlCRCxnQkFBZ0JkO0lBQzNDO0FBQ0Y7QUFFTyxTQUFTSixzQkFBc0JJLE9BQU8sRUFBRWdCLE9BQU8sRUFBRUMsSUFBSTtJQUMxRCxNQUFNLEVBQUVMLGVBQWUsRUFBRSxHQUFHWjtJQUU1QixPQUFPa0IsSUFBQUEsbUJBQUssRUFBQ04saUJBQWlCTyxzQkFBc0JuQixTQUFTZ0IsU0FBU0M7QUFDeEU7TUFFQSxXQUFlO0lBQ2J2QjtJ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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-languages",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.70",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-languages",
|
|
7
7
|
"description": "Occam's common language functionality.",
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.6.3",
|
|
14
|
-
"occam-custom-grammars": "^6.1.
|
|
14
|
+
"occam-custom-grammars": "^6.1.11",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.25",
|
|
16
|
-
"occam-grammars": "^1.3.
|
|
16
|
+
"occam-grammars": "^1.3.676",
|
|
17
17
|
"occam-lexers": "^23.2.8",
|
|
18
|
-
"occam-model": "^1.0.
|
|
18
|
+
"occam-model": "^1.0.587",
|
|
19
19
|
"occam-parsers": "^23.2.15",
|
|
20
20
|
"occam-query": "^4.1.208"
|
|
21
21
|
},
|
package/src/context/release.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
+
import { cut } from "../utilities/continuation";
|
|
5
6
|
import { verifyTypePrefixes, verifyFileContexts } from "../utilities/verify";
|
|
6
7
|
import { combinedCustomGrammarFromReleaseContexts } from "../utilities/customGrammar";
|
|
7
8
|
import { fileContextsFromJSON, fileContextsFromEntries } from "../utilities/fileContext";
|
|
@@ -478,21 +479,37 @@ export default class ReleaseContext {
|
|
|
478
479
|
}
|
|
479
480
|
|
|
480
481
|
verify(forward, back) {
|
|
482
|
+
forward = cut(forward, back); ///
|
|
483
|
+
|
|
484
|
+
this.info(`Verifying the '${this.name}' project... `);
|
|
485
|
+
|
|
481
486
|
const typePrefixes = this.getTypePrefixes(),
|
|
482
487
|
releaseContext = this, ///
|
|
483
488
|
typePrefixesVerify = verifyTypePrefixes(typePrefixes, releaseContext);
|
|
484
489
|
|
|
485
490
|
if (!typePrefixesVerify) {
|
|
491
|
+
this.info(`Unable to verify the '${this.name}' project. `);
|
|
492
|
+
|
|
486
493
|
return back();
|
|
487
494
|
}
|
|
488
495
|
|
|
489
496
|
return verifyFileContexts(this.fileContexts, (fileContexts, back) => {
|
|
497
|
+
this.info(`...verified the '${this.name}' project. `);
|
|
498
|
+
|
|
490
499
|
this.fileContexts = fileContexts; ///
|
|
491
500
|
|
|
492
501
|
this.verifies = true;
|
|
493
502
|
|
|
494
503
|
return forward(back);
|
|
495
|
-
},
|
|
504
|
+
}, (exception) => {
|
|
505
|
+
if (exception) {
|
|
506
|
+
return back(exception);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
this.info(`Unable to verify the '${this.name}' project. `);
|
|
510
|
+
|
|
511
|
+
return back();
|
|
512
|
+
});
|
|
496
513
|
}
|
|
497
514
|
|
|
498
515
|
toJSON() {
|
|
@@ -53,25 +53,9 @@ function verifyReleaseContext(releaseContext, context, forward, back) {
|
|
|
53
53
|
return forward(context, back);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
const { log } = context,
|
|
57
|
-
name = releaseContext.getName(),
|
|
58
|
-
releaseName = name; ///
|
|
59
|
-
|
|
60
|
-
log.info(`Verifying the '${releaseName}' project...`);
|
|
61
|
-
|
|
62
56
|
return releaseContext.verify((back) => {
|
|
63
|
-
log.info(`...verified the '${releaseName}' project.`);
|
|
64
|
-
|
|
65
57
|
return forward(context, back);
|
|
66
|
-
},
|
|
67
|
-
if (exception) {
|
|
68
|
-
return back(exception);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
log.info(`Unable to verify the '${releaseName}' project.`);
|
|
72
|
-
|
|
73
|
-
return back();
|
|
74
|
-
});
|
|
58
|
+
}, back);
|
|
75
59
|
}
|
|
76
60
|
|
|
77
61
|
function createReleaseContext(dependency, dependentNames, dependentReleased, context, succeed, fail) {
|