occam-verify-cli 1.0.638 → 1.0.642
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/liminal.js +2 -2
- package/lib/context/scoped.js +4 -4
- package/lib/context.js +8 -1
- package/lib/element/assumption.js +3 -3
- package/lib/element/combinator.js +4 -4
- package/lib/element/declaration/combinator.js +15 -2
- package/lib/element/declaration/complexType.js +4 -4
- package/lib/element/declaration/constructor.js +129 -60
- package/lib/element/declaration/simpleType.js +51 -46
- package/lib/element/declaration/typePrefix.js +3 -3
- package/lib/element/declaration/variable.js +2 -2
- package/lib/element/equality.js +18 -17
- package/lib/element/frame.js +2 -2
- package/lib/element/judgement.js +4 -4
- package/lib/element/procedureCall.js +3 -3
- package/lib/element/reference.js +3 -3
- package/lib/element/rule.js +2 -2
- package/lib/element/statement.js +3 -3
- package/lib/element/term.js +7 -4
- package/lib/element/topLevelAssertion.js +2 -2
- package/lib/element/topLevelMetaAssertion.js +2 -2
- package/lib/element/type.js +4 -4
- package/lib/utilities/element.js +147 -47
- package/package.json +7 -7
- package/src/context/liminal.js +1 -1
- package/src/context/scoped.js +3 -3
- package/src/context.js +7 -0
- package/src/element/assumption.js +1 -1
- package/src/element/combinator.js +3 -4
- package/src/element/declaration/combinator.js +19 -1
- package/src/element/declaration/complexType.js +3 -3
- package/src/element/declaration/constructor.js +123 -60
- package/src/element/declaration/simpleType.js +51 -50
- package/src/element/declaration/typePrefix.js +2 -2
- package/src/element/declaration/variable.js +1 -1
- package/src/element/equality.js +18 -20
- package/src/element/frame.js +1 -2
- package/src/element/judgement.js +2 -2
- package/src/element/procedureCall.js +2 -2
- package/src/element/reference.js +1 -1
- package/src/element/rule.js +1 -1
- package/src/element/statement.js +1 -1
- package/src/element/term.js +7 -3
- package/src/element/topLevelAssertion.js +1 -1
- package/src/element/topLevelMetaAssertion.js +1 -1
- package/src/element/type.js +3 -4
- package/src/utilities/element.js +214 -77
|
@@ -264,17 +264,17 @@ var _default = (0, _elements.define)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
264
264
|
context.trace("Verifying the '".concat(typeString, "' complex type..."));
|
|
265
265
|
var typeName = this.type.getName(), includeRelease = true, includeDependencies = false, typePresent = context.isTypePresentByTypeName(typeName, includeRelease, includeDependencies);
|
|
266
266
|
if (typePresent) {
|
|
267
|
-
context.
|
|
267
|
+
context.debug("The '".concat(typeString, "' type is already present."));
|
|
268
268
|
} else {
|
|
269
269
|
var prefixedTypeName = typeName, typePresent1 = context.isTypePresentByPrefixedTypeName(prefixedTypeName);
|
|
270
270
|
if (typePresent1) {
|
|
271
|
-
context.
|
|
271
|
+
context.debug("The '".concat(typeString, "' type is already present."));
|
|
272
272
|
} else {
|
|
273
273
|
typeVerifies = true;
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
276
|
if (typeVerifies) {
|
|
277
|
-
context.
|
|
277
|
+
context.debug("...verified the '".concat(typeString, "' complex type."));
|
|
278
278
|
}
|
|
279
279
|
return typeVerifies;
|
|
280
280
|
}
|
|
@@ -475,4 +475,4 @@ var _default = (0, _elements.define)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
475
475
|
return ComplexTypeDeclaration;
|
|
476
476
|
}(_declaration.default), _define_property(_ComplexTypeDeclaration, "name", "ComplexTypeDeclaration"), _ComplexTypeDeclaration));
|
|
477
477
|
|
|
478
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbXBsZXhUeXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tcGxleFR5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBwcmVmaXhlZCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJlZml4ZWQgPSBwcmVmaXhlZDtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGlzUHJlZml4ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlZml4ZWQ7XG4gIH1cblxuICBnZXRDb21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnlUeXBlKCkge1xuICAgIGxldCB0eXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgaW5jbHVkZVJlbGVhc2UgPSB0cnVlLFxuICAgICAgICAgIGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlLCBpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHR5cGVOYW1lLCAvLy9cbiAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC50cmFjZShgLi4udmVyaWZpZWQgdGhlICcke3R5cGVTdHJpbmd9JyBjb21wbGV4IHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGUpIHtcbiAgICBsZXQgc3VwZXJUeXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5vbWluYWxUeXBlTmFtZSwgLy8vXG4gICAgICAgICAgdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSA9IHRoaXMudHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVDb21wYXJlc1RvVHlwZU5hbWUpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFRoZSBzdXBlci10eXBlJ3MgbmFtZSBjb21wYXJlcyB0byB0aGUgJHt0eXBlTmFtZX0nIGNvbXBsZXggdHlwZSdzIG5hbWUuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9sZFN1cGVyVHlwZSA9IHN1cGVyVHlwZTtcblxuICAgICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgIGNvbnN0IHN1cGVyVHlwZVByZXNlbnQgPSAoc3VwZXJUeXBlICE9PSBudWxsKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZVByZXNlbnQpIHtcbiAgICAgICAgY29uc3QgbmV3U3VwZXJUeXBlID0gc3VwZXJUeXBlOyAvLy9cblxuICAgICAgICB0aGlzLnR5cGUucmVwbGFjZVN1cGVyVHlwZShvbGRTdXBlclR5cGUsIG5ld1N1cGVyVHlwZSk7XG5cbiAgICAgICAgc3VwZXJUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBlclR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlcygpIHtcbiAgICBsZXQgc3VwZXJUeXBlc1ZlcmlmeTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlJ3Mgc3VwZXItdHlwZXMuLi5gKTtcblxuICAgIGNvbnN0IHR5cGVCYXNpYyA9IHRoaXMudHlwZS5pc0Jhc2ljKCk7XG5cbiAgICBpZiAodHlwZUJhc2ljKSB7XG4gICAgICBzdXBlclR5cGVzVmVyaWZ5ID0gdHJ1ZTtcblxuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyBjb21wbGV4IHR5cGUgaXMgYmFzaWMuYClcbiAgICB9IGVsc2UgIHtcbiAgICAgIGNvbnN0IHN1cGVyVHlwZXMgPSB0aGlzLnR5cGUuZ2V0U3VwZXJUeXBlcygpO1xuXG4gICAgICBzdXBlclR5cGVzVmVyaWZ5ID0gc3VwZXJUeXBlcy5ldmVyeSgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1cGVyVHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlKTtcblxuICAgICAgICBpZiAoc3VwZXJUeXBlVmVyaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHN1cGVyVHlwZXNWZXJpZnkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlJ3Mgc3VwZXItdHlwZXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZXNWZXJpZnk7XG4gIH1cblxuICB2ZXJpZnlQcm9wZXJ0eShwcm9wZXJ0eSwgcHJvcGVydGllcykge1xuICAgIGxldCBwcm9wZXJ0eVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS4uLmApO1xuXG4gICAgY29uc3QgcHJvcGVydHlOYW1lVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVByb3BlcnR5TmFtZShwcm9wZXJ0eSwgcHJvcGVydGllcyk7XG5cbiAgICBpZiAocHJvcGVydHlOYW1lVmVyaWZpZXMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5Tm9taW5hbFR5cGVOYW1lVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVByb3BlcnR5Tm9taW5hbFR5cGVOYW1lKHByb3BlcnR5LCBwcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKHByb3BlcnR5Tm9taW5hbFR5cGVOYW1lVmVyaWZpZXMpIHtcbiAgICAgICAgcHJvcGVydHlWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5VmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5LmApO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0eVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydGllcygpIHtcbiAgICBsZXQgcHJvcGVydGllc1ZlcmlmeTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlJ3MgcHJvcGVydGllcy4uLmApO1xuXG4gICAgY29uc3QgaW5jbHVkZVN1cGVyVHlwZXMgPSBmYWxzZSxcbiAgICAgICAgICBwcm9wZXJ0aWVzID0gdGhpcy50eXBlLmdldFByb3BlcnRpZXMoaW5jbHVkZVN1cGVyVHlwZXMpO1xuXG4gICAgcHJvcGVydGllc1ZlcmlmeSA9IHByb3BlcnRpZXMuZXZlcnkoKHByb3BlcnR5KSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eVZlcmlmaWVzID0gdGhpcy52ZXJpZnlQcm9wZXJ0eShwcm9wZXJ0eSwgcHJvcGVydGllcyk7XG5cbiAgICAgIGlmIChwcm9wZXJ0eVZlcmlmaWVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BlcnRpZXNWZXJpZnkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlJ3MgcHJvcGVydGllcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydGllc1ZlcmlmeTtcbiAgfVxuXG4gIHZlcmlmeVByb3BlcnR5TmFtZShwcm9wZXJ0eSwgcHJvcGVydGllcykge1xuICAgIGxldCBwcm9wZXJ0eU5hbWVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb3BlcnR5U3RyaW5nID0gcHJvcGVydHkuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkncyBuYW1lLi4uYCk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS5nZXROYW1lKCksXG4gICAgICAgICAgY291bnQgPSBwcm9wZXJ0aWVzLnJlZHVjZSgoY291bnQsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUNvbXBhcmVzVG9Qcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS5jb21wYXJlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eUNvbXBhcmVzVG9Qcm9wZXJ0eU5hbWUpIHtcbiAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICAgIH0sIDApO1xuXG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkgYXBwZWFycyBtb3JlIHRoYW4gb25jZS5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlcyA9IHRoaXMudHlwZS5nZXRTdXBlclR5cGVzKCksXG4gICAgICAgICAgICBzdXBlclR5cGUgPSBzdXBlclR5cGVzLmZpbmQoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgc3VwZXJUeXBlUHJvcGVydHlDb21wYXJlc1RvUHJvcGVydHlOYW1lID0gc3VwZXJUeXBlUHJvcGVydGllcy5zb21lKChzdXBlclR5cGVQcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cGVyVHlwZVByb3BlcnR5Q29tcGFyZXNUb1Byb3BlcnR5TmFtZSA9IHN1cGVyVHlwZVByb3BlcnR5LmNvbXBhcmVQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBlclR5cGVQcm9wZXJ0eUNvbXBhcmVzVG9Qcm9wZXJ0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKHN1cGVyVHlwZVByb3BlcnR5Q29tcGFyZXNUb1Byb3BlcnR5TmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1cGVyVHlwZVN0cmluZyA9IHN1cGVyVHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSBoYXMgdGhlIHNhbWUgcHJvcGVydHkuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wZXJ0eU5hbWVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5TmFtZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eSdzIG5hbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5TmFtZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydHlOb21pbmFsVHlwZU5hbWUocHJvcGVydHkpIHtcbiAgICBsZXQgcHJvcGVydHlOb21pbmFsVHlwZU5hbWVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb3BlcnR5U3RyaW5nID0gcHJvcGVydHkuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gcHJvcGVydHkuZ2V0Tm9taW5hbFR5cGVOYW1lKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkncyAnJHtub21pbmFsVHlwZU5hbWV9JyBub21pbmFsIHR5cGUgbmFtZS4uLmApO1xuXG4gICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuY29tcGFyZU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICBwcm9wZXJ0eU5vbWluYWxUeXBlTmFtZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgcHJvcGVydHlOb21pbmFsVHlwZU5hbWVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5Tm9taW5hbFR5cGVOYW1lVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVzIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5J3MgJyR7bm9taW5hbFR5cGVOYW1lfScgbm9taW5hbCB0eXBlIG5hbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5Tm9taW5hbFR5cGVOYW1lVmVyaWZpZXM7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb21wbGV4VHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY29tcGxleCB0eXBlIGRlY2xhcmF0aW9uLi4uYCk7XG5cbiAgICBpZiAodGhpcy5wcmVmaXhlZCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZWZpeGVkLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVR5cGUoKTtcblxuICAgICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgICBjb25zdCBzdXBlclR5cGVzVmVyaWZ5ID0gdGhpcy52ZXJpZnlTdXBlclR5cGVzKCk7XG5cbiAgICAgICAgaWYgKHN1cGVyVHlwZXNWZXJpZnkpIHtcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzVmVyaWZ5ID0gdGhpcy52ZXJpZnlQcm9wZXJ0aWVzKCk7XG5cbiAgICAgICAgICBpZiAocHJvcGVydGllc1ZlcmlmeSkge1xuICAgICAgICAgICAgY29uc3QgdHlwZVByZWZpeCA9IGNvbnRleHQuZ2V0VHlwZVByZWZpeCgpO1xuXG4gICAgICAgICAgICBpZiAodHlwZVByZWZpeCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBjb25zdCB0eXBlUHJlZml4TmFtZSA9IHR5cGVQcmVmaXguZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhOYW1lID0gdHlwZVByZWZpeE5hbWU7ICAvLy9cblxuICAgICAgICAgICAgICB0aGlzLnR5cGUuc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29udGV4dC5hZGRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb21wbGV4VHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY29tcGxleCB0eXBlIGRlY2xhcmF0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb21wbGV4VHlwZURlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJDb21wbGV4VHlwZURlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ0eXBlIiwicHJlZml4ZWQiLCJnZXRUeXBlIiwiaXNQcmVmaXhlZCIsImdldENvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5VHlwZSIsInR5cGVWZXJpZmllcyIsImdldENvbnRleHQiLCJ0eXBlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImluY2x1ZGVEZXBlbmRlbmNpZXMiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJ2ZXJpZnlTdXBlclR5cGUiLCJzdXBlclR5cGUiLCJzdXBlclR5cGVWZXJpZmllcyIsInN1cGVyVHlwZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVDb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlVHlwZU5hbWUiLCJvbGRTdXBlclR5cGUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwic3VwZXJUeXBlUHJlc2VudCIsIm5ld1N1cGVyVHlwZSIsInJlcGxhY2VTdXBlclR5cGUiLCJkZWJ1ZyIsInZlcmlmeVN1cGVyVHlwZXMiLCJzdXBlclR5cGVzVmVyaWZ5IiwidHlwZUJhc2ljIiwiaXNCYXNpYyIsInN1cGVyVHlwZXMiLCJnZXRTdXBlclR5cGVzIiwiZXZlcnkiLCJ2ZXJpZnlQcm9wZXJ0eSIsInByb3BlcnR5IiwicHJvcGVydGllcyIsInByb3BlcnR5VmVyaWZpZXMiLCJwcm9wZXJ0eVN0cmluZyIsInByb3BlcnR5TmFtZVZlcmlmaWVzIiwidmVyaWZ5UHJvcGVydHlOYW1lIiwicHJvcGVydHlOb21pbmFsVHlwZU5hbWVWZXJpZmllcyIsInZlcmlmeVByb3BlcnR5Tm9taW5hbFR5cGVOYW1lIiwidmVyaWZ5UHJvcGVydGllcyIsInByb3BlcnRpZXNWZXJpZnkiLCJpbmNsdWRlU3VwZXJUeXBlcyIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0eU5hbWUiLCJjb3VudCIsInJlZHVjZSIsInByb3BlcnR5Q29tcGFyZXNUb1Byb3BlcnR5TmFtZSIsImNvbXBhcmVQcm9wZXJ0eU5hbWUiLCJmaW5kIiwic3VwZXJUeXBlUHJvcGVydGllcyIsInN1cGVyVHlwZVByb3BlcnR5Q29tcGFyZXNUb1Byb3BlcnR5TmFtZSIsInNvbWUiLCJzdXBlclR5cGVQcm9wZXJ0eSIsInR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lIiwiY29tcGFyZU5vbWluYWxUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZSIsInZlcmlmeSIsInZlcmlmaWVzIiwiY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZyIsInR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4TmFtZSIsInByZWZpeE5hbWUiLCJnZXRUeXBlUHJlZml4Iiwic2V0UHJlZml4TmFtZSIsImFkZFR5cGUiLCJEZWNsYXJhdGlvbiIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBQTs7O2tFQUp3Qjt3QkFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
478
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbXBsZXhUeXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tcGxleFR5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBwcmVmaXhlZCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJlZml4ZWQgPSBwcmVmaXhlZDtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGlzUHJlZml4ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlZml4ZWQ7XG4gIH1cblxuICBnZXRDb21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnlUeXBlKCkge1xuICAgIGxldCB0eXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgaW5jbHVkZVJlbGVhc2UgPSB0cnVlLFxuICAgICAgICAgIGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlLCBpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHR5cGVOYW1lLCAvLy9cbiAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVTdHJpbmd9JyBjb21wbGV4IHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGUpIHtcbiAgICBsZXQgc3VwZXJUeXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5vbWluYWxUeXBlTmFtZSwgLy8vXG4gICAgICAgICAgdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSA9IHRoaXMudHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVDb21wYXJlc1RvVHlwZU5hbWUpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFRoZSBzdXBlci10eXBlJ3MgbmFtZSBjb21wYXJlcyB0byB0aGUgJHt0eXBlTmFtZX0nIGNvbXBsZXggdHlwZSdzIG5hbWUuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9sZFN1cGVyVHlwZSA9IHN1cGVyVHlwZTtcblxuICAgICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgIGNvbnN0IHN1cGVyVHlwZVByZXNlbnQgPSAoc3VwZXJUeXBlICE9PSBudWxsKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZVByZXNlbnQpIHtcbiAgICAgICAgY29uc3QgbmV3U3VwZXJUeXBlID0gc3VwZXJUeXBlOyAvLy9cblxuICAgICAgICB0aGlzLnR5cGUucmVwbGFjZVN1cGVyVHlwZShvbGRTdXBlclR5cGUsIG5ld1N1cGVyVHlwZSk7XG5cbiAgICAgICAgc3VwZXJUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBlclR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlcygpIHtcbiAgICBsZXQgc3VwZXJUeXBlc1ZlcmlmeTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlJ3Mgc3VwZXItdHlwZXMuLi5gKTtcblxuICAgIGNvbnN0IHR5cGVCYXNpYyA9IHRoaXMudHlwZS5pc0Jhc2ljKCk7XG5cbiAgICBpZiAodHlwZUJhc2ljKSB7XG4gICAgICBzdXBlclR5cGVzVmVyaWZ5ID0gdHJ1ZTtcblxuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyBjb21wbGV4IHR5cGUgaXMgYmFzaWMuYClcbiAgICB9IGVsc2UgIHtcbiAgICAgIGNvbnN0IHN1cGVyVHlwZXMgPSB0aGlzLnR5cGUuZ2V0U3VwZXJUeXBlcygpO1xuXG4gICAgICBzdXBlclR5cGVzVmVyaWZ5ID0gc3VwZXJUeXBlcy5ldmVyeSgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1cGVyVHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlKTtcblxuICAgICAgICBpZiAoc3VwZXJUeXBlVmVyaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHN1cGVyVHlwZXNWZXJpZnkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlJ3Mgc3VwZXItdHlwZXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZXNWZXJpZnk7XG4gIH1cblxuICB2ZXJpZnlQcm9wZXJ0eShwcm9wZXJ0eSwgcHJvcGVydGllcykge1xuICAgIGxldCBwcm9wZXJ0eVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS4uLmApO1xuXG4gICAgY29uc3QgcHJvcGVydHlOYW1lVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVByb3BlcnR5TmFtZShwcm9wZXJ0eSwgcHJvcGVydGllcyk7XG5cbiAgICBpZiAocHJvcGVydHlOYW1lVmVyaWZpZXMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5Tm9taW5hbFR5cGVOYW1lVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVByb3BlcnR5Tm9taW5hbFR5cGVOYW1lKHByb3BlcnR5LCBwcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKHByb3BlcnR5Tm9taW5hbFR5cGVOYW1lVmVyaWZpZXMpIHtcbiAgICAgICAgcHJvcGVydHlWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5VmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5LmApO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0eVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydGllcygpIHtcbiAgICBsZXQgcHJvcGVydGllc1ZlcmlmeTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlJ3MgcHJvcGVydGllcy4uLmApO1xuXG4gICAgY29uc3QgaW5jbHVkZVN1cGVyVHlwZXMgPSBmYWxzZSxcbiAgICAgICAgICBwcm9wZXJ0aWVzID0gdGhpcy50eXBlLmdldFByb3BlcnRpZXMoaW5jbHVkZVN1cGVyVHlwZXMpO1xuXG4gICAgcHJvcGVydGllc1ZlcmlmeSA9IHByb3BlcnRpZXMuZXZlcnkoKHByb3BlcnR5KSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eVZlcmlmaWVzID0gdGhpcy52ZXJpZnlQcm9wZXJ0eShwcm9wZXJ0eSwgcHJvcGVydGllcyk7XG5cbiAgICAgIGlmIChwcm9wZXJ0eVZlcmlmaWVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BlcnRpZXNWZXJpZnkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlU3RyaW5nfScgY29tcGxleCB0eXBlJ3MgcHJvcGVydGllcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydGllc1ZlcmlmeTtcbiAgfVxuXG4gIHZlcmlmeVByb3BlcnR5TmFtZShwcm9wZXJ0eSwgcHJvcGVydGllcykge1xuICAgIGxldCBwcm9wZXJ0eU5hbWVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb3BlcnR5U3RyaW5nID0gcHJvcGVydHkuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkncyBuYW1lLi4uYCk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS5nZXROYW1lKCksXG4gICAgICAgICAgY291bnQgPSBwcm9wZXJ0aWVzLnJlZHVjZSgoY291bnQsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUNvbXBhcmVzVG9Qcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS5jb21wYXJlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eUNvbXBhcmVzVG9Qcm9wZXJ0eU5hbWUpIHtcbiAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICAgIH0sIDApO1xuXG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkgYXBwZWFycyBtb3JlIHRoYW4gb25jZS5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlcyA9IHRoaXMudHlwZS5nZXRTdXBlclR5cGVzKCksXG4gICAgICAgICAgICBzdXBlclR5cGUgPSBzdXBlclR5cGVzLmZpbmQoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgc3VwZXJUeXBlUHJvcGVydHlDb21wYXJlc1RvUHJvcGVydHlOYW1lID0gc3VwZXJUeXBlUHJvcGVydGllcy5zb21lKChzdXBlclR5cGVQcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cGVyVHlwZVByb3BlcnR5Q29tcGFyZXNUb1Byb3BlcnR5TmFtZSA9IHN1cGVyVHlwZVByb3BlcnR5LmNvbXBhcmVQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBlclR5cGVQcm9wZXJ0eUNvbXBhcmVzVG9Qcm9wZXJ0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKHN1cGVyVHlwZVByb3BlcnR5Q29tcGFyZXNUb1Byb3BlcnR5TmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1cGVyVHlwZVN0cmluZyA9IHN1cGVyVHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSBoYXMgdGhlIHNhbWUgcHJvcGVydHkuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wZXJ0eU5hbWVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5TmFtZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eSdzIG5hbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5TmFtZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydHlOb21pbmFsVHlwZU5hbWUocHJvcGVydHkpIHtcbiAgICBsZXQgcHJvcGVydHlOb21pbmFsVHlwZU5hbWVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb3BlcnR5U3RyaW5nID0gcHJvcGVydHkuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gcHJvcGVydHkuZ2V0Tm9taW5hbFR5cGVOYW1lKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkncyAnJHtub21pbmFsVHlwZU5hbWV9JyBub21pbmFsIHR5cGUgbmFtZS4uLmApO1xuXG4gICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuY29tcGFyZU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICBwcm9wZXJ0eU5vbWluYWxUeXBlTmFtZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgcHJvcGVydHlOb21pbmFsVHlwZU5hbWVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5Tm9taW5hbFR5cGVOYW1lVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVzIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5J3MgJyR7bm9taW5hbFR5cGVOYW1lfScgbm9taW5hbCB0eXBlIG5hbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5Tm9taW5hbFR5cGVOYW1lVmVyaWZpZXM7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb21wbGV4VHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY29tcGxleCB0eXBlIGRlY2xhcmF0aW9uLi4uYCk7XG5cbiAgICBpZiAodGhpcy5wcmVmaXhlZCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZWZpeGVkLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVR5cGUoKTtcblxuICAgICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgICBjb25zdCBzdXBlclR5cGVzVmVyaWZ5ID0gdGhpcy52ZXJpZnlTdXBlclR5cGVzKCk7XG5cbiAgICAgICAgaWYgKHN1cGVyVHlwZXNWZXJpZnkpIHtcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzVmVyaWZ5ID0gdGhpcy52ZXJpZnlQcm9wZXJ0aWVzKCk7XG5cbiAgICAgICAgICBpZiAocHJvcGVydGllc1ZlcmlmeSkge1xuICAgICAgICAgICAgY29uc3QgdHlwZVByZWZpeCA9IGNvbnRleHQuZ2V0VHlwZVByZWZpeCgpO1xuXG4gICAgICAgICAgICBpZiAodHlwZVByZWZpeCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBjb25zdCB0eXBlUHJlZml4TmFtZSA9IHR5cGVQcmVmaXguZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhOYW1lID0gdHlwZVByZWZpeE5hbWU7ICAvLy9cblxuICAgICAgICAgICAgICB0aGlzLnR5cGUuc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29udGV4dC5hZGRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb21wbGV4VHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY29tcGxleCB0eXBlIGRlY2xhcmF0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb21wbGV4VHlwZURlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJDb21wbGV4VHlwZURlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ0eXBlIiwicHJlZml4ZWQiLCJnZXRUeXBlIiwiaXNQcmVmaXhlZCIsImdldENvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5VHlwZSIsInR5cGVWZXJpZmllcyIsImdldENvbnRleHQiLCJ0eXBlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImluY2x1ZGVEZXBlbmRlbmNpZXMiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwiZGVidWciLCJwcmVmaXhlZFR5cGVOYW1lIiwiaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZSIsInZlcmlmeVN1cGVyVHlwZSIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVZlcmlmaWVzIiwic3VwZXJUeXBlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsIm9sZFN1cGVyVHlwZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJzdXBlclR5cGVQcmVzZW50IiwibmV3U3VwZXJUeXBlIiwicmVwbGFjZVN1cGVyVHlwZSIsInZlcmlmeVN1cGVyVHlwZXMiLCJzdXBlclR5cGVzVmVyaWZ5IiwidHlwZUJhc2ljIiwiaXNCYXNpYyIsInN1cGVyVHlwZXMiLCJnZXRTdXBlclR5cGVzIiwiZXZlcnkiLCJ2ZXJpZnlQcm9wZXJ0eSIsInByb3BlcnR5IiwicHJvcGVydGllcyIsInByb3BlcnR5VmVyaWZpZXMiLCJwcm9wZXJ0eVN0cmluZyIsInByb3BlcnR5TmFtZVZlcmlmaWVzIiwidmVyaWZ5UHJvcGVydHlOYW1lIiwicHJvcGVydHlOb21pbmFsVHlwZU5hbWVWZXJpZmllcyIsInZlcmlmeVByb3BlcnR5Tm9taW5hbFR5cGVOYW1lIiwidmVyaWZ5UHJvcGVydGllcyIsInByb3BlcnRpZXNWZXJpZnkiLCJpbmNsdWRlU3VwZXJUeXBlcyIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0eU5hbWUiLCJjb3VudCIsInJlZHVjZSIsInByb3BlcnR5Q29tcGFyZXNUb1Byb3BlcnR5TmFtZSIsImNvbXBhcmVQcm9wZXJ0eU5hbWUiLCJmaW5kIiwic3VwZXJUeXBlUHJvcGVydGllcyIsInN1cGVyVHlwZVByb3BlcnR5Q29tcGFyZXNUb1Byb3BlcnR5TmFtZSIsInNvbWUiLCJzdXBlclR5cGVQcm9wZXJ0eSIsInR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lIiwiY29tcGFyZU5vbWluYWxUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZSIsInZlcmlmeSIsInZlcmlmaWVzIiwiY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZyIsInR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4TmFtZSIsInByZWZpeE5hbWUiLCJnZXRUeXBlUHJlZml4Iiwic2V0UHJlZml4TmFtZSIsImFkZFR5cGUiLCJEZWNsYXJhdGlvbiIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBQTs7O2tFQUp3Qjt3QkFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -2,7 +2,33 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
Object.defineProperty(exports, "default"
|
|
5
|
+
Object.defineProperty(exports, "default" // verifyConstructor() {
|
|
6
|
+
// let constructorValidates = false;
|
|
7
|
+
//
|
|
8
|
+
// const context = this.getContext(),
|
|
9
|
+
// constructorString = this.constructor.getString();
|
|
10
|
+
//
|
|
11
|
+
// context.trace(`Verifying the '${constructorString}' constructor...`);
|
|
12
|
+
//
|
|
13
|
+
// const term = this.constructor.getTerm(),
|
|
14
|
+
// termNode = term.getNode(),
|
|
15
|
+
// termValidates = validateTerm(termNode, context, () => {
|
|
16
|
+
// const validatesFormards = true;
|
|
17
|
+
//
|
|
18
|
+
// return validatesFormards;
|
|
19
|
+
// });
|
|
20
|
+
//
|
|
21
|
+
// if (termValidates) {
|
|
22
|
+
// constructorValidates = true;
|
|
23
|
+
// }
|
|
24
|
+
//
|
|
25
|
+
// if (constructorValidates) {
|
|
26
|
+
// context.debug(`...verified the '${constructorString}' constructor.`);
|
|
27
|
+
// }
|
|
28
|
+
//
|
|
29
|
+
// return constructorValidates;
|
|
30
|
+
// }
|
|
31
|
+
, {
|
|
6
32
|
enumerable: true,
|
|
7
33
|
get: function() {
|
|
8
34
|
return _default;
|
|
@@ -10,7 +36,6 @@ Object.defineProperty(exports, "default", {
|
|
|
10
36
|
});
|
|
11
37
|
var _declaration = /*#__PURE__*/ _interop_require_default(require("../declaration"));
|
|
12
38
|
var _elements = require("../../elements");
|
|
13
|
-
var _validate = require("../../process/validate");
|
|
14
39
|
function _assert_this_initialized(self) {
|
|
15
40
|
if (self === void 0) {
|
|
16
41
|
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
@@ -225,7 +250,7 @@ function _ts_generator(thisArg, body) {
|
|
|
225
250
|
var _ConstructorDeclaration;
|
|
226
251
|
var _default = (0, _elements.define)((_ConstructorDeclaration = /*#__PURE__*/ function(Declaration) {
|
|
227
252
|
_inherits(ConstructorDeclaration, Declaration);
|
|
228
|
-
function ConstructorDeclaration(context, string, node, constructor) {
|
|
253
|
+
function ConstructorDeclaration(context, string, node, type, provisional, constructor) {
|
|
229
254
|
_class_call_check(this, ConstructorDeclaration);
|
|
230
255
|
var _this;
|
|
231
256
|
_this = _call_super(this, ConstructorDeclaration, [
|
|
@@ -233,10 +258,24 @@ var _default = (0, _elements.define)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
233
258
|
string,
|
|
234
259
|
node
|
|
235
260
|
]);
|
|
261
|
+
_this.type = type;
|
|
262
|
+
_this.provisional = provisional;
|
|
236
263
|
_this.constructor = constructor;
|
|
237
264
|
return _this;
|
|
238
265
|
}
|
|
239
266
|
_create_class(ConstructorDeclaration, [
|
|
267
|
+
{
|
|
268
|
+
key: "getType",
|
|
269
|
+
value: function getType() {
|
|
270
|
+
return this.type;
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
key: "isProvisinal",
|
|
275
|
+
value: function isProvisinal() {
|
|
276
|
+
return this.provisional;
|
|
277
|
+
}
|
|
278
|
+
},
|
|
240
279
|
{
|
|
241
280
|
key: "getConstructor",
|
|
242
281
|
value: function getConstructor() {
|
|
@@ -250,68 +289,24 @@ var _default = (0, _elements.define)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
250
289
|
return constructorDeclarationNode;
|
|
251
290
|
}
|
|
252
291
|
},
|
|
253
|
-
{
|
|
254
|
-
key: "verifyConstructor",
|
|
255
|
-
value: function verifyConstructor() {
|
|
256
|
-
var constructorValidates = false;
|
|
257
|
-
var context = this.getContext(), constructorString = this.constructor.getString();
|
|
258
|
-
context.trace("Verifying the '".concat(constructorString, "' constructor..."));
|
|
259
|
-
var term = this.constructor.getTerm(), termNode = term.getNode(), termValidates = (0, _validate.validateTerm)(termNode, context, function() {
|
|
260
|
-
var validatesFormards = true;
|
|
261
|
-
return validatesFormards;
|
|
262
|
-
});
|
|
263
|
-
if (termValidates) {
|
|
264
|
-
constructorValidates = true;
|
|
265
|
-
}
|
|
266
|
-
if (constructorValidates) {
|
|
267
|
-
context.debug("...verified the '".concat(constructorString, "' constructor."));
|
|
268
|
-
}
|
|
269
|
-
return constructorValidates;
|
|
270
|
-
}
|
|
271
|
-
},
|
|
272
|
-
{
|
|
273
|
-
key: "verifyConstructorType",
|
|
274
|
-
value: function verifyConstructorType() {
|
|
275
|
-
var constructorTypeVerifies = false;
|
|
276
|
-
var context = this.getContext();
|
|
277
|
-
var type;
|
|
278
|
-
type = this.constructor.getType();
|
|
279
|
-
var typeString = type.getString();
|
|
280
|
-
context.trace("Verifying the '".concat(typeString, "' type..."));
|
|
281
|
-
var nominalTypeName = type.getNominalTypeName();
|
|
282
|
-
type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
283
|
-
var typePresent = type !== null;
|
|
284
|
-
if (!typePresent) {
|
|
285
|
-
context.debug("The '".concat(typeString, "' type is not present."));
|
|
286
|
-
} else {
|
|
287
|
-
var includeSupertypes = false, provisional = type.isProvisional(includeSupertypes), typeComparesToProvisional = type.compareProvisional(provisional);
|
|
288
|
-
if (!typeComparesToProvisional) {
|
|
289
|
-
provisional ? context.debug("The '".concat(typeString, "' type is present but not provisional.")) : context.debug("The '".concat(typeString, "' type is present but provisional."));
|
|
290
|
-
} else {
|
|
291
|
-
this.constructor.setType(type);
|
|
292
|
-
constructorTypeVerifies = true;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
if (constructorTypeVerifies) {
|
|
296
|
-
context.debug("...verified the '".concat(typeString, "' type."));
|
|
297
|
-
}
|
|
298
|
-
return constructorTypeVerifies;
|
|
299
|
-
}
|
|
300
|
-
},
|
|
301
292
|
{
|
|
302
293
|
key: "verify",
|
|
303
294
|
value: function verify() {
|
|
304
295
|
return _async_to_generator(function() {
|
|
305
|
-
var verifies, context, constructorDeclarationString,
|
|
296
|
+
var verifies, context, constructorDeclarationString, typeVerified, constructorVerifies, constructorTypeVerifies;
|
|
306
297
|
return _ts_generator(this, function(_state) {
|
|
298
|
+
verifies = false;
|
|
307
299
|
context = this.getContext(), constructorDeclarationString = this.getString(); ///
|
|
308
300
|
context.trace("Verifying the '".concat(constructorDeclarationString, "' constructor declaration..."));
|
|
309
|
-
|
|
310
|
-
if (
|
|
311
|
-
|
|
312
|
-
if (
|
|
313
|
-
|
|
314
|
-
|
|
301
|
+
typeVerified = this.verifyType();
|
|
302
|
+
if (typeVerified) {
|
|
303
|
+
constructorVerifies = this.verifyConstructor();
|
|
304
|
+
if (constructorVerifies) {
|
|
305
|
+
constructorTypeVerifies = this.verifyConstructorType();
|
|
306
|
+
if (constructorTypeVerifies) {
|
|
307
|
+
context.addConstructor(this.constructor);
|
|
308
|
+
verifies = true;
|
|
309
|
+
}
|
|
315
310
|
}
|
|
316
311
|
}
|
|
317
312
|
if (verifies) {
|
|
@@ -324,9 +319,83 @@ var _default = (0, _elements.define)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
324
319
|
});
|
|
325
320
|
}).call(this);
|
|
326
321
|
}
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
key: "verifyType",
|
|
325
|
+
value: function verifyType() {
|
|
326
|
+
var typeVerifies = false;
|
|
327
|
+
var context = this.getContext(), typeString = this.type.getString(), constructorDeclarationString = this.getString(); ///
|
|
328
|
+
context.trace("Verifying the '".concat(constructorDeclarationString, "' constructor declaration's '").concat(typeString, "' type..."));
|
|
329
|
+
var nominalTypeName = this.type.getNominalTypeName(), type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
330
|
+
if (type !== null) {
|
|
331
|
+
var includeSupertypes = false, provisional = this.isProvisional(includeSupertypes), typeComparesToProvisional = type.compareProvisional(provisional);
|
|
332
|
+
if (!typeComparesToProvisional) {
|
|
333
|
+
provisional ? context.debug("The '".concat(typeString, "' type is present but not provisional.")) : context.debug("The '".concat(typeString, "' type is present but provisional."));
|
|
334
|
+
} else {
|
|
335
|
+
this.type = type;
|
|
336
|
+
typeVerifies = true;
|
|
337
|
+
}
|
|
338
|
+
} else {
|
|
339
|
+
context.debug("The '".concat(typeString, "' type is not present."));
|
|
340
|
+
}
|
|
341
|
+
if (typeVerifies) {
|
|
342
|
+
context.debug("...verified the '".concat(constructorDeclarationString, "' constructor declaration's '").concat(typeString, "' type."));
|
|
343
|
+
}
|
|
344
|
+
return typeVerifies;
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
key: "verifyConstructor",
|
|
349
|
+
value: function verifyConstructor() {
|
|
350
|
+
var constructorVerifies;
|
|
351
|
+
var context = this.getContext(), constructorString = this.constructor.getString(), constructorDeclarationString = this.getString(); ///
|
|
352
|
+
context.trace("Verifying the '".concat(constructorDeclarationString, "' constructor declaration's '").concat(constructorString, "' constructor..."));
|
|
353
|
+
constructorVerifies = this.constructor.verify(context);
|
|
354
|
+
if (constructorVerifies) {
|
|
355
|
+
context.debug("...verified the '".concat(constructorDeclarationString, "' constructor declaration's '").concat(constructorString, "' constructor."));
|
|
356
|
+
}
|
|
357
|
+
return constructorVerifies;
|
|
358
|
+
}
|
|
327
359
|
}
|
|
328
360
|
]);
|
|
329
361
|
return ConstructorDeclaration;
|
|
330
|
-
}(_declaration.default),
|
|
362
|
+
}(_declaration.default), // verifyConstructorType() {
|
|
363
|
+
// let constructorTypeVerifies = false;
|
|
364
|
+
//
|
|
365
|
+
// const context = this.getContext(),
|
|
366
|
+
// constructorType = this,
|
|
367
|
+
// constructorTypeString = constructorType.getString(),
|
|
368
|
+
// constructorDeclarationString = this.getString(); ///
|
|
369
|
+
//
|
|
370
|
+
// context.trace(`Verifying the '${constructorDeclarationString}' constructor declaration's '${constructorTypeString}' type...`);
|
|
371
|
+
//
|
|
372
|
+
// const nominalTypeName = this.type.getNominalTypeName(),
|
|
373
|
+
// typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
|
|
374
|
+
//
|
|
375
|
+
// if (!typePresent) {
|
|
376
|
+
// context.debug(`The '${typeString}' type is not present.`);
|
|
377
|
+
// } else {
|
|
378
|
+
// const includeSupertypes = false,
|
|
379
|
+
// provisional = type.isProvisional(includeSupertypes),
|
|
380
|
+
// typeComparesToProvisional = type.compareProvisional(provisional);
|
|
381
|
+
//
|
|
382
|
+
// if (!typeComparesToProvisional) {
|
|
383
|
+
// provisional ?
|
|
384
|
+
// context.debug(`The '${typeString}' type is present but not provisional.`) :
|
|
385
|
+
// context.debug(`The '${typeString}' type is present but provisional.`);
|
|
386
|
+
// } else {
|
|
387
|
+
// this.constructor.setType(type);
|
|
388
|
+
//
|
|
389
|
+
// constructorTypeVerifies = true;
|
|
390
|
+
// }
|
|
391
|
+
// }
|
|
392
|
+
//
|
|
393
|
+
// if (constructorTypeVerifies) {
|
|
394
|
+
// context.debug(`...verified the '${constructorDeclarationString}' constructor declaration's '${typeString}' type.`);
|
|
395
|
+
// }
|
|
396
|
+
//
|
|
397
|
+
// return constructorTypeVerifies;
|
|
398
|
+
// }
|
|
399
|
+
_define_property(_ConstructorDeclaration, "name", "ConstructorDeclaration"), _ConstructorDeclaration));
|
|
331
400
|
|
|
332
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvdmFsaWRhdGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnN0cnVjdG9yRGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgY29uc3RydWN0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3I7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnlDb25zdHJ1Y3RvcigpIHtcbiAgICBsZXQgY29uc3RydWN0b3JWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuY29uc3RydWN0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0aGlzLmNvbnN0cnVjdG9yLmdldFRlcm0oKSxcbiAgICAgICAgICB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRlcm1WYWxpZGF0ZXMgPSB2YWxpZGF0ZVRlcm0odGVybU5vZGUsIGNvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlc0Zvcm1hcmRzID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlc0Zvcm1hcmRzO1xuICAgICAgICAgIH0pO1xuXG4gICAgaWYgKHRlcm1WYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnN0cnVjdG9yVmFsaWRhdGVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uc3RydWN0b3JWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvclZhbGlkYXRlcztcbiAgfVxuXG4gIHZlcmlmeUNvbnN0cnVjdG9yVHlwZSgpIHtcbiAgICBsZXQgY29uc3RydWN0b3JUeXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGxldCB0eXBlO1xuXG4gICAgdHlwZSA9IHRoaXMuY29uc3RydWN0b3IuZ2V0VHlwZSgpO1xuXG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgY29uc3QgdHlwZVByZXNlbnQgPSAodHlwZSAhPT0gbnVsbClcblxuICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5jbHVkZVN1cGVydHlwZXMgPSBmYWxzZSxcbiAgICAgICAgICAgIHByb3Zpc2lvbmFsID0gdHlwZS5pc1Byb3Zpc2lvbmFsKGluY2x1ZGVTdXBlcnR5cGVzKSxcbiAgICAgICAgICAgIHR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwgPSB0eXBlLmNvbXBhcmVQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICAgIGlmICghdHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCkge1xuICAgICAgICBwcm92aXNpb25hbCA/XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgYnV0IG5vdCBwcm92aXNpb25hbC5gKSA6XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgcHJvdmlzaW9uYWwuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLnNldFR5cGUodHlwZSk7XG5cbiAgICAgICAgY29uc3RydWN0b3JUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb25zdHJ1Y3RvclR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVTdHJpbmd9JyB0eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvclR5cGVWZXJpZmllcztcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeSgpIHtcbiAgICBsZXQgdmVyaWZpZXM7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yVHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlDb25zdHJ1Y3RvclR5cGUoKTtcblxuICAgIGlmIChjb25zdHJ1Y3RvclR5cGVWZXJpZmllcykge1xuICAgICAgY29uc3QgY29uc3RydWN0b3JWYWxpZGF0ZXMgPSB0aGlzLnZlcmlmeUNvbnN0cnVjdG9yKCk7XG5cbiAgICAgIGlmIChjb25zdHJ1Y3RvclZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmFkZENvbnN0cnVjdG9yKHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cnVjdG9yRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkNvbnN0cnVjdG9yRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImNvbnN0cnVjdG9yIiwiZ2V0Q29uc3RydWN0b3IiLCJnZXRDb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSIsImdldE5vZGUiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSIsInZlcmlmeUNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JWYWxpZGF0ZXMiLCJnZXRDb250ZXh0IiwiY29uc3RydWN0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInRlcm0iLCJnZXRUZXJtIiwidGVybU5vZGUiLCJ0ZXJtVmFsaWRhdGVzIiwidmFsaWRhdGVUZXJtIiwidmFsaWRhdGVzRm9ybWFyZHMiLCJkZWJ1ZyIsInZlcmlmeUNvbnN0cnVjdG9yVHlwZSIsImNvbnN0cnVjdG9yVHlwZVZlcmlmaWVzIiwidHlwZSIsImdldFR5cGUiLCJ0eXBlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsInR5cGVQcmVzZW50IiwiaW5jbHVkZVN1cGVydHlwZXMiLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJ0eXBlQ29tcGFyZXNUb1Byb3Zpc2lvbmFsIiwiY29tcGFyZVByb3Zpc2lvbmFsIiwic2V0VHlwZSIsInZlcmlmeSIsInZlcmlmaWVzIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyIsImFkZENvbnN0cnVjdG9yIiwiRGVjbGFyYXRpb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFPQTs7O2VBQUE7OztrRUFMd0I7d0JBRUQ7d0JBQ007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUU3QixXQUFlQSxJQUFBQSxnQkFBTSwyQ0FBQzs7YUFBTUMsdUJBQ2RDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFdBQVc7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
|
|
401
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3JEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBwcm92aXNpb25hbCwgY29uc3RydWN0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gICAgdGhpcy5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgaXNQcm92aXNpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3I7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeSgpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHR5cGVWZXJpZmllZCA9IHRoaXMudmVyaWZ5VHlwZSgpO1xuXG4gICAgaWYgKHR5cGVWZXJpZmllZCkge1xuICAgICAgY29uc3QgY29uc3RydWN0b3JWZXJpZmllcyA9IHRoaXMudmVyaWZ5Q29uc3RydWN0b3IoKTtcblxuICAgICAgaWYgKGNvbnN0cnVjdG9yVmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3QgY29uc3RydWN0b3JUeXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeUNvbnN0cnVjdG9yVHlwZSgpO1xuXG4gICAgICAgIGlmIChjb25zdHJ1Y3RvclR5cGVWZXJpZmllcykge1xuICAgICAgICAgIGNvbnRleHQuYWRkQ29uc3RydWN0b3IodGhpcy5jb25zdHJ1Y3Rvcik7XG5cbiAgICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5VHlwZSgpIHtcbiAgICBsZXQgdHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBpbmNsdWRlU3VwZXJ0eXBlcyA9IGZhbHNlLFxuICAgICAgICAgICAgcHJvdmlzaW9uYWwgPSB0aGlzLmlzUHJvdmlzaW9uYWwoaW5jbHVkZVN1cGVydHlwZXMpLFxuICAgICAgICAgICAgdHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCA9IHR5cGUuY29tcGFyZVByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgaWYgKCF0eXBlQ29tcGFyZXNUb1Byb3Zpc2lvbmFsKSB7XG4gICAgICAgIHByb3Zpc2lvbmFsID9cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgbm90IHByb3Zpc2lvbmFsLmApIDpcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVzZW50IGJ1dCBwcm92aXNpb25hbC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgIH1cblxuICAgIGlmICh0eXBlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5Q29uc3RydWN0b3IoKSB7XG4gICAgbGV0IGNvbnN0cnVjdG9yVmVyaWZpZXM7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmNvbnN0cnVjdG9yLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbidzICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0cnVjdG9yVmVyaWZpZXMgPSB0aGlzLmNvbnN0cnVjdG9yLnZlcmlmeShjb250ZXh0KTtcblxuICAgIGlmIChjb25zdHJ1Y3RvclZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uJ3MgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JWZXJpZmllcztcbiAgfVxuXG4gIC8vIHZlcmlmeUNvbnN0cnVjdG9yVHlwZSgpIHtcbiAgLy8gICBsZXQgY29uc3RydWN0b3JUeXBlVmVyaWZpZXMgPSBmYWxzZTtcbiAgLy9cbiAgLy8gICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gIC8vICAgICAgICAgY29uc3RydWN0b3JUeXBlID0gdGhpcyxcbiAgLy8gICAgICAgICBjb25zdHJ1Y3RvclR5cGVTdHJpbmcgPSBjb25zdHJ1Y3RvclR5cGUuZ2V0U3RyaW5nKCksXG4gIC8vICAgICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cbiAgLy9cbiAgLy8gICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbidzICcke2NvbnN0cnVjdG9yVHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcbiAgLy9cbiAgLy8gICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gIC8vICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG4gIC8vXG4gIC8vICAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAvLyAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBjb25zdCBpbmNsdWRlU3VwZXJ0eXBlcyA9IGZhbHNlLFxuICAvLyAgICAgICBwcm92aXNpb25hbCA9IHR5cGUuaXNQcm92aXNpb25hbChpbmNsdWRlU3VwZXJ0eXBlcyksXG4gIC8vICAgICAgIHR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwgPSB0eXBlLmNvbXBhcmVQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG4gIC8vXG4gIC8vICAgICBpZiAoIXR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwpIHtcbiAgLy8gICAgICAgcHJvdmlzaW9uYWwgP1xuICAvLyAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVzZW50IGJ1dCBub3QgcHJvdmlzaW9uYWwuYCkgOlxuICAvLyAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVzZW50IGJ1dCBwcm92aXNpb25hbC5gKTtcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIHRoaXMuY29uc3RydWN0b3Iuc2V0VHlwZSh0eXBlKTtcbiAgLy9cbiAgLy8gICAgICAgY29uc3RydWN0b3JUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy9cbiAgLy8gICBpZiAoY29uc3RydWN0b3JUeXBlVmVyaWZpZXMpIHtcbiAgLy8gICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgcmV0dXJuIGNvbnN0cnVjdG9yVHlwZVZlcmlmaWVzO1xuICAvLyB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cnVjdG9yRGVjbGFyYXRpb25cIjtcbn0pO1xuXG5cbi8vIHZlcmlmeUNvbnN0cnVjdG9yKCkge1xuLy8gICBsZXQgY29uc3RydWN0b3JWYWxpZGF0ZXMgPSBmYWxzZTtcbi8vXG4vLyAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbi8vICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmNvbnN0cnVjdG9yLmdldFN0cmluZygpO1xuLy9cbi8vICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG4vL1xuLy8gICBjb25zdCB0ZXJtID0gdGhpcy5jb25zdHJ1Y3Rvci5nZXRUZXJtKCksXG4vLyAgICAgICAgIHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4vLyAgICAgICAgIHRlcm1WYWxpZGF0ZXMgPSB2YWxpZGF0ZVRlcm0odGVybU5vZGUsIGNvbnRleHQsICgpID0+IHtcbi8vICAgICAgICAgICBjb25zdCB2YWxpZGF0ZXNGb3JtYXJkcyA9IHRydWU7XG4vL1xuLy8gICAgICAgICAgIHJldHVybiB2YWxpZGF0ZXNGb3JtYXJkcztcbi8vICAgICAgICAgfSk7XG4vL1xuLy8gICBpZiAodGVybVZhbGlkYXRlcykge1xuLy8gICAgIGNvbnN0cnVjdG9yVmFsaWRhdGVzID0gdHJ1ZTtcbi8vICAgfVxuLy9cbi8vICAgaWYgKGNvbnN0cnVjdG9yVmFsaWRhdGVzKSB7XG4vLyAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4vLyAgIH1cbi8vXG4vLyAgIHJldHVybiBjb25zdHJ1Y3RvclZhbGlkYXRlcztcbi8vIH1cbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJDb25zdHJ1Y3RvckRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ0eXBlIiwicHJvdmlzaW9uYWwiLCJjb25zdHJ1Y3RvciIsImdldFR5cGUiLCJpc1Byb3Zpc2luYWwiLCJnZXRDb25zdHJ1Y3RvciIsImdldENvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nIiwidHlwZVZlcmlmaWVkIiwiY29uc3RydWN0b3JWZXJpZmllcyIsImNvbnN0cnVjdG9yVHlwZVZlcmlmaWVzIiwiZ2V0Q29udGV4dCIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5VHlwZSIsInZlcmlmeUNvbnN0cnVjdG9yIiwidmVyaWZ5Q29uc3RydWN0b3JUeXBlIiwiYWRkQ29uc3RydWN0b3IiLCJkZWJ1ZyIsInR5cGVWZXJpZmllcyIsInR5cGVTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwiaW5jbHVkZVN1cGVydHlwZXMiLCJpc1Byb3Zpc2lvbmFsIiwidHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVQcm92aXNpb25hbCIsImNvbnN0cnVjdG9yU3RyaW5nIiwiRGVjbGFyYXRpb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQSxVQTRKQSx3QkFBd0I7Q0FDeEIsc0NBQXNDO0NBQ3RDLEVBQUU7Q0FDRix1Q0FBdUM7Q0FDdkMsNERBQTREO0NBQzVELEVBQUU7Q0FDRiwwRUFBMEU7Q0FDMUUsRUFBRTtDQUNGLDZDQUE2QztDQUM3QyxxQ0FBcUM7Q0FDckMsa0VBQWtFO0NBQ2xFLDRDQUE0QztDQUM1QyxFQUFFO0NBQ0Ysc0NBQXNDO0NBQ3RDLGNBQWM7Q0FDZCxFQUFFO0NBQ0YseUJBQXlCO0NBQ3pCLG1DQUFtQztDQUNuQyxNQUFNO0NBQ04sRUFBRTtDQUNGLGdDQUFnQztDQUNoQyw0RUFBNEU7Q0FDNUUsTUFBTTtDQUNOLEVBQUU7Q0FDRixpQ0FBaUM7Q0FDakMsSUFBSTs7OztlQXJMSjs7O2tFQUp3Qjt3QkFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXZCLFdBQWVBLElBQUFBLGdCQUFNLDJDQUFDOzthQUFNQyx1QkFDZEMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMs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
|