occam-nominal 1.0.391 → 1.0.392

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.
@@ -114,8 +114,8 @@ const _default = (0, _elements.define)(class Equality extends _occamlanguages.El
114
114
  const leftTermValidates = this.leftTerm.validate(context, (leftTerm, context)=>{
115
115
  const rightTermValidtes = this.rightTerm.validate(context, (rightTerm, context)=>{
116
116
  let validates = false;
117
- const leftTermType = leftTerm.getType(), rightTermType = rightTerm.getType(), leftTermTypeJoinedToRightTermType = leftTermType.isJoinedTo(rightTermType);
118
- if (leftTermTypeJoinedToRightTermType) {
117
+ const leftTermType = leftTerm.getType(), rightTermType = rightTerm.getType(), leftTermTypeBaseType = leftTermType.isBaseType(), rightTermTypeBaseType = rightTermType.isBaseType(), leftTermTypeJoinedToRightTermType = leftTermType.isJoinedTo(rightTermType);
118
+ if (leftTermTypeBaseType || rightTermTypeBaseType || leftTermTypeJoinedToRightTermType) {
119
119
  this.leftTerm = leftTerm;
120
120
  this.rightTerm = rightTerm;
121
121
  validates = continuation(context);
@@ -210,4 +210,4 @@ function rightTermFromEqualityNode(equalityNode, context) {
210
210
  return rightTerm;
211
211
  }
212
212
 
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVxdWF0ZVRlcm1zIH0gZnJvbSBcIi4uL3Byb2Nlc3MvZXF1YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYWxsLCBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVFcXVhbGl0eSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEVxdWFsaXR5IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmVnYXRlZCwgbGVmdFRlcm0sIHJpZ2h0VGVybSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMubGVmdFRlcm0gPSBsZWZ0VGVybTtcbiAgICB0aGlzLnJpZ2h0VGVybSA9IHJpZ2h0VGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdFRlcm07XG4gIH1cblxuICBnZXRSaWdodFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRUZXJtO1xuICB9XG5cbiAgZ2V0RXF1YWxpdHlOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBlcXVhbGl0eU5kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5TmRlO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm1Ob2RlKCkge1xuICAgIGNvbnN0IGxlZnRUZXJtTm9kZSA9IHRoaXMubGVmdFRlcm0uZ2V0Tm9kZSgpO1xuXG4gICAgcmV0dXJuIGxlZnRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFJpZ2h0VGVybU5vZGUoKSB7XG4gICAgY29uc3QgcmlnaHRUZXJtTm9kZSA9IHRoaXMucmlnaHRUZXJtLmdldE5vZGUoKTtcblxuICAgIHJldHVybiByaWdodFRlcm1Ob2RlO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgY29uc3QgdGVybXMgPSBbXG4gICAgICB0aGlzLmxlZnRUZXJtLFxuICAgICAgdGhpcy5yaWdodFRlcm1cbiAgICBdO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgbWF0Y2hFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGVxdWFsaXR5Tm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBlcXVhbGl0eU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBpc0VxdWFsVG8oZXF1YWxpdHkpIHtcbiAgICBjb25zdCBlcXVhbGl0eU5vZGUgPSBlcXVhbGl0eS5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gZXF1YWxpdHlOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc1JlZmxleGl2ZSgpIHtcbiAgICBsZXQgcmVmbGV4aXZlID0gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMubmVnYXRlZCkge1xuICAgICAgY29uc3QgbGVmdFRlcm1FcXVhbFRvUmlnaHRUZXJtID0gdGhpcy5sZWZ0VGVybS5pc0VxdWFsVG8odGhpcy5yaWdodFRlcm0pO1xuXG4gICAgICBpZiAobGVmdFRlcm1FcXVhbFRvUmlnaHRUZXJtKSB7XG4gICAgICAgIHJlZmxleGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmxleGl2ZTtcbiAgfVxuXG4gIGZpbmRFcXVhbGl0eShjb250ZXh0KSB7XG4gICAgY29uc3QgZXF1YWxpdHlOb2RlID0gdGhpcy5nZXRFcXVhbGl0eU5vZGUoKSxcbiAgICAgICAgICBlcXVhbGl0eSA9IGNvbnRleHQuZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuLi5gKTtcblxuICAgIGxldCBlcXVhbGl0eTtcblxuICAgIGVxdWFsaXR5ID0gdGhpcy5maW5kRXF1YWxpdHkoY29udGV4dCk7XG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5IGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGVxdWFsaXR5LCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXF1YWxpdHkgPSB0aGlzO1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlVGVybXNcbiAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29uc3QgdmFsaWRhdGVXaGVuU3RhdGVkID0gdGhpcy52YWxpZGF0ZVdoZW5TdGF0ZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGV4aXN0cyhbXG4gICAgICAgICAgdmFsaWRhdGVXaGVuU3RhdGVkLFxuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgICAgXSwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLmFzc2lnbihjb250ZXh0KTtcblxuICAgICAgICAgIGNvbnRleHQuYWRkRXF1YWxpdHkoZXF1YWxpdHkpO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihlcXVhbGl0eSwgY29udGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1zVmFsaWRhdGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IGxlZnRUZXJtVmFsaWRhdGVzID0gdGhpcy5sZWZ0VGVybS52YWxpZGF0ZShjb250ZXh0LCAobGVmdFRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHJpZ2h0VGVybVZhbGlkdGVzID0gdGhpcy5yaWdodFRlcm0udmFsaWRhdGUoY29udGV4dCwgKHJpZ2h0VGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgbGVmdFRlcm1UeXBlID0gbGVmdFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICByaWdodFRlcm1UeXBlID0gcmlnaHRUZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgbGVmdFRlcm1UeXBlSm9pbmVkVG9SaWdodFRlcm1UeXBlID0gbGVmdFRlcm1UeXBlLmlzSm9pbmVkVG8ocmlnaHRUZXJtVHlwZSk7XG5cbiAgICAgICAgaWYgKGxlZnRUZXJtVHlwZUpvaW5lZFRvUmlnaHRUZXJtVHlwZSkge1xuICAgICAgICAgIHRoaXMubGVmdFRlcm0gPSBsZWZ0VGVybTtcblxuICAgICAgICAgIHRoaXMucmlnaHRUZXJtID0gcmlnaHRUZXJtO1xuXG4gICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmlnaHRUZXJtVmFsaWR0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAobGVmdFRlcm1WYWxpZGF0ZXMpIHtcbiAgICAgIHRlcm1zVmFsaWRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0YXRlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKHN0YXRlZCkge1xuICAgICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBzdGF0ZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5TdGF0ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIHN0YXRlZCBlcXVhbGl0eS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5Li4uYCk7XG5cbiAgICAgIGNvbnN0IHRlcm1zRXF1YXRlID0gZXF1YXRlVGVybXModGhpcy5sZWZ0VGVybSwgdGhpcy5yaWdodFRlcm0sIGNvbnRleHQpO1xuXG4gICAgICBpZiAoKHRoaXMubmVnYXRlZCAmJiAhdGVybXNFcXVhdGUpIHx8ICghdGhpcy5uZWdhdGVkICYmIHRlcm1zRXF1YXRlKSkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5LmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgfVxuXG4gIGFzc2lnbihjb250ZXh0KSB7XG4gICAgY29uc3QgZXF1YWxpdHkgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgbmVnYXRlZCA9IHRoaXMuaXNOZWdhdGVkKCksXG4gICAgICAgICAgcmVmbGV4aXZlID0gdGhpcy5pc1JlZmxleGl2ZSgpO1xuXG4gICAgaWYgKG5lZ2F0ZWQgfHwgcmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXF1YWxpdHlBc3NpZ25tZW50ID0gZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSxcbiAgICAgICAgICBsZWZ0VmFyaWFibGVBc3NpZ25tZW50ID0gbGVmdFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCksXG4gICAgICAgICAgcmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQgPSByaWdodFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQoZXF1YWxpdHlBc3NpZ25tZW50KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudChsZWZ0VmFyaWFibGVBc3NpZ25tZW50KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudChyaWdodFZhcmlhYmxlQXNzaWdubWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZyxcbiAgICAgIGJyZWFrUG9pbnRcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRXF1YWxpdHlcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBlcXVhbGl0eU5vZGUgPSBpbnN0YW50aWF0ZUVxdWFsaXR5KHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gZXF1YWxpdHlOb2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBsZWZ0VGVybSA9IGxlZnRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgcmlnaHRUZXJtID0gcmlnaHRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgY29uc3QgZXF1YWxpdHkgPSBuZXcgRXF1YWxpdHkoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuZWdhdGVkLCBsZWZ0VGVybSwgcmlnaHRUZXJtKTtcblxuICAgICAgcmV0dXJuIGVxdWFsaXR5O1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG59KTtcblxuZnVuY3Rpb24gbmVnYXRlZEZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5lZ2F0ZWQgPSBlcXVhbGl0eU5vZGUuaXNOZWdhdGVkKCk7XG5cbiAgcmV0dXJuIG5lZ2F0ZWQ7XG59XG5cbmZ1bmN0aW9uIGxlZnRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbGVmdFRlcm1Ob2RlID0gZXF1YWxpdHlOb2RlLmdldExlZnRUZXJtTm9kZSgpLFxuICAgICAgICBsZWZ0VGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKGxlZnRUZXJtTm9kZSk7XG5cbiAgcmV0dXJuIGxlZnRUZXJtO1xufVxuXG5mdW5jdGlvbiByaWdodFRlcm1Gcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCByaWdodFRlcm1Ob2RlID0gZXF1YWxpdHlOb2RlLmdldExlZnRUZXJtTm9kZSgpLFxuICAgICAgICByaWdodFRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZShyaWdodFRlcm1Ob2RlKTtcblxuICByZXR1cm4gcmlnaHRUZXJtO1xufVxuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkVxdWFsaXR5IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm5lZ2F0ZWQiLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsImlzTmVnYXRlZCIsImdldExlZnRUZXJtIiwiZ2V0UmlnaHRUZXJtIiwiZ2V0RXF1YWxpdHlOb2RlIiwiZ2V0Tm9kZSIsImVxdWFsaXR5TmRlIiwiZ2V0TGVmdFRlcm1Ob2RlIiwibGVmdFRlcm1Ob2RlIiwiZ2V0UmlnaHRUZXJtTm9kZSIsInJpZ2h0VGVybU5vZGUiLCJnZXRUZXJtcyIsInRlcm1zIiwibWF0Y2hFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eU5vZGUiLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImVxdWFsaXR5Tm9kZU1hdGNoZXMiLCJpc0VxdWFsVG8iLCJlcXVhbGl0eSIsImVxdWFsVG8iLCJpc1JlZmxleGl2ZSIsInJlZmxleGl2ZSIsImxlZnRUZXJtRXF1YWxUb1JpZ2h0VGVybSIsImZpbmRFcXVhbGl0eSIsImZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlIiwidmFsaWRhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJlcXVhbGl0eVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm1zIiwiYmluZCIsImFsbCIsInZhbGlkYXRlV2hlblN0YXRlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJhc3NpZ24iLCJhZGRFcXVhbGl0eSIsInRlcm1zVmFsaWRhdGUiLCJsZWZ0VGVybVZhbGlkYXRlcyIsInJpZ2h0VGVybVZhbGlkdGVzIiwibGVmdFRlcm1UeXBlIiwiZ2V0VHlwZSIsInJpZ2h0VGVybVR5cGUiLCJsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUiLCJpc0pvaW5lZFRvIiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInN0YXRlZCIsImlzU3RhdGVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJ0ZXJtc0VxdWF0ZSIsImVxdWF0ZVRlcm1zIiwiZXF1YWxpdHlBc3NpZ25tZW50IiwiZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwibGVmdFZhcmlhYmxlQXNzaWdubWVudCIsImxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkiLCJyaWdodFZhcmlhYmxlQXNzaWdubWVudCIsInJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwiYWRkQXNzaWdubWVudCIsInRvSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlRXF1YWxpdHkiLCJuZWdhdGVkRnJvbUVxdWFsaXR5Tm9kZSIsImxlZnRUZXJtRnJvbUVxdWFsaXR5Tm9kZSIsInJpZ2h0VGVybUZyb21FcXVhbGl0eU5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUiLCJmaW5k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
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVxdWF0ZVRlcm1zIH0gZnJvbSBcIi4uL3Byb2Nlc3MvZXF1YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYWxsLCBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVFcXVhbGl0eSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEVxdWFsaXR5IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmVnYXRlZCwgbGVmdFRlcm0sIHJpZ2h0VGVybSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMubGVmdFRlcm0gPSBsZWZ0VGVybTtcbiAgICB0aGlzLnJpZ2h0VGVybSA9IHJpZ2h0VGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdFRlcm07XG4gIH1cblxuICBnZXRSaWdodFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRUZXJtO1xuICB9XG5cbiAgZ2V0RXF1YWxpdHlOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBlcXVhbGl0eU5kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5TmRlO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm1Ob2RlKCkge1xuICAgIGNvbnN0IGxlZnRUZXJtTm9kZSA9IHRoaXMubGVmdFRlcm0uZ2V0Tm9kZSgpO1xuXG4gICAgcmV0dXJuIGxlZnRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFJpZ2h0VGVybU5vZGUoKSB7XG4gICAgY29uc3QgcmlnaHRUZXJtTm9kZSA9IHRoaXMucmlnaHRUZXJtLmdldE5vZGUoKTtcblxuICAgIHJldHVybiByaWdodFRlcm1Ob2RlO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgY29uc3QgdGVybXMgPSBbXG4gICAgICB0aGlzLmxlZnRUZXJtLFxuICAgICAgdGhpcy5yaWdodFRlcm1cbiAgICBdO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgbWF0Y2hFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGVxdWFsaXR5Tm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBlcXVhbGl0eU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBpc0VxdWFsVG8oZXF1YWxpdHkpIHtcbiAgICBjb25zdCBlcXVhbGl0eU5vZGUgPSBlcXVhbGl0eS5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gZXF1YWxpdHlOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc1JlZmxleGl2ZSgpIHtcbiAgICBsZXQgcmVmbGV4aXZlID0gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMubmVnYXRlZCkge1xuICAgICAgY29uc3QgbGVmdFRlcm1FcXVhbFRvUmlnaHRUZXJtID0gdGhpcy5sZWZ0VGVybS5pc0VxdWFsVG8odGhpcy5yaWdodFRlcm0pO1xuXG4gICAgICBpZiAobGVmdFRlcm1FcXVhbFRvUmlnaHRUZXJtKSB7XG4gICAgICAgIHJlZmxleGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmxleGl2ZTtcbiAgfVxuXG4gIGZpbmRFcXVhbGl0eShjb250ZXh0KSB7XG4gICAgY29uc3QgZXF1YWxpdHlOb2RlID0gdGhpcy5nZXRFcXVhbGl0eU5vZGUoKSxcbiAgICAgICAgICBlcXVhbGl0eSA9IGNvbnRleHQuZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuLi5gKTtcblxuICAgIGxldCBlcXVhbGl0eTtcblxuICAgIGVxdWFsaXR5ID0gdGhpcy5maW5kRXF1YWxpdHkoY29udGV4dCk7XG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5IGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGVxdWFsaXR5LCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXF1YWxpdHkgPSB0aGlzO1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlVGVybXNcbiAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29uc3QgdmFsaWRhdGVXaGVuU3RhdGVkID0gdGhpcy52YWxpZGF0ZVdoZW5TdGF0ZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGV4aXN0cyhbXG4gICAgICAgICAgdmFsaWRhdGVXaGVuU3RhdGVkLFxuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgICAgXSwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLmFzc2lnbihjb250ZXh0KTtcblxuICAgICAgICAgIGNvbnRleHQuYWRkRXF1YWxpdHkoZXF1YWxpdHkpO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihlcXVhbGl0eSwgY29udGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1zVmFsaWRhdGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IGxlZnRUZXJtVmFsaWRhdGVzID0gdGhpcy5sZWZ0VGVybS52YWxpZGF0ZShjb250ZXh0LCAobGVmdFRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHJpZ2h0VGVybVZhbGlkdGVzID0gdGhpcy5yaWdodFRlcm0udmFsaWRhdGUoY29udGV4dCwgKHJpZ2h0VGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgbGVmdFRlcm1UeXBlID0gbGVmdFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICByaWdodFRlcm1UeXBlID0gcmlnaHRUZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgbGVmdFRlcm1UeXBlQmFzZVR5cGUgPSBsZWZ0VGVybVR5cGUuaXNCYXNlVHlwZSgpLFxuICAgICAgICAgICAgICByaWdodFRlcm1UeXBlQmFzZVR5cGUgPSByaWdodFRlcm1UeXBlLmlzQmFzZVR5cGUoKSxcbiAgICAgICAgICAgICAgbGVmdFRlcm1UeXBlSm9pbmVkVG9SaWdodFRlcm1UeXBlID0gbGVmdFRlcm1UeXBlLmlzSm9pbmVkVG8ocmlnaHRUZXJtVHlwZSk7XG5cbiAgICAgICAgaWYgKGxlZnRUZXJtVHlwZUJhc2VUeXBlIHx8IHJpZ2h0VGVybVR5cGVCYXNlVHlwZSB8fCBsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUpIHtcbiAgICAgICAgICB0aGlzLmxlZnRUZXJtID0gbGVmdFRlcm07XG5cbiAgICAgICAgICB0aGlzLnJpZ2h0VGVybSA9IHJpZ2h0VGVybTtcblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJpZ2h0VGVybVZhbGlkdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxlZnRUZXJtVmFsaWRhdGVzKSB7XG4gICAgICB0ZXJtc1ZhbGlkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5TdGF0ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5TdGF0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN0YXRlZCA9IGNvbnRleHQuaXNTdGF0ZWQoKTtcblxuICAgIGlmIChzdGF0ZWQpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgc3RhdGVkIGVxdWFsaXR5Li4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5TdGF0ZWQgPSBjb250aW51YXRpb24oY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBzdGF0ZWQgZXF1YWxpdHkuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5TdGF0ZWQ7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKCFzdGF0ZWQpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVyaXZlZCBlcXVhbGl0eS4uLmApO1xuXG4gICAgICBjb25zdCB0ZXJtc0VxdWF0ZSA9IGVxdWF0ZVRlcm1zKHRoaXMubGVmdFRlcm0sIHRoaXMucmlnaHRUZXJtLCBjb250ZXh0KTtcblxuICAgICAgaWYgKCh0aGlzLm5lZ2F0ZWQgJiYgIXRlcm1zRXF1YXRlKSB8fCAoIXRoaXMubmVnYXRlZCAmJiB0ZXJtc0VxdWF0ZSkpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBjb250aW51YXRpb24oY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVyaXZlZCBlcXVhbGl0eS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICBhc3NpZ24oY29udGV4dCkge1xuICAgIGNvbnN0IGVxdWFsaXR5ID0gdGhpcywgIC8vL1xuICAgICAgICAgIG5lZ2F0ZWQgPSB0aGlzLmlzTmVnYXRlZCgpLFxuICAgICAgICAgIHJlZmxleGl2ZSA9IHRoaXMuaXNSZWZsZXhpdmUoKTtcblxuICAgIGlmIChuZWdhdGVkIHx8IHJlZmxleGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVxdWFsaXR5QXNzaWdubWVudCA9IGVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCksXG4gICAgICAgICAgbGVmdFZhcmlhYmxlQXNzaWdubWVudCA9IGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpLFxuICAgICAgICAgIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50ID0gcmlnaHRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGVxdWFsaXR5QXNzaWdubWVudCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQobGVmdFZhcmlhYmxlQXNzaWdubWVudCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQocmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICBzdHJpbmcsXG4gICAgICBicmVha1BvaW50XG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkVxdWFsaXR5XCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgZXF1YWxpdHlOb2RlID0gaW5zdGFudGlhdGVFcXVhbGl0eShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IGVxdWFsaXR5Tm9kZSwgIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgbGVmdFRlcm0gPSBsZWZ0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHJpZ2h0VGVybSA9IHJpZ2h0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgIGNvbnN0IGVxdWFsaXR5ID0gbmV3IEVxdWFsaXR5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmVnYXRlZCwgbGVmdFRlcm0sIHJpZ2h0VGVybSk7XG5cbiAgICAgIHJldHVybiBlcXVhbGl0eTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gZXF1YWxpdHlGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG5lZ2F0ZWRGcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuZWdhdGVkID0gZXF1YWxpdHlOb2RlLmlzTmVnYXRlZCgpO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5mdW5jdGlvbiBsZWZ0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxlZnRUZXJtTm9kZSA9IGVxdWFsaXR5Tm9kZS5nZXRMZWZ0VGVybU5vZGUoKSxcbiAgICAgICAgbGVmdFRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZShsZWZ0VGVybU5vZGUpO1xuXG4gIHJldHVybiBsZWZ0VGVybTtcbn1cblxuZnVuY3Rpb24gcmlnaHRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmlnaHRUZXJtTm9kZSA9IGVxdWFsaXR5Tm9kZS5nZXRMZWZ0VGVybU5vZGUoKSxcbiAgICAgICAgcmlnaHRUZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUocmlnaHRUZXJtTm9kZSk7XG5cbiAgcmV0dXJuIHJpZ2h0VGVybTtcbn1cbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJFcXVhbGl0eSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJuZWdhdGVkIiwibGVmdFRlcm0iLCJyaWdodFRlcm0iLCJpc05lZ2F0ZWQiLCJnZXRMZWZ0VGVybSIsImdldFJpZ2h0VGVybSIsImdldEVxdWFsaXR5Tm9kZSIsImdldE5vZGUiLCJlcXVhbGl0eU5kZSIsImdldExlZnRUZXJtTm9kZSIsImxlZnRUZXJtTm9kZSIsImdldFJpZ2h0VGVybU5vZGUiLCJyaWdodFRlcm1Ob2RlIiwiZ2V0VGVybXMiLCJ0ZXJtcyIsIm1hdGNoRXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlOb2RlIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJlcXVhbGl0eU5vZGVNYXRjaGVzIiwiaXNFcXVhbFRvIiwiZXF1YWxpdHkiLCJlcXVhbFRvIiwiaXNSZWZsZXhpdmUiLCJyZWZsZXhpdmUiLCJsZWZ0VGVybUVxdWFsVG9SaWdodFRlcm0iLCJmaW5kRXF1YWxpdHkiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsInZhbGlkYXRlIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwiZXF1YWxpdHlTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJhbGwiLCJ2YWxpZGF0ZVdoZW5TdGF0ZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZXhpc3RzIiwiYXNzaWduIiwiYWRkRXF1YWxpdHkiLCJ0ZXJtc1ZhbGlkYXRlIiwibGVmdFRlcm1WYWxpZGF0ZXMiLCJyaWdodFRlcm1WYWxpZHRlcyIsImxlZnRUZXJtVHlwZSIsImdldFR5cGUiLCJyaWdodFRlcm1UeXBlIiwibGVmdFRlcm1UeXBlQmFzZVR5cGUiLCJpc0Jhc2VUeXBlIiwicmlnaHRUZXJtVHlwZUJhc2VUeXBlIiwibGVmdFRlcm1UeXBlSm9pbmVkVG9SaWdodFRlcm1UeXBlIiwiaXNKb2luZWRUbyIsInZhbGlkYXRlc1doZW5TdGF0ZWQiLCJzdGF0ZWQiLCJpc1N0YXRlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidGVybXNFcXVhdGUiLCJlcXVhdGVUZXJtcyIsImVxdWFsaXR5QXNzaWdubWVudCIsImVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eSIsImxlZnRWYXJpYWJsZUFzc2lnbm1lbnQiLCJsZWZ0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwicmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQiLCJyaWdodFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eSIsImFkZEFzc2lnbm1lbnQiLCJ0b0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUVxdWFsaXR5IiwibmVnYXRlZEZyb21FcXVhbGl0eU5vZGUiLCJsZWZ0VGVybUZyb21FcXVhbGl0eU5vZGUiLCJyaWdodFRlcm1Gcm9tRXF1YWxpdHlOb2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0FaNkM7MEJBRXRCO3dCQUNLO3lCQUNBOzhCQUNBOzZCQUNRO3lCQUNNO3dCQUM4RTtBQUV4SCxNQUFNLEVBQUVBLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxpQkFBaUJDLHVCQUFPO0lBQ2xELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsQ0FBRTtRQUMzRSxLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtRQUNmLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDSCxPQUFPO0lBQ3JCO0lBRUFJLGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQ0gsUUFBUTtJQUN0QjtJQUVBSSxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNILFNBQVM7SUFDdkI7SUFFQUksa0JBQWtCO1FBQ2hCLE1BQU1SLE9BQU8sSUFBSSxDQUFDUyxPQUFPLElBQ25CQyxjQUFjVixNQUFNLEdBQUc7UUFFN0IsT0FBT1U7SUFDVDtJQUVBQyxrQkFBa0I7UUFDaEIsTUFBTUMs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
@@ -13,10 +13,10 @@ const _occamlanguages = require("occam-languages");
13
13
  const _elements = require("../elements");
14
14
  const _context = require("../utilities/context");
15
15
  const _instantiate = require("../process/instantiate");
16
+ const _constants = require("../constants");
16
17
  const _element = require("../utilities/element");
17
18
  const _type = require("../utilities/type");
18
19
  const _json = require("../utilities/json");
19
- const _constants = require("../constants");
20
20
  const { push, first, intersection } = _necessary.arrayUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
21
21
  const _default = (0, _elements.define)(class Type extends _occamlanguages.Element {
22
22
  constructor(context, string, node, breakPoint, name, prefixName, superTypes, properties, provisional){
@@ -271,4 +271,4 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
271
271
  }
272
272
  });
273
273
 
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IG5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IHByb3BlcnRpZXNGcm9tSlNPTixcbiAgICAgICAgIHByZWZpeE5hbWVGcm9tSlNPTixcbiAgICAgICAgIHN1cGVyVHlwZXNGcm9tSlNPTixcbiAgICAgICAgIHByb3Zpc2lvbmFsRnJvbUpTT04sXG4gICAgICAgICBwcmVmaXhuYW1lVG9QcmV2aXhOYW1lSlNPTixcbiAgICAgICAgIHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OLFxuICAgICAgICAgcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04sXG4gICAgICAgICBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5pbXBvcnQge0JBU0VfVFlQRV9TWU1CT0x9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBwdXNoLCBmaXJzdCwgaW50ZXJzZWN0aW9uIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lLCBwcmVmaXhOYW1lLCBzdXBlclR5cGVzLCBwcm9wZXJ0aWVzLCBwcm92aXNpb25hbCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucHJlZml4TmFtZSA9IHByZWZpeE5hbWU7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFByZWZpeE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlZml4TmFtZTtcbiAgfVxuXG4gIGdldFN1cGVyVHlwZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VwZXJUeXBlcztcbiAgfVxuXG4gIGdldFR5cGVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiB0eXBlTm9kZTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMocHJvcGVydGllcyA9IFtdKSB7XG4gICAgcHVzaChwcm9wZXJ0aWVzLCB0aGlzLnByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5zdXBlclR5cGVzLmZvckVhY2goKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlUHJvcGVydGllcyA9IHN1cGVyVHlwZS5nZXRQcm9wZXJ0aWVzKCk7XG5cbiAgICAgIHB1c2gocHJvcGVydGllcywgc3VwZXJUeXBlUHJvcGVydGllcyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvcGVydGllcztcbiAgfVxuXG4gIGlzUHJvdmlzaW9uYWwoaW5jbHVkZVN1cGVyVHlwZXMgPSB0cnVlKSB7XG4gICAgbGV0IHByb3Zpc2lvbmFsID0gdGhpcy5wcm92aXNpb25hbDtcblxuICAgIGlmIChpbmNsdWRlU3VwZXJUeXBlcykge1xuICAgICAgaWYgKCFwcm92aXNpb25hbCkge1xuICAgICAgICBwcm92aXNpb25hbCA9IHRoaXMuc3VwZXJUeXBlcy5zb21lKChzdXBlclR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCBzdXBlclR5cGVQcm92aXNpb25hbCA9IHN1cGVyVHlwZS5pc1Byb3Zpc2lvbmFsKCk7XG5cbiAgICAgICAgICBpZiAoc3VwZXJUeXBlUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgc2V0TmFtZShuYW1lKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIHNldFByZWZpeE5hbWUocHJlZml4TmFtZSkge1xuICAgIHRoaXMucHJlZml4TmFtZSA9IHByZWZpeE5hbWU7XG4gIH1cblxuICBzZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpIHtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICB9XG5cbiAgc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gIHNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKSB7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgaXNCYXNlVHlwZSgpIHtcbiAgICBsZXQgYmFzZVR5cGUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IEJBU0VfVFlQRV9TWU1CT0wpIHtcbiAgICAgIGJhc2VUeXBlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZVR5cGU7XG4gIH1cblxuICBpc0VzdGFibGlzaGVkKGluY2x1ZGVTdXBlclR5cGVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy5pc1Byb3Zpc2lvbmFsKGluY2x1ZGVTdXBlclR5cGVzKSxcbiAgICAgICAgICBlc3RhYmxpc2hlZCA9ICFwcm92aXNpb25hbDtcblxuICAgIHJldHVybiBlc3RhYmxpc2hlZDtcbiAgfVxuXG4gIHJldHJpZXZlQW5jZXN0b3JUeXBlcyhhbmNlc3RvclR5cGVzID0gW10pIHtcbiAgICBjb25zdCBiYXNlVHlwZSA9IHRoaXMuaXNCYXNlVHlwZSgpO1xuXG4gICAgaWYgKCFiYXNlVHlwZSkge1xuICAgICAgY29uc3QgYW5jZXN0b3JUeXBlID0gdGhpcywgIC8vL1xuICAgICAgICAgICAgYW5jZXN0b3JUeXBlc0luY2x1ZGVBbmNlc3RvclR5cGUgPSBhbmNlc3RvclR5cGVzLmluY2x1ZGVzKGFuY2VzdG9yVHlwZSk7XG5cbiAgICAgIGlmICghYW5jZXN0b3JUeXBlc0luY2x1ZGVBbmNlc3RvclR5cGUpIHtcbiAgICAgICAgYW5jZXN0b3JUeXBlcy5wdXNoKGFuY2VzdG9yVHlwZSk7XG5cbiAgICAgICAgdGhpcy5zdXBlclR5cGVzLmZvckVhY2goKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIHN1cGVyVHlwZS5yZXRyaWV2ZUFuY2VzdG9yVHlwZXMoYW5jZXN0b3JUeXBlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhbmNlc3RvclR5cGVzO1xuICB9XG5cbiAgaXNDb3R5cGUoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpLFxuICAgICAgICAgIHByb3BlcnRpZXNMZW5ndGggPSBwcm9wZXJ0aWVzLmxlbmd0aCxcbiAgICAgICAgICBjb3R5cGUgPSAocHJvcGVydGllc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGNvdHlwZTtcbiAgfVxuXG4gIGlzUHJlZml4ZWQoKSB7XG4gICAgY29uc3QgcHJlZml4ZWQgPSAodGhpcy5wcmVmaXhOYW1lICE9PSBudWxsKTtcblxuICAgIHJldHVybiBwcmVmaXhlZDtcbiAgfVxuXG4gIGdldFByZWZpeGVkTmFtZSgpIHtcbiAgICBsZXQgcHJlZml4ZWROYW1lID0gbnVsbDtcblxuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAocHJlZml4ZWQpIHtcbiAgICAgIHByZWZpeGVkTmFtZSA9IGAke3RoaXMucHJlZml4TmFtZX0ke3RoaXMubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBwcmVmaXhlZE5hbWU7XG4gIH1cblxuICBnZXROb21pbmFsVHlwZU5hbWUoKSB7XG4gICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKSxcbiAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSBwcmVmaXhlZCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RoaXMucHJlZml4TmFtZX0ke3RoaXMubmFtZX1gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lO1xuXG4gICAgcmV0dXJuIG5vbWluYWxUeXBlTmFtZTtcbiAgfVxuXG4gIGlzQmFzaWMoKSB7XG4gICAgbGV0IGJhc2ljID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBmaXJzdFN1cGVyVHlwZSA9IGZpcnN0KHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgICBzdXBlclR5cGUgPSBmaXJzdFN1cGVyVHlwZSwgLy8vXG4gICAgICAgICAgICBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZSA9PT0gYmFzZVR5cGUpIHtcbiAgICAgICAgYmFzaWMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBiYXNpYztcbiAgfVxuXG4gIGlzUmVmaW5lZCgpIHtcbiAgICBsZXQgcmVmaW5lZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RTdXBlclR5cGUgPSBmaXJzdCh0aGlzLnN1cGVyVHlwZXMpLFxuICAgICAgICAgICAgc3VwZXJUeXBlID0gZmlyc3RTdXBlclR5cGUsIC8vL1xuICAgICAgICAgICAgc3VwZXJUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROYW1lKCk7XG5cbiAgICAgIGlmIChzdXBlclR5cGVOYW1lID09PSB0aGlzLm5hbWUpIHtcbiAgICAgICAgcmVmaW5lZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmluZWQ7XG4gIH1cblxuICBpc0pvaW5lZFRvKHR5cGUpIHtcbiAgICBsZXQgam9pbmVkVG8gPSBmYWxzZTtcblxuICAgIGNvbnN0IGFuY2VzdG9yVHlwZXMgPSB0aGlzLnJldHJpZXZlQW5jZXN0b3JUeXBlcygpLFxuICAgICAgICAgIHR5cGVBbmNlc3RvclR5cGVzID0gdHlwZS5yZXRyaWV2ZUFuY2VzdG9yVHlwZXMoKSxcbiAgICAgICAgICBpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzID0gaW50ZXJzZWN0aW9uKGFuY2VzdG9yVHlwZXMsIHR5cGVBbmNlc3RvclR5cGVzLCAoYW5jZXN0b3JUeXBlLCB0eXBlQW5jZXN0b3JUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbmNlc3RvclR5cGVFcXVhbFRvQVR5cGVuY2VzdG9yVHlwZSA9IGFuY2VzdG9yVHlwZS5pc0VxdWFsVG8odHlwZUFuY2VzdG9yVHlwZSk7XG5cbiAgICAgICAgICAgIGlmIChhbmNlc3RvclR5cGVFcXVhbFRvQVR5cGVuY2VzdG9yVHlwZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzTGVuZ3RoID0gaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCA+IDApIHtcbiAgICAgIGpvaW5lZFRvID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gam9pbmVkVG87XG4gIH1cblxuICBpc0VxdWFsVG8odHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSAodGhpcyA9PT0gdHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBsZXQgc3ViVHlwZU9mO1xuXG4gICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICBpZiAodGhpcyA9PT0gYmFzZVR5cGUpIHtcbiAgICAgIHN1YlR5cGVPZiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJUeXBlT2YgPSB0aGlzLnN1cGVyVHlwZXMuc29tZSgoc3VwZXJUeXBlKSA9PiB7IC8vL1xuICAgICAgICBpZiAoc3VwZXJUeXBlID09PSB0eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdXBlclR5cGVTdWJUeXBlT2ZUeXBlID0gc3VwZXJUeXBlLmlzU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgIGlmIChzdXBlclR5cGVTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IHN1YlR5cGVPZiA9IHR5cGUuaXNTdWJUeXBlT2YodGhpcyksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSBzdWJUeXBlT2Y7ICAvLy9cblxuICAgIHJldHVybiBzdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mID0gdGhpcy5pc1N1YlR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvT3JTdWJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdWJUeXBlT2YpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9PclN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSB0aGlzLmlzRXF1YWxUbyh0eXBlKSxcbiAgICAgICAgICBzdXBlclR5cGVPZiA9IHRoaXMuaXNTdXBlclR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvIHx8IHN1cGVyVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mID0gdGhpcy5pc1N1YlR5cGVPZih0eXBlKSxcbiAgICAgICAgICBzdXBlclR5cGVPZiA9IHRoaXMuaXNTdXBlclR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdWJUeXBlT2YgfHwgc3VwZXJUeXBlT2YpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG5hbWVUeXBlTmFtZSA9ICh0aGlzLm5hbWUgPT09IHR5cGVOYW1lKSxcbiAgICAgICAgICBjb21wYXJlc1RvVHlwZU5hbWUgPSBuYW1lVHlwZU5hbWU7ICAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvVHlwZU5hbWU7XG4gIH1cblxuICBjb21wYXJlUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwsIGluY2x1ZGVTdXBlcnR5cGVzID0gdHJ1ZSkge1xuICAgIGxldCBjb21wYXJlc1RvUHJvdmlzaW9uYWw7XG5cbiAgICBjb25zdCBwcm92aXNpb25hbEEgPSBwcm92aXNpb25hbDsgLy8vXG5cbiAgICBwcm92aXNpb25hbCA9IHRoaXMuaXNQcm92aXNpb25hbChpbmNsdWRlU3VwZXJ0eXBlcyk7XG5cbiAgICBjb25zdCBwcm92aXNpb25hbEIgPSBwcm92aXNpb25hbDsgLy8vXG5cbiAgICBjb21wYXJlc1RvUHJvdmlzaW9uYWwgPSAocHJvdmlzaW9uYWxBID09PSBwcm92aXNpb25hbEIpO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9Qcm92aXNpb25hbDtcbiAgfVxuXG4gIGNvbXBhcmVOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5hbWVOb21pbmFsVHlwZU5hbWUgPSAodGhpcy5uYW1lID09PSBub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKG5hbWVOb21pbmFsVHlwZU5hbWUpIHtcbiAgICAgIGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgICBpZiAocHJlZml4ZWQpIHtcbiAgICAgICAgY29uc3QgcHJlZml4ZWROYW1lID0gdGhpcy5nZXRQcmVmaXhlZE5hbWUoKSxcbiAgICAgICAgICAgICAgcHJlZml4ZWROYW1lTm9taW5hbFR5cGVOYW1lID0gKHByZWZpeGVkTmFtZSA9PT0gbm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAocHJlZml4ZWROYW1lTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICAgICAgY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZTtcbiAgfVxuXG4gIGNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpIHtcbiAgICBsZXQgY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAocHJlZml4ZWQpIHtcbiAgICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZ2V0UHJlZml4ZWROYW1lKCksXG4gICAgICAgICAgICBwcmVmaXhlZFR5cGVOYW1lUHJlZml4ZWROYW1lID0gKHByZWZpeGVkVHlwZU5hbWUgPT09IHByZWZpeGVkTmFtZSk7XG5cbiAgICAgIGlmIChwcmVmaXhlZFR5cGVOYW1lUHJlZml4ZWROYW1lKSB7XG4gICAgICAgIGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWU7XG4gIH1cblxuICB0b0pTT04oYWJyaWRnZWQgPSBmYWxzZSkge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICBzdHJpbmcsXG4gICAgICBicmVha1BvaW50XG4gICAgfTtcblxuICAgIGlmICghYWJyaWRnZWQpIHtcbiAgICAgIGNvbnN0IHByZWZpeE5hbWVKU09OID0gcHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04odGhpcy5wcmVmaXhOYW1lKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZXNKU09OID0gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04odGhpcy5zdXBlclR5cGVzKSxcbiAgICAgICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04odGhpcy5wcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgIHByb3Zpc2lub2FsSlNPTSA9IHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04odGhpcy5wcm92aXNpb25hbCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gcHJlZml4TmFtZUpTT04sICAvLy9cbiAgICAgICAgICAgIHN1cGVyVHlwZXMgPSBzdXBlclR5cGVzSlNPTiwgIC8vL1xuICAgICAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNKU09OLCAgLy8vXG4gICAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lub2FsSlNPTTsgIC8vL1xuXG4gICAgICBPYmplY3QuYXNzaWduKGpzb24sIHtcbiAgICAgICAgcHJlZml4TmFtZSxcbiAgICAgICAgc3VwZXJUeXBlcyxcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgcHJvdmlzaW9uYWxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlR5cGVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICB0eXBlTm9kZSA9IGluc3RhbnRpYXRlVHlwZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICBuYW1lID0gbmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbik7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsOyAvLy9cblxuICAgICAgY29uc3QgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgcHJlZml4TmFtZSwgc3VwZXJUeXBlcywgcHJvcGVydGllcywgcHJvdmlzaW9uYWwpO1xuXG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTmFtZShuYW1lLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RyaW5nID0gbmFtZSwgIC8vL1xuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgIHByZWZpeE5hbWUgPSBudWxsLFxuICAgICAgICAgIHN1cGVyVHlwZXMgPSBbXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzID0gW10sXG4gICAgICAgICAgcHJvdmlzaW9uYWwgPSBmYWxzZTtcblxuICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgY29uc3QgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgcHJlZml4TmFtZSwgc3VwZXJUeXBlcywgcHJvcGVydGllcywgcHJvdmlzaW9uYWwpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbInB1c2giLCJmaXJzdCIsImludGVyc2VjdGlvbiIsImFycmF5VXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJuYW1lIiwicHJlZml4TmFtZSIsInN1cGVyVHlwZXMiLCJwcm9wZXJ0aWVzIiwicHJvdmlzaW9uYWwiLCJnZXROYW1lIiwiZ2V0UHJlZml4TmFtZSIsImdldFN1cGVyVHlwZXMiLCJnZXRUeXBlTm9kZSIsImdldE5vZGUiLCJ0eXBlTm9kZSIsImdldFByb3BlcnRpZXMiLCJmb3JFYWNoIiwic3VwZXJUeXBlIiwic3VwZXJUeXBlUHJvcGVydGllcyIsImlzUHJvdmlzaW9uYWwiLCJpbmNsdWRlU3VwZXJUeXBlcyIsInNvbWUiLCJzdXBlclR5cGVQcm92aXNpb25hbCIsInNldE5hbWUiLCJzZXRQcmVmaXhOYW1lIiwic2V0U3VwZXJUeXBlcyIsInNldFByb3BlcnRpZXMiLCJzZXRQcm92aXNpb25hbCIsImlzQmFzZVR5cGUiLCJiYXNlVHlwZSIsIkJBU0VfVFlQRV9TWU1CT0wiLCJpc0VzdGFibGlzaGVkIiwiZXN0YWJsaXNoZWQiLCJyZXRyaWV2ZUFuY2VzdG9yVHlwZXMiLCJhbmNlc3RvclR5cGVzIiwiYW5jZXN0b3JUeXBlIiwiYW5jZXN0b3JUeXBlc0luY2x1ZGVBbmNlc3RvclR5cGUiLCJpbmNsdWRlcyIsImlzQ290eXBlIiwicHJvcGVydGllc0xlbmd0aCIsImxlbmd0aCIsImNvdHlwZSIsImlzUHJlZml4ZWQiLCJwcmVmaXhlZCIsImdldFByZWZpeGVkTmFtZSIsInByZWZpeGVkTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsIm5vbWluYWxUeXBlTmFtZSIsImlzQmFzaWMiLCJiYXNpYyIsInN1cGVyVHlwZXNMZW5ndGgiLCJmaXJzdFN1cGVyVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJpc1JlZmluZWQiLCJyZWZpbmVkIiwic3VwZXJUeXBlTmFtZSIsImlzSm9pbmVkVG8iLCJ0eXBlIiwiam9pbmVkVG8iLCJ0eXBlQW5jZXN0b3JUeXBlcyIsImludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXMiLCJ0eXBlQW5jZXN0b3JUeXBlIiwiYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUiLCJpc0VxdWFsVG8iLCJpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzTGVuZ3RoIiwiZXF1YWxUbyIsImlzU3ViVHlwZU9mIiwic3ViVHlwZU9mIiwic3VwZXJUeXBlU3ViVHlwZU9mVHlwZSIsImlzU3VwZXJUeXBlT2YiLCJzdXBlclR5cGVPZiIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiZXF1YWxUb09yU3ViVHlwZU9mIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsImVxdWFsVG9PclN1cGVyVHlwZU9mIiwiaXNFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJjb21wYXJlVHlwZU5hbWUiLCJ0eXBlTmFtZSIsIm5hbWVUeXBlTmFtZSIsImNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVQcm92aXNpb25hbCIsImluY2x1ZGVTdXBlcnR5cGVzIiwiY29tcGFyZXNUb1Byb3Zpc2lvbmFsIiwicHJvdmlzaW9uYWxBIiwicHJvdmlzaW9uYWxCIiwiY29tcGFyZU5vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUiLCJuYW1lTm9taW5hbFR5cGVOYW1lIiwicHJlZml4ZWROYW1lTm9taW5hbFR5cGVOYW1lIiwiY29tcGFyZVByZWZpeGVkVHlwZU5hbWUiLCJwcmVmaXhlZFR5cGVOYW1lIiwiY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUiLCJwcmVmaXhlZFR5cGVOYW1lUHJlZml4ZWROYW1lIiwidG9KU09OIiwiYWJyaWRnZWQiLCJnZXRTdHJpbmciLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwicHJlZml4TmFtZUpTT04iLCJwcmVmaXhuYW1lVG9QcmV2aXhOYW1lSlNPTiIsInN1cGVyVHlwZXNKU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OIiwicHJvdmlzaW5vYWxKU09NIiwicHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiIsIk9iamVjdCIsImFzc2lnbiIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVR5cGUiLCJuYW1lRnJvbVR5cGVOb2RlIiwicHJlZml4TmFtZUZyb21KU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvdmlzaW9uYWxGcm9tSlNPTiIsImZyb21OYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF1QkE7OztlQUFBOzs7MkJBckIrQjtnQ0FDYzswQkFFdEI7eUJBQ0s7NkJBQ0k7eUJBQ0M7c0JBQ0c7c0JBUVM7MkJBQ2Q7QUFFL0IsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFLEdBQUdDLHlCQUFjLEVBQzlDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxhQUFhQyx1QkFBTztJQUM5QyxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElB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
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IEJBU0VfVFlQRV9TWU1CT0wgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBuYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBwcm9wZXJ0aWVzRnJvbUpTT04sXG4gICAgICAgICBwcmVmaXhOYW1lRnJvbUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzRnJvbUpTT04sXG4gICAgICAgICBwcm92aXNpb25hbEZyb21KU09OLFxuICAgICAgICAgcHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTixcbiAgICAgICAgIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OLFxuICAgICAgICAgcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHB1c2gsIGZpcnN0LCBpbnRlcnNlY3Rpb24gfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0UHJlZml4TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhOYW1lO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgZ2V0VHlwZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHR5cGVOb2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzID0gW10pIHtcbiAgICBwdXNoKHByb3BlcnRpZXMsIHRoaXMucHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKTtcblxuICAgICAgcHVzaChwcm9wZXJ0aWVzLCBzdXBlclR5cGVQcm9wZXJ0aWVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbChpbmNsdWRlU3VwZXJUeXBlcyA9IHRydWUpIHtcbiAgICBsZXQgcHJvdmlzaW9uYWwgPSB0aGlzLnByb3Zpc2lvbmFsO1xuXG4gICAgaWYgKGluY2x1ZGVTdXBlclR5cGVzKSB7XG4gICAgICBpZiAoIXByb3Zpc2lvbmFsKSB7XG4gICAgICAgIHByb3Zpc2lvbmFsID0gdGhpcy5zdXBlclR5cGVzLnNvbWUoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1cGVyVHlwZVByb3Zpc2lvbmFsID0gc3VwZXJUeXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgICAgIGlmIChzdXBlclR5cGVQcm92aXNpb25hbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBzZXROYW1lKG5hbWUpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKSB7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgfVxuXG4gIHNldFN1cGVyVHlwZXMoc3VwZXJUeXBlcykge1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBpc0Jhc2VUeXBlKCkge1xuICAgIGxldCBiYXNlVHlwZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gQkFTRV9UWVBFX1NZTUJPTCkge1xuICAgICAgYmFzZVR5cGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBiYXNlVHlwZTtcbiAgfVxuXG4gIGlzRXN0YWJsaXNoZWQoaW5jbHVkZVN1cGVyVHlwZXMgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvdmlzaW9uYWwgPSB0aGlzLmlzUHJvdmlzaW9uYWwoaW5jbHVkZVN1cGVyVHlwZXMpLFxuICAgICAgICAgIGVzdGFibGlzaGVkID0gIXByb3Zpc2lvbmFsO1xuXG4gICAgcmV0dXJuIGVzdGFibGlzaGVkO1xuICB9XG5cbiAgcmV0cmlldmVBbmNlc3RvclR5cGVzKGFuY2VzdG9yVHlwZXMgPSBbXSkge1xuICAgIGNvbnN0IGJhc2VUeXBlID0gdGhpcy5pc0Jhc2VUeXBlKCk7XG5cbiAgICBpZiAoIWJhc2VUeXBlKSB7XG4gICAgICBjb25zdCBhbmNlc3RvclR5cGUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgICBhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSA9IGFuY2VzdG9yVHlwZXMuaW5jbHVkZXMoYW5jZXN0b3JUeXBlKTtcblxuICAgICAgaWYgKCFhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSkge1xuICAgICAgICBhbmNlc3RvclR5cGVzLnB1c2goYW5jZXN0b3JUeXBlKTtcblxuICAgICAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgICAgc3VwZXJUeXBlLnJldHJpZXZlQW5jZXN0b3JUeXBlcyhhbmNlc3RvclR5cGVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9yVHlwZXM7XG4gIH1cblxuICBpc0NvdHlwZSgpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAgICAgcHJvcGVydGllc0xlbmd0aCA9IHByb3BlcnRpZXMubGVuZ3RoLFxuICAgICAgICAgIGNvdHlwZSA9IChwcm9wZXJ0aWVzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gY290eXBlO1xuICB9XG5cbiAgaXNQcmVmaXhlZCgpIHtcbiAgICBjb25zdCBwcmVmaXhlZCA9ICh0aGlzLnByZWZpeE5hbWUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHByZWZpeGVkO1xuICB9XG5cbiAgZ2V0UHJlZml4ZWROYW1lKCkge1xuICAgIGxldCBwcmVmaXhlZE5hbWUgPSBudWxsO1xuXG4gICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmIChwcmVmaXhlZCkge1xuICAgICAgcHJlZml4ZWROYW1lID0gYCR7dGhpcy5wcmVmaXhOYW1lfSR7dGhpcy5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWZpeGVkTmFtZTtcbiAgfVxuXG4gIGdldE5vbWluYWxUeXBlTmFtZSgpIHtcbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpLFxuICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHByZWZpeGVkID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5wcmVmaXhOYW1lfSR7dGhpcy5uYW1lfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWU7XG5cbiAgICByZXR1cm4gbm9taW5hbFR5cGVOYW1lO1xuICB9XG5cbiAgaXNCYXNpYygpIHtcbiAgICBsZXQgYmFzaWMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cGVyVHlwZXNMZW5ndGggPSB0aGlzLnN1cGVyVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cGVyVHlwZXNMZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZpcnN0U3VwZXJUeXBlID0gZmlyc3QodGhpcy5zdXBlclR5cGVzKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGZpcnN0U3VwZXJUeXBlLCAvLy9cbiAgICAgICAgICAgIGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlID09PSBiYXNlVHlwZSkge1xuICAgICAgICBiYXNpYyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2ljO1xuICB9XG5cbiAgaXNSZWZpbmVkKCkge1xuICAgIGxldCByZWZpbmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBmaXJzdFN1cGVyVHlwZSA9IGZpcnN0KHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgICBzdXBlclR5cGUgPSBmaXJzdFN1cGVyVHlwZSwgLy8vXG4gICAgICAgICAgICBzdXBlclR5cGVOYW1lID0gc3VwZXJUeXBlLmdldE5hbWUoKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZU5hbWUgPT09IHRoaXMubmFtZSkge1xuICAgICAgICByZWZpbmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVmaW5lZDtcbiAgfVxuXG4gIGlzSm9pbmVkVG8odHlwZSkge1xuICAgIGxldCBqb2luZWRUbyA9IGZhbHNlO1xuXG4gICAgY29uc3QgYW5jZXN0b3JUeXBlcyA9IHRoaXMucmV0cmlldmVBbmNlc3RvclR5cGVzKCksXG4gICAgICAgICAgdHlwZUFuY2VzdG9yVHlwZXMgPSB0eXBlLnJldHJpZXZlQW5jZXN0b3JUeXBlcygpLFxuICAgICAgICAgIGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXMgPSBpbnRlcnNlY3Rpb24oYW5jZXN0b3JUeXBlcywgdHlwZUFuY2VzdG9yVHlwZXMsIChhbmNlc3RvclR5cGUsIHR5cGVBbmNlc3RvclR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFuY2VzdG9yVHlwZUVxdWFsVG9BVHlwZW5jZXN0b3JUeXBlID0gYW5jZXN0b3JUeXBlLmlzRXF1YWxUbyh0eXBlQW5jZXN0b3JUeXBlKTtcblxuICAgICAgICAgICAgaWYgKGFuY2VzdG9yVHlwZUVxdWFsVG9BVHlwZW5jZXN0b3JUeXBlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXNMZW5ndGggPSBpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzTGVuZ3RoID4gMCkge1xuICAgICAgam9pbmVkVG8gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBqb2luZWRUbztcbiAgfVxuXG4gIGlzRXF1YWxUbyh0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9ICh0aGlzID09PSB0eXBlKTtcblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgaXNTdWJUeXBlT2YodHlwZSkge1xuICAgIGxldCBzdWJUeXBlT2Y7XG5cbiAgICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICAgIGlmICh0aGlzID09PSBiYXNlVHlwZSkge1xuICAgICAgc3ViVHlwZU9mID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YlR5cGVPZiA9IHRoaXMuc3VwZXJUeXBlcy5zb21lKChzdXBlclR5cGUpID0+IHsgLy8vXG4gICAgICAgIGlmIChzdXBlclR5cGUgPT09IHR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1cGVyVHlwZVN1YlR5cGVPZlR5cGUgPSBzdXBlclR5cGUuaXNTdWJUeXBlT2YodHlwZSk7XG5cbiAgICAgICAgaWYgKHN1cGVyVHlwZVN1YlR5cGVPZlR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gc3ViVHlwZU9mO1xuICB9XG5cbiAgaXNTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgY29uc3Qgc3ViVHlwZU9mID0gdHlwZS5pc1N1YlR5cGVPZih0aGlzKSxcbiAgICAgICAgICBzdXBlclR5cGVPZiA9IHN1YlR5cGVPZjsgIC8vL1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZU9mO1xuICB9XG5cbiAgaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSB0aGlzLmlzRXF1YWxUbyh0eXBlKSxcbiAgICAgICAgICBzdWJUeXBlT2YgPSB0aGlzLmlzU3ViVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9PclN1YlR5cGVPZiA9IChlcXVhbFRvIHx8IHN1YlR5cGVPZik7XG5cbiAgICByZXR1cm4gZXF1YWxUb09yU3ViVHlwZU9mO1xuICB9XG5cbiAgaXNFcXVhbFRvT3JTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1cGVyVHlwZU9mID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9PclN1cGVyVHlwZU9mID0gKGVxdWFsVG8gfHwgc3VwZXJUeXBlT2YpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9PclN1cGVyVHlwZU9mO1xuICB9XG5cbiAgaXNFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSB0aGlzLmlzRXF1YWxUbyh0eXBlKSxcbiAgICAgICAgICBzdWJUeXBlT2YgPSB0aGlzLmlzU3ViVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIHN1cGVyVHlwZU9mID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvIHx8IHN1YlR5cGVPZiB8fCBzdXBlclR5cGVPZik7XG5cbiAgICByZXR1cm4gZXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mO1xuICB9XG5cbiAgY29tcGFyZVR5cGVOYW1lKHR5cGVOYW1lKSB7XG4gICAgY29uc3QgbmFtZVR5cGVOYW1lID0gKHRoaXMubmFtZSA9PT0gdHlwZU5hbWUpLFxuICAgICAgICAgIGNvbXBhcmVzVG9UeXBlTmFtZSA9IG5hbWVUeXBlTmFtZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9UeXBlTmFtZTtcbiAgfVxuXG4gIGNvbXBhcmVQcm92aXNpb25hbChwcm92aXNpb25hbCwgaW5jbHVkZVN1cGVydHlwZXMgPSB0cnVlKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9Qcm92aXNpb25hbDtcblxuICAgIGNvbnN0IHByb3Zpc2lvbmFsQSA9IHByb3Zpc2lvbmFsOyAvLy9cblxuICAgIHByb3Zpc2lvbmFsID0gdGhpcy5pc1Byb3Zpc2lvbmFsKGluY2x1ZGVTdXBlcnR5cGVzKTtcblxuICAgIGNvbnN0IHByb3Zpc2lvbmFsQiA9IHByb3Zpc2lvbmFsOyAvLy9cblxuICAgIGNvbXBhcmVzVG9Qcm92aXNpb25hbCA9IChwcm92aXNpb25hbEEgPT09IHByb3Zpc2lvbmFsQik7XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1Byb3Zpc2lvbmFsO1xuICB9XG5cbiAgY29tcGFyZU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgICBsZXQgY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgbmFtZU5vbWluYWxUeXBlTmFtZSA9ICh0aGlzLm5hbWUgPT09IG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAobmFtZU5vbWluYWxUeXBlTmFtZSkge1xuICAgICAgY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCk7XG5cbiAgICAgIGlmIChwcmVmaXhlZCkge1xuICAgICAgICBjb25zdCBwcmVmaXhlZE5hbWUgPSB0aGlzLmdldFByZWZpeGVkTmFtZSgpLFxuICAgICAgICAgICAgICBwcmVmaXhlZE5hbWVOb21pbmFsVHlwZU5hbWUgPSAocHJlZml4ZWROYW1lID09PSBub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmIChwcmVmaXhlZE5hbWVOb21pbmFsVHlwZU5hbWUpIHtcbiAgICAgICAgICBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lO1xuICB9XG5cbiAgY29tcGFyZVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSkge1xuICAgIGxldCBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmIChwcmVmaXhlZCkge1xuICAgICAgY29uc3QgcHJlZml4ZWROYW1lID0gdGhpcy5nZXRQcmVmaXhlZE5hbWUoKSxcbiAgICAgICAgICAgIHByZWZpeGVkVHlwZU5hbWVQcmVmaXhlZE5hbWUgPSAocHJlZml4ZWRUeXBlTmFtZSA9PT0gcHJlZml4ZWROYW1lKTtcblxuICAgICAgaWYgKHByZWZpeGVkVHlwZU5hbWVQcmVmaXhlZE5hbWUpIHtcbiAgICAgICAgY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZTtcbiAgfVxuXG4gIHRvSlNPTihhYnJpZGdlZCA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZyxcbiAgICAgIGJyZWFrUG9pbnRcbiAgICB9O1xuXG4gICAgaWYgKCFhYnJpZGdlZCkge1xuICAgICAgY29uc3QgcHJlZml4TmFtZUpTT04gPSBwcmVmaXhuYW1lVG9QcmV2aXhOYW1lSlNPTih0aGlzLnByZWZpeE5hbWUpLFxuICAgICAgICAgICAgc3VwZXJUeXBlc0pTT04gPSBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTih0aGlzLnN1cGVyVHlwZXMpLFxuICAgICAgICAgICAgcHJvcGVydGllc0pTT04gPSBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTih0aGlzLnByb3BlcnRpZXMpLFxuICAgICAgICAgICAgcHJvdmlzaW5vYWxKU09NID0gcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTih0aGlzLnByb3Zpc2lvbmFsKSxcbiAgICAgICAgICAgIHByZWZpeE5hbWUgPSBwcmVmaXhOYW1lSlNPTiwgIC8vL1xuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLCAgLy8vXG4gICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0pTT04sICAvLy9cbiAgICAgICAgICAgIHByb3Zpc2lvbmFsID0gcHJvdmlzaW5vYWxKU09NOyAgLy8vXG5cbiAgICAgIE9iamVjdC5hc3NpZ24oanNvbiwge1xuICAgICAgICBwcmVmaXhOYW1lLFxuICAgICAgICBzdXBlclR5cGVzLFxuICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICBwcm92aXNpb25hbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHR5cGVOb2RlID0gaW5zdGFudGlhdGVUeXBlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByZWZpeE5hbWUgPSBwcmVmaXhOYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWxGcm9tSlNPTihqc29uKTtcblxuICAgICAgY29udGV4dCA9IG51bGw7IC8vL1xuXG4gICAgICBjb25zdCB0eXBlID0gbmV3IFR5cGUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lLCBwcmVmaXhOYW1lLCBzdXBlclR5cGVzLCBwcm9wZXJ0aWVzLCBwcm92aXNpb25hbCk7XG5cbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIGZyb21OYW1lKG5hbWUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdHJpbmcgPSBuYW1lLCAgLy8vXG4gICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgcHJlZml4TmFtZSA9IG51bGwsXG4gICAgICAgICAgc3VwZXJUeXBlcyA9IFtdLFxuICAgICAgICAgIHByb3BlcnRpZXMgPSBbXSxcbiAgICAgICAgICBwcm92aXNpb25hbCA9IGZhbHNlO1xuXG4gICAgY29udGV4dCA9IG51bGw7XG5cbiAgICBjb25zdCB0eXBlID0gbmV3IFR5cGUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lLCBwcmVmaXhOYW1lLCBzdXBlclR5cGVzLCBwcm9wZXJ0aWVzLCBwcm92aXNpb25hbCk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsicHVzaCIsImZpcnN0IiwiaW50ZXJzZWN0aW9uIiwiYXJyYXlVdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJUeXBlIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm5hbWUiLCJwcmVmaXhOYW1lIiwic3VwZXJUeXBlcyIsInByb3BlcnRpZXMiLCJwcm92aXNpb25hbCIsImdldE5hbWUiLCJnZXRQcmVmaXhOYW1lIiwiZ2V0U3VwZXJUeXBlcyIsImdldFR5cGVOb2RlIiwiZ2V0Tm9kZSIsInR5cGVOb2RlIiwiZ2V0UHJvcGVydGllcyIsImZvckVhY2giLCJzdXBlclR5cGUiLCJzdXBlclR5cGVQcm9wZXJ0aWVzIiwiaXNQcm92aXNpb25hbCIsImluY2x1ZGVTdXBlclR5cGVzIiwic29tZSIsInN1cGVyVHlwZVByb3Zpc2lvbmFsIiwic2V0TmFtZSIsInNldFByZWZpeE5hbWUiLCJzZXRTdXBlclR5cGVzIiwic2V0UHJvcGVydGllcyIsInNldFByb3Zpc2lvbmFsIiwiaXNCYXNlVHlwZSIsImJhc2VUeXBlIiwiQkFTRV9UWVBFX1NZTUJPTCIsImlzRXN0YWJsaXNoZWQiLCJlc3RhYmxpc2hlZCIsInJldHJpZXZlQW5jZXN0b3JUeXBlcyIsImFuY2VzdG9yVHlwZXMiLCJhbmNlc3RvclR5cGUiLCJhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSIsImluY2x1ZGVzIiwiaXNDb3R5cGUiLCJwcm9wZXJ0aWVzTGVuZ3RoIiwibGVuZ3RoIiwiY290eXBlIiwiaXNQcmVmaXhlZCIsInByZWZpeGVkIiwiZ2V0UHJlZml4ZWROYW1lIiwicHJlZml4ZWROYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwiaXNCYXNpYyIsImJhc2ljIiwic3VwZXJUeXBlc0xlbmd0aCIsImZpcnN0U3VwZXJUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsImlzUmVmaW5lZCIsInJlZmluZWQiLCJzdXBlclR5cGVOYW1lIiwiaXNKb2luZWRUbyIsInR5cGUiLCJqb2luZWRUbyIsInR5cGVBbmNlc3RvclR5cGVzIiwiaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcyIsInR5cGVBbmNlc3RvclR5cGUiLCJhbmNlc3RvclR5cGVFcXVhbFRvQVR5cGVuY2VzdG9yVHlwZSIsImlzRXF1YWxUbyIsImludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXNMZW5ndGgiLCJlcXVhbFRvIiwiaXNTdWJUeXBlT2YiLCJzdWJUeXBlT2YiLCJzdXBlclR5cGVTdWJUeXBlT2ZUeXBlIiwiaXNTdXBlclR5cGVPZiIsInN1cGVyVHlwZU9mIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJlcXVhbFRvT3JTdWJUeXBlT2YiLCJpc0VxdWFsVG9PclN1cGVyVHlwZU9mIiwiZXF1YWxUb09yU3VwZXJUeXBlT2YiLCJpc0VxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZiIsImVxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZiIsImNvbXBhcmVUeXBlTmFtZSIsInR5cGVOYW1lIiwibmFtZVR5cGVOYW1lIiwiY29tcGFyZXNUb1R5cGVOYW1lIiwiY29tcGFyZVByb3Zpc2lvbmFsIiwiaW5jbHVkZVN1cGVydHlwZXMiLCJjb21wYXJlc1RvUHJvdmlzaW9uYWwiLCJwcm92aXNpb25hbEEiLCJwcm92aXNpb25hbEIiLCJjb21wYXJlTm9taW5hbFR5cGVOYW1lIiwiY29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSIsIm5hbWVOb21pbmFsVHlwZU5hbWUiLCJwcmVmaXhlZE5hbWVOb21pbmFsVHlwZU5hbWUiLCJjb21wYXJlUHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWVQcmVmaXhlZE5hbWUiLCJ0b0pTT04iLCJhYnJpZGdlZCIsImdldFN0cmluZyIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJwcmVmaXhOYW1lSlNPTiIsInByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTiIsInByb3BlcnRpZXNKU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm92aXNpbm9hbEpTT00iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwiT2JqZWN0IiwiYXNzaWduIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlVHlwZSIsIm5hbWVGcm9tVHlwZU5vZGUiLCJwcmVmaXhOYW1lRnJvbUpTT04iLCJzdXBlclR5cGVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJwcm92aXNpb25hbEZyb21KU09OIiwiZnJvbU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXVCQTs7O2VBQUE7OzsyQkFyQitCO2dDQUNjOzBCQUV0Qjt5QkFDSzs2QkFDSTsyQkFDQzt5QkFDQTtzQkFDRztzQkFRUztBQUU3QyxNQUFNLEVBQUVBLElBQUksRUFBRUMsS0FBSyxFQUFFQyxZQUFZLEVBQUUsR0FBR0MseUJBQWMsRUFDOUMsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGFBQWFDLHVCQUFPO0lBQzlDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMs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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-nominal",
3
3
  "author": "James Smith",
4
- "version": "1.0.391",
4
+ "version": "1.0.392",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-nominal",
7
7
  "description": "Occam's Nominal language.",
@@ -161,9 +161,11 @@ export default define(class Equality extends Element {
161
161
 
162
162
  const leftTermType = leftTerm.getType(),
163
163
  rightTermType = rightTerm.getType(),
164
+ leftTermTypeBaseType = leftTermType.isBaseType(),
165
+ rightTermTypeBaseType = rightTermType.isBaseType(),
164
166
  leftTermTypeJoinedToRightTermType = leftTermType.isJoinedTo(rightTermType);
165
167
 
166
- if (leftTermTypeJoinedToRightTermType) {
168
+ if (leftTermTypeBaseType || rightTermTypeBaseType || leftTermTypeJoinedToRightTermType) {
167
169
  this.leftTerm = leftTerm;
168
170
 
169
171
  this.rightTerm = rightTerm;
@@ -6,6 +6,7 @@ import { Element, breakPointUtilities } from "occam-languages";
6
6
  import { define } from "../elements";
7
7
  import { instantiate } from "../utilities/context";
8
8
  import { instantiateType } from "../process/instantiate";
9
+ import { BASE_TYPE_SYMBOL } from "../constants";
9
10
  import { nameFromTypeNode } from "../utilities/element";
10
11
  import { baseTypeFromNothing } from "../utilities/type";
11
12
  import { propertiesFromJSON,
@@ -16,7 +17,6 @@ import { propertiesFromJSON,
16
17
  superTypesToSuperTypesJSON,
17
18
  propertiesToPropertiesJSON,
18
19
  provisionalToProvisionalJSON } from "../utilities/json";
19
- import {BASE_TYPE_SYMBOL} from "../constants";
20
20
 
21
21
  const { push, first, intersection } = arrayUtilities,
22
22
  { breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;