occam-nominal 1.0.437 → 1.0.441
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/element/fact.js +3 -3
- package/lib/process/unify.js +2 -2
- package/package.json +1 -1
- package/src/element/fact.js +2 -2
- package/src/process/unify.js +2 -2
package/lib/element/fact.js
CHANGED
|
@@ -124,7 +124,7 @@ class Fact extends _occamlanguages.Element {
|
|
|
124
124
|
unifyStatement(statement, generalContext, specificContext, continuation) {
|
|
125
125
|
if (this.statement === null) {
|
|
126
126
|
const statementUnifies = false;
|
|
127
|
-
return continuation(statementUnifies
|
|
127
|
+
return continuation(statementUnifies);
|
|
128
128
|
}
|
|
129
129
|
const context = specificContext, factString = this.getString(), statementString = statement.getString();
|
|
130
130
|
context.trace(`Unifying the '${statementString}' statement with the '${factString}' fact's statement...`);
|
|
@@ -132,9 +132,9 @@ class Fact extends _occamlanguages.Element {
|
|
|
132
132
|
if (statementUnifies) {
|
|
133
133
|
context.debug(`...unified the '${statementString}' statement with the '${factString}' fact's statement.`);
|
|
134
134
|
}
|
|
135
|
-
return continuation(statementUnifies
|
|
135
|
+
return continuation(statementUnifies);
|
|
136
136
|
});
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2ZhY3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGVxdWF0ZVN0YXRlbWVudHMgfSBmcm9tIFwiLi4vcHJvY2Vzcy9lcXVhdGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmFjdCBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCwgcmVmZXJlbmNlLCBwcm9jZWR1cmVDYWxsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIHRoaXMucHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGw7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZUNhbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlQ2FsbDtcbiAgfVxuXG4gIGdldEZhY3ROb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBmYWN0Tm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBmYWN0Tm9kZTtcbiAgfVxuXG4gIGlzRmFjdCgpIHtcbiAgICBjb25zdCBmYWN0ID0gdHJ1ZTtcblxuICAgIHJldHVybiBmYWN0O1xuICB9XG5cbiAgaXNTdGVwKCkge1xuICAgIGNvbnN0IHN0ZXAgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG5cbiAgICBpZiAodGhpcy5zdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZhY3RTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtmYWN0U3RyaW5nfScgZmFjdCdzIHN0YXRlbWVudC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXM7XG5cbiAgICBpZiAodGhpcy5yZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZhY3RTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgICByZWZlcmVuY2VTdHJpbmcgPSB0aGlzLnJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgICAgcmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy5yZWZlcmVuY2UudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChyZWZlcmVuY2UsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0J3MgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVByb2NlZHVyZUNhbGwoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzO1xuXG4gICAgaWYgKHRoaXMucHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZmFjdFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QncyBwcm9jZWR1cmUgY2FsbC4uLmApO1xuXG4gICAgICBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzID0gdGhpcy5wcm9jZWR1cmVDYWxsLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocHJvY2VkdXJlQ2FsbCwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIHRoaXMucHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGw7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwcm9jZWR1cmVDYWxsVmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QncyBwcm9jZWR1cmUgY2FsbC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2VkdXJlQ2FsbFZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2NlZHVyZUNhbGxWYWxpZGF0ZXM7XG4gIH1cblxuICBjb21wYXJlU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbXBhcmVzVG9TdGVwID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBmYWN0U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQ29tcGFyaW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB0byB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgY29tcGFyZXNUb1N0YXRlbWVudCA9IHRoaXMuY29tcGFyZVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKGNvbXBhcmVzVG9TdGF0ZW1lbnQpIHtcbiAgICAgIGNvbXBhcmVzVG9TdGVwID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY29tcGFyZXNUb1N0ZXApIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNvbXBhcmVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB0byB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9TdGVwO1xuICB9XG5cbiAgY29tcGFyZVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQgY29tcGFyZXNUb1N0YXRlbWVudCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGZhY3RTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBDb21wYXJpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB0byB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QuLi5gKTtcblxuICAgIGNvbnN0IGxlZnRTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICByaWdodFN0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50LCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50c0VxdWF0ZSA9IGVxdWF0ZVN0YXRlbWVudHMobGVmdFN0YXRlbWVudCwgcmlnaHRTdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudHNFcXVhdGUpIHtcbiAgICAgIGNvbXBhcmVzVG9TdGF0ZW1lbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjb21wYXJlc1RvU3RhdGVtZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5jb21wYXJlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHRvIHRoZSAnJHtmYWN0U3RyaW5nfScgZmFjdC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1N0YXRlbWVudDtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgaWYgKHRoaXMuc3RhdGVtZW50ID09PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VW5pZmllcywgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGZhY3RTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0J3Mgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFVuaWZpZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG59XG4iXSwibmFtZXMiOlsiRmFjdCIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJyZWZlcmVuY2UiLCJwcm9jZWR1cmVDYWxsIiwiZ2V0U3RhdGVtZW50IiwiZ2V0UmVmZXJlbmNlIiwiZ2V0UHJvY2VkdXJlQ2FsbCIsImdldEZhY3ROb2RlIiwiZ2V0Tm9kZSIsImZhY3ROb2RlIiwiaXNGYWN0IiwiZmFjdCIsImlzU3RlcCIsInN0ZXAiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInN0YXRlIiwiY29udGludWF0aW9uIiwic3RhdGVtZW50VmFsaWRhdGVzIiwiZmFjdFN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsInJlZmVyZW5jZVZhbGlkYXRlcyIsInJlZmVyZW5jZVN0cmluZyIsImRlYnVnIiwidmFsaWRhdGVQcm9jZWR1cmVDYWxsIiwicHJvY2VkdXJlQ2FsbFZhbGlkYXRlcyIsImNvbXBhcmVTdGVwIiwiY29tcGFyZXNUb1N0ZXAiLCJzdGVwU3RyaW5nIiwiY29tcGFyZXNUb1N0YXRlbWVudCIsImNvbXBhcmVTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJsZWZ0U3RhdGVtZW50IiwicmlnaHRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRzRXF1YXRlIiwiZXF1YXRlU3RhdGVtZW50cyIsInVuaWZ5U3RhdGVtZW50IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXFCQTs7O2dDQUpHO3dCQUVTO0FBRWxCLE1BQU1BLGFBQWFDLHVCQUFPO0lBQ3ZDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUVDLGFBQWEsQ0FB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
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2ZhY3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGVxdWF0ZVN0YXRlbWVudHMgfSBmcm9tIFwiLi4vcHJvY2Vzcy9lcXVhdGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmFjdCBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCwgcmVmZXJlbmNlLCBwcm9jZWR1cmVDYWxsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIHRoaXMucHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGw7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZUNhbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlQ2FsbDtcbiAgfVxuXG4gIGdldEZhY3ROb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBmYWN0Tm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBmYWN0Tm9kZTtcbiAgfVxuXG4gIGlzRmFjdCgpIHtcbiAgICBjb25zdCBmYWN0ID0gdHJ1ZTtcblxuICAgIHJldHVybiBmYWN0O1xuICB9XG5cbiAgaXNTdGVwKCkge1xuICAgIGNvbnN0IHN0ZXAgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG5cbiAgICBpZiAodGhpcy5zdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZhY3RTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtmYWN0U3RyaW5nfScgZmFjdCdzIHN0YXRlbWVudC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXM7XG5cbiAgICBpZiAodGhpcy5yZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZhY3RTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgICByZWZlcmVuY2VTdHJpbmcgPSB0aGlzLnJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgICAgcmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy5yZWZlcmVuY2UudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChyZWZlcmVuY2UsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0J3MgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVByb2NlZHVyZUNhbGwoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzO1xuXG4gICAgaWYgKHRoaXMucHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZmFjdFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QncyBwcm9jZWR1cmUgY2FsbC4uLmApO1xuXG4gICAgICBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzID0gdGhpcy5wcm9jZWR1cmVDYWxsLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocHJvY2VkdXJlQ2FsbCwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIHRoaXMucHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGw7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwcm9jZWR1cmVDYWxsVmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QncyBwcm9jZWR1cmUgY2FsbC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2VkdXJlQ2FsbFZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2NlZHVyZUNhbGxWYWxpZGF0ZXM7XG4gIH1cblxuICBjb21wYXJlU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbXBhcmVzVG9TdGVwID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBmYWN0U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQ29tcGFyaW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB0byB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgY29tcGFyZXNUb1N0YXRlbWVudCA9IHRoaXMuY29tcGFyZVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKGNvbXBhcmVzVG9TdGF0ZW1lbnQpIHtcbiAgICAgIGNvbXBhcmVzVG9TdGVwID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY29tcGFyZXNUb1N0ZXApIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNvbXBhcmVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB0byB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9TdGVwO1xuICB9XG5cbiAgY29tcGFyZVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQgY29tcGFyZXNUb1N0YXRlbWVudCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGZhY3RTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBDb21wYXJpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB0byB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3QuLi5gKTtcblxuICAgIGNvbnN0IGxlZnRTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICByaWdodFN0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50LCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50c0VxdWF0ZSA9IGVxdWF0ZVN0YXRlbWVudHMobGVmdFN0YXRlbWVudCwgcmlnaHRTdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudHNFcXVhdGUpIHtcbiAgICAgIGNvbXBhcmVzVG9TdGF0ZW1lbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjb21wYXJlc1RvU3RhdGVtZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5jb21wYXJlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHRvIHRoZSAnJHtmYWN0U3RyaW5nfScgZmFjdC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1N0YXRlbWVudDtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgaWYgKHRoaXMuc3RhdGVtZW50ID09PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VW5pZmllcyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGZhY3RTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0J3Mgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG59XG4iXSwibmFtZXMiOlsiRmFjdCIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJyZWZlcmVuY2UiLCJwcm9jZWR1cmVDYWxsIiwiZ2V0U3RhdGVtZW50IiwiZ2V0UmVmZXJlbmNlIiwiZ2V0UHJvY2VkdXJlQ2FsbCIsImdldEZhY3ROb2RlIiwiZ2V0Tm9kZSIsImZhY3ROb2RlIiwiaXNGYWN0IiwiZmFjdCIsImlzU3RlcCIsInN0ZXAiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInN0YXRlIiwiY29udGludWF0aW9uIiwic3RhdGVtZW50VmFsaWRhdGVzIiwiZmFjdFN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsInJlZmVyZW5jZVZhbGlkYXRlcyIsInJlZmVyZW5jZVN0cmluZyIsImRlYnVnIiwidmFsaWRhdGVQcm9jZWR1cmVDYWxsIiwicHJvY2VkdXJlQ2FsbFZhbGlkYXRlcyIsImNvbXBhcmVTdGVwIiwiY29tcGFyZXNUb1N0ZXAiLCJzdGVwU3RyaW5nIiwiY29tcGFyZXNUb1N0YXRlbWVudCIsImNvbXBhcmVTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJsZWZ0U3RhdGVtZW50IiwicmlnaHRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRzRXF1YXRlIiwiZXF1YXRlU3RhdGVtZW50cyIsInVuaWZ5U3RhdGVtZW50IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXFCQTs7O2dDQUpHO3dCQUVTO0FBRWxCLE1BQU1BLGFBQWFDLHVCQUFPO0lBQ3ZDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUVDLGFBQWEsQ0FBRTtRQUNsRixLQUFLLENBQUNO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
|
package/lib/process/unify.js
CHANGED
|
@@ -420,8 +420,8 @@ function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariabl
|
|
|
420
420
|
return unifyMetavariableIntrisicallyPass.run(generalNode, specificNode, generalContext, specificContext, (success)=>{
|
|
421
421
|
if (success) {
|
|
422
422
|
metavaraibleUnifiesIntrinsically = true;
|
|
423
|
-
return continuation(metavaraibleUnifiesIntrinsically);
|
|
424
423
|
}
|
|
424
|
+
return continuation(metavaraibleUnifiesIntrinsically);
|
|
425
425
|
});
|
|
426
426
|
}
|
|
427
427
|
function unifyTermWithProperty(term, property, generalContext, specificContext, continuation) {
|
|
@@ -457,4 +457,4 @@ function unifyStatementWithCombinator(statement, combinator, generalContext, spe
|
|
|
457
457
|
return statementUnifiesWithCombinator;
|
|
458
458
|
}
|
|
459
459
|
|
|
460
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuXG5pbXBvcnQgeyBDb250aW51YXRpb25aaXBQYXNzIGFzIEFzeW5jaHJvbm91c0NvbnRpbnVhdGlvblppcFBhc3MgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDb250aW51YXRpb25aaXBQYXNzQmFzZSBmcm9tIFwiLi4vcGFzcy9jb250aW51YXRpb25aaXBcIjsgIC8vL1xuXG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgRlJBTUVfTUVUQV9UWVBFX05BTUUsIFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSB9IGZyb20gXCIuLi9tZXRhVHlwZU5hbWVzXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1Ob2RlLCBmcmFtZUZyb21GcmFtZU5vZGUsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgbm9kZVF1ZXJ5IH0gPSBxdWVyeVV0aWxpdGllcztcblxuY29uc3QgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlXCIpLFxuICAgICAgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtXCIpLFxuICAgICAgZnJhbWVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWVcIiksXG4gICAgICBtZXRhVHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhVHlwZVwiKSxcbiAgICAgIHNpZ25hdHVyZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zaWduYXR1cmVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpLFxuICAgICAgdGVybVZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpLFxuICAgICAgZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWUvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIGFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXNzdW1wdGlvbi9tZXRhdmFyaWFibGUhXCIpO1xuXG5jbGFzcyBDb250aW51YXRpb25aaXBQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzc0Jhc2Uge1xuICBydW4oZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgICBnZW5lcmFsQ2hpbGROb2RlcyA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NoaWxkTm9kZXMgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7IC8vL1xuXG4gICAgcmV0dXJuIHRoaXMuZGVzY2VuZChnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG4gIH1cbn1cblxuY2xhc3MgVW5pZnlTdGF0ZW1lbnRQYXNzIGV4dGVuZHMgQXN5bmNocm9ub3VzQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIC8vIHtcbiAgICAvLyAgIGdlbmVyYWxOb2RlUXVlcnk6IGFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgLy8gICBzcGVjaWZpY05vZGVRdWVyeTogYXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAvLyAgIHJ1bjogKGdlbmVyYWxBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgLy8gICAgIGxldCBjb250ZXh0LFxuICAgIC8vICAgICAgICAgcmVmZXJlbmNlLFxuICAgIC8vICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZTtcbiAgICAvL1xuICAgIC8vICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuICAgIC8vXG4gICAgLy8gICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsQXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGU7ICAvLy9cbiAgICAvL1xuICAgIC8vICAgICByZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG4gICAgLy9cbiAgICAvLyAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpO1xuICAgIC8vXG4gICAgLy8gICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cbiAgICAvL1xuICAgIC8vICAgICBtZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZTsgLy8vXG4gICAgLy9cbiAgICAvLyAgICAgcmVmZXJlbmNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuICAgIC8vXG4gICAgLy8gICAgIHJldHVybiBtZXRhdmFyaWFibGUudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAocmVmZXJlbmNlVW5pZmllcykgPT4ge1xuICAgIC8vICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG4gICAgLy9cbiAgICAvLyAgICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgIC8vICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgLy8gICAgICAgfVxuICAgIC8vXG4gICAgLy8gICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gICB9XG4gICAgLy8gfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljU3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGU7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICByZXR1cm4gbWV0YXZhcmlhYmxlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogZnJhbWVOb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsRnJhbWVNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY0ZyYW1lTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGZyYW1lTm9kZSA9IHNwZWNpZmljRnJhbWVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxGcmFtZU1ldGF2YXJpYWJsZU5vZGU7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IGZyYW1lID0gY29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgICAgIHJldHVybiBtZXRhdmFyaWFibGUudW5pZnlGcmFtZShmcmFtZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGZyYW1lVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoZnJhbWVVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICAgICAgdmFyaWFibGUgPSBkZWNsYXJlZFZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAodGVybVVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIHtcbiAgICAvLyAgIGdlbmVyYWxOb2RlUXVlcnk6IHNpZ25hdHVyZU5vZGVRdWVyeSxcbiAgICAvLyAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzaWduYXR1cmVOb2RlUXVlcnksXG4gICAgLy8gICBydW46IChnZW5lcmFsU2lnbmF0dXJlTm9kZSwgc3BlY2lmaWNTaWduYXR1cmVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAvLyAgICAgbGV0IGNvbnRleHQ7XG4gICAgLy9cbiAgICAvLyAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cbiAgICAvL1xuICAgIC8vICAgICBjb25zdCBnZW5lcmFsU2lnbmF0dXJlID0gY29udGV4dC5maW5kU2lnbmF0dXJlQnlTaWduYXR1cmVOb2RlKGdlbmVyYWxTaWduYXR1cmVOb2RlKTtcbiAgICAvL1xuICAgIC8vICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG4gICAgLy9cbiAgICAvLyAgICAgY29uc3Qgc3BlY2lmaWNTaWduYXR1cmUgPSBjb250ZXh0LmZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUoc3BlY2lmaWNTaWduYXR1cmVOb2RlKTtcbiAgICAvL1xuICAgIC8vICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgLy8gICAgICAgcmV0dXJuIGdlbmVyYWxTaWduYXR1cmUudW5pZnlTaWduYXR1cmUoc3BlY2lmaWNTaWduYXR1cmUsIGNvbnRleHQsIChzaWduYXR1cmVVbmlmaWVzKSA9PiB7XG4gICAgLy8gICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuICAgIC8vXG4gICAgLy8gICAgICAgICBpZiAoc2lnbmF0dXJlVW5pZmllcykge1xuICAgIC8vICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvL1xuICAgIC8vICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICAvLyAgICAgICB9KTtcbiAgICAvLyAgICAgfSwgY29udGV4dCk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeU1ldGF2YXJpYWJsZVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgICAgIHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgIGlmICh0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZkdpdmVuVHlwZVR5cGUpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVW5pZnlUZXJtSW50cmluc2ljYWxseVBhc3MgZXh0ZW5kcyBBc3luY2hyb25vdXNDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdGVybVZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlTm9kZS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKSxcbiAgICAgICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICAgICAgICB2YXJpYWJsZSA9IGRlY2xhcmVkVmFyaWFibGU7ICAvLy9cblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICByZXR1cm4gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsICh0ZXJtVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVW5pZnlNZXRhdmFyaWFibGVJbnRyaXNpY2FsbHlQYXNzIGV4dGVuZHMgQXN5bmNocm9ub3VzQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICAgICAgdmFyaWFibGUgPSBkZWNsYXJlZFZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAodGVybVVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIFVuaWZ5VGVybVdpdGhQcm9wZXJ0eVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgIHN0cmljdCA9IGZhbHNlO1xuXG4gICAgICAgICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlcm1WYWxpZGFldHNHaXZlblR5cGUgPSB0ZXJtLnZhbGlkYXRlR2l2ZW5UeXBlKHN0cmljdCwgdHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGU7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtVmFsaWRhZXRzR2l2ZW5UeXBlKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVHlwZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCk7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGVybVZhbGlkYXRlc0dpdmVuVHlwZSA9IHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGU7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtVmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeVRlcm1XaXRoQ29uc3RydWN0b3JQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUeXBlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGVybVZhbGlkYXRlc0dpdmVuVHlwZSA9IHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGU7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtVmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBtZXRhVHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsTWV0YVR5cGVOb2RlLCBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG1ldGFUeXBlTm9kZSA9IGdlbmVyYWxNZXRhVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5vZGUuZ2V0TWV0YVR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSA9IChtZXRhVHlwZU5hbWUgPT09IFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSk7XG5cbiAgICAgICAgaWYgKG1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50VmFsaWRhdGVzID0gc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IG1ldGFUeXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IGZyYW1lTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbE1ldGFUeXBlTm9kZSwgc3BlY2lmaWNGcmFtZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG1ldGFUeXBlTm9kZSA9IGdlbmVyYWxNZXRhVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5vZGUuZ2V0TWV0YVR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZUZyYW1lTWV0YVR5cGVOYW1lID0gKG1ldGFUeXBlTmFtZSA9PT0gRlJBTUVfTUVUQV9UWVBFX05BTUUpO1xuXG4gICAgICAgIGlmIChtZXRhVHlwZU5hbWVGcmFtZU1ldGFUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGZyYW1lTm9kZSA9IHNwZWNpZmljRnJhbWVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICAgIGZyYW1lID0gZnJhbWVGcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnJhbWVWYWxpZGF0ZXMgPSBmcmFtZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGZyYW1lLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChmcmFtZVZhbGlkYXRlcykge1xuICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzR2l2ZW5UeXBlID0gdGVybS52YWxpZGF0ZUdpdmVuVHlwZSh0eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGU7XG5cbiAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICAgICAgdmFsaWRhdGVzR2l2ZW5UeXBlID0gY29udGludWF0aW9uKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRlcm1WYWxpZGF0ZXNHaXZlblR5cGUpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCB1bmlmeVN0YXRlbWVudFBhc3MgPSBuZXcgVW5pZnlTdGF0ZW1lbnRQYXNzKCksXG4gICAgICB1bmlmeU1ldGF2YXJpYWJsZVBhc3MgPSBuZXcgVW5pZnlNZXRhdmFyaWFibGVQYXNzKCksXG4gICAgICB1bmlmeVRlcm1JbnN0cmluc2ljYWxseVBhc3MgPSBuZXcgVW5pZnlUZXJtSW50cmluc2ljYWxseVBhc3MoKSxcbiAgICAgIHVuaWZ5TWV0YXZhcmlhYmxlSW50cmlzaWNhbGx5UGFzcyA9IG5ldyBVbmlmeU1ldGF2YXJpYWJsZUludHJpc2ljYWxseVBhc3MoKSxcbiAgICAgIHVuaWZ5VGVybVdpdGhQcm9wZXJ0eVBhc3MgPSBuZXcgVW5pZnlUZXJtV2l0aFByb3BlcnR5UGFzcygpLFxuICAgICAgdW5pZnlUZXJtV2l0aEdlbmVyYXRvclBhc3MgPSBuZXcgVW5pZnlUZXJtV2l0aEdlbmVyYXRvclBhc3MoKSxcbiAgICAgIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvclBhc3MgPSBuZXcgVW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yUGFzcygpLFxuICAgICAgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MgPSBuZXcgVW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50KGdlbmVyYWxTdGF0ZW1lbnQsIHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBnZW5lcmFsU3RhdGVtZW50Tm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY1N0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbFN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGU7ICAvLy9cblxuICByZXR1cm4gdW5pZnlTdGF0ZW1lbnRQYXNzLnJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3VjY2VzcykgPT4ge1xuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFVuaWZpZXMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5TWV0YXZhcmlhYmxlKGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IG1ldGF2YXJhaWJsZVVuaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUgPSBzcGVjaWZpY01ldGF2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSB1bmlmeU1ldGF2YXJpYWJsZVBhc3MucnVuKGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG5cbiAgaWYgKHN1Y2Nlc3MpIHtcbiAgICBtZXRhdmFyYWlibGVVbmlmaWVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBtZXRhdmFyYWlibGVVbmlmaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtSW50cmluc2ljYWxseShnZW5lcmFsVGVybSwgc3BlY2lmaWNUZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHRlcm1VbmlmaWVzSW50cmluc2ljYWxseSA9IGZhbHNlO1xuXG4gIGNvbnN0IGdlbmVyYWxUZXJtTm9kZSA9IGdlbmVyYWxUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNUZXJtTm9kZSA9IHNwZWNpZmljVGVybS5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNUZXJtTm9kZTsgLy8vXG5cbiAgcmV0dXJuIHVuaWZ5VGVybUluc3RyaW5zaWNhbGx5UGFzcy5ydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN1Y2Nlc3MpID0+IHtcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgdGVybVVuaWZpZXNJbnRyaW5zaWNhbGx5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1VbmlmaWVzSW50cmluc2ljYWxseSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5KGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IG1ldGF2YXJhaWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5ID0gZmFsc2U7XG5cbiAgY29uc3QgZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsTWV0YXZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlO1xuXG4gIHJldHVybiB1bmlmeU1ldGF2YXJpYWJsZUludHJpc2ljYWxseVBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdWNjZXNzKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgIG1ldGF2YXJhaWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5ID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihtZXRhdmFyYWlibGVVbmlmaWVzSW50cmluc2ljYWxseSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhQcm9wZXJ0eSh0ZXJtLCBwcm9wZXJ0eSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGxldCB0ZXJtVW5pZmllc1dpdGhQcm9wZXJ0eSA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIHByb3BlcnR5VGVybSA9IHByb3BlcnR5LmdldFRlcm0oKSxcbiAgICAgICAgcHJvcGVydHlUZXJtTm9kZSA9IHByb3BlcnR5VGVybS5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSB1bmlmeVRlcm1XaXRoUHJvcGVydHlQYXNzLnJ1bihwcm9wZXJ0eVRlcm1Ob2RlLCB0ZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIHRlcm1VbmlmaWVzV2l0aFByb3BlcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllc1dpdGhQcm9wZXJ0eTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IodGVybSwgZ2VuZXJhdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHRlcm1VTmlmaWVzV2l0aENvbWJpbmF0b3IgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmF0b3JUZXJtID0gZ2VuZXJhdG9yLmdldFRlcm0oKSxcbiAgICAgICAgZ2VuZXJhdG9yVGVybU5vZGUgPSBnZW5lcmF0b3JUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgc3VjY2VzcyA9IHVuaWZ5VGVybVdpdGhHZW5lcmF0b3JQYXNzLnJ1bihnZW5lcmF0b3JUZXJtTm9kZSwgdGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG5cbiAgaWYgKHN1Y2Nlc3MpIHtcbiAgICB0ZXJtVU5pZmllc1dpdGhDb21iaW5hdG9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVU5pZmllc1dpdGhDb21iaW5hdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yKHRlcm0sIGNvbnN0cnVjdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgY29uc3RydWN0b3JUZXJtID0gY29uc3RydWN0b3IuZ2V0VGVybSgpLFxuICAgICAgICBjb25zdHJ1Y3RvclRlcm1Ob2RlID0gY29uc3RydWN0b3JUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgc3VjY2VzcyA9IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvclBhc3MucnVuKGNvbnN0cnVjdG9yVGVybU5vZGUsIHRlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gIGlmIChzdWNjZXNzKSB7XG4gICAgdGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3IgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcihzdGF0ZW1lbnQsIGNvbWJpbmF0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBsZXQgc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yID0gZmFsc2U7XG5cbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGNvbWJpbmF0b3JTdGF0ZW1lbnQgPSBjb21iaW5hdG9yLmdldFN0YXRlbWVudCgpLFxuICAgICAgICBjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSA9IGNvbWJpbmF0b3JTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBzdWNjZXNzID0gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MucnVuKGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnROb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gIGlmIChzdWNjZXNzKSB7XG4gICAgc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3I7XG59XG4iXSwibmFtZXMiOlsidW5pZnlNZXRhdmFyaWFibGUiLCJ1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkiLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3IiLCJ1bmlmeVRlcm1JbnRyaW5zaWNhbGx5IiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwidW5pZnlUZXJtV2l0aEdlbmVyYXRvciIsInVuaWZ5VGVybVdpdGhQcm9wZXJ0eSIsIm5vZGVRdWVyeSIsInF1ZXJ5VXRpbGl0aWVzIiwidHlwZU5vZGVRdWVyeSIsInRlcm1Ob2RlUXVlcnkiLCJmcmFtZU5vZGVRdWVyeSIsIm1ldGFUeXBlTm9kZVF1ZXJ5Iiwic2lnbmF0dXJlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwidGVybVZhcmlhYmxlTm9kZVF1ZXJ5IiwiZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiQ29udGludWF0aW9uWmlwUGFzcyIsIkNvbnRpbnVhdGlvblppcFBhc3NCYXNlIiwicnVuIiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlIiwicmVtYWluaW5nQXJndW1lbnRzIiwiY29udGludWF0aW9uIiwicG9wIiwiZ2VuZXJhbENoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwic3BlY2lmaWNDaGlsZE5vZGVzIiwiZGVzY2VuZCIsIlVuaWZ5U3RhdGVtZW50UGFzcyIsIkFzeW5jaHJvbm91c0NvbnRpbnVhdGlvblppcFBhc3MiLCJtYXBzIiwiZ2VuZXJhbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwiZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY1N0YXRlbWVudE5vZGUiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN0YXRlbWVudE5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwiY29udGV4dCIsIm1ldGF2YXJpYWJsZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJzdGF0ZW1lbnQiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50VW5pZmllcyIsInN1Y2Nlc3MiLCJnZW5lcmFsRnJhbWVNZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNGcmFtZU5vZGUiLCJmcmFtZU5vZGUiLCJmcmFtZSIsImZpbmRGcmFtZUJ5RnJhbWVOb2RlIiwidW5pZnlGcmFtZSIsImZyYW1lVW5pZmllcyIsImdlbmVyYWxUZXJtVmFyaWFibGVOb2RlIiwic3BlY2lmaWNUZXJtTm9kZSIsInRlcm1Ob2RlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZ2V0VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWRWYXJpYWJsZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZSIsInRlcm0iLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ1bmlmeVRlcm0iLCJ0ZXJtVW5pZmllcyIsIlVuaWZ5TWV0YXZhcmlhYmxlUGFzcyIsImdlbmVyYWxUeXBlTm9kZSIsInR5cGVOb2RlIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0ZXJtVHlwZSIsImdldFR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZkdpdmVuVHlwZVR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsIlVuaWZ5VGVybUludHJpbnNpY2FsbHlQYXNzIiwiVW5pZnlNZXRhdmFyaWFibGVJbnRyaXNpY2FsbHlQYXNzIiwiVW5pZnlUZXJtV2l0aFByb3BlcnR5UGFzcyIsInRlcm1Gcm9tVGVybU5vZGUiLCJzdHJpY3QiLCJkZWNsYXJlIiwic3RhdGUiLCJ0ZXJtVmFsaWRhZXRzR2l2ZW5UeXBlIiwidmFsaWRhdGVHaXZlblR5cGUiLCJ2YWxpZGF0ZXNHaXZlblR5cGUiLCJVbmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcyIsInRlcm1WYWxpZGF0ZXNHaXZlblR5cGUiLCJVbmlmeVRlcm1XaXRoQ29uc3RydWN0b3JQYXNzIiwiVW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MiLCJnZW5lcmFsTWV0YVR5cGVOb2RlIiwibWV0YVR5cGVOb2RlIiwibWV0YVR5cGVOYW1lIiwiZ2V0TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lU3RhdGVtZW50TWV0YVR5cGVOYW1lIiwiU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlcyIsIm1ldGFUeXBlTmFtZUZyYW1lTWV0YVR5cGVOYW1lIiwiRlJBTUVfTUVUQV9UWVBFX05BTUUiLCJmcmFtZUZyb21GcmFtZU5vZGUiLCJmcmFtZVZhbGlkYXRlcyIsInVuaWZ5U3RhdGVtZW50UGFzcyIsInVuaWZ5TWV0YXZhcmlhYmxlUGFzcyIsInVuaWZ5VGVybUluc3RyaW5zaWNhbGx5UGFzcyIsInVuaWZ5TWV0YXZhcmlhYmxlSW50cmlzaWNhbGx5UGFzcyIsInVuaWZ5VGVybVdpdGhQcm9wZXJ0eVBhc3MiLCJ1bmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcyIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvclBhc3MiLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yUGFzcyIsImdlbmVyYWxTdGF0ZW1lbnQiLCJzcGVjaWZpY1N0YXRlbWVudCIsImdlbmVyYWxTdGF0ZW1lbnROb2RlIiwiZ2V0Tm9kZSIsImdlbmVyYWxOb2RlIiwic3BlY2lmaWNOb2RlIiwiZ2VuZXJhbE1ldGF2YXJpYWJsZSIsInNwZWNpZmljTWV0YXZhcmlhYmxlIiwibWV0YXZhcmFpYmxlVW5pZmllcyIsImdlbmVyYWxNZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlIiwiZ2VuZXJhbFRlcm0iLCJzcGVjaWZpY1Rlcm0iLCJ0ZXJtVW5pZmllc0ludHJpbnNpY2FsbHkiLCJnZW5lcmFsVGVybU5vZGUiLCJtZXRhdmFyYWlibGVVbmlmaWVzSW50cmluc2ljYWxseSIsInByb3BlcnR5IiwidGVybVVuaWZpZXNXaXRoUHJvcGVydHkiLCJwcm9wZXJ0eVRlcm0iLCJnZXRUZXJtIiwicHJvcGVydHlUZXJtTm9kZSIsImdlbmVyYXRvciIsInRlcm1VTmlmaWVzV2l0aENvbWJpbmF0b3IiLCJnZW5lcmF0b3JUZXJtIiwiZ2VuZXJhdG9yVGVybU5vZGUiLCJjb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JUZXJtIiwiY29uc3RydWN0b3JUZXJtTm9kZSIsImNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiY29tYmluYXRvclN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQTZqQmdCQTtlQUFBQTs7UUErQkFDO2VBQUFBOztRQWhEQUM7ZUFBQUE7O1FBOEdBQztlQUFBQTs7UUEvRUFDO2VBQUFBOztRQWdFQUM7ZUFBQUE7O1FBZkFDO2VBQUFBOztRQWZBQztlQUFBQTs7OzRCQTNtQmU7Z0NBRXdDO3dFQUVuQzt1QkFFWjsrQkFDdUM7eUJBQ2tCOzs7Ozs7QUFFakYsTUFBTSxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMEJBQWM7QUFFcEMsTUFBTUMsZ0JBQWdCRixVQUFVLFVBQzFCRyxnQkFBZ0JILFVBQVUsVUFDMUJJLGlCQUFpQkosVUFBVSxXQUMzQkssb0JBQW9CTCxVQUFVLGNBQzlCTSxxQkFBcUJOLFVBQVUsZUFDL0JPLHFCQUFxQlAsVUFBVSxlQUMvQlEsd0JBQXdCUixVQUFVLG9CQUNsQ1MsNkJBQTZCVCxVQUFVLHlCQUN2Q1UsaUNBQWlDVixVQUFVLDZCQUMzQ1csa0NBQWtDWCxVQUFVO0FBRWxELE1BQU1ZLDRCQUE0QkMsd0JBQXVCO0lBQ3ZEQyxJQUFJQyxzQkFBc0IsRUFBRUMsdUJBQXVCLEVBQUUsR0FBR0Msa0JBQWtCLEVBQUU7UUFDMUUsTUFBTUMsZUFBZUQsbUJBQW1CRSxHQUFHLElBQ3JDQyxvQkFBb0JMLHVCQUF1Qk0sYUFBYSxJQUN4REMscUJBQXFCTix3QkFBd0JLLGFBQWEsSUFBSSxHQUFHO1FBRXZFLE9BQU8sSUFBSSxDQUFDRSxPQUFPLENBQUNILG1CQUFtQkUsdUJBQXVCTCxvQkFBb0JDO0lBQ3BGO0FBQ0Y7QUFFQSxNQUFNTSwyQkFBMkJDLG1DQUErQjtJQUM5RCxPQUFPQyxPQUFPO1FBQ1osSUFBSTtRQUNKLHVEQUF1RDtRQUN2RCx3REFBd0Q7UUFDeEQscUlBQXFJO1FBQ3JJLG1CQUFtQjtRQUNuQixxQkFBcUI7UUFDckIsNEJBQTRCO1FBQzVCLEVBQUU7UUFDRixvQ0FBb0M7UUFDcEMsRUFBRTtRQUNGLGlFQUFpRTtRQUNqRSxFQUFFO1FBQ0YsNkVBQTZFO1FBQzdFLEVBQUU7UUFDRix3REFBd0Q7UUFDeEQsRUFBRTtRQUNGLHNDQUFzQztRQUN0QyxFQUFFO1FBQ0YsaUVBQWlFO1FBQ2pFLEVBQUU7UUFDRiw2RUFBNkU7UUFDN0UsRUFBRTtRQUNGLDZHQUE2RztRQUM3Ryw2QkFBNkI7UUFDN0IsRUFBRTtRQUNGLGdDQUFnQztRQUNoQywwQkFBMEI7UUFDMUIsVUFBVTtRQUNWLEVBQUU7UUFDRix1RUFBdUU7UUFDdkUsVUFBVTtRQUNWLE1BQU07UUFDTixLQUFLO1FBQ0w7WUFDRUMsa0JBQWtCakI7WUFDbEJrQixtQkFBbUJyQjtZQUNuQk8sS0FBSyxDQUFDZSxrQ0FBa0NDLHVCQUF1QkMsZ0JBQWdCQyxpQkFBaUJkO2dCQUM5RixNQUFNZSxnQkFBZ0JILHVCQUNoQkksbUJBQW1CTDtnQkFFekIsSUFBSU07Z0JBRUpBLFVBQVVKLGdCQUFnQixHQUFHO2dCQUU3QixNQUFNSyxlQUFlRCxRQUFRRSxrQ0FBa0MsQ0FBQ0g7Z0JBRWhFQyxVQUFVSCxpQkFBa0IsR0FBRztnQkFFL0IsTUFBTU0sWUFBWUgsUUFBUUksNEJBQTRCLENBQUNOO2dCQUV2RCxPQUFPRyxhQUFhMUMsY0FBYyxDQUFDNEMsV0FBV1AsZ0JBQWdCQyxpQkFBaUIsQ0FBQ1E7b0JBQzlFLElBQUlDLFVBQVU7b0JBRWQsSUFBSUQsa0JBQWtCO3dCQUNwQkMsVUFBVTtvQkFDWjtvQkFFQSxPQUFPdkIsYUFBYXVCLFNBQVNWLGdCQUFnQkM7Z0JBQy9DO1lBQ0Y7UUFDRjtRQUNBO1lBQ0VMLGtCQUFrQmxCO1lBQ2xCbUIsbUJBQW1CeEI7WUFDbkJVLEtBQUssQ0FBQzRCLDhCQUE4QkMsbUJBQW1CWixnQkFBZ0JDLGlCQUFpQmQ7Z0JBQ3RGLE1BQU0wQixZQUFZRCxtQkFDWlQsbUJBQW1CUTtnQkFFekIsSUFBSVA7Z0JBRUpBLFVBQVVKLGdCQUFnQixHQUFHO2dCQUU3QixNQUFNSyxlQUFlRCxRQUFRRSxrQ0FBa0MsQ0FBQ0g7Z0JBRWhFQyxVQUFVSCxpQkFBa0IsR0FBRztnQkFFL0IsTUFBTWEsUUFBUVYsUUFBUVcsb0JBQW9CLENBQUNGO2dCQUUzQyxPQUFPUixhQUFhVyxVQUFVLENBQUNGLE9BQU9kLGdCQUFnQkMsaUJBQWlCLENBQUNnQjtvQkFDdEUsSUFBSVAsVUFBVTtvQkFFZCxJQUFJTyxjQUFjO3dCQUNoQlAsVUFBVTtvQkFDWjtvQkFFQSxPQUFPdkIsYUFBYXVCLFNBQVNWLGdCQUFnQkM7Z0JBQy9DO1lBQ0Y7UUFDRjtRQUNBO1lBQ0VMLGtCQUFrQm5CO1lBQ2xCb0IsbUJBQW1CekI7WUFDbkJXLEtBQUssQ0FBQ21DLHlCQUF5QkMsa0JBQWtCbkIsZ0JBQWdCQyxpQkFBaUJkO2dCQUNoRixNQUFNaUMsV0FBV0Qsa0JBQ1hFLGVBQWVILHlCQUF5QixHQUFHO2dCQUVqRCxJQUFJZDtnQkFFSkEsVUFBVUosZ0JBQWdCLEdBQUc7Z0JBRTdCLE1BQU1zQixxQkFBcUJELGFBQWFFLHFCQUFxQixJQUN2REMsbUJBQW1CcEIsUUFBUXFCLHdDQUF3QyxDQUFDSCxxQkFDcEVJLFdBQVdGLGtCQUFtQixHQUFHO2dCQUV2Q3BCLFVBQVVILGlCQUFrQixHQUFHO2dCQUUvQixNQUFNMEIsT0FBT3ZCLFFBQVF3QixrQkFBa0IsQ0FBQ1I7Z0JBRXhDLE9BQU9NLFNBQVNHLFNBQVMsQ0FBQ0YsTUFBTTNCLGdCQUFnQkMsaUJBQWlCLENBQUM2QjtvQkFDaEUsSUFBSXBCLFVBQVU7b0JBRWQsSUFBSW9CLGFBQWE7d0JBQ2ZwQixVQUFVO29CQUNaO29CQUVBLE9BQU92QixhQUFhdUIsU0FBU1YsZ0JBQWdCQztnQkFDL0M7WUFDRjtRQUNGO0tBNEJELENBQUM7QUFDSjtBQUVBLE1BQU04Qiw4QkFBOEJsRDtJQUNsQyxPQUFPYyxPQUFPO1FBQ1o7WUFDRUMsa0JBQWtCekI7WUFDbEIwQixtQkFBbUJ6QjtZQUNuQlcsS0FBSyxDQUFDaUQsaUJBQWlCYixrQkFBa0JuQixnQkFBZ0JDLGlCQUFpQmQ7Z0JBQ3hFLElBQUl1QixVQUFVO2dCQUVkLElBQUlOO2dCQUVKLE1BQU02QixXQUFXRCxpQkFDWFosV0FBV0Qsa0JBQ1hlLGtCQUFrQkQsU0FBU0Usa0JBQWtCO2dCQUVuRC9CLFVBQVVKLGdCQUFnQixHQUFHO2dCQUU3QixNQUFNb0MsT0FBT2hDLFFBQVFpQyx5QkFBeUIsQ0FBQ0g7Z0JBRS9DOUIsVUFBVUgsaUJBQWlCLEdBQUc7Z0JBRTlCLE1BQU0wQixPQUFPdkIsUUFBUXdCLGtCQUFrQixDQUFDUixXQUNsQ2tCLFdBQVdYLEtBQUtZLE9BQU8sSUFDdkJDLDBDQUEwQ0YsU0FBU0csb0JBQW9CLENBQUNMO2dCQUU5RSxJQUFJSSx5Q0FBeUM7b0JBQzNDOUIsVUFBVTtnQkFDWjtnQkFFQSxJQUFJQSxTQUFTO29CQUNYQSxVQUFVdkIsYUFBYXVCO2dCQUN6QjtnQkFFQSxPQUFPQTtZQUNUO1FBQ0Y7S0FDRCxDQUFDO0FBQ0o7QUFFQSxNQUFNZ0MsbUNBQW1DaEQsbUNBQStCO0lBQ3RFLE9BQU9DLE9BQU87UUFDWjtZQUNFQyxrQkFBa0JuQjtZQUNsQm9CLG1CQUFtQnpCO1lBQ25CVyxLQUFLLENBQUNtQyx5QkFBeUJDLGtCQUFrQm5CLGdCQUFnQkMsaUJBQWlCZDtnQkFDaEYsTUFBTWlDLFdBQVdELGtCQUNYRSxlQUFlSCx5QkFBeUIsR0FBRztnQkFFakQsSUFBSWQ7Z0JBRUpBLFVBQVVKLGdCQUFnQixHQUFHO2dCQUU3QixNQUFNc0IscUJBQXFCRCxhQUFhRSxxQkFBcUIsSUFDdkRDLG1CQUFtQnBCLFFBQVFxQix3Q0FBd0MsQ0FBQ0gscUJBQ3BFSSxXQUFXRixrQkFBbUIsR0FBRztnQkFFdkNwQixVQUFVSCxpQkFBa0IsR0FBRztnQkFFL0IsTUFBTTBCLE9BQU92QixRQUFRd0Isa0JBQWtCLENBQUNSO2dCQUV4QyxPQUFPTSxTQUFTRyxTQUFTLENBQUNGLE1BQU0zQixnQkFBZ0JDLGlCQUFpQixDQUFDNkI7b0JBQ2hFLElBQUlwQixVQUFVO29CQUVkLElBQUlvQixhQUFhO3dCQUNmcEIsVUFBVTtvQkFDWjtvQkFFQSxPQUFPdkIsYUFBYXVCO2dCQUN0QjtZQUNGO1FBQ0Y7S0FDRCxDQUFDO0FBQ0o7QUFFQSxNQUFNaUMsMENBQTBDakQsbUNBQStCO0lBQzdFLE9BQU9DLE9BQU87UUFDWjtZQUNFQyxrQkFBa0JuQjtZQUNsQm9CLG1CQUFtQnpCO1lBQ25CVyxLQUFLLENBQUNtQyx5QkFBeUJDLGtCQUFrQm5CLGdCQUFnQkMsaUJBQWlCZDtnQkFDaEYsTUFBTWlDLFdBQVdELGtCQUNYRSxlQUFlSCx5QkFBeUIsR0FBRztnQkFFakQsSUFBSWQ7Z0JBRUpBLFVBQVVKLGdCQUFnQixHQUFHO2dCQUU3QixNQUFNc0IscUJBQXFCRCxhQUFhRSxxQkFBcUIsSUFDdkRDLG1CQUFtQnBCLFFBQVFxQix3Q0FBd0MsQ0FBQ0gscUJBQ3BFSSxXQUFXRixrQkFBbUIsR0FBRztnQkFFdkNwQixVQUFVSCxpQkFBa0IsR0FBRztnQkFFL0IsTUFBTTBCLE9BQU92QixRQUFRd0Isa0JBQWtCLENBQUNSO2dCQUV4QyxPQUFPTSxTQUFTRyxTQUFTLENBQUNGLE1BQU0zQixnQkFBZ0JDLGlCQUFpQixDQUFDNkI7b0JBQ2hFLElBQUlwQixVQUFVO29CQUVkLElBQUlvQixhQUFhO3dCQUNmcEIsVUFBVTtvQkFDWjtvQkFFQSxPQUFPdkIsYUFBYXVCO2dCQUN0QjtZQUNGO1FBQ0Y7S0FDRCxDQUFDO0FBQ0o7QUFFQSxNQUFNa0Msa0NBQWtDL0Q7SUFDdEMsT0FBT2MsT0FBTztRQUNaO1lBQ0VDLGtCQUFrQnpCO1lBQ2xCMEIsbUJBQW1CekI7WUFDbkJXLEtBQUssQ0FBQ2lELGlCQUFpQmIsa0JBQWtCbkIsZ0JBQWdCQyxpQkFBaUJkO2dCQUN4RSxJQUFJdUIsVUFBVTtnQkFFZCxNQUFNdUIsV0FBV0QsaUJBQ1haLFdBQVdELGtCQUNYZSxrQkFBa0JELFNBQVNFLGtCQUFrQjtnQkFFbkQsSUFBSS9CO2dCQUVKQSxVQUFVSixnQkFBZ0IsR0FBRztnQkFFN0IsTUFBTW9DLE9BQU9oQyxRQUFRaUMseUJBQXlCLENBQUNIO2dCQUUvQyxJQUFJRSxTQUFTLE1BQU07b0JBQ2pCaEMsVUFBVUgsaUJBQWtCLEdBQUc7b0JBRS9CLE1BQU0wQixPQUFPa0IsSUFBQUEseUJBQWdCLEVBQUN6QixVQUFVaEIsVUFDbEMwQyxTQUFTO29CQUVmQyxJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7d0JBQ1AsTUFBTUMseUJBQXlCdEIsS0FBS3VCLGlCQUFpQixDQUFDSixRQUFRVixNQUFNWSxPQUFPNUMsU0FBUyxDQUFDdUIsTUFBTXZCOzRCQUN6RixJQUFJK0M7NEJBRUosTUFBTWxELGtCQUFrQkcsU0FBVSxHQUFHOzRCQUVyQytDLHFCQUFxQmhFLGFBQWFhLGdCQUFnQkM7NEJBRWxELE9BQU9rRDt3QkFDVDt3QkFFQSxJQUFJRix3QkFBd0I7NEJBQzFCdkMsVUFBVTt3QkFDWjtvQkFDRjtnQkFDRjtnQkFFQSxPQUFPQTtZQUNUO1FBQ0Y7S0FDRCxDQUFDO0FBQ0o7QUFFQSxNQUFNMEMsbUNBQW1DdkU7SUFDdkMsT0FBT2MsT0FBTztRQUNaO1lBQ0VDLGtCQUFrQnpCO1lBQ2xCMEIsbUJBQW1CekI7WUFDbkJXLEtBQUssQ0FBQ2lELGlCQUFpQmIsa0JBQWtCbkIsZ0JBQWdCQyxpQkFBaUJkO2dCQUN4RSxJQUFJdUIsVUFBVTtnQkFFZCxNQUFNdUIsV0FBV0QsaUJBQ1haLFdBQVdELGtCQUNYZSxrQkFBa0JELFNBQVNFLGtCQUFrQjtnQkFFbkQsSUFBSS9CO2dCQUVKQSxVQUFVSixnQkFBZ0IsR0FBRztnQkFFN0IsTUFBTW9DLE9BQU9oQyxRQUFRaUMseUJBQXlCLENBQUNIO2dCQUUvQyxJQUFJRSxTQUFTLE1BQU07b0JBQ2pCaEMsVUFBVUgsaUJBQWtCLEdBQUc7b0JBRS9CLE1BQU0wQixPQUFPa0IsSUFBQUEseUJBQWdCLEVBQUN6QixVQUFVaEI7b0JBRXhDMkMsSUFBQUEsY0FBTyxFQUFDLENBQUNDO3dCQUNQLE1BQU1LLHlCQUF5QjFCLEtBQUt1QixpQkFBaUIsQ0FBQ2QsTUFBTVksT0FBTzVDLFNBQVMsQ0FBQ3VCLE1BQU12Qjs0QkFDakYsSUFBSStDOzRCQUVKLE1BQU1sRCxrQkFBa0JHLFNBQVUsR0FBRzs0QkFFckMrQyxxQkFBcUJoRSxhQUFhYSxnQkFBZ0JDOzRCQUVsRCxPQUFPa0Q7d0JBQ1Q7d0JBRUEsSUFBSUUsd0JBQXdCOzRCQUMxQjNDLFVBQVU7d0JBQ1o7b0JBQ0Y7Z0JBQ0Y7Z0JBRUEsT0FBT0E7WUFDVDtRQUNGO0tBQ0QsQ0FBQztBQUNKO0FBRUEsTUFBTTRDLHFDQUFxQ3pFO0lBQ3pDLE9BQU9jLE9BQU87UUFDWjtZQUNFQyxrQkFBa0J6QjtZQUNsQjBCLG1CQUFtQnpCO1lBQ25CVyxLQUFLLENBQUNpRCxpQkFBaUJiLGtCQUFrQm5CLGdCQUFnQkMsaUJBQWlCZDtnQkFDeEUsSUFBSXVCLFVBQVU7Z0JBRWQsTUFBTXVCLFdBQVdELGlCQUNYWixXQUFXRCxrQkFDWGUsa0JBQWtCRCxTQUFTRSxrQkFBa0I7Z0JBRW5ELElBQUkvQjtnQkFFSkEsVUFBVUosZ0JBQWdCLEdBQUc7Z0JBRTdCLE1BQU1vQyxPQUFPaEMsUUFBUWlDLHlCQUF5QixDQUFDSDtnQkFFL0M5QixVQUFVSCxpQkFBa0IsR0FBRztnQkFFL0IsSUFBSW1DLFNBQVMsTUFBTTtvQkFDakIsTUFBTVQsT0FBT2tCLElBQUFBLHlCQUFnQixFQUFDekIsVUFBVWhCO29CQUV4QzJDLElBQUFBLGNBQU8sRUFBQyxDQUFDQzt3QkFDUCxNQUFNSyx5QkFBeUIxQixLQUFLdUIsaUJBQWlCLENBQUNkLE1BQU1ZLE9BQU81QyxTQUFTLENBQUN1QixNQUFNdkI7NEJBQ2pGLElBQUkrQzs0QkFFSixNQUFNbEQsa0JBQWtCRyxTQUFVLEdBQUc7NEJBRXJDK0MscUJBQXFCaEUsYUFBYWEsZ0JBQWdCQzs0QkFFbEQsT0FBT2tEO3dCQUNUO3dCQUVBLElBQUlFLHdCQUF3Qjs0QkFDMUIzQyxVQUFVO3dCQUNaO29CQUNGO2dCQUNGO2dCQUVBLE9BQU9BO1lBQ1Q7UUFDRjtLQUNELENBQUM7QUFDSjtBQUVBLE1BQU02Qyx5Q0FBeUMxRTtJQUM3QyxPQUFPYyxPQUFPO1FBQ1o7WUFDRUMsa0JBQWtCdEI7WUFDbEJ1QixtQkFBbUJyQjtZQUNuQk8sS0FBSyxDQUFDeUUscUJBQXFCekQsdUJBQXVCQyxnQkFBZ0JDLGlCQUFpQmQ7Z0JBQ2pGLElBQUl1QixVQUFVO2dCQUVkLE1BQU0rQyxlQUFlRCxxQkFDZkUsZUFBZUQsYUFBYUUsZUFBZSxJQUMzQ0Msb0NBQXFDRixpQkFBaUJHLHVDQUF3QjtnQkFFcEYsSUFBSUQsbUNBQW1DO29CQUNyQyxNQUFNeEQsVUFBVUgsaUJBQ1ZDLGdCQUFnQkgsdUJBQ2hCUSxZQUFZdUQsSUFBQUEsbUNBQTBCLEVBQUM1RCxlQUFlRTtvQkFFNUQyQyxJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7d0JBQ1AsTUFBTWUscUJBQXFCeEQsVUFBVXlELFFBQVEsQ0FBQ2hCLE9BQU81QyxTQUFTLENBQUNHLFdBQVdIOzRCQUN4RSxJQUFJNkQ7NEJBRUosTUFBTWhFLGtCQUFrQkcsU0FBVSxHQUFHOzRCQUVyQzZELFlBQVk5RSxhQUFhYSxnQkFBZ0JDOzRCQUV6QyxPQUFPZ0U7d0JBQ1Q7d0JBRUEsSUFBSUYsb0JBQW9COzRCQUN0QnJELFVBQVU7d0JBQ1o7b0JBQ0Y7Z0JBQ0Y7Z0JBRUEsT0FBT0E7WUFDVDtRQUNGO1FBQ0E7WUFDRWQsa0JBQWtCdEI7WUFDbEJ1QixtQkFBbUJ4QjtZQUNuQlUsS0FBSyxDQUFDeUUscUJBQXFCNUMsbUJBQW1CWixnQkFBZ0JDLGlCQUFpQmQ7Z0JBQzdFLElBQUl1QixVQUFVO2dCQUVkLE1BQU0rQyxlQUFlRCxxQkFDZkUsZUFBZUQsYUFBYUUsZUFBZSxJQUMzQ08sZ0NBQWlDUixpQkFBaUJTLG1DQUFvQjtnQkFFNUUsSUFBSUQsK0JBQStCO29CQUNqQyxNQUFNckQsWUFBWUQsbUJBQ1pSLFVBQVVILGlCQUNWYSxRQUFRc0QsSUFBQUEsMkJBQWtCLEVBQUN2RCxXQUFXVDtvQkFFNUMyQyxJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7d0JBQ1AsTUFBTXFCLGlCQUFpQnZELE1BQU1rRCxRQUFRLENBQUNoQixPQUFPNUMsU0FBUyxDQUFDVSxPQUFPVjs0QkFDNUQsSUFBSTZEOzRCQUVKLE1BQU1oRSxrQkFBa0JHLFNBQVUsR0FBRzs0QkFFckM2RCxZQUFZOUUsYUFBYWEsZ0JBQWdCQzs0QkFFekMsT0FBT2dFO3dCQUNUO3dCQUVBLElBQUlJLGdCQUFnQjs0QkFDbEIzRCxVQUFVO3dCQUNaO29CQUNGO2dCQUNGO2dCQUVBLE9BQU9BO1lBQ1Q7UUFDRjtRQUNBO1lBQ0VkLGtCQUFrQnpCO1lBQ2xCMEIsbUJBQW1CekI7WUFDbkJXLEtBQUssQ0FBQ2lELGlCQUFpQmIsa0JBQWtCbkIsZ0JBQWdCQyxpQkFBaUJkO2dCQUN4RSxJQUFJdUIsVUFBVTtnQkFFZCxNQUFNdUIsV0FBV0QsaUJBQ1haLFdBQVdELGtCQUNYZSxrQkFBa0JELFNBQVNFLGtCQUFrQjtnQkFFbkQsSUFBSS9CO2dCQUVKQSxVQUFVSixnQkFBZ0IsR0FBRztnQkFFN0IsTUFBTW9DLE9BQU9oQyxRQUFRaUMseUJBQXlCLENBQUNIO2dCQUUvQzlCLFVBQVVILGlCQUFrQixHQUFHO2dCQUUvQixNQUFNMEIsT0FBT2tCLElBQUFBLHlCQUFnQixFQUFDekIsVUFBVWhCO2dCQUV4QzJDLElBQUFBLGNBQU8sRUFBQyxDQUFDQztvQkFDUCxNQUFNSyx5QkFBeUIxQixLQUFLdUIsaUJBQWlCLENBQUNkLE1BQU1ZLE9BQU81QyxTQUFTLENBQUN1QixNQUFNdkI7d0JBQ2pGLElBQUkrQzt3QkFFSixNQUFNbEQsa0JBQWtCRyxTQUFVLEdBQUc7d0JBRXJDK0MscUJBQXFCaEUsYUFBYWEsZ0JBQWdCQzt3QkFFbEQsT0FBT2tEO29CQUNUO29CQUVBLElBQUlFLHdCQUF3Qjt3QkFDMUIzQyxVQUFVO29CQUNaO2dCQUNGO2dCQUVBLE9BQU9BO1lBQ1Q7UUFDRjtLQUNELENBQUM7QUFDSjtBQUVBLE1BQU00RCxxQkFBcUIsSUFBSTdFLHNCQUN6QjhFLHdCQUF3QixJQUFJeEMseUJBQzVCeUMsOEJBQThCLElBQUk5Qiw4QkFDbEMrQixvQ0FBb0MsSUFBSTlCLHFDQUN4QytCLDRCQUE0QixJQUFJOUIsNkJBQ2hDK0IsNkJBQTZCLElBQUl2Qiw4QkFDakN3QiwrQkFBK0IsSUFBSXRCLGdDQUNuQ3VCLG1DQUFtQyxJQUFJdEI7QUFFdEMsU0FBUzVGLGVBQWVtSCxnQkFBZ0IsRUFBRUMsaUJBQWlCLEVBQUUvRSxjQUFjLEVBQUVDLGVBQWUsRUFBRWQsWUFBWTtJQUMvRyxJQUFJc0IsbUJBQW1CO0lBRXZCLE1BQU11RSx1QkFBdUJGLGlCQUFpQkcsT0FBTyxJQUMvQ2xGLHdCQUF3QmdGLGtCQUFrQkUsT0FBTyxJQUNqREMsY0FBY0Ysc0JBQ2RHLGVBQWVwRix1QkFBd0IsR0FBRztJQUVoRCxPQUFPdUUsbUJBQW1CdkYsR0FBRyxDQUFDbUcsYUFBYUMsY0FBY25GLGdCQUFnQkMsaUJBQWlCLENBQUNTO1FBQ3pGLElBQUlBLFNBQVM7WUFDWEQsbUJBQW1CO1FBQ3JCO1FBRUEsT0FBT3RCLGFBQWFzQjtJQUN0QjtBQUNGO0FBRU8sU0FBU2hELGtCQUFrQjJILG1CQUFtQixFQUFFQyxvQkFBb0IsRUFBRXJGLGNBQWMsRUFBRUMsZUFBZSxFQUFFZCxZQUFZO0lBQ3hILElBQUltRyxzQkFBc0I7SUFFMUIsTUFBTUMsMEJBQTBCSCxvQkFBb0JILE9BQU8sSUFDckRPLDJCQUEyQkgscUJBQXFCSixPQUFPLElBQ3ZEdkUsVUFBVTZELHNCQUFzQnhGLEdBQUcsQ0FBQ3dHLHlCQUF5QkMsMEJBQTBCeEYsZ0JBQWdCQyxpQkFBaUJkO0lBRTlILElBQUl1QixTQUFTO1FBQ1g0RSxzQkFBc0I7SUFDeEI7SUFFQSxPQUFPQTtBQUNUO0FBRU8sU0FBU3pILHVCQUF1QjRILFdBQVcsRUFBRUMsWUFBWSxFQUFFMUYsY0FBYyxFQUFFQyxlQUFlLEVBQUVkLFlBQVk7SUFDN0csSUFBSXdHLDJCQUEyQjtJQUUvQixNQUFNQyxrQkFBa0JILFlBQVlSLE9BQU8sSUFDckM5RCxtQkFBbUJ1RSxhQUFhVCxPQUFPLElBQ3ZDQyxjQUFjVSxpQkFDZFQsZUFBZWhFLGtCQUFrQixHQUFHO0lBRTFDLE9BQU9xRCw0QkFBNEJ6RixHQUFHLENBQUNtRyxhQUFhQyxjQUFjbkYsZ0JBQWdCQyxpQkFBaUIsQ0FBQ1M7UUFDbEcsSUFBSUEsU0FBUztZQUNYaUYsMkJBQTJCO1FBQzdCO1FBRUEsT0FBT3hHLGFBQWF3RztJQUN0QjtBQUNGO0FBRU8sU0FBU2pJLCtCQUErQjBILG1CQUFtQixFQUFFQyxvQkFBb0IsRUFBRXJGLGNBQWMsRUFBRUMsZUFBZSxFQUFFZCxZQUFZO0lBQ3JJLElBQUkwRyxtQ0FBbUM7SUFFdkMsTUFBTU4sMEJBQTBCSCxvQkFBb0JILE9BQU8sSUFDckRPLDJCQUEyQkgscUJBQXFCSixPQUFPLElBQ3ZEQyxjQUFjSyx5QkFDZEosZUFBZUs7SUFFckIsT0FBT2Ysa0NBQWtDMUYsR0FBRyxDQUFDbUcsYUFBYUMsY0FBY25GLGdCQUFnQkMsaUJBQWlCLENBQUNTO1FBQ3hHLElBQUlBLFNBQVM7WUFDWG1GLG1DQUFtQztZQUVuQyxPQUFPMUcsYUFBYTBHO1FBQ3RCO0lBQ0Y7QUFDRjtBQUVPLFNBQVM3SCxzQkFBc0IyRCxJQUFJLEVBQUVtRSxRQUFRLEVBQUU5RixjQUFjLEVBQUVDLGVBQWUsRUFBRWQsWUFBWTtJQUNqRyxJQUFJNEcsMEJBQTBCO0lBRTlCLE1BQU0zRSxXQUFXTyxLQUFLc0QsT0FBTyxJQUN2QmUsZUFBZUYsU0FBU0csT0FBTyxJQUMvQkMsbUJBQW1CRixhQUFhZixPQUFPLElBQ3ZDdkUsVUFBVWdFLDBCQUEwQjNGLEdBQUcsQ0FBQ21ILGtCQUFrQjlFLFVBQVVwQixnQkFBZ0JDLGlCQUFpQmQ7SUFFM0csSUFBSXVCLFNBQVM7UUFDWHFGLDBCQUEwQjtJQUM1QjtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTaEksdUJBQXVCNEQsSUFBSSxFQUFFd0UsU0FBUyxFQUFFbkcsY0FBYyxFQUFFQyxlQUFlLEVBQUVkLFlBQVk7SUFDbkcsSUFBSWlILDRCQUE0QjtJQUVoQyxNQUFNaEYsV0FBV08sS0FBS3NELE9BQU8sSUFDdkJvQixnQkFBZ0JGLFVBQVVGLE9BQU8sSUFDakNLLG9CQUFvQkQsY0FBY3BCLE9BQU8sSUFDekN2RSxVQUFVaUUsMkJBQTJCNUYsR0FBRyxDQUFDdUgsbUJBQW1CbEYsVUFBVXBCLGdCQUFnQkMsaUJBQWlCZDtJQUU3RyxJQUFJdUIsU0FBUztRQUNYMEYsNEJBQTRCO0lBQzlCO0lBRUEsT0FBT0E7QUFDVDtBQUVPLFNBQVN0SSx5QkFBeUI2RCxJQUFJLEVBQUU0RSxXQUFXLEVBQUV2RyxjQUFjLEVBQUVDLGVBQWUsRUFBRWQsWUFBWTtJQUN2RyxJQUFJcUgsNkJBQTZCO0lBRWpDLE1BQU1wRixXQUFXTyxLQUFLc0QsT0FBTyxJQUN2QndCLGtCQUFrQkYsWUFBWU4sT0FBTyxJQUNyQ1Msc0JBQXNCRCxnQkFBZ0J4QixPQUFPLElBQzdDdkUsVUFBVWtFLDZCQUE2QjdGLEdBQUcsQ0FBQzJILHFCQUFxQnRGLFVBQVVwQixnQkFBZ0JDLGlCQUFpQmQ7SUFFakgsSUFBSXVCLFNBQVM7UUFDWDhGLDZCQUE2QjtJQUMvQjtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTNUksNkJBQTZCMkMsU0FBUyxFQUFFb0csVUFBVSxFQUFFM0csY0FBYyxFQUFFQyxlQUFlLEVBQUVkLFlBQVk7SUFDL0csSUFBSXlILGlDQUFpQztJQUVyQyxNQUFNMUcsZ0JBQWdCSyxVQUFVMEUsT0FBTyxJQUNqQzRCLHNCQUFzQkYsV0FBV0csWUFBWSxJQUM3Q0MsMEJBQTBCRixvQkFBb0I1QixPQUFPLElBQ3JEdkUsVUFBVW1FLGlDQUFpQzlGLEdBQUcsQ0FBQ2dJLHlCQUF5QjdHLGVBQWVGLGdCQUFnQkMsaUJBQWlCZDtJQUU5SCxJQUFJdUIsU0FBUztRQUNYa0csaUNBQWlDO0lBQ25DO0lBRUEsT0FBT0E7QUFDVCJ9
|
|
460
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuXG5pbXBvcnQgeyBDb250aW51YXRpb25aaXBQYXNzIGFzIEFzeW5jaHJvbm91c0NvbnRpbnVhdGlvblppcFBhc3MgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDb250aW51YXRpb25aaXBQYXNzQmFzZSBmcm9tIFwiLi4vcGFzcy9jb250aW51YXRpb25aaXBcIjsgIC8vL1xuXG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgRlJBTUVfTUVUQV9UWVBFX05BTUUsIFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSB9IGZyb20gXCIuLi9tZXRhVHlwZU5hbWVzXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1Ob2RlLCBmcmFtZUZyb21GcmFtZU5vZGUsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgbm9kZVF1ZXJ5IH0gPSBxdWVyeVV0aWxpdGllcztcblxuY29uc3QgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlXCIpLFxuICAgICAgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtXCIpLFxuICAgICAgZnJhbWVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWVcIiksXG4gICAgICBtZXRhVHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhVHlwZVwiKSxcbiAgICAgIHNpZ25hdHVyZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zaWduYXR1cmVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpLFxuICAgICAgdGVybVZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpLFxuICAgICAgZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWUvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIGFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXNzdW1wdGlvbi9tZXRhdmFyaWFibGUhXCIpO1xuXG5jbGFzcyBDb250aW51YXRpb25aaXBQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzc0Jhc2Uge1xuICBydW4oZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgICBnZW5lcmFsQ2hpbGROb2RlcyA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NoaWxkTm9kZXMgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7IC8vL1xuXG4gICAgcmV0dXJuIHRoaXMuZGVzY2VuZChnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG4gIH1cbn1cblxuY2xhc3MgVW5pZnlTdGF0ZW1lbnRQYXNzIGV4dGVuZHMgQXN5bmNocm9ub3VzQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIC8vIHtcbiAgICAvLyAgIGdlbmVyYWxOb2RlUXVlcnk6IGFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgLy8gICBzcGVjaWZpY05vZGVRdWVyeTogYXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAvLyAgIHJ1bjogKGdlbmVyYWxBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgLy8gICAgIGxldCBjb250ZXh0LFxuICAgIC8vICAgICAgICAgcmVmZXJlbmNlLFxuICAgIC8vICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZTtcbiAgICAvL1xuICAgIC8vICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuICAgIC8vXG4gICAgLy8gICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsQXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGU7ICAvLy9cbiAgICAvL1xuICAgIC8vICAgICByZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG4gICAgLy9cbiAgICAvLyAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpO1xuICAgIC8vXG4gICAgLy8gICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cbiAgICAvL1xuICAgIC8vICAgICBtZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZTsgLy8vXG4gICAgLy9cbiAgICAvLyAgICAgcmVmZXJlbmNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuICAgIC8vXG4gICAgLy8gICAgIHJldHVybiBtZXRhdmFyaWFibGUudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAocmVmZXJlbmNlVW5pZmllcykgPT4ge1xuICAgIC8vICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG4gICAgLy9cbiAgICAvLyAgICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgIC8vICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgLy8gICAgICAgfVxuICAgIC8vXG4gICAgLy8gICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gICB9XG4gICAgLy8gfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljU3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGU7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICByZXR1cm4gbWV0YXZhcmlhYmxlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogZnJhbWVOb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsRnJhbWVNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY0ZyYW1lTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGZyYW1lTm9kZSA9IHNwZWNpZmljRnJhbWVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxGcmFtZU1ldGF2YXJpYWJsZU5vZGU7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IGZyYW1lID0gY29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgICAgIHJldHVybiBtZXRhdmFyaWFibGUudW5pZnlGcmFtZShmcmFtZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGZyYW1lVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoZnJhbWVVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICAgICAgdmFyaWFibGUgPSBkZWNsYXJlZFZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAodGVybVVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIHtcbiAgICAvLyAgIGdlbmVyYWxOb2RlUXVlcnk6IHNpZ25hdHVyZU5vZGVRdWVyeSxcbiAgICAvLyAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzaWduYXR1cmVOb2RlUXVlcnksXG4gICAgLy8gICBydW46IChnZW5lcmFsU2lnbmF0dXJlTm9kZSwgc3BlY2lmaWNTaWduYXR1cmVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAvLyAgICAgbGV0IGNvbnRleHQ7XG4gICAgLy9cbiAgICAvLyAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cbiAgICAvL1xuICAgIC8vICAgICBjb25zdCBnZW5lcmFsU2lnbmF0dXJlID0gY29udGV4dC5maW5kU2lnbmF0dXJlQnlTaWduYXR1cmVOb2RlKGdlbmVyYWxTaWduYXR1cmVOb2RlKTtcbiAgICAvL1xuICAgIC8vICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG4gICAgLy9cbiAgICAvLyAgICAgY29uc3Qgc3BlY2lmaWNTaWduYXR1cmUgPSBjb250ZXh0LmZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUoc3BlY2lmaWNTaWduYXR1cmVOb2RlKTtcbiAgICAvL1xuICAgIC8vICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgLy8gICAgICAgcmV0dXJuIGdlbmVyYWxTaWduYXR1cmUudW5pZnlTaWduYXR1cmUoc3BlY2lmaWNTaWduYXR1cmUsIGNvbnRleHQsIChzaWduYXR1cmVVbmlmaWVzKSA9PiB7XG4gICAgLy8gICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuICAgIC8vXG4gICAgLy8gICAgICAgICBpZiAoc2lnbmF0dXJlVW5pZmllcykge1xuICAgIC8vICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvL1xuICAgIC8vICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICAvLyAgICAgICB9KTtcbiAgICAvLyAgICAgfSwgY29udGV4dCk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeU1ldGF2YXJpYWJsZVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgICAgIHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgIGlmICh0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZkdpdmVuVHlwZVR5cGUpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVW5pZnlUZXJtSW50cmluc2ljYWxseVBhc3MgZXh0ZW5kcyBBc3luY2hyb25vdXNDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdGVybVZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlTm9kZS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKSxcbiAgICAgICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICAgICAgICB2YXJpYWJsZSA9IGRlY2xhcmVkVmFyaWFibGU7ICAvLy9cblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICByZXR1cm4gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsICh0ZXJtVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVW5pZnlNZXRhdmFyaWFibGVJbnRyaXNpY2FsbHlQYXNzIGV4dGVuZHMgQXN5bmNocm9ub3VzQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICAgICAgdmFyaWFibGUgPSBkZWNsYXJlZFZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAodGVybVVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIFVuaWZ5VGVybVdpdGhQcm9wZXJ0eVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgIHN0cmljdCA9IGZhbHNlO1xuXG4gICAgICAgICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlcm1WYWxpZGFldHNHaXZlblR5cGUgPSB0ZXJtLnZhbGlkYXRlR2l2ZW5UeXBlKHN0cmljdCwgdHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGU7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtVmFsaWRhZXRzR2l2ZW5UeXBlKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVHlwZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCk7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGVybVZhbGlkYXRlc0dpdmVuVHlwZSA9IHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGU7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtVmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeVRlcm1XaXRoQ29uc3RydWN0b3JQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUeXBlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGVybVZhbGlkYXRlc0dpdmVuVHlwZSA9IHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGU7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtVmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBtZXRhVHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsTWV0YVR5cGVOb2RlLCBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG1ldGFUeXBlTm9kZSA9IGdlbmVyYWxNZXRhVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5vZGUuZ2V0TWV0YVR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSA9IChtZXRhVHlwZU5hbWUgPT09IFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSk7XG5cbiAgICAgICAgaWYgKG1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50VmFsaWRhdGVzID0gc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IG1ldGFUeXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IGZyYW1lTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbE1ldGFUeXBlTm9kZSwgc3BlY2lmaWNGcmFtZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG1ldGFUeXBlTm9kZSA9IGdlbmVyYWxNZXRhVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5vZGUuZ2V0TWV0YVR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZUZyYW1lTWV0YVR5cGVOYW1lID0gKG1ldGFUeXBlTmFtZSA9PT0gRlJBTUVfTUVUQV9UWVBFX05BTUUpO1xuXG4gICAgICAgIGlmIChtZXRhVHlwZU5hbWVGcmFtZU1ldGFUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGZyYW1lTm9kZSA9IHNwZWNpZmljRnJhbWVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICAgIGZyYW1lID0gZnJhbWVGcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnJhbWVWYWxpZGF0ZXMgPSBmcmFtZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGZyYW1lLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChmcmFtZVZhbGlkYXRlcykge1xuICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzR2l2ZW5UeXBlID0gdGVybS52YWxpZGF0ZUdpdmVuVHlwZSh0eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGU7XG5cbiAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICAgICAgdmFsaWRhdGVzR2l2ZW5UeXBlID0gY29udGludWF0aW9uKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRlcm1WYWxpZGF0ZXNHaXZlblR5cGUpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCB1bmlmeVN0YXRlbWVudFBhc3MgPSBuZXcgVW5pZnlTdGF0ZW1lbnRQYXNzKCksXG4gICAgICB1bmlmeU1ldGF2YXJpYWJsZVBhc3MgPSBuZXcgVW5pZnlNZXRhdmFyaWFibGVQYXNzKCksXG4gICAgICB1bmlmeVRlcm1JbnN0cmluc2ljYWxseVBhc3MgPSBuZXcgVW5pZnlUZXJtSW50cmluc2ljYWxseVBhc3MoKSxcbiAgICAgIHVuaWZ5TWV0YXZhcmlhYmxlSW50cmlzaWNhbGx5UGFzcyA9IG5ldyBVbmlmeU1ldGF2YXJpYWJsZUludHJpc2ljYWxseVBhc3MoKSxcbiAgICAgIHVuaWZ5VGVybVdpdGhQcm9wZXJ0eVBhc3MgPSBuZXcgVW5pZnlUZXJtV2l0aFByb3BlcnR5UGFzcygpLFxuICAgICAgdW5pZnlUZXJtV2l0aEdlbmVyYXRvclBhc3MgPSBuZXcgVW5pZnlUZXJtV2l0aEdlbmVyYXRvclBhc3MoKSxcbiAgICAgIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvclBhc3MgPSBuZXcgVW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yUGFzcygpLFxuICAgICAgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MgPSBuZXcgVW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50KGdlbmVyYWxTdGF0ZW1lbnQsIHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBnZW5lcmFsU3RhdGVtZW50Tm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY1N0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbFN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGU7ICAvLy9cblxuICByZXR1cm4gdW5pZnlTdGF0ZW1lbnRQYXNzLnJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3VjY2VzcykgPT4ge1xuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFVuaWZpZXMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5TWV0YXZhcmlhYmxlKGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IG1ldGF2YXJhaWJsZVVuaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUgPSBzcGVjaWZpY01ldGF2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSB1bmlmeU1ldGF2YXJpYWJsZVBhc3MucnVuKGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG5cbiAgaWYgKHN1Y2Nlc3MpIHtcbiAgICBtZXRhdmFyYWlibGVVbmlmaWVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBtZXRhdmFyYWlibGVVbmlmaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtSW50cmluc2ljYWxseShnZW5lcmFsVGVybSwgc3BlY2lmaWNUZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHRlcm1VbmlmaWVzSW50cmluc2ljYWxseSA9IGZhbHNlO1xuXG4gIGNvbnN0IGdlbmVyYWxUZXJtTm9kZSA9IGdlbmVyYWxUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNUZXJtTm9kZSA9IHNwZWNpZmljVGVybS5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNUZXJtTm9kZTsgLy8vXG5cbiAgcmV0dXJuIHVuaWZ5VGVybUluc3RyaW5zaWNhbGx5UGFzcy5ydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN1Y2Nlc3MpID0+IHtcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgdGVybVVuaWZpZXNJbnRyaW5zaWNhbGx5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1VbmlmaWVzSW50cmluc2ljYWxseSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5KGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IG1ldGF2YXJhaWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5ID0gZmFsc2U7XG5cbiAgY29uc3QgZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsTWV0YXZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlO1xuXG4gIHJldHVybiB1bmlmeU1ldGF2YXJpYWJsZUludHJpc2ljYWxseVBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdWNjZXNzKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgIG1ldGF2YXJhaWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKG1ldGF2YXJhaWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVRlcm1XaXRoUHJvcGVydHkodGVybSwgcHJvcGVydHksIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBsZXQgdGVybVVuaWZpZXNXaXRoUHJvcGVydHkgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBwcm9wZXJ0eVRlcm0gPSBwcm9wZXJ0eS5nZXRUZXJtKCksXG4gICAgICAgIHByb3BlcnR5VGVybU5vZGUgPSBwcm9wZXJ0eVRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBzdWNjZXNzID0gdW5pZnlUZXJtV2l0aFByb3BlcnR5UGFzcy5ydW4ocHJvcGVydHlUZXJtTm9kZSwgdGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG5cbiAgaWYgKHN1Y2Nlc3MpIHtcbiAgICB0ZXJtVW5pZmllc1dpdGhQcm9wZXJ0eSA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gdGVybVVuaWZpZXNXaXRoUHJvcGVydHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVRlcm1XaXRoR2VuZXJhdG9yKHRlcm0sIGdlbmVyYXRvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGxldCB0ZXJtVU5pZmllc1dpdGhDb21iaW5hdG9yID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgZ2VuZXJhdG9yVGVybSA9IGdlbmVyYXRvci5nZXRUZXJtKCksXG4gICAgICAgIGdlbmVyYXRvclRlcm1Ob2RlID0gZ2VuZXJhdG9yVGVybS5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSB1bmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcy5ydW4oZ2VuZXJhdG9yVGVybU5vZGUsIHRlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gIGlmIChzdWNjZXNzKSB7XG4gICAgdGVybVVOaWZpZXNXaXRoQ29tYmluYXRvciA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gdGVybVVOaWZpZXNXaXRoQ29tYmluYXRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb25zdHJ1Y3RvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGxldCB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybSA9IGNvbnN0cnVjdG9yLmdldFRlcm0oKSxcbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZSA9IGNvbnN0cnVjdG9yVGVybS5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JQYXNzLnJ1bihjb25zdHJ1Y3RvclRlcm1Ob2RlLCB0ZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBjb21iaW5hdG9yU3RhdGVtZW50ID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgY29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBjb21iaW5hdG9yU3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgc3VjY2VzcyA9IHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JQYXNzLnJ1bihjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvciA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yO1xufVxuIl0sIm5hbWVzIjpbInVuaWZ5TWV0YXZhcmlhYmxlIiwidW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5IiwidW5pZnlTdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yIiwidW5pZnlUZXJtSW50cmluc2ljYWxseSIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciIsInVuaWZ5VGVybVdpdGhHZW5lcmF0b3IiLCJ1bmlmeVRlcm1XaXRoUHJvcGVydHkiLCJub2RlUXVlcnkiLCJxdWVyeVV0aWxpdGllcyIsInR5cGVOb2RlUXVlcnkiLCJ0ZXJtTm9kZVF1ZXJ5IiwiZnJhbWVOb2RlUXVlcnkiLCJtZXRhVHlwZU5vZGVRdWVyeSIsInNpZ25hdHVyZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsInRlcm1WYXJpYWJsZU5vZGVRdWVyeSIsImZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiYXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsIkNvbnRpbnVhdGlvblppcFBhc3MiLCJDb250aW51YXRpb25aaXBQYXNzQmFzZSIsInJ1biIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsImNvbnRpbnVhdGlvbiIsInBvcCIsImdlbmVyYWxDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInNwZWNpZmljQ2hpbGROb2RlcyIsImRlc2NlbmQiLCJVbmlmeVN0YXRlbWVudFBhc3MiLCJBc3luY2hyb25vdXNDb250aW51YXRpb25aaXBQYXNzIiwibWFwcyIsImdlbmVyYWxOb2RlUXVlcnkiLCJzcGVjaWZpY05vZGVRdWVyeSIsImdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNTdGF0ZW1lbnROb2RlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdGF0ZW1lbnROb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsImNvbnRleHQiLCJtZXRhdmFyaWFibGUiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlIiwic3RhdGVtZW50IiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFVuaWZpZXMiLCJzdWNjZXNzIiwiZ2VuZXJhbEZyYW1lTWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljRnJhbWVOb2RlIiwiZnJhbWVOb2RlIiwiZnJhbWUiLCJmaW5kRnJhbWVCeUZyYW1lTm9kZSIsInVuaWZ5RnJhbWUiLCJmcmFtZVVuaWZpZXMiLCJnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSIsInNwZWNpZmljVGVybU5vZGUiLCJ0ZXJtTm9kZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldFZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGUiLCJ0ZXJtIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidW5pZnlUZXJtIiwidGVybVVuaWZpZXMiLCJVbmlmeU1ldGF2YXJpYWJsZVBhc3MiLCJnZW5lcmFsVHlwZU5vZGUiLCJ0eXBlTm9kZSIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidGVybVR5cGUiLCJnZXRUeXBlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJVbmlmeVRlcm1JbnRyaW5zaWNhbGx5UGFzcyIsIlVuaWZ5TWV0YXZhcmlhYmxlSW50cmlzaWNhbGx5UGFzcyIsIlVuaWZ5VGVybVdpdGhQcm9wZXJ0eVBhc3MiLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwic3RyaWN0IiwiZGVjbGFyZSIsInN0YXRlIiwidGVybVZhbGlkYWV0c0dpdmVuVHlwZSIsInZhbGlkYXRlR2l2ZW5UeXBlIiwidmFsaWRhdGVzR2l2ZW5UeXBlIiwiVW5pZnlUZXJtV2l0aEdlbmVyYXRvclBhc3MiLCJ0ZXJtVmFsaWRhdGVzR2l2ZW5UeXBlIiwiVW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yUGFzcyIsIlVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JQYXNzIiwiZ2VuZXJhbE1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTmFtZSIsImdldE1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSIsIlNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50VmFsaWRhdGVzIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZXMiLCJtZXRhVHlwZU5hbWVGcmFtZU1ldGFUeXBlTmFtZSIsIkZSQU1FX01FVEFfVFlQRV9OQU1FIiwiZnJhbWVGcm9tRnJhbWVOb2RlIiwiZnJhbWVWYWxpZGF0ZXMiLCJ1bmlmeVN0YXRlbWVudFBhc3MiLCJ1bmlmeU1ldGF2YXJpYWJsZVBhc3MiLCJ1bmlmeVRlcm1JbnN0cmluc2ljYWxseVBhc3MiLCJ1bmlmeU1ldGF2YXJpYWJsZUludHJpc2ljYWxseVBhc3MiLCJ1bmlmeVRlcm1XaXRoUHJvcGVydHlQYXNzIiwidW5pZnlUZXJtV2l0aEdlbmVyYXRvclBhc3MiLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JQYXNzIiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MiLCJnZW5lcmFsU3RhdGVtZW50Iiwic3BlY2lmaWNTdGF0ZW1lbnQiLCJnZW5lcmFsU3RhdGVtZW50Tm9kZSIsImdldE5vZGUiLCJnZW5lcmFsTm9kZSIsInNwZWNpZmljTm9kZSIsImdlbmVyYWxNZXRhdmFyaWFibGUiLCJzcGVjaWZpY01ldGF2YXJpYWJsZSIsIm1ldGF2YXJhaWJsZVVuaWZpZXMiLCJnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljTWV0YXZhcmlhYmxlTm9kZSIsImdlbmVyYWxUZXJtIiwic3BlY2lmaWNUZXJtIiwidGVybVVuaWZpZXNJbnRyaW5zaWNhbGx5IiwiZ2VuZXJhbFRlcm1Ob2RlIiwibWV0YXZhcmFpYmxlVW5pZmllc0ludHJpbnNpY2FsbHkiLCJwcm9wZXJ0eSIsInRlcm1VbmlmaWVzV2l0aFByb3BlcnR5IiwicHJvcGVydHlUZXJtIiwiZ2V0VGVybSIsInByb3BlcnR5VGVybU5vZGUiLCJnZW5lcmF0b3IiLCJ0ZXJtVU5pZmllc1dpdGhDb21iaW5hdG9yIiwiZ2VuZXJhdG9yVGVybSIsImdlbmVyYXRvclRlcm1Ob2RlIiwiY29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yVGVybSIsImNvbnN0cnVjdG9yVGVybU5vZGUiLCJjb21iaW5hdG9yIiwic3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yIiwiY29tYmluYXRvclN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE2akJnQkE7ZUFBQUE7O1FBK0JBQztlQUFBQTs7UUFoREFDO2VBQUFBOztRQThHQUM7ZUFBQUE7O1FBL0VB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
|
package/package.json
CHANGED
package/src/element/fact.js
CHANGED
|
@@ -178,7 +178,7 @@ export default class Fact extends Element {
|
|
|
178
178
|
if (this.statement === null) {
|
|
179
179
|
const statementUnifies = false;
|
|
180
180
|
|
|
181
|
-
return continuation(statementUnifies
|
|
181
|
+
return continuation(statementUnifies);
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
const context = specificContext, ///
|
|
@@ -192,7 +192,7 @@ export default class Fact extends Element {
|
|
|
192
192
|
context.debug(`...unified the '${statementString}' statement with the '${factString}' fact's statement.`);
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
return continuation(statementUnifies
|
|
195
|
+
return continuation(statementUnifies);
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
198
|
}
|
package/src/process/unify.js
CHANGED
|
@@ -613,9 +613,9 @@ export function unifyMetavariableIntrinsically(generalMetavariable, specificMeta
|
|
|
613
613
|
return unifyMetavariableIntrisicallyPass.run(generalNode, specificNode, generalContext, specificContext, (success) => {
|
|
614
614
|
if (success) {
|
|
615
615
|
metavaraibleUnifiesIntrinsically = true;
|
|
616
|
-
|
|
617
|
-
return continuation(metavaraibleUnifiesIntrinsically);
|
|
618
616
|
}
|
|
617
|
+
|
|
618
|
+
return continuation(metavaraibleUnifiesIntrinsically);
|
|
619
619
|
});
|
|
620
620
|
}
|
|
621
621
|
|