occam-nominal 1.0.458 → 1.0.460
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/file/nominal.js +3 -3
- package/lib/element/error.js +3 -4
- package/lib/element/substitution.js +4 -3
- package/lib/process/verify.js +35 -35
- package/package.json +3 -3
- package/src/context/file/nominal.js +2 -2
- package/src/element/error.js +2 -4
- package/src/element/substitution.js +4 -2
- package/src/process/verify.js +34 -34
|
@@ -454,9 +454,9 @@ class NominalFileContext extends _occamlanguages.FileContext {
|
|
|
454
454
|
complete() {
|
|
455
455
|
///
|
|
456
456
|
}
|
|
457
|
-
verifyFile(
|
|
457
|
+
verifyFile(back, forward) {
|
|
458
458
|
const node = this.getNode(), context = this, fileNode = node; ///
|
|
459
|
-
return (0, _verify.verifyFile)(fileNode, context,
|
|
459
|
+
return (0, _verify.verifyFile)(fileNode, context, back, forward);
|
|
460
460
|
}
|
|
461
461
|
initialise() {
|
|
462
462
|
const json = this.getJSON();
|
|
@@ -509,4 +509,4 @@ class NominalFileContext extends _occamlanguages.FileContext {
|
|
|
509
509
|
}
|
|
510
510
|
}
|
|
511
511
|
|
|
512
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0L2ZpbGUvbm9taW5hbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRmlsZUNvbnRleHQsIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IE5vbWluYWxMZXhlciBmcm9tIFwiLi4vLi4vbm9taW5hbC9sZXhlclwiO1xuaW1wb3J0IE5vbWluYWxQYXJzZXIgZnJvbSBcIi4uLy4uL25vbWluYWwvcGFyc2VyXCI7XG5cbmltcG9ydCB7IGZpbmRUeXBlfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IHZlcmlmeUZpbGUgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy92ZXJpZnlcIjtcbmltcG9ydCB7IGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIH0gZnJvbSBcIi4uLy4uL21ldGFUeXBlc1wiO1xuaW1wb3J0IHsgdHlwZXNGcm9tSlNPTixcbiAgICAgICAgIHJ1bGVzRnJvbUpTT04sXG4gICAgICAgICBheGlvbXNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNGcm9tSlNPTixcbiAgICAgICAgIHR5cGVzVG9UeXBlc0pTT04sXG4gICAgICAgICB0aGVvcmVtc0Zyb21KU09OLFxuICAgICAgICAgcnVsZXNUb1J1bGVzSlNPTixcbiAgICAgICAgIGF4aW9tc1RvQXhpb21zSlNPTixcbiAgICAgICAgIGdlbmVyYXRvcnNGcm9tSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzRnJvbUpTT04sXG4gICAgICAgICBjb21iaW5hdG9yc0Zyb21KU09OLFxuICAgICAgICAgdHlwZVByZWZpeGVzRnJvbUpTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNUb1NjaGVtYXNKU09OLFxuICAgICAgICAgdGhlb3JlbXNUb1RoZW9yZW1zSlNPTixcbiAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04sXG4gICAgICAgICBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04sXG4gICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIsIG5vbWluYWxQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBub21pbmFsVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb21pbmFsRmlsZUNvbnRleHQgZXh0ZW5kcyBGaWxlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uLCBsZXhlciwgcGFyc2VyLCB0eXBlcywgcnVsZXMsIGF4aW9tcywgbGVtbWFzLCBzY2hlbWFzLCB0aGVvcmVtcywgZ2VuZXJhdG9ycywgY29uamVjdHVyZXMsIGNvbWJpbmF0b3JzLCB0eXBlUHJlZml4ZXMsIGNvbnN0cnVjdG9ycywgZGVjbGFyZWRWYXJpYWJsZXMsIGRlY2xhcmVkTWV0YXZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uKTtcblxuICAgIHRoaXMubGV4ZXIgPSBsZXhlcjtcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuZmlsZVBhdGggPSBmaWxlUGF0aDtcbiAgICB0aGlzLnRva2VucyA9IHRva2VucztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMudHlwZXMgPSB0eXBlcztcbiAgICB0aGlzLnJ1bGVzID0gcnVsZXM7XG4gICAgdGhpcy5heGlvbXMgPSBheGlvbXM7XG4gICAgdGhpcy5sZW1tYXMgPSBsZW1tYXM7XG4gICAgdGhpcy5zY2hlbWFzID0gc2NoZW1hcztcbiAgICB0aGlzLnRoZW9yZW1zID0gdGhlb3JlbXM7XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gZ2VuZXJhdG9ycztcbiAgICB0aGlzLmNvbmplY3R1cmVzID0gY29uamVjdHVyZXM7XG4gICAgdGhpcy5jb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzO1xuICAgIHRoaXMudHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcztcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldExleGVyKCkge1xuICAgIHJldHVybiB0aGlzLmxleGVyO1xuICB9XG5cbiAgZ2V0UGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlcjtcbiAgfVxuXG4gIGdldExhYmVscyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBbXTtcblxuICAgIGlmIChpbmNsdWRlUmVsZWFzZSkge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRMYWJlbHMgPSB0aGlzLmNvbnRleHQuZ2V0TGFiZWxzKCk7XG5cbiAgICAgIHB1c2gobGFiZWxzLCByZWxlYXNlQ29udGV4dExhYmVscyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBydWxlTGFiZWxzID0gcnVsZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgcnVsZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5heGlvbXMuZm9yRWFjaCgoYXhpb20pID0+IHtcbiAgICAgICAgY29uc3QgYXhpb21MYWJlbHMgPSBheGlvbS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgYXhpb21MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubGVtbWFzLmZvckVhY2goKGxlbW1hKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlbW1hTGFiZWxzID0gbGVtbWEuZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIGxlbW1hTGFiZWxzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRoZW9yZW1zLmZvckVhY2goKHRoZW9yZW0pID0+IHtcbiAgICAgICAgY29uc3QgdGhlb3JlbUxhYmVscyA9IHRoZW9yZW0uZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIHRoZW9yZW1MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY29uamVjdHVyZXMuZm9yRWFjaCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBjb25qZWN0dXJlTGFiZWxzID0gY29uamVjdHVyZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgY29uamVjdHVyZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zY2hlbWFzLmZvckVhY2goKHNjaGVtYSkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWFMYWJlbCA9IHNjaGVtYS5nZXRMYWJlbCgpO1xuXG4gICAgICAgIGxhYmVscy5wdXNoKHNjaGVtYUxhYmVsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBnZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZXM7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBnZXRSdWxlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBydWxlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFJ1bGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXM7XG5cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICBnZXRBeGlvbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgYXhpb21zID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldEF4aW9tcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5heGlvbXM7XG5cbiAgICByZXR1cm4gYXhpb21zO1xuICB9XG5cbiAgZ2V0TGVtbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRMZW1tYXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVtbWFzO1xuXG4gICAgcmV0dXJuIGxlbW1hcztcbiAgfVxuXG4gIGdldFNjaGVtYXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0U2NoZW1hcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2NoZW1hcztcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdGhlb3JlbXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRUaGVvcmVtcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZW9yZW1zO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1zO1xuICB9XG5cbiAgZ2V0R2VuZXJhdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBnZW5lcmF0b3JzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRHZW5lcmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JzO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcnM7XG4gIH1cblxuICBnZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbmplY3R1cmVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uamVjdHVyZXM7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZXM7XG4gIH1cblxuICBnZXRDb21iaW5hdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb21iaW5hdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbWJpbmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tYmluYXRvcnM7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRUeXBlUHJlZml4ZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZVByZWZpeGVzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVQcmVmaXhlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlUHJlZml4ZXM7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeGVzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3JzO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbiAgfVxuXG4gIGdldFByb2NlZHVyZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFByb2NlZHVyZXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDsgIC8vL1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZXM7XG4gIH1cblxuICBnZXRDbGFpbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbGVtbWFzID0gdGhpcy5nZXRMZW1tYXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGF4aW9tcyA9IHRoaXMuZ2V0QXhpb21zKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0aGVvcmVtcyA9IHRoaXMuZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gdGhpcy5nZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgY2xhaW1zID0gW1xuICAgICAgICAgICAgLi4ubGVtbWFzLFxuICAgICAgICAgICAgLi4uYXhpb21zLFxuICAgICAgICAgICAgLi4udGhlb3JlbXMsXG4gICAgICAgICAgICAuLi5jb25qZWN0dXJlc1xuICAgICAgICAgIF07XG5cbiAgICByZXR1cm4gY2xhaW1zO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSkge1xuICAgIHB1c2goZGVjbGFyZWRWYXJpYWJsZXMsIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCkge1xuICAgIHJldHVybiB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFRlcm1zKHRlcm1zID0gW10pIHtcbiAgICByZXR1cm4gdGVybXM7XG4gIH1cblxuICBnZXRGcmFtZXMoZnJhbWVzID0gW10pIHtcbiAgICByZXR1cm4gZnJhbWVzO1xuICB9XG5cbiAgZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzID0gW10pIHtcbiAgICByZXR1cm4gZXF1YWxpdGllcztcbiAgfVxuXG4gIGdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc2VydGlvbnM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMgPSBbXSkge1xuICAgIHJldHVybiBzdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzID0gW10pIHtcbiAgICByZXR1cm4gc2lnbmF0dXJlcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyA9IFtdKSB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhtZXRhdmFyaWFibGVzID0gW10pIHtcbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gW10pIHtcbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBjb25zdCBmYWN0T3JTdWJwcm9vZnMgPSBbXTtcblxuICAgIHJldHVybiBmYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICBhZGRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGVzLnB1c2godHlwZSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFJ1bGUocnVsZSkge1xuICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHJ1bGVTdHJpbmcgPSBydWxlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQXhpb20oYXhpb20pIHtcbiAgICB0aGlzLmF4aW9tcy5wdXNoKGF4aW9tKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGF4aW9tU3RyaW5nID0gYXhpb20uZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZExlbW1hKGxlbW1hKSB7XG4gICAgdGhpcy5sZW1tYXMucHVzaChsZW1tYSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgIGxlbW1hU3RyaW5nID0gbGVtbWEuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7bGVtbWFTdHJpbmd9JyBsZW1tYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFNjaGVtYShzY2hlbWEpIHtcbiAgICB0aGlzLnNjaGVtYXMucHVzaChzY2hlbWEpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFRoZW9yZW0odGhlb3JlbSkge1xuICAgIHRoaXMudGhlb3JlbXMucHVzaCh0aGVvcmVtKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHRoZW9yZW1TdHJpbmcgPSB0aGVvcmVtLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkR2VuZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIHRoaXMuZ2VuZXJhdG9ycy5wdXNoKGdlbmVyYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSBnZW5lcmF0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQ29uamVjdHVyZShjb25qZWN0dXJlKSB7XG4gICAgdGhpcy5jb25qZWN0dXJlcy5wdXNoKGNvbmplY3R1cmUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgb2NuamVjdHVyZVN0cmluZyA9IGNvbmplY3R1cmUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7b2NuamVjdHVyZVN0cmluZ30nIG9jbmplY3R1cmUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb21iaW5hdG9yKGNvbWJpbmF0b3IpIHtcbiAgICB0aGlzLmNvbWJpbmF0b3JzLnB1c2goY29tYmluYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gY29tYmluYXRvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvciB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFR5cGVQcmVmaXgodHlwZVByZWZpeCkge1xuICAgIHRoaXMudHlwZVByZWZpeGVzLnB1c2godHlwZVByZWZpeCk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlUHJlZml4U3RyaW5nID0gdHlwZVByZWZpeC5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlUHJlZml4U3RyaW5nfScgdHlwZS1wcmVmaXggdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcikge1xuICAgIHRoaXMuY29uc3RydWN0b3JzLnB1c2goY29uc3RydWN0b3IpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSBjb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRWYXJpYWJsZShkZWNsYXJlZFZhcmlhYmxlKSB7XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkVmFyaWFibGUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUoZGVjbGFyZWRNZXRhdmFyaWFibGUpIHtcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRNZXRhdmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCBtZXRhdmFyaWFibGUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICBtZXRhdmFyaWFibGUgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXMuZmluZCgoZGVjbGFyZWRNZXRhdmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZVVuaWZpZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS51bmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlVW5pZmllcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgcnVsZXMgPSB0aGlzLmdldFJ1bGVzKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgcnVsZSA9IHJ1bGVzLmZpbmQoKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gcnVsZS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICBmaW5kQXhpb21CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBheGlvbXMgPSB0aGlzLmdldEF4aW9tcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGF4aW9tID0gYXhpb21zLmZpbmQoKGF4aW9tKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGF4aW9tLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH1cblxuICBmaW5kTGVtbWFCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBsZW1tYXMgPSB0aGlzLmdldExlbW1hcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGxlbW1hID0gbGVtbWFzLmZpbmQoKGxlbW1hKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGxlbW1hLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbGVtbWE7XG4gIH1cblxuICBmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IHRoZW9yZW1zID0gdGhpcy5nZXRUaGVvcmVtcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIHRoZW9yZW0gPSB0aGVvcmVtcy5maW5kKCh0aGVvcmVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoZW9yZW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9XG5cbiAgZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IHRoaXMuZ2V0Q29uamVjdHVyZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICBjb25qZWN0dXJlID0gY29uamVjdHVyZXMuZmluZCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBjb25qZWN0dXJlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfVxuXG4gIGZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNsYWltcyA9IHRoaXMuZ2V0Q2xhaW1zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgY2xhaW0gPSBjbGFpbXMuZmluZCgoY2xhaW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gY2xhaW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxuXG4gIGZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlID0gZmluZFR5cGUodHlwZXMsICh0eXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5nZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgdHlwZSA9IGZpbmRUeXBlKHR5cGVzLCAodHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0eXBlLmNvbXBhcmVOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZ2V0VHlwZXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGUgPSBmaW5kVHlwZSh0eXBlcywgKHR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVDb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHR5cGUuY29tcGFyZVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSh0eXBlUHJlZml4TmFtZSkge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhlcyA9IHRoaXMuZ2V0VHlwZVByZWZpeGVzKCksXG4gICAgICAgICAgdHlwZVByZWZpeCA9IHR5cGVQcmVmaXhlcy5maW5kKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlUHJlZml4Q29tcGFyZXNUb1R5cGVQcmVmaXhOYW1lID0gdHlwZVByZWZpeC5jb21wYXJlVHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpIHtcbiAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gZGVjbGFyZWRWYXJpYWJsZXMuZmluZCgoZGVjbGFyZWRWYXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyID0gZGVjbGFyZWRWYXJpYWJsZS5jb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpO1xuXG4gICAgICAgICAgICBpZiAoZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBkZWNsYXJlZFZhcmlhYmxlcztcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpO1xuXG4gICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcy5maWx0ZXIoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBpZiAodmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldERlY2xhcmVkTWV0YXZhcmlhYmxlcygpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLmZpbmQoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuY29tcGFyZU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVzID0gdGhpcy5nZXRQcm9jZWR1cmVzKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gcHJvY2VkdXJlcy5maW5kKChwcm9jZWR1cmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lID0gcHJvY2VkdXJlLmNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAocHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHsgcmV0dXJuIGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7IH1cblxuICBpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlKGxhYmVsTm9kZSkge1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuZ2V0TGFiZWxzKCksXG4gICAgICBsYWJlbFByZXNlbnQgPSBsYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWxOb2RlTWF0Y2hlcyA9IGxhYmVsLm1hdGNoTGFiZWxOb2RlKGxhYmVsTm9kZSk7XG5cbiAgICAgICAgaWYgKGxhYmVsTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbGFiZWxQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9ICh0eXBlICE9PSBudWxsKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpIHtcbiAgICBjb25zdCB0eXBlUHJlZml4ID0gdGhpcy5maW5kVHlwZVByZWZpeEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpLFxuICAgICAgICAgIHR5cGVQcmVmaXhQcmVzZW50ID0gKHR5cGVQcmVmaXggIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhQcmVzZW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZFZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IHRoaXMuZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZE1ldGF2YXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmUgPSB0aGlzLmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IChwcm9jZWR1cmUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc01ldGFMZXZlbCgpIHtcbiAgICBjb25zdCBtZXRhTEV2ZWwgPSBmYWxzZTtcblxuICAgIHJldHVybiBtZXRhTEV2ZWw7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnR5cGVzID0gW107XG4gICAgdGhpcy5ydWxlcyA9IFtdO1xuICAgIHRoaXMuYXhpb21zID0gW107XG4gICAgdGhpcy5sZW1tYXMgPSBbXTtcbiAgICB0aGlzLnNjaGVtYXMgPSBbXTtcbiAgICB0aGlzLnRoZW9yZW1zID0gW107XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gW107XG4gICAgdGhpcy5jb25qZWN0dXJlcyA9IFtdO1xuICAgIHRoaXMuY29tYmluYXRvcnMgPSBbXTtcbiAgICB0aGlzLnR5cGVQcmVmaXhlcyA9IFtdO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gW107XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcyA9IFtdO1xuICAgIHRoaXMuZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gW107XG4gIH1cblxuICBjb21wbGV0ZSgpIHtcbiAgICAvLy9cbiAgfVxuXG4gIHZlcmlmeUZpbGUoY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBmaWxlTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiB2ZXJpZnlGaWxlKGZpbGVOb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgaW5pdGlhbGlzZSgpIHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5nZXRKU09OKCk7XG5cbiAgICBpZiAoanNvbiA9PT0gbnVsbCkge1xuICAgICAgc3VwZXIuaW5pdGlhbGlzZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZUNvbnRleHQgPSB0aGlzOyAvLy9cblxuICAgIHRoaXMudHlwZXMgPSBbXTtcblxuICAgIHR5cGVzRnJvbUpTT04oanNvbiwgdGhpcy50eXBlcywgZmlsZUNvbnRleHQpO1xuXG4gICAgdGhpcy5sZW1tYXMgPSBbXTtcblxuICAgIHRoaXMuZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB0aGlzLnR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB0aGlzLmdlbmVyYXRvcnMgPSBnZW5lcmF0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB0aGlzLmNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHRoaXMucnVsZXMgPSBydWxlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB0aGlzLmF4aW9tcyA9IGF4aW9tc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB0aGlzLnNjaGVtYXMgPSBzY2hlbWFzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMudGhlb3JlbXMgPSB0aGVvcmVtc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB0aGlzLmNvbmplY3R1cmVzID0gY29uamVjdHVyZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZXNKU09OID0gdHlwZXNUb1R5cGVzSlNPTih0aGlzLnR5cGVzKSxcbiAgICAgICAgICBydWxlc0pTT04gPSBydWxlc1RvUnVsZXNKU09OKHRoaXMucnVsZXMpLFxuICAgICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXNUb0F4aW9tc0pTT04odGhpcy5heGlvbXMpLFxuICAgICAgICAgIHNjaGVtYXNKU09OID0gc2NoZW1hc1RvU2NoZW1hc0pTT04odGhpcy5zY2hlbWFzKSxcbiAgICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoaXMudGhlb3JlbXMpLFxuICAgICAgICAgIGdlbmVyYXRvcnNKU09OID0gZ2VuZXJhdG9yc1RvR2VuZXJhdG9yc0pTT04odGhpcy5nZW5lcmF0b3JzKSxcbiAgICAgICAgICBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OKHRoaXMuY29uamVjdHVyZXMpLFxuICAgICAgICAgIGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04odGhpcy5jb21iaW5hdG9ycyksXG4gICAgICAgICAgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTih0aGlzLnR5cGVQcmVmaXhlcyksXG4gICAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTih0aGlzLmNvbnN0cnVjdG9ycyksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXNUb0RlY2xhcmVkVmFyaWFibGVzSlNPTih0aGlzLmRlY2xhcmVkVmFyaWFibGVzKSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OKHRoaXMuZGVjbGFyZWRNZXRhdmFyaWFibGVzKSxcbiAgICAgICAgICBmaWxlQ29udGVudCA9IHRoaXMuZ2V0RmlsZUNvbnRlbnQoKSxcbiAgICAgICAgICBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlcyA9IHR5cGVzSlNPTiwgIC8vL1xuICAgICAgICAgIHJ1bGVzID0gcnVsZXNKU09OLCAgLy8vXG4gICAgICAgICAgYXhpb21zID0gYXhpb21zSlNPTiwgIC8vL1xuICAgICAgICAgIHNjaGVtYXMgPSBzY2hlbWFzSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW1zID0gdGhlb3JlbXNKU09OLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhdG9ycyA9IGdlbmVyYXRvcnNKU09OLCAgLy8vXG4gICAgICAgICAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnNKU09OLCAgLy8vXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlc0pTT04sICAvLy9cbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIGZpbGVDb250ZW50LFxuICAgICAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgICAgICB0eXBlcyxcbiAgICAgICAgICAgIHJ1bGVzLFxuICAgICAgICAgICAgYXhpb21zLFxuICAgICAgICAgICAgc2NoZW1hcyxcbiAgICAgICAgICAgIHRoZW9yZW1zLFxuICAgICAgICAgICAgZ2VuZXJhdG9ycyxcbiAgICAgICAgICAgIGNvbmplY3R1cmVzLFxuICAgICAgICAgICAgY29tYmluYXRvcnMsXG4gICAgICAgICAgICB0eXBlUHJlZml4ZXMsXG4gICAgICAgICAgICBjb25zdHJ1Y3RvcnMsXG4gICAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyxcbiAgICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlc1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRmlsZShmaWxlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICBjb21iaW5lZEN1c3RvbUdyYW1tYXIgPSByZWxlYXNlQ29udGV4dC5nZXRDb21iaW5lZEN1c3RvbUdyYW1tYXIoKSxcbiAgICAgICAgICBub21pbmFsTGV4ZXIgPSBub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKE5vbWluYWxMZXhlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBub21pbmFsUGFyc2VyID0gbm9taW5hbFBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbFBhcnNlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBsZXhlciA9IG5vbWluYWxMZXhlciwgLy8vXG4gICAgICAgICAgcGFyc2VyID0gbm9taW5hbFBhcnNlciwgLy8vXG4gICAgICAgICAgdHlwZXMgPSBbXSxcbiAgICAgICAgICBydWxlcyA9IFtdLFxuICAgICAgICAgIGF4aW9tcyA9IFtdLFxuICAgICAgICAgIGxlbW1hcyA9IFtdLFxuICAgICAgICAgIHNjaGVtYXMgPSBbXSxcbiAgICAgICAgICB0aGVvcmVtcyA9IFtdLFxuICAgICAgICAgIGdlbmVyYXRvcnMgPSBbXSxcbiAgICAgICAgICBjb25qZWN0dXJlcyA9IFtdLFxuICAgICAgICAgIGNvbWJpbmF0b3JzID0gW10sXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gW10sXG4gICAgICAgICAgY29uc3RydWN0b3JzID0gW10sXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICBub21pbmFsRmlsZUNvbnRleHQgPSBGaWxlQ29udGV4dC5mcm9tRmlsZShOb21pbmFsRmlsZUNvbnRleHQsIGZpbGUsIGxleGVyLCBwYXJzZXIsIHR5cGVzLCBydWxlcywgYXhpb21zLCBsZW1tYXMsIHNjaGVtYXMsIHRoZW9yZW1zLCBnZW5lcmF0b3JzLCBjb25qZWN0dXJlcywgY29tYmluYXRvcnMsIHR5cGVQcmVmaXhlcywgY29uc3RydWN0b3JzLCBkZWNsYXJlZFZhcmlhYmxlcywgZGVjbGFyZWRNZXRhdmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBub21pbmFsRmlsZUNvbnRleHQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgICAgY29tYmluZWRDdXN0b21HcmFtbWFyID0gcmVsZWFzZUNvbnRleHQuZ2V0Q29tYmluZWRDdXN0b21HcmFtbWFyKCksXG4gICAgICAgICAgbm9taW5hbExleGVyID0gbm9taW5hbExleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihOb21pbmFsTGV4ZXIsIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciksXG4gICAgICAgICAgbm9taW5hbFBhcnNlciA9IG5vbWluYWxQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKE5vbWluYWxQYXJzZXIsIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciksXG4gICAgICAgICAgbGV4ZXIgPSBub21pbmFsTGV4ZXIsIC8vL1xuICAgICAgICAgIHBhcnNlciA9IG5vbWluYWxQYXJzZXIsIC8vL1xuICAgICAgICAgIHR5cGVzID0gbnVsbCxcbiAgICAgICAgICBydWxlcyA9IG51bGwsXG4gICAgICAgICAgYXhpb21zID0gbnVsbCxcbiAgICAgICAgICBsZW1tYXMgPSBudWxsLFxuICAgICAgICAgIHNjaGVtYXMgPSBudWxsLFxuICAgICAgICAgIHRoZW9yZW1zID0gbnVsbCxcbiAgICAgICAgICBnZW5lcmF0b3JzID0gbnVsbCxcbiAgICAgICAgICBjb25qZWN0dXJlcyA9IG51bGwsXG4gICAgICAgICAgY29tYmluYXRvcnMgPSBudWxsLFxuICAgICAgICAgIHR5cGVQcmVmaXhlcyA9IG51bGwsXG4gICAgICAgICAgY29uc3RydWN0b3JzID0gbnVsbCxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IG51bGwsXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gbnVsbCxcbiAgICAgICAgICBub21pbmFsRmlsZUNvbnRleHQgPSBGaWxlQ29udGV4dC5mcm9tSlNPTihOb21pbmFsRmlsZUNvbnRleHQsIGpzb24sIGxleGVyLCBwYXJzZXIsIHR5cGVzLCBydWxlcywgYXhpb21zLCBsZW1tYXMsIHNjaGVtYXMsIHRoZW9yZW1zLCBnZW5lcmF0b3JzLCBjb25qZWN0dXJlcywgY29tYmluYXRvcnMsIHR5cGVQcmVmaXhlcywgY29uc3RydWN0b3JzLCBkZWNsYXJlZFZhcmlhYmxlcywgZGVjbGFyZWRNZXRhdmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBub21pbmFsRmlsZUNvbnRleHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJOb21pbmFsRmlsZUNvbnRleHQiLCJwdXNoIiwiYXJyYXlVdGlsaXRpZXMiLCJub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIiwibm9taW5hbFBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJub21pbmFsVXRpbGl0aWVzIiwiRmlsZUNvbnRleHQiLCJjb250ZXh0IiwiZmlsZUNvbnRlbnQiLCJmaWxlUGF0aCIsInRva2VucyIsIm5vZGUiLCJqc29uIiwibGV4ZXIiLCJwYXJzZXIiLCJ0eXBlcyIsInJ1bGVzIiwiYXhpb21zIiwibGVtbWFzIiwic2NoZW1hcyIsInRoZW9yZW1zIiwiZ2VuZXJhdG9ycyIsImNvbmplY3R1cmVzIiwiY29tYmluYXRvcnMiLCJ0eXBlUHJlZml4ZXMiLCJjb25zdHJ1Y3RvcnMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImdldExleGVyIiwiZ2V0UGFyc2VyIiwiZ2V0TGFiZWxzIiwiaW5jbHVkZVJlbGVhc2UiLCJsYWJlbHMiLCJyZWxlYXNlQ29udGV4dExhYmVscyIsImZvckVhY2giLCJydWxlIiwicnVsZUxhYmVscyIsImF4aW9tIiwiYXhpb21MYWJlbHMiLCJsZW1tYSIsImxlbW1hTGFiZWxzIiwidGhlb3JlbSIsInRoZW9yZW1MYWJlbHMiLCJjb25qZWN0dXJlIiwiY29uamVjdHVyZUxhYmVscyIsInNjaGVtYSIsInNjaGVtYUxhYmVsIiwiZ2V0TGFiZWwiLCJnZXRUeXBlcyIsImdldFJ1bGVzIiwiZ2V0QXhpb21zIiwiZ2V0TGVtbWFzIiwiZ2V0U2NoZW1hcyIsImdldFRoZW9yZW1zIiwiZ2V0R2VuZXJhdG9ycyIsImdldENvbmplY3R1cmVzIiwiZ2V0Q29tYmluYXRvcnMiLCJnZXRUeXBlUHJlZml4ZXMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJnZXRQcm9jZWR1cmVzIiwicHJvY2VkdXJlcyIsImdldENsYWltcyIsImNsYWltcyIsImdldERlY2xhcmVkVmFyaWFibGVzIiwiZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZ2V0VGVybXMiLCJ0ZXJtcyIsImdldEZyYW1lcyIsImZyYW1lcyIsImdldEVxdWFsaXRpZXMiLCJlcXVhbGl0aWVzIiwiZ2V0QXNzZXJ0aW9ucyIsImFzc2VydGlvbnMiLCJnZXRTdGF0ZW1lbnRzIiwic3RhdGVtZW50cyIsImdldFNpZ25hdHVyZXMiLCJzaWduYXR1cmVzIiwiZ2V0UmVmZXJlbmNlcyIsInJlZmVyZW5jZXMiLCJnZXRBc3N1bXB0aW9ucyIsImFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXMiLCJnZXRTdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9ucyIsImdldEluZmVycmVkU3Vic3RpdHV0aW9ucyIsImluZmVycmVkU3Vic3RpdHV0aW9ucyIsImdldEVxdWl2YWxlbmNlcyIsImVxdWl2YWxlbmNlcyIsImdldEZhY3RPclN1YnByb29mcyIsImZhY3RPclN1YnByb29mcyIsImFkZFR5cGUiLCJ0eXBlIiwiZ2V0RmlsZVBhdGgiLCJ0eXBlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhZGRSdWxlIiwicnVsZVN0cmluZyIsImFkZEF4aW9tIiwiYXhpb21TdHJpbmciLCJhZGRMZW1tYSIsImxlbW1hU3RyaW5nIiwiYWRkU2NoZW1hIiwic2NoZW1hU3RyaW5nIiwiYWRkVGhlb3JlbSIsInRoZW9yZW1TdHJpbmciLCJhZGRHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJnZW5lcmF0b3JTdHJpbmciLCJhZGRDb25qZWN0dXJlIiwib2NuamVjdHVyZVN0cmluZyIsImFkZENvbWJpbmF0b3IiLCJjb21iaW5hdG9yIiwiY29tYmluYXRvclN0cmluZyIsImFkZFR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4IiwidHlwZVByZWZpeFN0cmluZyIsImFkZENvbnN0cnVjdG9yIiwiY29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvclN0cmluZyIsImFkZERlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlIiwiZGVjbGFyZWRWYXJpYWJsZVN0cmluZyIsImFkZERlY2xhcmVkTWV0YXZhcmlhYmxlIiwiZGVjbGFyZWRNZXRhdmFyaWFibGUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZVN0cmluZyIsImZpbmRNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJmaW5kIiwibWV0YXZhcmlhYmxlVW5pZmllcyIsInVuaWZ5TWV0YXZhcmlhYmxlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZSIsInJlZmVyZW5jZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kQXhpb21CeVJlZmVyZW5jZSIsImZpbmRMZW1tYUJ5UmVmZXJlbmNlIiwiZmluZFRoZW9yZW1CeVJlZmVyZW5jZSIsImZpbmRDb25qZWN0dXJlQnlSZWZlcmVuY2UiLCJmaW5kQ2xhaW1CeVJlZmVyZW5jZSIsImNsYWltIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidHlwZU5hbWUiLCJmaW5kVHlwZSIsInR5cGVDb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwidHlwZUNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUiLCJjb21wYXJlTm9taW5hbFR5cGVOYW1lIiwiZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUiLCJwcmVmaXhlZFR5cGVOYW1lIiwidHlwZUNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lIiwiY29tcGFyZVByZWZpeGVkVHlwZU5hbWUiLCJmaW5kVHlwZVByZWZpeEJ5VHlwZVByZWZpeE5hbWUiLCJ0eXBlUHJlZml4TmFtZSIsInR5cGVQcmVmaXhDb21wYXJlc1RvVHlwZVByZWZpeE5hbWUiLCJjb21wYXJlVHlwZVByZWZpeE5hbWUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwiVmFyaWFibGVJZGVudGl0aWZlciIsImRlY2xhcmVkVmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGl0aWZlciIsImNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllciIsImZpbHRlciIsInZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lIiwiY29tcGFyZU1ldGF2YXJpYWJsZU5hbWUiLCJmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZSIsInByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lIiwiY29tcGFyZVByb2NlZHVyZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZSIsImlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUiLCJsYWJlbE5vZGUiLCJsYWJlbFByZXNlbnQiLCJzb21lIiwibGFiZWwiLCJsYWJlbE5vZGVNYXRjaGVzIiwibWF0Y2hMYWJlbE5vZGUiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lIiwiaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZWZpeFByZXNlbnRCeVR5cGVQcmVmaXhOYW1lIiwidHlwZVByZWZpeFByZXNlbnQiLCJpc0RlY2xhcmVkVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCIsImlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50IiwiaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlUHJlc2VudCIsImlzTWV0YUxldmVsIiwibWV0YUxFdmVsIiwiY2xlYXIiLCJjb21wbGV0ZSIsInZlcmlmeUZpbGUiLCJjb250aW51YXRpb24iLCJnZXROb2RlIiwiZmlsZU5vZGUiLCJpbml0aWFsaXNlIiwiZ2V0SlNPTiIsImZpbGVDb250ZXh0IiwidHlwZXNGcm9tSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwiZ2VuZXJhdG9yc0Zyb21KU09OIiwiY29tYmluYXRvcnNGcm9tSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwicnVsZXNGcm9tSlNPTiIsImF4aW9tc0Zyb21KU09OIiwic2NoZW1hc0Zyb21KU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsImNvbmplY3R1cmVzRnJvbUpTT04iLCJ0b0pTT04iLCJ0eXBlc0pTT04iLCJ0eXBlc1RvVHlwZXNKU09OIiwicnVsZXNKU09OIiwicnVsZXNUb1J1bGVzSlNPTiIsImF4aW9tc0pTT04iLCJheGlvbXNUb0F4aW9tc0pTT04iLCJzY2hlbWFzSlNPTiIsInNjaGVtYXNUb1NjaGVtYXNKU09OIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsImdlbmVyYXRvcnNKU09OIiwiZ2VuZXJhdG9yc1RvR2VuZXJhdG9yc0pTT04iLCJjb25qZWN0dXJlc0pTT04iLCJjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTiIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04iLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNUb0RlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJnZXRGaWxlQ29udGVudCIsImZyb21GaWxlIiwiZmlsZSIsInJlbGVhc2VDb250ZXh0IiwiY29tYmluZWRDdXN0b21HcmFtbWFyIiwiZ2V0Q29tYmluZWRDdXN0b21HcmFtbWFyIiwibm9taW5hbExleGVyIiwiTm9taW5hbExleGVyIiwibm9taW5hbFBhcnNlciIsIk5vbWluYWxQYXJzZXIiLCJub21pbmFsRmlsZUNvbnRleHQiLCJmcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBdUNBOzs7ZUFBcUJBOzs7Z0NBckN5QjsyQkFDZjs4REFFTjsrREFD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
|
|
512
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0L2ZpbGUvbm9taW5hbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRmlsZUNvbnRleHQsIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IE5vbWluYWxMZXhlciBmcm9tIFwiLi4vLi4vbm9taW5hbC9sZXhlclwiO1xuaW1wb3J0IE5vbWluYWxQYXJzZXIgZnJvbSBcIi4uLy4uL25vbWluYWwvcGFyc2VyXCI7XG5cbmltcG9ydCB7IGZpbmRUeXBlfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IHZlcmlmeUZpbGUgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy92ZXJpZnlcIjtcbmltcG9ydCB7IGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIH0gZnJvbSBcIi4uLy4uL21ldGFUeXBlc1wiO1xuaW1wb3J0IHsgdHlwZXNGcm9tSlNPTixcbiAgICAgICAgIHJ1bGVzRnJvbUpTT04sXG4gICAgICAgICBheGlvbXNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNGcm9tSlNPTixcbiAgICAgICAgIHR5cGVzVG9UeXBlc0pTT04sXG4gICAgICAgICB0aGVvcmVtc0Zyb21KU09OLFxuICAgICAgICAgcnVsZXNUb1J1bGVzSlNPTixcbiAgICAgICAgIGF4aW9tc1RvQXhpb21zSlNPTixcbiAgICAgICAgIGdlbmVyYXRvcnNGcm9tSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzRnJvbUpTT04sXG4gICAgICAgICBjb21iaW5hdG9yc0Zyb21KU09OLFxuICAgICAgICAgdHlwZVByZWZpeGVzRnJvbUpTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNUb1NjaGVtYXNKU09OLFxuICAgICAgICAgdGhlb3JlbXNUb1RoZW9yZW1zSlNPTixcbiAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04sXG4gICAgICAgICBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04sXG4gICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIsIG5vbWluYWxQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBub21pbmFsVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb21pbmFsRmlsZUNvbnRleHQgZXh0ZW5kcyBGaWxlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uLCBsZXhlciwgcGFyc2VyLCB0eXBlcywgcnVsZXMsIGF4aW9tcywgbGVtbWFzLCBzY2hlbWFzLCB0aGVvcmVtcywgZ2VuZXJhdG9ycywgY29uamVjdHVyZXMsIGNvbWJpbmF0b3JzLCB0eXBlUHJlZml4ZXMsIGNvbnN0cnVjdG9ycywgZGVjbGFyZWRWYXJpYWJsZXMsIGRlY2xhcmVkTWV0YXZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uKTtcblxuICAgIHRoaXMubGV4ZXIgPSBsZXhlcjtcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuZmlsZVBhdGggPSBmaWxlUGF0aDtcbiAgICB0aGlzLnRva2VucyA9IHRva2VucztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMudHlwZXMgPSB0eXBlcztcbiAgICB0aGlzLnJ1bGVzID0gcnVsZXM7XG4gICAgdGhpcy5heGlvbXMgPSBheGlvbXM7XG4gICAgdGhpcy5sZW1tYXMgPSBsZW1tYXM7XG4gICAgdGhpcy5zY2hlbWFzID0gc2NoZW1hcztcbiAgICB0aGlzLnRoZW9yZW1zID0gdGhlb3JlbXM7XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gZ2VuZXJhdG9ycztcbiAgICB0aGlzLmNvbmplY3R1cmVzID0gY29uamVjdHVyZXM7XG4gICAgdGhpcy5jb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzO1xuICAgIHRoaXMudHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcztcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldExleGVyKCkge1xuICAgIHJldHVybiB0aGlzLmxleGVyO1xuICB9XG5cbiAgZ2V0UGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlcjtcbiAgfVxuXG4gIGdldExhYmVscyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBbXTtcblxuICAgIGlmIChpbmNsdWRlUmVsZWFzZSkge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRMYWJlbHMgPSB0aGlzLmNvbnRleHQuZ2V0TGFiZWxzKCk7XG5cbiAgICAgIHB1c2gobGFiZWxzLCByZWxlYXNlQ29udGV4dExhYmVscyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBydWxlTGFiZWxzID0gcnVsZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgcnVsZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5heGlvbXMuZm9yRWFjaCgoYXhpb20pID0+IHtcbiAgICAgICAgY29uc3QgYXhpb21MYWJlbHMgPSBheGlvbS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgYXhpb21MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubGVtbWFzLmZvckVhY2goKGxlbW1hKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlbW1hTGFiZWxzID0gbGVtbWEuZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIGxlbW1hTGFiZWxzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRoZW9yZW1zLmZvckVhY2goKHRoZW9yZW0pID0+IHtcbiAgICAgICAgY29uc3QgdGhlb3JlbUxhYmVscyA9IHRoZW9yZW0uZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIHRoZW9yZW1MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY29uamVjdHVyZXMuZm9yRWFjaCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBjb25qZWN0dXJlTGFiZWxzID0gY29uamVjdHVyZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgY29uamVjdHVyZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zY2hlbWFzLmZvckVhY2goKHNjaGVtYSkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWFMYWJlbCA9IHNjaGVtYS5nZXRMYWJlbCgpO1xuXG4gICAgICAgIGxhYmVscy5wdXNoKHNjaGVtYUxhYmVsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBnZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZXM7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBnZXRSdWxlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBydWxlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFJ1bGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXM7XG5cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICBnZXRBeGlvbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgYXhpb21zID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldEF4aW9tcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5heGlvbXM7XG5cbiAgICByZXR1cm4gYXhpb21zO1xuICB9XG5cbiAgZ2V0TGVtbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRMZW1tYXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVtbWFzO1xuXG4gICAgcmV0dXJuIGxlbW1hcztcbiAgfVxuXG4gIGdldFNjaGVtYXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0U2NoZW1hcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2NoZW1hcztcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdGhlb3JlbXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRUaGVvcmVtcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZW9yZW1zO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1zO1xuICB9XG5cbiAgZ2V0R2VuZXJhdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBnZW5lcmF0b3JzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRHZW5lcmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JzO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcnM7XG4gIH1cblxuICBnZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbmplY3R1cmVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uamVjdHVyZXM7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZXM7XG4gIH1cblxuICBnZXRDb21iaW5hdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb21iaW5hdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbWJpbmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tYmluYXRvcnM7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRUeXBlUHJlZml4ZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZVByZWZpeGVzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVQcmVmaXhlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlUHJlZml4ZXM7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeGVzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3JzO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbiAgfVxuXG4gIGdldFByb2NlZHVyZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFByb2NlZHVyZXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDsgIC8vL1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZXM7XG4gIH1cblxuICBnZXRDbGFpbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbGVtbWFzID0gdGhpcy5nZXRMZW1tYXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGF4aW9tcyA9IHRoaXMuZ2V0QXhpb21zKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0aGVvcmVtcyA9IHRoaXMuZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gdGhpcy5nZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgY2xhaW1zID0gW1xuICAgICAgICAgICAgLi4ubGVtbWFzLFxuICAgICAgICAgICAgLi4uYXhpb21zLFxuICAgICAgICAgICAgLi4udGhlb3JlbXMsXG4gICAgICAgICAgICAuLi5jb25qZWN0dXJlc1xuICAgICAgICAgIF07XG5cbiAgICByZXR1cm4gY2xhaW1zO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSkge1xuICAgIHB1c2goZGVjbGFyZWRWYXJpYWJsZXMsIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCkge1xuICAgIHJldHVybiB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFRlcm1zKHRlcm1zID0gW10pIHtcbiAgICByZXR1cm4gdGVybXM7XG4gIH1cblxuICBnZXRGcmFtZXMoZnJhbWVzID0gW10pIHtcbiAgICByZXR1cm4gZnJhbWVzO1xuICB9XG5cbiAgZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzID0gW10pIHtcbiAgICByZXR1cm4gZXF1YWxpdGllcztcbiAgfVxuXG4gIGdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc2VydGlvbnM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMgPSBbXSkge1xuICAgIHJldHVybiBzdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzID0gW10pIHtcbiAgICByZXR1cm4gc2lnbmF0dXJlcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyA9IFtdKSB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhtZXRhdmFyaWFibGVzID0gW10pIHtcbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gW10pIHtcbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBjb25zdCBmYWN0T3JTdWJwcm9vZnMgPSBbXTtcblxuICAgIHJldHVybiBmYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICBhZGRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGVzLnB1c2godHlwZSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFJ1bGUocnVsZSkge1xuICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHJ1bGVTdHJpbmcgPSBydWxlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQXhpb20oYXhpb20pIHtcbiAgICB0aGlzLmF4aW9tcy5wdXNoKGF4aW9tKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGF4aW9tU3RyaW5nID0gYXhpb20uZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZExlbW1hKGxlbW1hKSB7XG4gICAgdGhpcy5sZW1tYXMucHVzaChsZW1tYSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgIGxlbW1hU3RyaW5nID0gbGVtbWEuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7bGVtbWFTdHJpbmd9JyBsZW1tYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFNjaGVtYShzY2hlbWEpIHtcbiAgICB0aGlzLnNjaGVtYXMucHVzaChzY2hlbWEpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFRoZW9yZW0odGhlb3JlbSkge1xuICAgIHRoaXMudGhlb3JlbXMucHVzaCh0aGVvcmVtKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHRoZW9yZW1TdHJpbmcgPSB0aGVvcmVtLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkR2VuZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIHRoaXMuZ2VuZXJhdG9ycy5wdXNoKGdlbmVyYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSBnZW5lcmF0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQ29uamVjdHVyZShjb25qZWN0dXJlKSB7XG4gICAgdGhpcy5jb25qZWN0dXJlcy5wdXNoKGNvbmplY3R1cmUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgb2NuamVjdHVyZVN0cmluZyA9IGNvbmplY3R1cmUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7b2NuamVjdHVyZVN0cmluZ30nIG9jbmplY3R1cmUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb21iaW5hdG9yKGNvbWJpbmF0b3IpIHtcbiAgICB0aGlzLmNvbWJpbmF0b3JzLnB1c2goY29tYmluYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gY29tYmluYXRvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvciB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFR5cGVQcmVmaXgodHlwZVByZWZpeCkge1xuICAgIHRoaXMudHlwZVByZWZpeGVzLnB1c2godHlwZVByZWZpeCk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlUHJlZml4U3RyaW5nID0gdHlwZVByZWZpeC5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlUHJlZml4U3RyaW5nfScgdHlwZS1wcmVmaXggdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcikge1xuICAgIHRoaXMuY29uc3RydWN0b3JzLnB1c2goY29uc3RydWN0b3IpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSBjb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRWYXJpYWJsZShkZWNsYXJlZFZhcmlhYmxlKSB7XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkVmFyaWFibGUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUoZGVjbGFyZWRNZXRhdmFyaWFibGUpIHtcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRNZXRhdmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCBtZXRhdmFyaWFibGUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICBtZXRhdmFyaWFibGUgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXMuZmluZCgoZGVjbGFyZWRNZXRhdmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZVVuaWZpZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS51bmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlVW5pZmllcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgcnVsZXMgPSB0aGlzLmdldFJ1bGVzKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgcnVsZSA9IHJ1bGVzLmZpbmQoKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gcnVsZS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICBmaW5kQXhpb21CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBheGlvbXMgPSB0aGlzLmdldEF4aW9tcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGF4aW9tID0gYXhpb21zLmZpbmQoKGF4aW9tKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGF4aW9tLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH1cblxuICBmaW5kTGVtbWFCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBsZW1tYXMgPSB0aGlzLmdldExlbW1hcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGxlbW1hID0gbGVtbWFzLmZpbmQoKGxlbW1hKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGxlbW1hLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbGVtbWE7XG4gIH1cblxuICBmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IHRoZW9yZW1zID0gdGhpcy5nZXRUaGVvcmVtcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIHRoZW9yZW0gPSB0aGVvcmVtcy5maW5kKCh0aGVvcmVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoZW9yZW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9XG5cbiAgZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IHRoaXMuZ2V0Q29uamVjdHVyZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICBjb25qZWN0dXJlID0gY29uamVjdHVyZXMuZmluZCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBjb25qZWN0dXJlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfVxuXG4gIGZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNsYWltcyA9IHRoaXMuZ2V0Q2xhaW1zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgY2xhaW0gPSBjbGFpbXMuZmluZCgoY2xhaW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gY2xhaW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxuXG4gIGZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlID0gZmluZFR5cGUodHlwZXMsICh0eXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5nZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgdHlwZSA9IGZpbmRUeXBlKHR5cGVzLCAodHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0eXBlLmNvbXBhcmVOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZ2V0VHlwZXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGUgPSBmaW5kVHlwZSh0eXBlcywgKHR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVDb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHR5cGUuY29tcGFyZVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSh0eXBlUHJlZml4TmFtZSkge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhlcyA9IHRoaXMuZ2V0VHlwZVByZWZpeGVzKCksXG4gICAgICAgICAgdHlwZVByZWZpeCA9IHR5cGVQcmVmaXhlcy5maW5kKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlUHJlZml4Q29tcGFyZXNUb1R5cGVQcmVmaXhOYW1lID0gdHlwZVByZWZpeC5jb21wYXJlVHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpIHtcbiAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gZGVjbGFyZWRWYXJpYWJsZXMuZmluZCgoZGVjbGFyZWRWYXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyID0gZGVjbGFyZWRWYXJpYWJsZS5jb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpO1xuXG4gICAgICAgICAgICBpZiAoZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBkZWNsYXJlZFZhcmlhYmxlcztcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpO1xuXG4gICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcy5maWx0ZXIoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBpZiAodmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldERlY2xhcmVkTWV0YXZhcmlhYmxlcygpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLmZpbmQoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuY29tcGFyZU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVzID0gdGhpcy5nZXRQcm9jZWR1cmVzKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gcHJvY2VkdXJlcy5maW5kKChwcm9jZWR1cmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lID0gcHJvY2VkdXJlLmNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAocHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHsgcmV0dXJuIGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7IH1cblxuICBpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlKGxhYmVsTm9kZSkge1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuZ2V0TGFiZWxzKCksXG4gICAgICBsYWJlbFByZXNlbnQgPSBsYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWxOb2RlTWF0Y2hlcyA9IGxhYmVsLm1hdGNoTGFiZWxOb2RlKGxhYmVsTm9kZSk7XG5cbiAgICAgICAgaWYgKGxhYmVsTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbGFiZWxQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9ICh0eXBlICE9PSBudWxsKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpIHtcbiAgICBjb25zdCB0eXBlUHJlZml4ID0gdGhpcy5maW5kVHlwZVByZWZpeEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpLFxuICAgICAgICAgIHR5cGVQcmVmaXhQcmVzZW50ID0gKHR5cGVQcmVmaXggIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhQcmVzZW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZFZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IHRoaXMuZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZE1ldGF2YXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmUgPSB0aGlzLmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IChwcm9jZWR1cmUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc01ldGFMZXZlbCgpIHtcbiAgICBjb25zdCBtZXRhTEV2ZWwgPSBmYWxzZTtcblxuICAgIHJldHVybiBtZXRhTEV2ZWw7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnR5cGVzID0gW107XG4gICAgdGhpcy5ydWxlcyA9IFtdO1xuICAgIHRoaXMuYXhpb21zID0gW107XG4gICAgdGhpcy5sZW1tYXMgPSBbXTtcbiAgICB0aGlzLnNjaGVtYXMgPSBbXTtcbiAgICB0aGlzLnRoZW9yZW1zID0gW107XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gW107XG4gICAgdGhpcy5jb25qZWN0dXJlcyA9IFtdO1xuICAgIHRoaXMuY29tYmluYXRvcnMgPSBbXTtcbiAgICB0aGlzLnR5cGVQcmVmaXhlcyA9IFtdO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gW107XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcyA9IFtdO1xuICAgIHRoaXMuZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gW107XG4gIH1cblxuICBjb21wbGV0ZSgpIHtcbiAgICAvLy9cbiAgfVxuXG4gIHZlcmlmeUZpbGUoYmFjaywgZm9yd2FyZCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZmlsZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZ5RmlsZShmaWxlTm9kZSwgY29udGV4dCwgYmFjaywgZm9yd2FyZCk7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLmdldEpTT04oKTtcblxuICAgIGlmIChqc29uID09PSBudWxsKSB7XG4gICAgICBzdXBlci5pbml0aWFsaXNlKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlQ29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy50eXBlcyA9IFtdO1xuXG4gICAgdHlwZXNGcm9tSlNPTihqc29uLCB0aGlzLnR5cGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgICB0aGlzLmxlbW1hcyA9IFtdO1xuXG4gICAgdGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcyA9IGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMudHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuZ2VuZXJhdG9ycyA9IGdlbmVyYXRvcnNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5jb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgdGhpcy5ydWxlcyA9IHJ1bGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuYXhpb21zID0gYXhpb21zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuc2NoZW1hcyA9IHNjaGVtYXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy50aGVvcmVtcyA9IHRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0eXBlc0pTT04gPSB0eXBlc1RvVHlwZXNKU09OKHRoaXMudHlwZXMpLFxuICAgICAgICAgIHJ1bGVzSlNPTiA9IHJ1bGVzVG9SdWxlc0pTT04odGhpcy5ydWxlcyksXG4gICAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tc1RvQXhpb21zSlNPTih0aGlzLmF4aW9tcyksXG4gICAgICAgICAgc2NoZW1hc0pTT04gPSBzY2hlbWFzVG9TY2hlbWFzSlNPTih0aGlzLnNjaGVtYXMpLFxuICAgICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhpcy50aGVvcmVtcyksXG4gICAgICAgICAgZ2VuZXJhdG9yc0pTT04gPSBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTih0aGlzLmdlbmVyYXRvcnMpLFxuICAgICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04odGhpcy5jb25qZWN0dXJlcyksXG4gICAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTih0aGlzLmNvbWJpbmF0b3JzKSxcbiAgICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHRoaXMudHlwZVByZWZpeGVzKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKHRoaXMuY29uc3RydWN0b3JzKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OKHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04odGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMpLFxuICAgICAgICAgIGZpbGVDb250ZW50ID0gdGhpcy5nZXRGaWxlQ29udGVudCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHR5cGVzID0gdHlwZXNKU09OLCAgLy8vXG4gICAgICAgICAgcnVsZXMgPSBydWxlc0pTT04sICAvLy9cbiAgICAgICAgICBheGlvbXMgPSBheGlvbXNKU09OLCAgLy8vXG4gICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXNKU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04sICAvLy9cbiAgICAgICAgICBnZW5lcmF0b3JzID0gZ2VuZXJhdG9yc0pTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04sICAvLy9cbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IGRlY2xhcmVkVmFyaWFibGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgZmlsZUNvbnRlbnQsXG4gICAgICAgICAgICBmaWxlUGF0aCxcbiAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgcnVsZXMsXG4gICAgICAgICAgICBheGlvbXMsXG4gICAgICAgICAgICBzY2hlbWFzLFxuICAgICAgICAgICAgdGhlb3JlbXMsXG4gICAgICAgICAgICBnZW5lcmF0b3JzLFxuICAgICAgICAgICAgY29uamVjdHVyZXMsXG4gICAgICAgICAgICBjb21iaW5hdG9ycyxcbiAgICAgICAgICAgIHR5cGVQcmVmaXhlcyxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9ycyxcbiAgICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzLFxuICAgICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21GaWxlKGZpbGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmVkQ3VzdG9tR3JhbW1hcigpLFxuICAgICAgICAgIG5vbWluYWxMZXhlciA9IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbExleGVyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIG5vbWluYWxQYXJzZXIgPSBub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihOb21pbmFsUGFyc2VyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIGxleGVyID0gbm9taW5hbExleGVyLCAvLy9cbiAgICAgICAgICBwYXJzZXIgPSBub21pbmFsUGFyc2VyLCAvLy9cbiAgICAgICAgICB0eXBlcyA9IFtdLFxuICAgICAgICAgIHJ1bGVzID0gW10sXG4gICAgICAgICAgYXhpb21zID0gW10sXG4gICAgICAgICAgbGVtbWFzID0gW10sXG4gICAgICAgICAgc2NoZW1hcyA9IFtdLFxuICAgICAgICAgIHRoZW9yZW1zID0gW10sXG4gICAgICAgICAgZ2VuZXJhdG9ycyA9IFtdLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gW10sXG4gICAgICAgICAgY29tYmluYXRvcnMgPSBbXSxcbiAgICAgICAgICB0eXBlUHJlZml4ZXMgPSBbXSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBbXSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIG5vbWluYWxGaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21GaWxlKE5vbWluYWxGaWxlQ29udGV4dCwgZmlsZSwgbGV4ZXIsIHBhcnNlciwgdHlwZXMsIHJ1bGVzLCBheGlvbXMsIGxlbW1hcywgc2NoZW1hcywgdGhlb3JlbXMsIGdlbmVyYXRvcnMsIGNvbmplY3R1cmVzLCBjb21iaW5hdG9ycywgdHlwZVByZWZpeGVzLCBjb25zdHJ1Y3RvcnMsIGRlY2xhcmVkVmFyaWFibGVzLCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG5vbWluYWxGaWxlQ29udGV4dDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICBjb21iaW5lZEN1c3RvbUdyYW1tYXIgPSByZWxlYXNlQ29udGV4dC5nZXRDb21iaW5lZEN1c3RvbUdyYW1tYXIoKSxcbiAgICAgICAgICBub21pbmFsTGV4ZXIgPSBub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKE5vbWluYWxMZXhlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBub21pbmFsUGFyc2VyID0gbm9taW5hbFBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbFBhcnNlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBsZXhlciA9IG5vbWluYWxMZXhlciwgLy8vXG4gICAgICAgICAgcGFyc2VyID0gbm9taW5hbFBhcnNlciwgLy8vXG4gICAgICAgICAgdHlwZXMgPSBudWxsLFxuICAgICAgICAgIHJ1bGVzID0gbnVsbCxcbiAgICAgICAgICBheGlvbXMgPSBudWxsLFxuICAgICAgICAgIGxlbW1hcyA9IG51bGwsXG4gICAgICAgICAgc2NoZW1hcyA9IG51bGwsXG4gICAgICAgICAgdGhlb3JlbXMgPSBudWxsLFxuICAgICAgICAgIGdlbmVyYXRvcnMgPSBudWxsLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gbnVsbCxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IG51bGwsXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gbnVsbCxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBudWxsLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gbnVsbCxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBudWxsLFxuICAgICAgICAgIG5vbWluYWxGaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21KU09OKE5vbWluYWxGaWxlQ29udGV4dCwganNvbiwgbGV4ZXIsIHBhcnNlciwgdHlwZXMsIHJ1bGVzLCBheGlvbXMsIGxlbW1hcywgc2NoZW1hcywgdGhlb3JlbXMsIGdlbmVyYXRvcnMsIGNvbmplY3R1cmVzLCBjb21iaW5hdG9ycywgdHlwZVByZWZpeGVzLCBjb25zdHJ1Y3RvcnMsIGRlY2xhcmVkVmFyaWFibGVzLCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG5vbWluYWxGaWxlQ29udGV4dDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIk5vbWluYWxGaWxlQ29udGV4dCIsInB1c2giLCJhcnJheVV0aWxpdGllcyIsIm5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIm5vbWluYWxVdGlsaXRpZXMiLCJGaWxlQ29udGV4dCIsImNvbnRleHQiLCJmaWxlQ29udGVudCIsImZpbGVQYXRoIiwidG9rZW5zIiwibm9kZSIsImpzb24iLCJsZXhlciIsInBhcnNlciIsInR5cGVzIiwicnVsZXMiLCJheGlvbXMiLCJsZW1tYXMiLCJzY2hlbWFzIiwidGhlb3JlbXMiLCJnZW5lcmF0b3JzIiwiY29uamVjdHVyZXMiLCJjb21iaW5hdG9ycyIsInR5cGVQcmVmaXhlcyIsImNvbnN0cnVjdG9ycyIsImRlY2xhcmVkVmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZ2V0TGV4ZXIiLCJnZXRQYXJzZXIiLCJnZXRMYWJlbHMiLCJpbmNsdWRlUmVsZWFzZSIsImxhYmVscyIsInJlbGVhc2VDb250ZXh0TGFiZWxzIiwiZm9yRWFjaCIsInJ1bGUiLCJydWxlTGFiZWxzIiwiYXhpb20iLCJheGlvbUxhYmVscyIsImxlbW1hIiwibGVtbWFMYWJlbHMiLCJ0aGVvcmVtIiwidGhlb3JlbUxhYmVscyIsImNvbmplY3R1cmUiLCJjb25qZWN0dXJlTGFiZWxzIiwic2NoZW1hIiwic2NoZW1hTGFiZWwiLCJnZXRMYWJlbCIsImdldFR5cGVzIiwiZ2V0UnVsZXMiLCJnZXRBeGlvbXMiLCJnZXRMZW1tYXMiLCJnZXRTY2hlbWFzIiwiZ2V0VGhlb3JlbXMiLCJnZXRHZW5lcmF0b3JzIiwiZ2V0Q29uamVjdHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImdldFR5cGVQcmVmaXhlcyIsImdldENvbnN0cnVjdG9ycyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZ2V0Q2xhaW1zIiwiY2xhaW1zIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMiLCJnZXRUZXJtcyIsInRlcm1zIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRBc3NlcnRpb25zIiwiYXNzZXJ0aW9ucyIsImdldFN0YXRlbWVudHMiLCJzdGF0ZW1lbnRzIiwiZ2V0U2lnbmF0dXJlcyIsInNpZ25hdHVyZXMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZzIiwiYWRkVHlwZSIsInR5cGUiLCJnZXRGaWxlUGF0aCIsInR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFkZFJ1bGUiLCJydWxlU3RyaW5nIiwiYWRkQXhpb20iLCJheGlvbVN0cmluZyIsImFkZExlbW1hIiwibGVtbWFTdHJpbmciLCJhZGRTY2hlbWEiLCJzY2hlbWFTdHJpbmciLCJhZGRUaGVvcmVtIiwidGhlb3JlbVN0cmluZyIsImFkZEdlbmVyYXRvciIsImdlbmVyYXRvciIsImdlbmVyYXRvclN0cmluZyIsImFkZENvbmplY3R1cmUiLCJvY25qZWN0dXJlU3RyaW5nIiwiYWRkQ29tYmluYXRvciIsImNvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RyaW5nIiwiYWRkVHlwZVByZWZpeCIsInR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4U3RyaW5nIiwiYWRkQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yU3RyaW5nIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlU3RyaW5nIiwiYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImZpbmQiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwidW5pZnlNZXRhdmFyaWFibGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiZmluZExlbW1hQnlSZWZlcmVuY2UiLCJmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlIiwiZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZSIsImZpbmRDbGFpbUJ5UmVmZXJlbmNlIiwiY2xhaW0iLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ0eXBlTmFtZSIsImZpbmRUeXBlIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUiLCJjb21wYXJlUHJlZml4ZWRUeXBlTmFtZSIsImZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSIsInR5cGVQcmVmaXhOYW1lIiwidHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSIsImNvbXBhcmVUeXBlUHJlZml4TmFtZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJWYXJpYWJsZUlkZW50aXRpZmVyIiwiZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZmlsdGVyIiwidmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlQ29tcGFyZXNUb01ldGF2YXJpYWJsZU5hbWUiLCJjb21wYXJlTWV0YXZhcmlhYmxlTmFtZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwicHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUiLCJjb21wYXJlUHJvY2VkdXJlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZSIsImxhYmVsTm9kZSIsImxhYmVsUHJlc2VudCIsInNvbWUiLCJsYWJlbCIsImxhYmVsTm9kZU1hdGNoZXMiLCJtYXRjaExhYmVsTm9kZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwiaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUiLCJ0eXBlUHJlZml4UHJlc2VudCIsImlzRGVjbGFyZWRWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVQcmVzZW50IiwiaXNNZXRhTGV2ZWwiLCJtZXRhTEV2ZWwiLCJjbGVhciIsImNvbXBsZXRlIiwidmVyaWZ5RmlsZSIsImJhY2siLCJmb3J3YXJkIiwiZ2V0Tm9kZSIsImZpbGVOb2RlIiwiaW5pdGlhbGlzZSIsImdldEpTT04iLCJmaWxlQ29udGV4dCIsInR5cGVzRnJvbUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsImdlbmVyYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJheGlvbXNGcm9tSlNPTiIsInNjaGVtYXNGcm9tSlNPTiIsInRoZW9yZW1zRnJvbUpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwidG9KU09OIiwidHlwZXNKU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInJ1bGVzSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJheGlvbXNKU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwic2NoZW1hc0pTT04iLCJzY2hlbWFzVG9TY2hlbWFzSlNPTiIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJnZW5lcmF0b3JzSlNPTiIsImdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwiY29uc3RydWN0b3JzSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZ2V0RmlsZUNvbnRlbnQiLCJmcm9tRmlsZSIsImZpbGUiLCJyZWxlYXNlQ29udGV4dCIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImdldENvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIm5vbWluYWxMZXhlciIsIk5vbWluYWxMZXhlciIsIm5vbWluYWxQYXJzZXIiLCJOb21pbmFsUGFyc2VyIiwibm9taW5hbEZpbGVDb250ZXh0IiwiZnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXVDQTs7O2VBQXFCQTs7O2dDQXJDeUI7MkJBQ2Y7OERBRU47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
|
package/lib/element/error.js
CHANGED
|
@@ -15,13 +15,12 @@ const _default = (0, _elements.define)(class Error extends _occamlanguages.Eleme
|
|
|
15
15
|
const node = this.getNode(), errorNode = node; ///
|
|
16
16
|
return errorNode;
|
|
17
17
|
}
|
|
18
|
-
verify(context,
|
|
19
|
-
let verifies = false;
|
|
18
|
+
verify(context, back, forward) {
|
|
20
19
|
const errorString = this.getString(); ///
|
|
21
20
|
context.warning(`The '${errorString}' error cannot be verified.`);
|
|
22
|
-
return
|
|
21
|
+
return back();
|
|
23
22
|
}
|
|
24
23
|
static name = "Error";
|
|
25
24
|
});
|
|
26
25
|
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Vycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEVycm9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGdldEVycm9yTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZXJyb3JOb2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gZXJyb3JOb2RlO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQsIGJhY2ssIGZvcndhcmQpIHtcbiAgICBjb25zdCBlcnJvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQud2FybmluZyhgVGhlICcke2Vycm9yU3RyaW5nfScgZXJyb3IgY2Fubm90IGJlIHZlcmlmaWVkLmApO1xuXG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJFcnJvclwiO1xufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiRXJyb3IiLCJFbGVtZW50IiwiZ2V0RXJyb3JOb2RlIiwibm9kZSIsImdldE5vZGUiLCJlcnJvck5vZGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiYmFjayIsImZvcndhcmQiLCJlcnJvclN0cmluZyIsImdldFN0cmluZyIsIndhcm5pbmciLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQUE7OztnQ0FKd0I7MEJBRUQ7TUFFdkIsV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxjQUFjQyx1QkFBTztJQUMvQ0MsZUFBZTtRQUNiLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQyxZQUFZRixNQUFNLEdBQUc7UUFFM0IsT0FBT0U7SUFDVDtJQUVBQyxPQUFPQyxPQUFPLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFO1FBQzdCLE1BQU1DLGNBQWMsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUxQ0osUUFBUUssT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFRixZQUFZLDJCQUEyQixDQUFDO1FBRWhFLE9BQU9GO0lBQ1Q7SUFFQSxPQUFPSyxPQUFPLFFBQVE7QUFDeEIifQ==
|
|
@@ -43,8 +43,9 @@ class Element {
|
|
|
43
43
|
setLineIndex(breakPoint) {
|
|
44
44
|
this.breakPoint = breakPoint;
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
break(context) {
|
|
47
|
+
debugger;
|
|
48
|
+
this.breakPoint = context.break(this.node, this.breakPoint);
|
|
48
49
|
}
|
|
49
50
|
matchNode(node) {
|
|
50
51
|
return this.node.match(node);
|
|
@@ -164,4 +165,4 @@ class Substitution extends Element {
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3N1YnN0aXR1dGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBzZXJpYWxpc2VzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgZmlyc3QsIHNlY29uZCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5jbGFzcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dHMsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCkge1xuICAgIHRoaXMuY29udGV4dHMgPSBjb250ZXh0cztcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMuYnJlYWtQb2ludCA9IGJyZWFrUG9pbnQ7XG4gIH1cblxuICBnZXRDb250ZXh0cygpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0cztcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXRCcmVha1BvaW50KCkge1xuICAgIHJldHVybiB0aGlzLmJyZWFrUG9pbnQ7XG4gIH1cblxuICBzZXRDb250ZXh0cyhjb250ZXh0cykge1xuICAgIHRoaXMuY29udGV4dHMgPSBjb250ZXh0cztcbiAgfVxuXG4gIHNldFN0cmluZyhzdHJpbmcpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgfVxuXG4gIHNldE5vZGUobm9kZSkge1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gIH1cblxuICBzZXRMaW5lSW5kZXgoYnJlYWtQb2ludCkge1xuICAgIHRoaXMuYnJlYWtQb2ludCA9IGJyZWFrUG9pbnQ7XG4gIH1cblxuICBhc3luYyBicmVhayhjb250ZXh0KSB7XG4gICAgdGhpcy5icmVha1BvaW50ID0gYXdhaXQgY29udGV4dC5icmVhayh0aGlzLm5vZGUsIHRoaXMuYnJlYWtQb2ludCk7XG4gIH1cblxuICBtYXRjaE5vZGUobm9kZSkgeyByZXR1cm4gdGhpcy5ub2RlLm1hdGNoKG5vZGUpOyB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnN0aXR1dGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBnZXROYW1lKCkge1xuICAgIGNvbnN0IHsgbmFtZSB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIHJldHVybiBuYW1lO1xuICB9XG5cbiAgZ2V0U3Vic3RpdHV0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbk5vZGU7XG4gIH1cblxuICBnZXRHZW5lcmFsQ29udGV4dCgpIHtcbiAgICBjb25zdCBjb250ZXh0cyA9IHRoaXMuZ2V0Q29udGV4dHMoKSxcbiAgICAgICAgICBmaXJzdENvbnRleHQgPSBmaXJzdChjb250ZXh0cyksXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBmaXJzdENvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiBnZW5lcmFsQ29udGV4dDtcbiAgfVxuXG4gIGdldFNwZWNpZmljQ29udGV4dCgpIHtcbiAgICBjb25zdCBjb250ZXh0cyA9IHRoaXMuZ2V0Q29udGV4dHMoKSxcbiAgICAgICAgICBzZWNvbmRDb250ZXh0ID0gc2Vjb25kKGNvbnRleHRzKSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzZWNvbmRDb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gc3BlY2lmaWNDb250ZXh0O1xuICB9XG5cbiAgaXNFcXVhbFRvKHN1YnN0aXR1dGlvbikge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaFN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzU2ltcGxlKCkge1xuICAgIGNvbnN0IHNpbXBsZSA9IHRydWU7XG5cbiAgICByZXR1cm4gc2ltcGxlO1xuICB9XG5cbiAgaXNDb21wbGV4KCkge1xuICAgIGNvbnN0IHNpbXBsZSA9IHRoaXMuaXNTaW1wbGUoKSxcbiAgICAgICAgICBjb21wbGV4ID0gIXNpbXBsZTtcblxuICAgIHJldHVybiBjb21wbGV4O1xuICB9XG5cbiAgaXNOb25Ucml2aWFsKCkge1xuICAgIGNvbnN0IHRyaXZpYWwgPSB0aGlzLmlzVHJpdmlhbCgpLFxuICAgICAgICAgIG5vblRyaXZsYWwgPSAhdHJpdmlhbDtcblxuICAgIHJldHVybiBub25Ucml2bGFsO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoKSB7XG4gICAgY29uc3QgdmFyaWFibGUgPSBudWxsO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IG51bGw7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0U3Vic3RpdHV0aW9uKCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVOb2RlKCkge1xuICAgIGNvbnN0IHZhcmlhYmxlTm9kZSA9IG51bGw7XG5cbiAgICByZXR1cm4gdmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbnVsbDtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0UmVwbGFjZW1lbnRUZXJtKCkge1xuICAgIGNvbnN0IHJlcGxhY2VtZW50VGVybSA9IG51bGw7XG5cbiAgICByZXR1cm4gcmVwbGFjZW1lbnRUZXJtO1xuICB9XG5cbiAgZ2V0UmVwbGFjZW1lbnRGcmFtZSgpIHtcbiAgICBjb25zdCByZXBsYWNlbWVudEZyYW1lID0gbnVsbDtcblxuICAgIHJldHVybiByZXBsYWNlbWVudEZyYW1lO1xuICB9XG5cbiAgZ2V0UmVwbGFjZW1lbnRTdGF0ZW1lbnQoKSB7XG4gICAgY29uc3QgcmVwbGFjZW1lbnRTdGF0ZW1lbnQgPSBudWxsO1xuXG4gICAgcmV0dXJuIHJlcGxhY2VtZW50U3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0UmVwbGFjZW1lbnRSZWZlcmVuY2UoKSB7XG4gICAgY29uc3QgcmVwbGFjZW1lbnRSZWZlcmVuY2UgPSBudWxsO1xuXG4gICAgcmV0dXJuIHJlcGxhY2VtZW50UmVmZXJlbmNlO1xuICB9XG5cbiAgbWF0Y2hWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBzdWJzdGl0dXRpb25Ob2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZFN1YnN0aXR1dGlvbihjb250ZXh0KSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uTm9kZSA9IHRoaXMuZ2V0U3Vic3RpdHV0aW9uTm9kZSgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH1cblxuICBjb21taXQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGNvbnN0IHJlY3Vyc2l2ZSA9IHRydWU7XG5cbiAgICBnZW5lcmFsQ29udGV4dCA9IGdlbmVyYWxDb250ZXh0LmNvbW1pdChyZWN1cnNpdmUpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LmNvbW1pdChyZWN1cnNpdmUpO1xuXG4gICAgY29uc3QgY29udGV4dHMgPSBbXG4gICAgICBnZW5lcmFsQ29udGV4dCxcbiAgICAgIHNwZWNpZmljQ29udGV4dFxuICAgIF07XG5cbiAgICB0aGlzLnNldENvbnRleHRzKGNvbnRleHRzKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0cyA9IHRoaXMuZ2V0Q29udGV4dHMoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2VzKCguLi5jb250ZXh0cykgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGNvbnRleHRzLFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIC4uLmNvbnRleHRzKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlN1YnN0aXR1dGlvbiIsImZpcnN0Iiwic2Vjb25kIiwiYXJyYXlVdGlsaXRpZXMiLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJFbGVtZW50IiwiY29udGV4dHMiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImdldENvbnRleHRzIiwiZ2V0U3RyaW5nIiwiZ2V0Tm9kZSIsImdldEJyZWFrUG9pbnQiLCJzZXRDb250ZXh0cyIsInNldFN0cmluZyIsInNldE5vZGUiLCJzZXRMaW5lSW5kZXgiLCJicmVhayIsImNvbnRleHQiLCJtYXRjaE5vZGUiLCJtYXRjaCIsImdldE5hbWUiLCJuYW1lIiwiZ2V0U3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJnZXRHZW5lcmFsQ29udGV4dCIsImZpcnN0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0IiwiZ2V0U3BlY2lmaWNDb250ZXh0Iiwic2Vjb25kQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImlzRXF1YWxUbyIsInN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hTdWJzdGl0dXRpb25Ob2RlIiwiZXF1YWxUbyIsImlzU2ltcGxlIiwic2ltcGxlIiwiaXNDb21wbGV4IiwiY29tcGxleCIsImlzTm9uVHJpdmlhbCIsInRyaXZpYWwiLCJpc1RyaXZpYWwiLCJub25Ucml2bGFsIiwiZ2V0VmFyaWFibGUiLCJ2YXJpYWJsZSIsImdldE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImdldFN1YnN0aXR1dGlvbiIsImdldFZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwiZ2V0UmVwbGFjZW1lbnRUZXJtIiwicmVwbGFjZW1lbnRUZXJtIiwiZ2V0UmVwbGFjZW1lbnRGcmFtZSIsInJlcGxhY2VtZW50RnJhbWUiLCJnZXRSZXBsYWNlbWVudFN0YXRlbWVudCIsInJlcGxhY2VtZW50U3RhdGVtZW50IiwiZ2V0UmVwbGFjZW1lbnRSZWZlcmVuY2UiLCJyZXBsYWNlbWVudFJlZmVyZW5jZSIsIm1hdGNoVmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwibm9kZU1hdGNoZXMiLCJmaW5kU3Vic3RpdHV0aW9uIiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsImNvbW1pdCIsInJlY3Vyc2l2ZSIsInRvSlNPTiIsInNlcmlhbGlzZXMiLCJicmVha1BvaW50SlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXlEQTs7O2VBQXFCQTs7OzJCQXZEVTtnQ0FDSzt5QkFFVDtBQUUzQixNQUFNLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHlCQUFjLEVBQ2xDLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtBQUUxRCxNQUFNQztJQUNKLFlBQVlDLFFBQVEsRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsQ0FBRTtRQUM5QyxJQUFJLENBQUNILFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxJQUFJLEdB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
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3N1YnN0aXR1dGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBzZXJpYWxpc2VzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgZmlyc3QsIHNlY29uZCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5jbGFzcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dHMsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCkge1xuICAgIHRoaXMuY29udGV4dHMgPSBjb250ZXh0cztcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMuYnJlYWtQb2ludCA9IGJyZWFrUG9pbnQ7XG4gIH1cblxuICBnZXRDb250ZXh0cygpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0cztcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXRCcmVha1BvaW50KCkge1xuICAgIHJldHVybiB0aGlzLmJyZWFrUG9pbnQ7XG4gIH1cblxuICBzZXRDb250ZXh0cyhjb250ZXh0cykge1xuICAgIHRoaXMuY29udGV4dHMgPSBjb250ZXh0cztcbiAgfVxuXG4gIHNldFN0cmluZyhzdHJpbmcpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgfVxuXG4gIHNldE5vZGUobm9kZSkge1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gIH1cblxuICBzZXRMaW5lSW5kZXgoYnJlYWtQb2ludCkge1xuICAgIHRoaXMuYnJlYWtQb2ludCA9IGJyZWFrUG9pbnQ7XG4gIH1cblxuICBicmVhayhjb250ZXh0KSB7XG4gICAgZGVidWdnZXJcblxuICAgIHRoaXMuYnJlYWtQb2ludCA9IGNvbnRleHQuYnJlYWsodGhpcy5ub2RlLCB0aGlzLmJyZWFrUG9pbnQpO1xuICB9XG5cbiAgbWF0Y2hOb2RlKG5vZGUpIHsgcmV0dXJuIHRoaXMubm9kZS5tYXRjaChub2RlKTsgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJzdGl0dXRpb24gZXh0ZW5kcyBFbGVtZW50IHtcbiAgZ2V0TmFtZSgpIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICByZXR1cm4gbmFtZTtcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0R2VuZXJhbENvbnRleHQoKSB7XG4gICAgY29uc3QgY29udGV4dHMgPSB0aGlzLmdldENvbnRleHRzKCksXG4gICAgICAgICAgZmlyc3RDb250ZXh0ID0gZmlyc3QoY29udGV4dHMpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZmlyc3RDb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gZ2VuZXJhbENvbnRleHQ7XG4gIH1cblxuICBnZXRTcGVjaWZpY0NvbnRleHQoKSB7XG4gICAgY29uc3QgY29udGV4dHMgPSB0aGlzLmdldENvbnRleHRzKCksXG4gICAgICAgICAgc2Vjb25kQ29udGV4dCA9IHNlY29uZChjb250ZXh0cyksXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc2Vjb25kQ29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHNwZWNpZmljQ29udGV4dDtcbiAgfVxuXG4gIGlzRXF1YWxUbyhzdWJzdGl0dXRpb24pIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlID0gc3Vic3RpdHV0aW9uLmdldE5vZGUoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc1NpbXBsZSgpIHtcbiAgICBjb25zdCBzaW1wbGUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHNpbXBsZTtcbiAgfVxuXG4gIGlzQ29tcGxleCgpIHtcbiAgICBjb25zdCBzaW1wbGUgPSB0aGlzLmlzU2ltcGxlKCksXG4gICAgICAgICAgY29tcGxleCA9ICFzaW1wbGU7XG5cbiAgICByZXR1cm4gY29tcGxleDtcbiAgfVxuXG4gIGlzTm9uVHJpdmlhbCgpIHtcbiAgICBjb25zdCB0cml2aWFsID0gdGhpcy5pc1RyaXZpYWwoKSxcbiAgICAgICAgICBub25Ucml2bGFsID0gIXRyaXZpYWw7XG5cbiAgICByZXR1cm4gbm9uVHJpdmxhbDtcbiAgfVxuXG4gIGdldFZhcmlhYmxlKCkge1xuICAgIGNvbnN0IHZhcmlhYmxlID0gbnVsbDtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBudWxsO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbigpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGdldFZhcmlhYmxlTm9kZSgpIHtcbiAgICBjb25zdCB2YXJpYWJsZU5vZGUgPSBudWxsO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlTm9kZTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZU5vZGUoKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG51bGw7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZTtcbiAgfVxuXG4gIGdldFJlcGxhY2VtZW50VGVybSgpIHtcbiAgICBjb25zdCByZXBsYWNlbWVudFRlcm0gPSBudWxsO1xuXG4gICAgcmV0dXJuIHJlcGxhY2VtZW50VGVybTtcbiAgfVxuXG4gIGdldFJlcGxhY2VtZW50RnJhbWUoKSB7XG4gICAgY29uc3QgcmVwbGFjZW1lbnRGcmFtZSA9IG51bGw7XG5cbiAgICByZXR1cm4gcmVwbGFjZW1lbnRGcmFtZTtcbiAgfVxuXG4gIGdldFJlcGxhY2VtZW50U3RhdGVtZW50KCkge1xuICAgIGNvbnN0IHJlcGxhY2VtZW50U3RhdGVtZW50ID0gbnVsbDtcblxuICAgIHJldHVybiByZXBsYWNlbWVudFN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFJlcGxhY2VtZW50UmVmZXJlbmNlKCkge1xuICAgIGNvbnN0IHJlcGxhY2VtZW50UmVmZXJlbmNlID0gbnVsbDtcblxuICAgIHJldHVybiByZXBsYWNlbWVudFJlZmVyZW5jZTtcbiAgfVxuXG4gIG1hdGNoVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IHZhcmlhYmxlTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICAgIHJldHVybiB2YXJpYWJsZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gc3Vic3RpdHV0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb24oY29udGV4dCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGUgPSB0aGlzLmdldFN1YnN0aXR1dGlvbk5vZGUoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgY29tbWl0KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBjb25zdCByZWN1cnNpdmUgPSB0cnVlO1xuXG4gICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsQ29udGV4dC5jb21taXQocmVjdXJzaXZlKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IHNwZWNpZmljQ29udGV4dC5jb21taXQocmVjdXJzaXZlKTtcblxuICAgIGNvbnN0IGNvbnRleHRzID0gW1xuICAgICAgZ2VuZXJhbENvbnRleHQsXG4gICAgICBzcGVjaWZpY0NvbnRleHRcbiAgICBdO1xuXG4gICAgdGhpcy5zZXRDb250ZXh0cyhjb250ZXh0cyk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dHMgPSB0aGlzLmdldENvbnRleHRzKCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlcygoLi4uY29udGV4dHMpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBuYW1lLFxuICAgICAgICBjb250ZXh0cyxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCAuLi5jb250ZXh0cyk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTdWJzdGl0dXRpb24iLCJmaXJzdCIsInNlY29uZCIsImFycmF5VXRpbGl0aWVzIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiRWxlbWVudCIsImNvbnRleHRzIiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJnZXRDb250ZXh0cyIsImdldFN0cmluZyIsImdldE5vZGUiLCJnZXRCcmVha1BvaW50Iiwic2V0Q29udGV4dHMiLCJzZXRTdHJpbmciLCJzZXROb2RlIiwic2V0TGluZUluZGV4IiwiYnJlYWsiLCJjb250ZXh0IiwibWF0Y2hOb2RlIiwibWF0Y2giLCJnZXROYW1lIiwibmFtZSIsImdldFN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwiZ2V0R2VuZXJhbENvbnRleHQiLCJmaXJzdENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsImdldFNwZWNpZmljQ29udGV4dCIsInNlY29uZENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJpc0VxdWFsVG8iLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoU3Vic3RpdHV0aW9uTm9kZSIsImVxdWFsVG8iLCJpc1NpbXBsZSIsInNpbXBsZSIsImlzQ29tcGxleCIsImNvbXBsZXgiLCJpc05vblRyaXZpYWwiLCJ0cml2aWFsIiwiaXNUcml2aWFsIiwibm9uVHJpdmxhbCIsImdldFZhcmlhYmxlIiwidmFyaWFibGUiLCJnZXRNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJnZXRTdWJzdGl0dXRpb24iLCJnZXRWYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZU5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldFJlcGxhY2VtZW50VGVybSIsInJlcGxhY2VtZW50VGVybSIsImdldFJlcGxhY2VtZW50RnJhbWUiLCJyZXBsYWNlbWVudEZyYW1lIiwiZ2V0UmVwbGFjZW1lbnRTdGF0ZW1lbnQiLCJyZXBsYWNlbWVudFN0YXRlbWVudCIsImdldFJlcGxhY2VtZW50UmVmZXJlbmNlIiwicmVwbGFjZW1lbnRSZWZlcmVuY2UiLCJtYXRjaFZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm5vZGVNYXRjaGVzIiwiZmluZFN1YnN0aXR1dGlvbiIsImZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUiLCJjb21taXQiLCJyZWN1cnNpdmUiLCJ0b0pTT04iLCJzZXJpYWxpc2VzIiwiYnJlYWtQb2ludEpTT04iLCJqc29uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyREE7OztlQUFxQkE7OzsyQkF6RFU7Z0NBQ0s7eUJBRVQ7QUFFM0IsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyx5QkFBYyxFQUNsQyxFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7QUFFMUQsTUFBTUM7SUFDSixZQUFZQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLENBQUU7UUFDOUMsSUFBSSxDQUFDSCxRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsSUFB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
|
package/lib/process/verify.js
CHANGED
|
@@ -17,122 +17,122 @@ class TopLevelPass extends _occamlanguages.ContinuationPass {
|
|
|
17
17
|
static maps = [
|
|
18
18
|
{
|
|
19
19
|
nodeQuery: errorNodeQuery,
|
|
20
|
-
run: (errorNode, context,
|
|
20
|
+
run: (errorNode, context, back, forward)=>{
|
|
21
21
|
const error = (0, _element.errorFromErrorNode)(errorNode, context);
|
|
22
|
-
return error.verify(context,
|
|
22
|
+
return error.verify(context, back, forward);
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
nodeQuery: ruleNodeQuery,
|
|
27
|
-
run: (ruleNode, context,
|
|
27
|
+
run: (ruleNode, context, back, forward)=>{
|
|
28
28
|
const rule = (0, _element.ruleFromRuleNode)(ruleNode, context);
|
|
29
|
-
return rule.verify(context,
|
|
29
|
+
return rule.verify(context, back, forward);
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
nodeQuery: axiomNodeQuery,
|
|
34
|
-
run: (axiomNode, context,
|
|
34
|
+
run: (axiomNode, context, back, forward)=>{
|
|
35
35
|
const axiom = (0, _element.axiomFromAxiomNode)(axiomNode, context);
|
|
36
|
-
return axiom.verify(context,
|
|
36
|
+
return axiom.verify(context, back, forward);
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
nodeQuery: lemmaNodeQuery,
|
|
41
|
-
run: (lemmaNode, context,
|
|
41
|
+
run: (lemmaNode, context, back, forward)=>{
|
|
42
42
|
const lemma = (0, _element.lemmaFromLemmaNode)(lemmaNode, context);
|
|
43
|
-
return lemma.verify(context,
|
|
43
|
+
return lemma.verify(context, back, forward);
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
nodeQuery: schemaNodeQuery,
|
|
48
|
-
run: (schemaNode, context,
|
|
48
|
+
run: (schemaNode, context, back, forward)=>{
|
|
49
49
|
const schema = (0, _element.schemaFromSchemaNode)(schemaNode, context);
|
|
50
|
-
return schema.verify(context,
|
|
50
|
+
return schema.verify(context, back, forward);
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
nodeQuery: sectionNodeQuery,
|
|
55
|
-
run: (sectionNode, context,
|
|
55
|
+
run: (sectionNode, context, back, forward)=>{
|
|
56
56
|
const section = (0, _element.sectionFromSectionNode)(sectionNode, context);
|
|
57
|
-
return section.verify(context,
|
|
57
|
+
return section.verify(context, back, forward);
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
nodeQuery: theoremNodeQuery,
|
|
62
|
-
run: (theoremNode, context,
|
|
62
|
+
run: (theoremNode, context, back, forward)=>{
|
|
63
63
|
const theorem = (0, _element.theoremFromTheoremNode)(theoremNode, context);
|
|
64
|
-
return theorem.verify(context,
|
|
64
|
+
return theorem.verify(context, back, forward);
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
nodeQuery: conjectureNodeQuery,
|
|
69
|
-
run: (conjectureNode, context,
|
|
69
|
+
run: (conjectureNode, context, back, forward)=>{
|
|
70
70
|
const conjecture = (0, _element.conjectureFromConjectureNode)(conjectureNode, context);
|
|
71
|
-
return conjecture.verify(context,
|
|
71
|
+
return conjecture.verify(context, back, forward);
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
nodeQuery: typeDeclarationNodeQuery,
|
|
76
|
-
run: (typeDeclarationNode, context,
|
|
76
|
+
run: (typeDeclarationNode, context, back, forward)=>{
|
|
77
77
|
const typeDeclaration = (0, _element.typeDeclarationFromTypeDeclarationNode)(typeDeclarationNode, context);
|
|
78
|
-
return typeDeclaration.verify(context,
|
|
78
|
+
return typeDeclaration.verify(context, back, forward);
|
|
79
79
|
}
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
nodeQuery: cotypeDeclarationNodeQuery,
|
|
83
|
-
run: (cotypeDeclarationNode, context,
|
|
83
|
+
run: (cotypeDeclarationNode, context, back, forward)=>{
|
|
84
84
|
const cotypeDeclaration = (0, _element.cotypeDeclarationFromCotypeDeclarationNode)(cotypeDeclarationNode, context);
|
|
85
|
-
return cotypeDeclaration.verify(context,
|
|
85
|
+
return cotypeDeclaration.verify(context, back, forward);
|
|
86
86
|
}
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
nodeQuery: variableDeclarationNodeQuery,
|
|
90
|
-
run: (variableDeclarationNode, context,
|
|
90
|
+
run: (variableDeclarationNode, context, back, forward)=>{
|
|
91
91
|
const variableDeclaration = (0, _element.variableDeclarationFromVariableDeclarationNode)(variableDeclarationNode, context);
|
|
92
|
-
return variableDeclaration.verify(context,
|
|
92
|
+
return variableDeclaration.verify(context, back, forward);
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
nodeQuery: generatorDeclarationNodeQuery,
|
|
97
|
-
run: (generatorDeclarationNode, context,
|
|
97
|
+
run: (generatorDeclarationNode, context, back, forward)=>{
|
|
98
98
|
const generatorDeclaration = (0, _element.generatorDeclarationFromGeneratorDeclarationNode)(generatorDeclarationNode, context);
|
|
99
|
-
return generatorDeclaration.verify(context,
|
|
99
|
+
return generatorDeclaration.verify(context, back, forward);
|
|
100
100
|
}
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
nodeQuery: typePrefixDeclarationNodeQuery,
|
|
104
|
-
run: (typePrefixDeclarationNode, context,
|
|
104
|
+
run: (typePrefixDeclarationNode, context, back, forward)=>{
|
|
105
105
|
const typePrefixDeclaration = (0, _element.typePrefixDeclarationFromTypePrefixDeclarationNode)(typePrefixDeclarationNode, context);
|
|
106
|
-
return typePrefixDeclaration.verify(context,
|
|
106
|
+
return typePrefixDeclaration.verify(context, back, forward);
|
|
107
107
|
}
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
110
|
nodeQuery: combinatorDeclarationNodeQuery,
|
|
111
|
-
run: (combinatorDeclarationNode, context,
|
|
111
|
+
run: (combinatorDeclarationNode, context, back, forward)=>{
|
|
112
112
|
const combinatorDeclaration = (0, _element.combinatorDeclarationFromCombinatorDeclarationNode)(combinatorDeclarationNode, context);
|
|
113
|
-
return combinatorDeclaration.verify(context,
|
|
113
|
+
return combinatorDeclaration.verify(context, back, forward);
|
|
114
114
|
}
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
117
|
nodeQuery: constructorDeclarationNodeQuery,
|
|
118
|
-
run: (constructorDeclarationNode, context,
|
|
118
|
+
run: (constructorDeclarationNode, context, back, forward)=>{
|
|
119
119
|
const constructorDeclaration = (0, _element.constructorDeclarationFromConstructorDeclarationNode)(constructorDeclarationNode, context);
|
|
120
|
-
return constructorDeclaration.verify(context,
|
|
120
|
+
return constructorDeclaration.verify(context, back, forward);
|
|
121
121
|
}
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
nodeQuery: metavariableDeclarationNodeQuery,
|
|
125
|
-
run: (metavariableDeclarationNode, context,
|
|
125
|
+
run: (metavariableDeclarationNode, context, back, forward)=>{
|
|
126
126
|
const metavariableDeclaration = (0, _element.metavariableDeclarationFromMetavariableDeclarationNode)(metavariableDeclarationNode, context);
|
|
127
|
-
return metavariableDeclaration.verify(context,
|
|
127
|
+
return metavariableDeclaration.verify(context, back, forward);
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
];
|
|
131
131
|
}
|
|
132
132
|
const topLevelPass = new TopLevelPass();
|
|
133
|
-
function verifyFile(fileNode, context,
|
|
133
|
+
function verifyFile(fileNode, context, back, forward) {
|
|
134
134
|
const node = fileNode; ///
|
|
135
|
-
return topLevelPass.run(node, context,
|
|
135
|
+
return topLevelPass.run(node, context, back, forward);
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZlcmlmeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tcXVlcnlcIlxuaW1wb3J0IHsgQ29udGludWF0aW9uUGFzcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgcnVsZUZyb21SdWxlTm9kZSxcbiAgICAgICAgIGVycm9yRnJvbUVycm9yTm9kZSxcbiAgICAgICAgIGF4aW9tRnJvbUF4aW9tTm9kZSxcbiAgICAgICAgIGxlbW1hRnJvbUxlbW1hTm9kZSxcbiAgICAgICAgIHNjaGVtYUZyb21TY2hlbWFOb2RlLFxuICAgICAgICAgc2VjdGlvbkZyb21TZWN0aW9uTm9kZSxcbiAgICAgICAgIHRoZW9yZW1Gcm9tVGhlb3JlbU5vZGUsXG4gICAgICAgICBjb25qZWN0dXJlRnJvbUNvbmplY3R1cmVOb2RlLFxuICAgICAgICAgdHlwZURlY2xhcmF0aW9uRnJvbVR5cGVEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICBjb3R5cGVEZWNsYXJhdGlvbkZyb21Db3R5cGVEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uRnJvbVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICAgICAgICAgZ2VuZXJhdG9yRGVjbGFyYXRpb25Gcm9tR2VuZXJhdG9yRGVjbGFyYXRpb25Ob2RlLFxuICAgICAgICAgdHlwZVByZWZpeERlY2xhcmF0aW9uRnJvbVR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICBjb21iaW5hdG9yRGVjbGFyYXRpb25Gcm9tQ29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSxcbiAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Gcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbkZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBub2RlUXVlcnkgfSA9IHF1ZXJ5VXRpbGl0aWVzO1xuXG5jb25zdCBydWxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3J1bGVcIiksXG4gICAgICBlcnJvck5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9lcnJvclwiKSxcbiAgICAgIGF4aW9tTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2F4aW9tXCIpLFxuICAgICAgbGVtbWFOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbGVtbWFcIiksXG4gICAgICBzY2hlbWFOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc2NoZW1hXCIpLFxuICAgICAgc2VjdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zZWN0aW9uXCIpLFxuICAgICAgdGhlb3JlbU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90aGVvcmVtXCIpLFxuICAgICAgY29uamVjdHVyZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9jb25qZWN0dXJlXCIpLFxuICAgICAgdHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVEZWNsYXJhdGlvblwiKSxcbiAgICAgIGNvdHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2NvdHlwZURlY2xhcmF0aW9uXCIpLFxuICAgICAgdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi92YXJpYWJsZURlY2xhcmF0aW9uXCIpLFxuICAgICAgZ2VuZXJhdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZ2VuZXJhdG9yRGVjbGFyYXRpb25cIiksXG4gICAgICBjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29tYmluYXRvckRlY2xhcmF0aW9uXCIpLFxuICAgICAgdHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVQcmVmaXhEZWNsYXJhdGlvblwiKSxcbiAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29uc3RydWN0b3JEZWNsYXJhdGlvblwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZURlY2xhcmF0aW9uXCIpO1xuXG5jbGFzcyBUb3BMZXZlbFBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBlcnJvck5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGVycm9yTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZXJyb3JGcm9tRXJyb3JOb2RlKGVycm9yTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIGVycm9yLnZlcmlmeShjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBydWxlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAocnVsZU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBydWxlID0gcnVsZUZyb21SdWxlTm9kZShydWxlTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHJ1bGUudmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGF4aW9tTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoYXhpb21Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgYXhpb20gPSBheGlvbUZyb21BeGlvbU5vZGUoYXhpb21Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gYXhpb20udmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGxlbW1hTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAobGVtbWFOb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgbGVtbWEgPSBsZW1tYUZyb21MZW1tYU5vZGUobGVtbWFOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gbGVtbWEudmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHNjaGVtYU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHNjaGVtYU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWEgPSBzY2hlbWFGcm9tU2NoZW1hTm9kZShzY2hlbWFOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc2NoZW1hLnZlcmlmeShjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBzZWN0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoc2VjdGlvbk5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBzZWN0aW9uID0gc2VjdGlvbkZyb21TZWN0aW9uTm9kZShzZWN0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHNlY3Rpb24udmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRoZW9yZW1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0aGVvcmVtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRoZW9yZW0gPSB0aGVvcmVtRnJvbVRoZW9yZW1Ob2RlKHRoZW9yZW1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdGhlb3JlbS52ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogY29uamVjdHVyZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGNvbmplY3R1cmVOb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgY29uamVjdHVyZSA9IGNvbmplY3R1cmVGcm9tQ29uamVjdHVyZU5vZGUoY29uamVjdHVyZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBjb25qZWN0dXJlLnZlcmlmeShjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46ICh0eXBlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZURlY2xhcmF0aW9uID0gdHlwZURlY2xhcmF0aW9uRnJvbVR5cGVEZWNsYXJhdGlvbk5vZGUodHlwZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHR5cGVEZWNsYXJhdGlvbi52ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogY290eXBlRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46IChjb3R5cGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBjb3R5cGVEZWNsYXJhdGlvbiA9IGNvdHlwZURlY2xhcmF0aW9uRnJvbUNvdHlwZURlY2xhcmF0aW9uTm9kZShjb3R5cGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBjb3R5cGVEZWNsYXJhdGlvbi52ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvbiA9IHZhcmlhYmxlRGVjbGFyYXRpb25Gcm9tVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YXJpYWJsZURlY2xhcmF0aW9uLnZlcmlmeShjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBnZW5lcmF0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYXRvckRlY2xhcmF0aW9uTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGdlbmVyYXRvckRlY2xhcmF0aW9uID0gZ2VuZXJhdG9yRGVjbGFyYXRpb25Gcm9tR2VuZXJhdG9yRGVjbGFyYXRpb25Ob2RlKGdlbmVyYXRvckRlY2xhcmF0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvckRlY2xhcmF0aW9uLnZlcmlmeShjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46ICh0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZVByZWZpeERlY2xhcmF0aW9uID0gdHlwZVByZWZpeERlY2xhcmF0aW9uRnJvbVR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUodHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHR5cGVQcmVmaXhEZWNsYXJhdGlvbi52ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbWJpbmF0b3JEZWNsYXJhdGlvbiA9IGNvbWJpbmF0b3JEZWNsYXJhdGlvbkZyb21Db21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlKGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBjb21iaW5hdG9yRGVjbGFyYXRpb24udmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46IChjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdG9yRGVjbGFyYXRpb24gPSBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uRnJvbUNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlKGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gY29uc3RydWN0b3JEZWNsYXJhdGlvbi52ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46IChtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZShtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbi52ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IHRvcExldmVsUGFzcyA9IG5ldyBUb3BMZXZlbFBhc3MoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeUZpbGUoZmlsZU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCBub2RlID0gZmlsZU5vZGU7IC8vL1xuXG4gIHJldHVybiB0b3BMZXZlbFBhc3MucnVuKG5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5RmlsZSIsIm5vZGVRdWVyeSIsInF1ZXJ5VXRpbGl0aWVzIiwicnVsZU5vZGVRdWVyeSIsImVycm9yTm9kZVF1ZXJ5IiwiYXhpb21Ob2RlUXVlcnkiLCJsZW1tYU5vZGVRdWVyeSIsInNjaGVtYU5vZGVRdWVyeSIsInNlY3Rpb25Ob2RlUXVlcnkiLCJ0aGVvcmVtTm9kZVF1ZXJ5IiwiY29uamVjdHVyZU5vZGVRdWVyeSIsInR5cGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsImNvdHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwidmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsImdlbmVyYXRvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwiY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwidHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwiVG9wTGV2ZWxQYXNzIiwiQ29udGludWF0aW9uUGFzcyIsIm1hcHMiLCJydW4iLCJlcnJvck5vZGUiLCJjb250ZXh0IiwiY29udGludWF0aW9uIiwiZXJyb3IiLCJlcnJvckZyb21FcnJvck5vZGUiLCJ2ZXJpZnkiLCJydWxlTm9kZSIsInJ1bGUiLCJydWxlRnJvbVJ1bGVOb2RlIiwiYXhpb21Ob2RlIiwiYXhpb20iLCJheGlvbUZyb21BeGlvbU5vZGUiLCJsZW1tYU5vZGUiLCJsZW1tYSIsImxlbW1hRnJvbUxlbW1hTm9kZSIsInNjaGVtYU5vZGUiLCJzY2hlbWEiLCJzY2hlbWFGcm9tU2NoZW1hTm9kZSIsInNlY3Rpb25Ob2RlIiwic2VjdGlvbiIsInNlY3Rpb25Gcm9tU2VjdGlvbk5vZGUiLCJ0aGVvcmVtTm9kZSIsInRoZW9yZW0iLCJ0aGVvcmVtRnJvbVRoZW9yZW1Ob2RlIiwiY29uamVjdHVyZU5vZGUiLCJjb25qZWN0dXJlIiwiY29uamVjdHVyZUZyb21Db25qZWN0dXJlTm9kZSIsInR5cGVEZWNsYXJhdGlvbk5vZGUiLCJ0eXBlRGVjbGFyYXRpb24iLCJ0eXBlRGVjbGFyYXRpb25Gcm9tVHlwZURlY2xhcmF0aW9uTm9kZSIsImNvdHlwZURlY2xhcmF0aW9uTm9kZSIsImNvdHlwZURlY2xhcmF0aW9uIiwiY290eXBlRGVjbGFyYXRpb25Gcm9tQ290eXBlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJ2YXJpYWJsZURlY2xhcmF0aW9uIiwidmFyaWFibGVEZWNsYXJhdGlvbkZyb21WYXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsImdlbmVyYXRvckRlY2xhcmF0aW9uTm9kZSIsImdlbmVyYXRvckRlY2xhcmF0aW9uIiwiZ2VuZXJhdG9yRGVjbGFyYXRpb25Gcm9tR2VuZXJhdG9yRGVjbGFyYXRpb25Ob2RlIiwidHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSIsInR5cGVQcmVmaXhEZWNsYXJhdGlvbiIsInR5cGVQcmVmaXhEZWNsYXJhdGlvbkZyb21UeXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlIiwiY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbiIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbkZyb21Db21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbkZyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Gcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidG9wTGV2ZWxQYXNzIiwiZmlsZU5vZGUiLCJub2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnTGdCQTs7O2VBQUFBOzs7NEJBOUtlO2dDQUNFO3lCQWlCc0M7QUFFdkUsTUFBTSxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMEJBQWM7QUFFcEMsTUFBTUMsZ0JBQWdCRixVQUFVLFVBQzFCRyxpQkFBaUJILFVBQVUsV0FDM0JJLGlCQUFpQkosVUFBVSxXQUMzQkssaUJBQWlCTCxVQUFVLFdBQzNCTSxrQkFBa0JOLFVBQVUsWUFDNUJPLG1CQUFtQlAsVUFBVSxhQUM3QlEsbUJBQW1CUixVQUFVLGFBQzdCUyxzQkFBc0JULFVBQVUsZ0JBQ2hDVSwyQkFBMkJWLFVBQVUscUJBQ3JDVyw2QkFBNkJYLFVBQVUsdUJBQ3ZDWSwrQkFBK0JaLFVBQVUseUJBQ3pDYSxnQ0FBZ0NiLFVBQVUsMEJBQzFDYyxpQ0FBaUNkLFVBQVUsMkJBQzNDZSxpQ0FBaUNmLFVBQVUsMkJBQzNDZ0Isa0NBQWtDaEIsVUFBVSw0QkFDNUNpQixtQ0FBbUNqQixVQUFVO0FBRW5E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
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZlcmlmeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tcXVlcnlcIlxuaW1wb3J0IHsgQ29udGludWF0aW9uUGFzcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgcnVsZUZyb21SdWxlTm9kZSxcbiAgICAgICAgIGVycm9yRnJvbUVycm9yTm9kZSxcbiAgICAgICAgIGF4aW9tRnJvbUF4aW9tTm9kZSxcbiAgICAgICAgIGxlbW1hRnJvbUxlbW1hTm9kZSxcbiAgICAgICAgIHNjaGVtYUZyb21TY2hlbWFOb2RlLFxuICAgICAgICAgc2VjdGlvbkZyb21TZWN0aW9uTm9kZSxcbiAgICAgICAgIHRoZW9yZW1Gcm9tVGhlb3JlbU5vZGUsXG4gICAgICAgICBjb25qZWN0dXJlRnJvbUNvbmplY3R1cmVOb2RlLFxuICAgICAgICAgdHlwZURlY2xhcmF0aW9uRnJvbVR5cGVEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICBjb3R5cGVEZWNsYXJhdGlvbkZyb21Db3R5cGVEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uRnJvbVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICAgICAgICAgZ2VuZXJhdG9yRGVjbGFyYXRpb25Gcm9tR2VuZXJhdG9yRGVjbGFyYXRpb25Ob2RlLFxuICAgICAgICAgdHlwZVByZWZpeERlY2xhcmF0aW9uRnJvbVR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICBjb21iaW5hdG9yRGVjbGFyYXRpb25Gcm9tQ29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSxcbiAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Gcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbkZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBub2RlUXVlcnkgfSA9IHF1ZXJ5VXRpbGl0aWVzO1xuXG5jb25zdCBydWxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3J1bGVcIiksXG4gICAgICBlcnJvck5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9lcnJvclwiKSxcbiAgICAgIGF4aW9tTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2F4aW9tXCIpLFxuICAgICAgbGVtbWFOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbGVtbWFcIiksXG4gICAgICBzY2hlbWFOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc2NoZW1hXCIpLFxuICAgICAgc2VjdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zZWN0aW9uXCIpLFxuICAgICAgdGhlb3JlbU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90aGVvcmVtXCIpLFxuICAgICAgY29uamVjdHVyZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9jb25qZWN0dXJlXCIpLFxuICAgICAgdHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVEZWNsYXJhdGlvblwiKSxcbiAgICAgIGNvdHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2NvdHlwZURlY2xhcmF0aW9uXCIpLFxuICAgICAgdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi92YXJpYWJsZURlY2xhcmF0aW9uXCIpLFxuICAgICAgZ2VuZXJhdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZ2VuZXJhdG9yRGVjbGFyYXRpb25cIiksXG4gICAgICBjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29tYmluYXRvckRlY2xhcmF0aW9uXCIpLFxuICAgICAgdHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVQcmVmaXhEZWNsYXJhdGlvblwiKSxcbiAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29uc3RydWN0b3JEZWNsYXJhdGlvblwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZURlY2xhcmF0aW9uXCIpO1xuXG5jbGFzcyBUb3BMZXZlbFBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBlcnJvck5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGVycm9yTm9kZSwgY29udGV4dCwgYmFjaywgZm9yd2FyZCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IGVycm9yRnJvbUVycm9yTm9kZShlcnJvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBlcnJvci52ZXJpZnkoY29udGV4dCwgYmFjaywgZm9yd2FyZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHJ1bGVOb2RlUXVlcnksXG4gICAgICBydW46IChydWxlTm9kZSwgY29udGV4dCwgYmFjaywgZm9yd2FyZCkgPT4ge1xuICAgICAgICBjb25zdCBydWxlID0gcnVsZUZyb21SdWxlTm9kZShydWxlTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHJ1bGUudmVyaWZ5KGNvbnRleHQsIGJhY2ssIGZvcndhcmQpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBheGlvbU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGF4aW9tTm9kZSwgY29udGV4dCwgYmFjaywgZm9yd2FyZCkgPT4ge1xuICAgICAgICBjb25zdCBheGlvbSA9IGF4aW9tRnJvbUF4aW9tTm9kZShheGlvbU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBheGlvbS52ZXJpZnkoY29udGV4dCwgYmFjaywgZm9yd2FyZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGxlbW1hTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAobGVtbWFOb2RlLCBjb250ZXh0LCBiYWNrLCBmb3J3YXJkKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlbW1hID0gbGVtbWFGcm9tTGVtbWFOb2RlKGxlbW1hTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIGxlbW1hLnZlcmlmeShjb250ZXh0LCBiYWNrLCBmb3J3YXJkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogc2NoZW1hTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoc2NoZW1hTm9kZSwgY29udGV4dCwgYmFjaywgZm9yd2FyZCkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWEgPSBzY2hlbWFGcm9tU2NoZW1hTm9kZShzY2hlbWFOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc2NoZW1hLnZlcmlmeShjb250ZXh0LCBiYWNrLCBmb3J3YXJkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogc2VjdGlvbk5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHNlY3Rpb25Ob2RlLCBjb250ZXh0LCBiYWNrLCBmb3J3YXJkKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlY3Rpb24gPSBzZWN0aW9uRnJvbVNlY3Rpb25Ob2RlKHNlY3Rpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc2VjdGlvbi52ZXJpZnkoY29udGV4dCwgYmFjaywgZm9yd2FyZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRoZW9yZW1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0aGVvcmVtTm9kZSwgY29udGV4dCwgYmFjaywgZm9yd2FyZCkgPT4ge1xuICAgICAgICBjb25zdCB0aGVvcmVtID0gdGhlb3JlbUZyb21UaGVvcmVtTm9kZSh0aGVvcmVtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHRoZW9yZW0udmVyaWZ5KGNvbnRleHQsIGJhY2ssIGZvcndhcmQpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBjb25qZWN0dXJlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoY29uamVjdHVyZU5vZGUsIGNvbnRleHQsIGJhY2ssIGZvcndhcmQpID0+IHtcbiAgICAgICAgY29uc3QgY29uamVjdHVyZSA9IGNvbmplY3R1cmVGcm9tQ29uamVjdHVyZU5vZGUoY29uamVjdHVyZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBjb25qZWN0dXJlLnZlcmlmeShjb250ZXh0LCBiYWNrLCBmb3J3YXJkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodHlwZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCwgYmFjaywgZm9yd2FyZCkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlRGVjbGFyYXRpb24gPSB0eXBlRGVjbGFyYXRpb25Gcm9tVHlwZURlY2xhcmF0aW9uTm9kZSh0eXBlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdHlwZURlY2xhcmF0aW9uLnZlcmlmeShjb250ZXh0LCBiYWNrLCBmb3J3YXJkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogY290eXBlRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46IChjb3R5cGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQsIGJhY2ssIGZvcndhcmQpID0+IHtcbiAgICAgICAgY29uc3QgY290eXBlRGVjbGFyYXRpb24gPSBjb3R5cGVEZWNsYXJhdGlvbkZyb21Db3R5cGVEZWNsYXJhdGlvbk5vZGUoY290eXBlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gY290eXBlRGVjbGFyYXRpb24udmVyaWZ5KGNvbnRleHQsIGJhY2ssIGZvcndhcmQpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQsIGJhY2ssIGZvcndhcmQpID0+IHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvbiA9IHZhcmlhYmxlRGVjbGFyYXRpb25Gcm9tVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YXJpYWJsZURlY2xhcmF0aW9uLnZlcmlmeShjb250ZXh0LCBiYWNrLCBmb3J3YXJkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogZ2VuZXJhdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmF0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQsIGJhY2ssIGZvcndhcmQpID0+IHtcbiAgICAgICAgY29uc3QgZ2VuZXJhdG9yRGVjbGFyYXRpb24gPSBnZW5lcmF0b3JEZWNsYXJhdGlvbkZyb21HZW5lcmF0b3JEZWNsYXJhdGlvbk5vZGUoZ2VuZXJhdG9yRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gZ2VuZXJhdG9yRGVjbGFyYXRpb24udmVyaWZ5KGNvbnRleHQsIGJhY2ssIGZvcndhcmQpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46ICh0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0LCBiYWNrLCBmb3J3YXJkKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVQcmVmaXhEZWNsYXJhdGlvbiA9IHR5cGVQcmVmaXhEZWNsYXJhdGlvbkZyb21UeXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlKHR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB0eXBlUHJlZml4RGVjbGFyYXRpb24udmVyaWZ5KGNvbnRleHQsIGJhY2ssIGZvcndhcmQpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46IChjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0LCBiYWNrLCBmb3J3YXJkKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbWJpbmF0b3JEZWNsYXJhdGlvbiA9IGNvbWJpbmF0b3JEZWNsYXJhdGlvbkZyb21Db21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlKGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBjb21iaW5hdG9yRGVjbGFyYXRpb24udmVyaWZ5KGNvbnRleHQsIGJhY2ssIGZvcndhcmQpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQsIGJhY2ssIGZvcndhcmQpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RydWN0b3JEZWNsYXJhdGlvbiA9IGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Gcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uLnZlcmlmeShjb250ZXh0LCBiYWNrLCBmb3J3YXJkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46IChtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQsIGJhY2ssIGZvcndhcmQpID0+IHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb24gPSBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbkZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gbWV0YXZhcmlhYmxlRGVjbGFyYXRpb24udmVyaWZ5KGNvbnRleHQsIGJhY2ssIGZvcndhcmQpO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgdG9wTGV2ZWxQYXNzID0gbmV3IFRvcExldmVsUGFzcygpO1xuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5RmlsZShmaWxlTm9kZSwgY29udGV4dCwgYmFjaywgZm9yd2FyZCkge1xuICBjb25zdCBub2RlID0gZmlsZU5vZGU7IC8vL1xuXG4gIHJldHVybiB0b3BMZXZlbFBhc3MucnVuKG5vZGUsIGNvbnRleHQsIGJhY2ssIGZvcndhcmQpO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeUZpbGUiLCJub2RlUXVlcnkiLCJxdWVyeVV0aWxpdGllcyIsInJ1bGVOb2RlUXVlcnkiLCJlcnJvck5vZGVRdWVyeSIsImF4aW9tTm9kZVF1ZXJ5IiwibGVtbWFOb2RlUXVlcnkiLCJzY2hlbWFOb2RlUXVlcnkiLCJzZWN0aW9uTm9kZVF1ZXJ5IiwidGhlb3JlbU5vZGVRdWVyeSIsImNvbmplY3R1cmVOb2RlUXVlcnkiLCJ0eXBlRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJjb3R5cGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsInZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJnZW5lcmF0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSIsInR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGVRdWVyeSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsIlRvcExldmVsUGFzcyIsIkNvbnRpbnVhdGlvblBhc3MiLCJtYXBzIiwicnVuIiwiZXJyb3JOb2RlIiwiY29udGV4dCIsImJhY2siLCJmb3J3YXJkIiwiZXJyb3IiLCJlcnJvckZyb21FcnJvck5vZGUiLCJ2ZXJpZnkiLCJydWxlTm9kZSIsInJ1bGUiLCJydWxlRnJvbVJ1bGVOb2RlIiwiYXhpb21Ob2RlIiwiYXhpb20iLCJheGlvbUZyb21BeGlvbU5vZGUiLCJsZW1tYU5vZGUiLCJsZW1tYSIsImxlbW1hRnJvbUxlbW1hTm9kZSIsInNjaGVtYU5vZGUiLCJzY2hlbWEiLCJzY2hlbWFGcm9tU2NoZW1hTm9kZSIsInNlY3Rpb25Ob2RlIiwic2VjdGlvbiIsInNlY3Rpb25Gcm9tU2VjdGlvbk5vZGUiLCJ0aGVvcmVtTm9kZSIsInRoZW9yZW0iLCJ0aGVvcmVtRnJvbVRoZW9yZW1Ob2RlIiwiY29uamVjdHVyZU5vZGUiLCJjb25qZWN0dXJlIiwiY29uamVjdHVyZUZyb21Db25qZWN0dXJlTm9kZSIsInR5cGVEZWNsYXJhdGlvbk5vZGUiLCJ0eXBlRGVjbGFyYXRpb24iLCJ0eXBlRGVjbGFyYXRpb25Gcm9tVHlwZURlY2xhcmF0aW9uTm9kZSIsImNvdHlwZURlY2xhcmF0aW9uTm9kZSIsImNvdHlwZURlY2xhcmF0aW9uIiwiY290eXBlRGVjbGFyYXRpb25Gcm9tQ290eXBlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJ2YXJpYWJsZURlY2xhcmF0aW9uIiwidmFyaWFibGVEZWNsYXJhdGlvbkZyb21WYXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsImdlbmVyYXRvckRlY2xhcmF0aW9uTm9kZSIsImdlbmVyYXRvckRlY2xhcmF0aW9uIiwiZ2VuZXJhdG9yRGVjbGFyYXRpb25Gcm9tR2VuZXJhdG9yRGVjbGFyYXRpb25Ob2RlIiwidHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSIsInR5cGVQcmVmaXhEZWNsYXJhdGlvbiIsInR5cGVQcmVmaXhEZWNsYXJhdGlvbkZyb21UeXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlIiwiY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbiIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbkZyb21Db21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbkZyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Gcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidG9wTGV2ZWxQYXNzIiwiZmlsZU5vZGUiLCJub2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnTGdCQTs7O2VBQUFBOzs7NEJBOUtlO2dDQUNFO3lCQWlCc0M7QUFFdkUsTUFBTSxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMEJBQWM7QUFFcEMsTUFBTUMsZ0JBQWdCRixVQUFVLFVBQzFCRyxpQkFBaUJILFVBQVUsV0FDM0JJLGlCQUFpQkosVUFBVSxXQUMzQkssaUJBQWlCTCxVQUFVLFdBQzNCTSxrQkFBa0JOLFVBQVUsWUFDNUJPLG1CQUFtQlAsVUFBVSxhQUM3QlEsbUJBQW1CUixVQUFVLGFBQzdCUyxzQkFBc0JULFVBQVUsZ0JBQ2hDVSwyQkFBMkJWLFVBQVUscUJBQ3JDVyw2QkFBNkJYLFVBQVUsdUJBQ3ZDWSwrQkFBK0JaLFVBQVUseUJBQ3pDYSxnQ0FBZ0NiLFVBQVUsMEJBQzFDYyxpQ0FBaUNkLFVBQVUsMkJBQzNDZSxpQ0FBaUNmLFVBQVUsMkJBQzNDZ0Isa0NBQWtD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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-nominal",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.460",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.6.3",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.458",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.22",
|
|
16
|
-
"occam-languages": "^3.0.
|
|
16
|
+
"occam-languages": "^3.0.16",
|
|
17
17
|
"occam-query": "^4.1.206"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
@@ -707,12 +707,12 @@ export default class NominalFileContext extends FileContext {
|
|
|
707
707
|
///
|
|
708
708
|
}
|
|
709
709
|
|
|
710
|
-
verifyFile(
|
|
710
|
+
verifyFile(back, forward) {
|
|
711
711
|
const node = this.getNode(),
|
|
712
712
|
context = this, ///
|
|
713
713
|
fileNode = node; ///
|
|
714
714
|
|
|
715
|
-
return verifyFile(fileNode, context,
|
|
715
|
+
return verifyFile(fileNode, context, back, forward);
|
|
716
716
|
}
|
|
717
717
|
|
|
718
718
|
initialise() {
|
package/src/element/error.js
CHANGED
|
@@ -12,14 +12,12 @@ export default define(class Error extends Element {
|
|
|
12
12
|
return errorNode;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
verify(context,
|
|
16
|
-
let verifies = false;
|
|
17
|
-
|
|
15
|
+
verify(context, back, forward) {
|
|
18
16
|
const errorString = this.getString(); ///
|
|
19
17
|
|
|
20
18
|
context.warning(`The '${errorString}' error cannot be verified.`);
|
|
21
19
|
|
|
22
|
-
return
|
|
20
|
+
return back();
|
|
23
21
|
}
|
|
24
22
|
|
|
25
23
|
static name = "Error";
|
|
@@ -48,8 +48,10 @@ class Element {
|
|
|
48
48
|
this.breakPoint = breakPoint;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
break(context) {
|
|
52
|
+
debugger
|
|
53
|
+
|
|
54
|
+
this.breakPoint = context.break(this.node, this.breakPoint);
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
matchNode(node) { return this.node.match(node); }
|
package/src/process/verify.js
CHANGED
|
@@ -43,130 +43,130 @@ class TopLevelPass extends ContinuationPass {
|
|
|
43
43
|
static maps = [
|
|
44
44
|
{
|
|
45
45
|
nodeQuery: errorNodeQuery,
|
|
46
|
-
run: (errorNode, context,
|
|
46
|
+
run: (errorNode, context, back, forward) => {
|
|
47
47
|
const error = errorFromErrorNode(errorNode, context);
|
|
48
48
|
|
|
49
|
-
return error.verify(context,
|
|
49
|
+
return error.verify(context, back, forward);
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
nodeQuery: ruleNodeQuery,
|
|
54
|
-
run: (ruleNode, context,
|
|
54
|
+
run: (ruleNode, context, back, forward) => {
|
|
55
55
|
const rule = ruleFromRuleNode(ruleNode, context);
|
|
56
56
|
|
|
57
|
-
return rule.verify(context,
|
|
57
|
+
return rule.verify(context, back, forward);
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
nodeQuery: axiomNodeQuery,
|
|
62
|
-
run: (axiomNode, context,
|
|
62
|
+
run: (axiomNode, context, back, forward) => {
|
|
63
63
|
const axiom = axiomFromAxiomNode(axiomNode, context);
|
|
64
64
|
|
|
65
|
-
return axiom.verify(context,
|
|
65
|
+
return axiom.verify(context, back, forward);
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
nodeQuery: lemmaNodeQuery,
|
|
70
|
-
run: (lemmaNode, context,
|
|
70
|
+
run: (lemmaNode, context, back, forward) => {
|
|
71
71
|
const lemma = lemmaFromLemmaNode(lemmaNode, context);
|
|
72
72
|
|
|
73
|
-
return lemma.verify(context,
|
|
73
|
+
return lemma.verify(context, back, forward);
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
nodeQuery: schemaNodeQuery,
|
|
78
|
-
run: (schemaNode, context,
|
|
78
|
+
run: (schemaNode, context, back, forward) => {
|
|
79
79
|
const schema = schemaFromSchemaNode(schemaNode, context);
|
|
80
80
|
|
|
81
|
-
return schema.verify(context,
|
|
81
|
+
return schema.verify(context, back, forward);
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
nodeQuery: sectionNodeQuery,
|
|
86
|
-
run: (sectionNode, context,
|
|
86
|
+
run: (sectionNode, context, back, forward) => {
|
|
87
87
|
const section = sectionFromSectionNode(sectionNode, context);
|
|
88
88
|
|
|
89
|
-
return section.verify(context,
|
|
89
|
+
return section.verify(context, back, forward);
|
|
90
90
|
}
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
nodeQuery: theoremNodeQuery,
|
|
94
|
-
run: (theoremNode, context,
|
|
94
|
+
run: (theoremNode, context, back, forward) => {
|
|
95
95
|
const theorem = theoremFromTheoremNode(theoremNode, context);
|
|
96
96
|
|
|
97
|
-
return theorem.verify(context,
|
|
97
|
+
return theorem.verify(context, back, forward);
|
|
98
98
|
}
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
101
|
nodeQuery: conjectureNodeQuery,
|
|
102
|
-
run: (conjectureNode, context,
|
|
102
|
+
run: (conjectureNode, context, back, forward) => {
|
|
103
103
|
const conjecture = conjectureFromConjectureNode(conjectureNode, context);
|
|
104
104
|
|
|
105
|
-
return conjecture.verify(context,
|
|
105
|
+
return conjecture.verify(context, back, forward);
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
109
|
nodeQuery: typeDeclarationNodeQuery,
|
|
110
|
-
run: (typeDeclarationNode, context,
|
|
110
|
+
run: (typeDeclarationNode, context, back, forward) => {
|
|
111
111
|
const typeDeclaration = typeDeclarationFromTypeDeclarationNode(typeDeclarationNode, context);
|
|
112
112
|
|
|
113
|
-
return typeDeclaration.verify(context,
|
|
113
|
+
return typeDeclaration.verify(context, back, forward);
|
|
114
114
|
}
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
117
|
nodeQuery: cotypeDeclarationNodeQuery,
|
|
118
|
-
run: (cotypeDeclarationNode, context,
|
|
118
|
+
run: (cotypeDeclarationNode, context, back, forward) => {
|
|
119
119
|
const cotypeDeclaration = cotypeDeclarationFromCotypeDeclarationNode(cotypeDeclarationNode, context);
|
|
120
120
|
|
|
121
|
-
return cotypeDeclaration.verify(context,
|
|
121
|
+
return cotypeDeclaration.verify(context, back, forward);
|
|
122
122
|
}
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
nodeQuery: variableDeclarationNodeQuery,
|
|
126
|
-
run: (variableDeclarationNode, context,
|
|
126
|
+
run: (variableDeclarationNode, context, back, forward) => {
|
|
127
127
|
const variableDeclaration = variableDeclarationFromVariableDeclarationNode(variableDeclarationNode, context);
|
|
128
128
|
|
|
129
|
-
return variableDeclaration.verify(context,
|
|
129
|
+
return variableDeclaration.verify(context, back, forward);
|
|
130
130
|
}
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
nodeQuery: generatorDeclarationNodeQuery,
|
|
134
|
-
run: (generatorDeclarationNode, context,
|
|
134
|
+
run: (generatorDeclarationNode, context, back, forward) => {
|
|
135
135
|
const generatorDeclaration = generatorDeclarationFromGeneratorDeclarationNode(generatorDeclarationNode, context);
|
|
136
136
|
|
|
137
|
-
return generatorDeclaration.verify(context,
|
|
137
|
+
return generatorDeclaration.verify(context, back, forward);
|
|
138
138
|
}
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
nodeQuery: typePrefixDeclarationNodeQuery,
|
|
142
|
-
run: (typePrefixDeclarationNode, context,
|
|
142
|
+
run: (typePrefixDeclarationNode, context, back, forward) => {
|
|
143
143
|
const typePrefixDeclaration = typePrefixDeclarationFromTypePrefixDeclarationNode(typePrefixDeclarationNode, context);
|
|
144
144
|
|
|
145
|
-
return typePrefixDeclaration.verify(context,
|
|
145
|
+
return typePrefixDeclaration.verify(context, back, forward);
|
|
146
146
|
}
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
nodeQuery: combinatorDeclarationNodeQuery,
|
|
150
|
-
run: (combinatorDeclarationNode, context,
|
|
150
|
+
run: (combinatorDeclarationNode, context, back, forward) => {
|
|
151
151
|
const combinatorDeclaration = combinatorDeclarationFromCombinatorDeclarationNode(combinatorDeclarationNode, context);
|
|
152
152
|
|
|
153
|
-
return combinatorDeclaration.verify(context,
|
|
153
|
+
return combinatorDeclaration.verify(context, back, forward);
|
|
154
154
|
}
|
|
155
155
|
},
|
|
156
156
|
{
|
|
157
157
|
nodeQuery: constructorDeclarationNodeQuery,
|
|
158
|
-
run: (constructorDeclarationNode, context,
|
|
158
|
+
run: (constructorDeclarationNode, context, back, forward) => {
|
|
159
159
|
const constructorDeclaration = constructorDeclarationFromConstructorDeclarationNode(constructorDeclarationNode, context);
|
|
160
160
|
|
|
161
|
-
return constructorDeclaration.verify(context,
|
|
161
|
+
return constructorDeclaration.verify(context, back, forward);
|
|
162
162
|
}
|
|
163
163
|
},
|
|
164
164
|
{
|
|
165
165
|
nodeQuery: metavariableDeclarationNodeQuery,
|
|
166
|
-
run: (metavariableDeclarationNode, context,
|
|
166
|
+
run: (metavariableDeclarationNode, context, back, forward) => {
|
|
167
167
|
const metavariableDeclaration = metavariableDeclarationFromMetavariableDeclarationNode(metavariableDeclarationNode, context);
|
|
168
168
|
|
|
169
|
-
return metavariableDeclaration.verify(context,
|
|
169
|
+
return metavariableDeclaration.verify(context, back, forward);
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
];
|
|
@@ -174,8 +174,8 @@ class TopLevelPass extends ContinuationPass {
|
|
|
174
174
|
|
|
175
175
|
const topLevelPass = new TopLevelPass();
|
|
176
176
|
|
|
177
|
-
export function verifyFile(fileNode, context,
|
|
177
|
+
export function verifyFile(fileNode, context, back, forward) {
|
|
178
178
|
const node = fileNode; ///
|
|
179
179
|
|
|
180
|
-
return topLevelPass.run(node, context,
|
|
180
|
+
return topLevelPass.run(node, context, back, forward);
|
|
181
181
|
}
|