occam-nominal 1.0.610 → 1.0.613

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.
@@ -54,17 +54,18 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
54
54
  forward = cut(forward, back); ///
55
55
  const cotypeDeclarationString = this.getString(); ///
56
56
  context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration...`);
57
- const verifyType = this.verifyType.bind(this), verifySuperTypes = this.verifySuperTypes.bind(this), verifyTypePrefix = this.verifyTypePrefix.bind(this), verifyPropertyDeclaratisons = this.verifyPropertyDeclaratisons.bind(this);
57
+ const superTypes = [], verifyType = this.verifyType.bind(this), verifySuperTypes = this.verifySuperTypes.bind(this), verifyTypePrefix = this.verifyTypePrefix.bind(this), verifyPropertyDeclaratisons = this.verifyPropertyDeclaratisons.bind(this);
58
58
  return all([
59
59
  verifyType,
60
60
  verifySuperTypes,
61
61
  verifyTypePrefix,
62
62
  verifyPropertyDeclaratisons
63
- ], context, (context, back)=>{
63
+ ], superTypes, context, (superTypes, context, back)=>{
64
64
  const properties = this.getProperties(), typePrefix = context.getTypePrefix(), prefixName = typePrefix !== null ? typePrefix.getPrefixName() : null;
65
65
  this.type.setProvisional(this.provisional);
66
66
  this.type.setProperties(properties);
67
67
  this.type.setPrefixName(prefixName);
68
+ this.type.setSuperTypes(superTypes);
68
69
  context.addType(this.type);
69
70
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration.`);
70
71
  return forward(context, back);
@@ -76,7 +77,7 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
76
77
  return back();
77
78
  });
78
79
  });
79
- verifyType(context, forward, back) {
80
+ verifyType(superTypes, context, forward, back) {
80
81
  const typeString = this.type.getString(), cotypeDeclarationString = this.getString(); ///
81
82
  context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type...`);
82
83
  let typePresent;
@@ -92,11 +93,10 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
92
93
  context.debug(`The '${typeString}' type is already present.`);
93
94
  return back();
94
95
  }
95
- this.type.setProvisional(this.provisional);
96
96
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type`);
97
- return forward(context, back);
97
+ return forward(superTypes, context, back);
98
98
  }
99
- verifyTypePrefix(context, forward, back) {
99
+ verifyTypePrefix(superTypes, context, forward, back) {
100
100
  const typeString = this.type.getString(), cotypeDeclarationString = this.getString(); ///
101
101
  context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's prefix...`);
102
102
  const typePrefixed = this.type.isPrefixed();
@@ -105,27 +105,24 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
105
105
  return back();
106
106
  }
107
107
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's prefix.`);
108
- return forward(context, back);
108
+ return forward(superTypes, context, back);
109
109
  }
110
- verifySuperTypes(context, forward, back) {
110
+ verifySuperTypes(superTypes, context, forward, back) {
111
111
  const cotypeDeclarationString = this.getString(); ///
112
112
  context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's super-types...`);
113
113
  const superTypesLength = this.superTypes.length;
114
114
  if (superTypesLength === 0) {
115
- const baseType = (0, _type.baseTypeFromNothing)(), superTyupe = baseType; ///
116
- this.type.setSuperType(superTyupe);
117
- return forward(context, back);
115
+ const baseType = (0, _type.baseTypeFromNothing)(), superType = baseType; ///
116
+ this.superTypes.push(superType);
118
117
  }
119
- const superTypes = []; ///
120
118
  return every(this.superTypes, (superType, context, forward, back)=>{
121
- return this.verifySuperType(superType, superTypes, context, forward, back);
119
+ return this.verifySuperType(superTypes, superType, context, forward, back);
122
120
  }, context, (context, back)=>{
123
- this.type.setSuperTypes(superTypes);
124
121
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's super-types.`);
125
- return forward(context, back);
122
+ return forward(superTypes, context, back);
126
123
  }, back);
127
124
  }
128
- verifySuperType(superType, superTypes, context, forward, back) {
125
+ verifySuperType(superTypes, superType, context, forward, back) {
129
126
  const superTypeString = superType.getString(), cotypeDeclarationString = this.getString(); ///
130
127
  context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${superTypeString}' super-type...`);
131
128
  const nominalTypeName = superType.getNominalTypeName(), typeName = nominalTypeName, typeComparesToTypeName = this.type.compareTypeName(typeName);
@@ -142,7 +139,7 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
142
139
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${superTypeString}' super-type.`);
143
140
  return forward(context, back);
144
141
  }
145
- verifyPropertyDeclaratisons(context, forward, back) {
142
+ verifyPropertyDeclaratisons(superTypes, context, forward, back) {
146
143
  const typeString = this.type.getString(), cotypeDeclarationString = this.getString(); ///
147
144
  context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's property declarations...`);
148
145
  return (0, _context.isolate)((context, forward, back)=>{
@@ -155,10 +152,10 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
155
152
  }, this.type, context);
156
153
  }, context, (context, back)=>{
157
154
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's property declarations.`);
158
- return forward(context, back);
155
+ return forward(superTypes, context, back);
159
156
  }, back);
160
157
  }
161
158
  static name = "CotypeDeclaration";
162
159
  });
163
160
 
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvdHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYW50aWNpcGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIGV2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb3R5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCwgcHJvcGVydHlEZWNsYXJhdGlvbnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgICB0aGlzLnByb3BlcnR5RGVjbGFyYXRpb25zID0gcHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlEZWNsYXJhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRDb3R5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGNvdHlwZURlY2xhcmF0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnMubWFwKChwcm9wZXJ0eURlY2xhcmF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHByb3BlcnR5RGVjbGFyYXRpb24uZ2V0UHJvcGVydHkoKTtcblxuICAgICAgcmV0dXJuIHByb3BlcnR5O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5VHlwZSA9IHRoaXMudmVyaWZ5VHlwZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVN1cGVyVHlwZXMgPSB0aGlzLnZlcmlmeVN1cGVyVHlwZXMuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlUeXBlUHJlZml4ID0gdGhpcy52ZXJpZnlUeXBlUHJlZml4LmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zID0gdGhpcy52ZXJpZnlQcm9wZXJ0eURlY2xhcmF0aXNvbnMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmVyaWZ5VHlwZSxcbiAgICAgIHZlcmlmeVN1cGVyVHlwZXMsXG4gICAgICB2ZXJpZnlUeXBlUHJlZml4LFxuICAgICAgdmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zXG4gICAgXSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICAgIHR5cGVQcmVmaXggPSBjb250ZXh0LmdldFR5cGVQcmVmaXgoKSxcbiAgICAgICAgICAgIHByZWZpeE5hbWUgPSAodHlwZVByZWZpeCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVByZWZpeC5nZXRQcmVmaXhOYW1lKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKTtcblxuICAgICAgY29udGV4dC5hZGRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5VHlwZShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBsZXQgdHlwZVByZXNlbnQ7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZTtcblxuICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWUgPSB0eXBlTmFtZTsgLy8vXG5cbiAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZWApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlUeXBlUHJlZml4KGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcmVmaXguLi5gKTtcblxuICAgIGNvbnN0IHR5cGVQcmVmaXhlZCA9IHRoaXMudHlwZS5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAodHlwZVByZWZpeGVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVmaXhlZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByZWZpeC5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlcyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy4uLmApO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCksXG4gICAgICAgIHN1cGVyVHl1cGUgPSBiYXNlVHlwZTsgIC8vL1xuXG4gICAgICB0aGlzLnR5cGUuc2V0U3VwZXJUeXBlKHN1cGVyVHl1cGUpO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdXBlclR5cGVzID0gW107IC8vL1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuc3VwZXJUeXBlcywgKHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSwgc3VwZXJUeXBlcywgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlLCBzdXBlclR5cGVzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gc3VwZXJUeXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGVOYW1lID0gbm9taW5hbFR5cGVOYW1lLCAvLy9cbiAgICAgICAgICB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdGhpcy50eXBlLmNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUncyBuYW1lIGNvbXBhcmVzIHRvIHRoZSAke3R5cGVOYW1lfScgdHlwZSdzIG5hbWUuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAoc3VwZXJUeXBlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVByb3BlcnR5RGVjbGFyYXRpc29ucyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJvcGVydHkgZGVjbGFyYXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGFudGljaXBhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZXJ5KHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnMsIChwcm9wZXJ0eURlY2xhcmF0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByb3BlcnR5RGVjbGFyYXRpb24udmVyaWZ5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHRoaXMudHlwZSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJvcGVydHkgZGVjbGFyYXRpb25zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb3R5cGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImV2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ290eXBlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInR5cGUiLCJzdXBlclR5cGVzIiwicHJvdmlzaW9uYWwiLCJwcm9wZXJ0eURlY2xhcmF0aW9ucyIsImdldFR5cGUiLCJnZXRTdXBlclR5cGVzIiwiaXNQcm92aXNpb25hbCIsImdldFByb3BlcnR5RGVjbGFyYXRpb25zIiwiZ2V0Q290eXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvdHlwZURlY2xhcmF0aW9uTm9kZSIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwibWFwIiwicHJvcGVydHlEZWNsYXJhdGlvbiIsInByb3BlcnR5IiwiZ2V0UHJvcGVydHkiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImNvdHlwZURlY2xhcmF0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlUeXBlIiwiYmluZCIsInZlcmlmeVN1cGVyVHlwZXMiLCJ2ZXJpZnlUeXBlUHJlZml4IiwidmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zIiwidHlwZVByZWZpeCIsImdldFR5cGVQcmVmaXgiLCJwcmVmaXhOYW1lIiwiZ2V0UHJlZml4TmFtZSIsInNldFByb3Zpc2lvbmFsIiwic2V0UHJvcGVydGllcyIsInNldFByZWZpeE5hbWUiLCJhZGRUeXBlIiwiZGVidWciLCJleGNlcHRpb24iLCJ0eXBlU3RyaW5nIiwidHlwZVByZXNlbnQiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlUHJlZml4ZWQiLCJpc1ByZWZpeGVkIiwic3VwZXJUeXBlc0xlbmd0aCIsImxlbmd0aCIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHl1cGUiLCJzZXRTdXBlclR5cGUiLCJzdXBlclR5cGUiLCJ2ZXJpZnlTdXBlclR5cGUiLCJzZXRTdXBlclR5cGVzIiwic3VwZXJUeXBlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJwdXNoIiwiaXNvbGF0ZSIsImFudGljaXBhdGUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQUE7OztnQ0FYMkQ7b0VBRW5DOzBCQUVEO3NCQUNhO3lCQUNBOzs7Ozs7QUFFcEMsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ25DLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxLQUFL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
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvdHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYW50aWNpcGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIGV2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb3R5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCwgcHJvcGVydHlEZWNsYXJhdGlvbnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgICB0aGlzLnByb3BlcnR5RGVjbGFyYXRpb25zID0gcHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlEZWNsYXJhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRDb3R5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGNvdHlwZURlY2xhcmF0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnMubWFwKChwcm9wZXJ0eURlY2xhcmF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHByb3BlcnR5RGVjbGFyYXRpb24uZ2V0UHJvcGVydHkoKTtcblxuICAgICAgcmV0dXJuIHByb3BlcnR5O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlcyA9IFtdLFxuICAgICAgICAgIHZlcmlmeVR5cGUgPSB0aGlzLnZlcmlmeVR5cGUuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlTdXBlclR5cGVzID0gdGhpcy52ZXJpZnlTdXBlclR5cGVzLmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5VHlwZVByZWZpeCA9IHRoaXMudmVyaWZ5VHlwZVByZWZpeC5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVByb3BlcnR5RGVjbGFyYXRpc29ucyA9IHRoaXMudmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZlcmlmeVR5cGUsXG4gICAgICB2ZXJpZnlTdXBlclR5cGVzLFxuICAgICAgdmVyaWZ5VHlwZVByZWZpeCxcbiAgICAgIHZlcmlmeVByb3BlcnR5RGVjbGFyYXRpc29uc1xuICAgIF0sIHN1cGVyVHlwZXMsIGNvbnRleHQsIChzdXBlclR5cGVzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAgICAgICB0eXBlUHJlZml4ID0gY29udGV4dC5nZXRUeXBlUHJlZml4KCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gKHR5cGVQcmVmaXggIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVQcmVmaXguZ2V0UHJlZml4TmFtZSgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgICAgdGhpcy50eXBlLnNldFByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcblxuICAgICAgdGhpcy50eXBlLnNldFByZWZpeE5hbWUocHJlZml4TmFtZSk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gICAgICBjb250ZXh0LmFkZFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlUeXBlKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGxldCB0eXBlUHJlc2VudDtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlO1xuXG4gICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHR5cGVOYW1lOyAvLy9cblxuICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdXBlclR5cGVzLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVR5cGVQcmVmaXgoc3VwZXJUeXBlcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByZWZpeC4uLmApO1xuXG4gICAgY29uc3QgdHlwZVByZWZpeGVkID0gdGhpcy50eXBlLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmICh0eXBlUHJlZml4ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZWZpeGVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3VwZXJUeXBlcywgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGVzKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLi4uYCk7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGJhc2VUeXBlOyAgLy8vXG5cbiAgICAgIHRoaXMuc3VwZXJUeXBlcy5wdXNoKHN1cGVyVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuc3VwZXJUeXBlcywgKHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZXMsIHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdXBlclR5cGVzLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGVzLCBzdXBlclR5cGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZU5hbWUgPSBub21pbmFsVHlwZU5hbWUsIC8vL1xuICAgICAgICAgIHR5cGVDb21wYXJlc1RvVHlwZU5hbWUgPSB0aGlzLnR5cGUuY29tcGFyZVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlQ29tcGFyZXNUb1R5cGVOYW1lKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSdzIG5hbWUgY29tcGFyZXMgdG8gdGhlICR7dHlwZU5hbWV9JyB0eXBlJ3MgbmFtZS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBzdXBlclR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgIGlmIChzdXBlclR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHN1cGVyVHlwZXMucHVzaChzdXBlclR5cGUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gYW50aWNpcGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICByZXR1cm4gZXZlcnkodGhpcy5wcm9wZXJ0eURlY2xhcmF0aW9ucywgKHByb3BlcnR5RGVjbGFyYXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gcHJvcGVydHlEZWNsYXJhdGlvbi52ZXJpZnkoY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgdGhpcy50eXBlLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN1cGVyVHlwZXMsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvdHlwZURlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiZXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJDb3R5cGVEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidHlwZSIsInN1cGVyVHlwZXMiLCJwcm92aXNpb25hbCIsInByb3BlcnR5RGVjbGFyYXRpb25zIiwiZ2V0VHlwZSIsImdldFN1cGVyVHlwZXMiLCJpc1Byb3Zpc2lvbmFsIiwiZ2V0UHJvcGVydHlEZWNsYXJhdGlvbnMiLCJnZXRDb3R5cGVEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwiY290eXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0UHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJtYXAiLCJwcm9wZXJ0eURlY2xhcmF0aW9uIiwicHJvcGVydHkiLCJnZXRQcm9wZXJ0eSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwiY290eXBlRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVR5cGUiLCJiaW5kIiwidmVyaWZ5U3VwZXJUeXBlcyIsInZlcmlmeVR5cGVQcmVmaXgiLCJ2ZXJpZnlQcm9wZXJ0eURlY2xhcmF0aXNvbnMiLCJ0eXBlUHJlZml4IiwiZ2V0VHlwZVByZWZpeCIsInByZWZpeE5hbWUiLCJnZXRQcmVmaXhOYW1lIiwic2V0UHJvdmlzaW9uYWwiLCJzZXRQcm9wZXJ0aWVzIiwic2V0UHJlZml4TmFtZSIsInNldFN1cGVyVHlwZXMiLCJhZGRUeXBlIiwiZGVidWciLCJleGNlcHRpb24iLCJ0eXBlU3RyaW5nIiwidHlwZVByZXNlbnQiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlUHJlZml4ZWQiLCJpc1ByZWZpeGVkIiwic3VwZXJUeXBlc0xlbmd0aCIsImxlbmd0aCIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHlwZSIsInB1c2giLCJ2ZXJpZnlTdXBlclR5cGUiLCJzdXBlclR5cGVTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb1R5cGVOYW1lIiwiY29tcGFyZVR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsImlzb2xhdGUiLCJhbnRpY2lwYXRlIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWDJEO29FQUVuQzswQkFFRDtzQkFDYTt5QkFDQTs7Ozs7O0FBRXBDLE1BQU0sRUFBRUEsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQixFQUNuQyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxFQUFF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
@@ -46,16 +46,17 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
46
46
  forward = cut(forward, back); ///
47
47
  const typeDeclarationString = this.getString(); ///
48
48
  context.trace(`Verifying the '${typeDeclarationString}' type declaration...`);
49
- const verifyType = this.verifyType.bind(this), verifySuperTypes = this.verifySuperTypes.bind(this), verifyTypePrefix = this.verifyTypePrefix.bind(this);
49
+ const superTypes = [], verifyType = this.verifyType.bind(this), verifySuperTypes = this.verifySuperTypes.bind(this), verifyTypePrefix = this.verifyTypePrefix.bind(this);
50
50
  return all([
51
51
  verifyType,
52
52
  verifySuperTypes,
53
53
  verifyTypePrefix
54
- ], context, (context, back)=>{
54
+ ], superTypes, context, (superTypes, context, back)=>{
55
55
  const properties = this.getProperties(), typePrefix = context.getTypePrefix(), prefixName = typePrefix !== null ? typePrefix.getPrefixName() : null;
56
56
  this.type.setProvisional(this.provisional);
57
57
  this.type.setProperties(properties);
58
58
  this.type.setPrefixName(prefixName);
59
+ this.type.setSuperTypes(superTypes);
59
60
  context.addType(this.type);
60
61
  context.debug(`...verified the '${typeDeclarationString}' type declaration.`);
61
62
  return forward(context, back);
@@ -67,7 +68,7 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
67
68
  return back();
68
69
  });
69
70
  });
70
- verifyType(context, forward, back) {
71
+ verifyType(superTypes, context, forward, back) {
71
72
  const typeString = this.type.getString(), typeDeclarationString = this.getString(); ///
72
73
  context.trace(`Verifying the '${typeDeclarationString}' type declaration's '${typeString}' type...`);
73
74
  let typePresent;
@@ -83,11 +84,10 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
83
84
  context.debug(`The '${typeString}' type is already present.`);
84
85
  return back();
85
86
  }
86
- this.type.setProvisional(this.provisional);
87
87
  context.debug(`...verified the '${typeDeclarationString}' type declaration's '${typeString}' type`);
88
- return forward(context, back);
88
+ return forward(superTypes, context, back);
89
89
  }
90
- verifyTypePrefix(context, forward, back) {
90
+ verifyTypePrefix(superTypes, context, forward, back) {
91
91
  const typeString = this.type.getString(), typeDeclarationString = this.getString(); ///
92
92
  context.trace(`Verifying the '${typeDeclarationString}' type declaration's '${typeString}' type's prefix...`);
93
93
  const typePrefixed = this.type.isPrefixed();
@@ -96,27 +96,24 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
96
96
  return back();
97
97
  }
98
98
  context.debug(`...verified the '${typeDeclarationString}' type declaration's '${typeString}' type's prefix.`);
99
- return forward(context, back);
99
+ return forward(superTypes, context, back);
100
100
  }
101
- verifySuperTypes(context, forward, back) {
101
+ verifySuperTypes(superTypes, context, forward, back) {
102
102
  const typeDeclarationString = this.getString(); ///
103
103
  context.trace(`Verifying the '${typeDeclarationString}' type declaration's super-types...`);
104
104
  const superTypesLength = this.superTypes.length;
105
105
  if (superTypesLength === 0) {
106
- const baseType = (0, _type.baseTypeFromNothing)(), superTyupe = baseType; ///
107
- this.type.setSuperType(superTyupe);
108
- return forward(context, back);
106
+ const baseType = (0, _type.baseTypeFromNothing)(), superType = baseType; ///
107
+ this.superTypes.push(superType);
109
108
  }
110
- const superTypes = []; ///
111
109
  return every(this.superTypes, (superType, context, forward, back)=>{
112
- return this.verifySuperType(superType, superTypes, context, forward, back);
110
+ return this.verifySuperType(superTypes, superType, context, forward, back);
113
111
  }, context, (context, back)=>{
114
- this.type.setSuperTypes(superTypes);
115
112
  context.debug(`...verified the '${typeDeclarationString}' type declaration's super-types.`);
116
- return forward(context, back);
113
+ return forward(superTypes, context, back);
117
114
  }, back);
118
115
  }
119
- verifySuperType(superType, superTypes, context, forward, back) {
116
+ verifySuperType(superTypes, superType, context, forward, back) {
120
117
  const superTypeString = superType.getString(), typeDeclarationString = this.getString(); ///
121
118
  context.trace(`Verifying the '${typeDeclarationString}' type declaration's '${superTypeString}' super-type...`);
122
119
  const nominalTypeName = superType.getNominalTypeName(), typeName = nominalTypeName, typeComparesToTypeName = this.type.compareTypeName(typeName);
@@ -136,4 +133,4 @@ const _default = (0, _elements.define)(class TypeDeclaration extends _declaratio
136
133
  static name = "TypeDeclaration";
137
134
  });
138
135
 
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBldmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHN1cGVyVHlwZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0dHlwZURlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbXTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmeVR5cGUgPSB0aGlzLnZlcmlmeVR5cGUuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlTdXBlclR5cGVzID0gdGhpcy52ZXJpZnlTdXBlclR5cGVzLmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5VHlwZVByZWZpeCA9IHRoaXMudmVyaWZ5VHlwZVByZWZpeC5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2ZXJpZnlUeXBlLFxuICAgICAgdmVyaWZ5U3VwZXJUeXBlcyxcbiAgICAgIHZlcmlmeVR5cGVQcmVmaXhcbiAgICBdLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpLFxuICAgICAgICAgICAgdHlwZVByZWZpeCA9IGNvbnRleHQuZ2V0VHlwZVByZWZpeCgpLFxuICAgICAgICAgICAgcHJlZml4TmFtZSA9ICh0eXBlUHJlZml4ICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlUHJlZml4LmdldFByZWZpeE5hbWUoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcm92aXNpb25hbCh0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgICAgdGhpcy50eXBlLnNldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcmVmaXhOYW1lKHByZWZpeE5hbWUpO1xuXG4gICAgICBjb250ZXh0LmFkZFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5VHlwZShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBsZXQgdHlwZVByZXNlbnQ7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgaW5jbHVkZVJlbGVhc2UgPSBmYWxzZTtcblxuICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWUgPSB0eXBlTmFtZTsgLy8vXG5cbiAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVR5cGVQcmVmaXgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByZWZpeC4uLmApO1xuXG4gICAgY29uc3QgdHlwZVByZWZpeGVkID0gdGhpcy50eXBlLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmICh0eXBlUHJlZml4ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlZml4ZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByZWZpeC5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlcyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy4uLmApO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgICBzdXBlclR5dXBlID0gYmFzZVR5cGU7ICAvLy9cblxuICAgICAgdGhpcy50eXBlLnNldFN1cGVyVHlwZShzdXBlclR5dXBlKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3VwZXJUeXBlcyA9IFtdOyAvLy9cblxuICAgIHJldHVybiBldmVyeSh0aGlzLnN1cGVyVHlwZXMsIChzdXBlclR5cGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGUsIHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnR5cGUuc2V0U3VwZXJUeXBlcyhzdXBlclR5cGVzKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlLCBzdXBlclR5cGVzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gc3VwZXJUeXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGVOYW1lID0gbm9taW5hbFR5cGVOYW1lLCAvLy9cbiAgICAgICAgICB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdGhpcy50eXBlLmNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUncyBuYW1lIGNvbXBhcmVzIHRvIHRoZSAke3R5cGVOYW1lfScgdHlwZSdzIG5hbWUuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAoc3VwZXJUeXBlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlR5cGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImV2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZURlY2xhcmF0aW9uIiwiRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0eXBlIiwic3VwZXJUeXBlcyIsInByb3Zpc2lvbmFsIiwiZ2V0VHlwZSIsImdldFN1cGVyVHlwZXMiLCJpc1Byb3Zpc2lvbmFsIiwiZ2V0dHlwZURlY2xhcmF0aW9uTm9kZSIsImdldE5vZGUiLCJ0eXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0UHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInR5cGVEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5VHlwZSIsImJpbmQiLCJ2ZXJpZnlTdXBlclR5cGVzIiwidmVyaWZ5VHlwZVByZWZpeCIsInR5cGVQcmVmaXgiLCJnZXRUeXBlUHJlZml4IiwicHJlZml4TmFtZSIsImdldFByZWZpeE5hbWUiLCJzZXRQcm92aXNpb25hbCIsInNldFByb3BlcnRpZXMiLCJzZXRQcmVmaXhOYW1lIiwiYWRkVHlwZSIsImRlYnVnIiwiZXhjZXB0aW9uIiwidHlwZVN0cmluZyIsInR5cGVQcmVzZW50IiwidHlwZU5hbWUiLCJnZXROYW1lIiwiaW5jbHVkZVJlbGVhc2UiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwidHlwZVByZWZpeGVkIiwiaXNQcmVmaXhlZCIsInN1cGVyVHlwZXNMZW5ndGgiLCJsZW5ndGgiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzdXBlclR5dXBlIiwic2V0U3VwZXJUeXBlIiwic3VwZXJUeXBlIiwidmVyaWZ5U3VwZXJUeXBlIiwic2V0U3VwZXJUeXBlcyIsInN1cGVyVHlwZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVDb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwicHVzaCIs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
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBldmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHN1cGVyVHlwZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0dHlwZURlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbXTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHN1cGVyVHlwZXMgPSBbXSxcbiAgICAgICAgICB2ZXJpZnlUeXBlID0gdGhpcy52ZXJpZnlUeXBlLmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5U3VwZXJUeXBlcyA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlcy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVR5cGVQcmVmaXggPSB0aGlzLnZlcmlmeVR5cGVQcmVmaXguYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmVyaWZ5VHlwZSxcbiAgICAgIHZlcmlmeVN1cGVyVHlwZXMsXG4gICAgICB2ZXJpZnlUeXBlUHJlZml4XG4gICAgXSwgc3VwZXJUeXBlcywgY29udGV4dCwgKHN1cGVyVHlwZXMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICAgIHR5cGVQcmVmaXggPSBjb250ZXh0LmdldFR5cGVQcmVmaXgoKSxcbiAgICAgICAgICAgIHByZWZpeE5hbWUgPSAodHlwZVByZWZpeCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVByZWZpeC5nZXRQcmVmaXhOYW1lKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKTtcblxuICAgICAgdGhpcy50eXBlLnNldFN1cGVyVHlwZXMoc3VwZXJUeXBlcyk7XG5cbiAgICAgIGNvbnRleHQuYWRkVHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlUeXBlKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGxldCB0eXBlUHJlc2VudDtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlO1xuXG4gICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHR5cGVOYW1lOyAvLy9cblxuICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGVgKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN1cGVyVHlwZXMsIGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5VHlwZVByZWZpeChzdXBlclR5cGVzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4Li4uYCk7XG5cbiAgICBjb25zdCB0eXBlUHJlZml4ZWQgPSB0aGlzLnR5cGUuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHR5cGVQcmVmaXhlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIHR5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVmaXhlZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3VwZXJUeXBlcywgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGVzKHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLi4uYCk7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGJhc2VUeXBlOyAgLy8vXG5cbiAgICAgIHRoaXMuc3VwZXJUeXBlcy5wdXNoKHN1cGVyVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuc3VwZXJUeXBlcywgKHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZXMsIHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlRGVjbGFyYXRpb25TdHJpbmd9JyB0eXBlIGRlY2xhcmF0aW9uJ3Mgc3VwZXItdHlwZXMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN1cGVyVHlwZXMsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZXMsIHN1cGVyVHlwZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cGVyVHlwZVN0cmluZyA9IHN1cGVyVHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5vbWluYWxUeXBlTmFtZSwgLy8vXG4gICAgICAgICAgdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSA9IHRoaXMudHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVDb21wYXJlc1RvVHlwZU5hbWUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlJ3MgbmFtZSBjb21wYXJlcyB0byB0aGUgJHt0eXBlTmFtZX0nIHR5cGUncyBuYW1lLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHN1cGVyVHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHN1cGVyVHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgc3VwZXJUeXBlcy5wdXNoKHN1cGVyVHlwZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZURlY2xhcmF0aW9uU3RyaW5nfScgdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlR5cGVEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidHlwZSIsInN1cGVyVHlwZXMiLCJwcm92aXNpb25hbCIsImdldFR5cGUiLCJnZXRTdXBlclR5cGVzIiwiaXNQcm92aXNpb25hbCIsImdldHR5cGVEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwidHlwZURlY2xhcmF0aW9uTm9kZSIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJ0eXBlRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVR5cGUiLCJiaW5kIiwidmVyaWZ5U3VwZXJUeXBlcyIsInZlcmlmeVR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4IiwiZ2V0VHlwZVByZWZpeCIsInByZWZpeE5hbWUiLCJnZXRQcmVmaXhOYW1lIiwic2V0UHJvdmlzaW9uYWwiLCJzZXRQcm9wZXJ0aWVzIiwic2V0UHJlZml4TmFtZSIsInNldFN1cGVyVHlwZXMiLCJhZGRUeXBlIiwiZGVidWciLCJleGNlcHRpb24iLCJ0eXBlU3RyaW5nIiwidHlwZVByZXNlbnQiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlUHJlZml4ZWQiLCJpc1ByZWZpeGVkIiwic3VwZXJUeXBlc0xlbmd0aCIsImxlbmd0aCIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHlwZSIsInB1c2giLCJ2ZXJpZnlTdXBlclR5cGUiLCJzdXBlclR5cGVTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb1R5cGVOYW1lIiwiY29tcGFyZVR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlB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
@@ -48,19 +48,8 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
48
48
  });
49
49
  return properties;
50
50
  }
51
- isProvisional(includeSuperTypes = true) {
52
- let provisional = this.provisional;
53
- if (includeSuperTypes) {
54
- if (!provisional) {
55
- provisional = this.superTypes.some((superType)=>{
56
- const superTypeProvisional = superType.isProvisional();
57
- if (superTypeProvisional) {
58
- return true;
59
- }
60
- });
61
- }
62
- }
63
- return provisional;
51
+ isProvisional() {
52
+ return this.provisional;
64
53
  }
65
54
  setName(name) {
66
55
  this.name = name;
@@ -89,8 +78,8 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
89
78
  }
90
79
  return baseType;
91
80
  }
92
- isEstablished(includeSuperTypes = true) {
93
- const provisional = this.isProvisional(includeSuperTypes), established = !provisional;
81
+ isEstablished() {
82
+ const provisional = this.isProvisional(), established = !provisional;
94
83
  return established;
95
84
  }
96
85
  retrieveAncestorTypes(ancestorTypes = []) {
@@ -203,12 +192,8 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
203
192
  const nameTypeName = this.name === typeName, comparesToTypeName = nameTypeName; ///
204
193
  return comparesToTypeName;
205
194
  }
206
- compareProvisional(provisional, includeSupertypes = true) {
207
- let comparesToProvisional;
208
- const provisionalA = provisional; ///
209
- provisional = this.isProvisional(includeSupertypes);
210
- const provisionalB = provisional; ///
211
- comparesToProvisional = provisionalA === provisionalB;
195
+ compareProvisional(provisional) {
196
+ const comparesToProvisional = provisional === this.provisional;
212
197
  return comparesToProvisional;
213
198
  }
214
199
  compareNominalTypeName(nominalTypeName) {
@@ -272,4 +257,4 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
272
257
  }
273
258
  });
274
259
 
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IEJBU0VfVFlQRV9TWU1CT0wgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBuYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBwcm9wZXJ0aWVzRnJvbUpTT04sXG4gICAgICAgICBwcmVmaXhOYW1lRnJvbUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzRnJvbUpTT04sXG4gICAgICAgICBwcm92aXNpb25hbEZyb21KU09OLFxuICAgICAgICAgcHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTixcbiAgICAgICAgIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OLFxuICAgICAgICAgcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHB1c2gsIGZpcnN0LCBpbnRlcnNlY3Rpb24gfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0UHJlZml4TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhOYW1lO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgZ2V0VHlwZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHR5cGVOb2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzID0gW10pIHtcbiAgICBwdXNoKHByb3BlcnRpZXMsIHRoaXMucHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKTtcblxuICAgICAgcHVzaChwcm9wZXJ0aWVzLCBzdXBlclR5cGVQcm9wZXJ0aWVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbChpbmNsdWRlU3VwZXJUeXBlcyA9IHRydWUpIHtcbiAgICBsZXQgcHJvdmlzaW9uYWwgPSB0aGlzLnByb3Zpc2lvbmFsO1xuXG4gICAgaWYgKGluY2x1ZGVTdXBlclR5cGVzKSB7XG4gICAgICBpZiAoIXByb3Zpc2lvbmFsKSB7XG4gICAgICAgIHByb3Zpc2lvbmFsID0gdGhpcy5zdXBlclR5cGVzLnNvbWUoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1cGVyVHlwZVByb3Zpc2lvbmFsID0gc3VwZXJUeXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgICAgIGlmIChzdXBlclR5cGVQcm92aXNpb25hbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBzZXROYW1lKG5hbWUpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKSB7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgfVxuXG4gIHNldFN1cGVyVHlwZXMoc3VwZXJUeXBlcykge1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBzZXRTdXBlclR5cGUoc3VwZXJUeXBlKSB7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gW1xuICAgICAgc3VwZXJUeXBlXG4gICAgXTtcbiAgfVxuXG4gIGlzQmFzZVR5cGUoKSB7XG4gICAgbGV0IGJhc2VUeXBlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBCQVNFX1RZUEVfU1lNQk9MKSB7XG4gICAgICBiYXNlVHlwZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VUeXBlO1xuICB9XG5cbiAgaXNFc3RhYmxpc2hlZChpbmNsdWRlU3VwZXJUeXBlcyA9IHRydWUpIHtcbiAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMuaXNQcm92aXNpb25hbChpbmNsdWRlU3VwZXJUeXBlcyksXG4gICAgICAgICAgZXN0YWJsaXNoZWQgPSAhcHJvdmlzaW9uYWw7XG5cbiAgICByZXR1cm4gZXN0YWJsaXNoZWQ7XG4gIH1cblxuICByZXRyaWV2ZUFuY2VzdG9yVHlwZXMoYW5jZXN0b3JUeXBlcyA9IFtdKSB7XG4gICAgY29uc3QgYmFzZVR5cGUgPSB0aGlzLmlzQmFzZVR5cGUoKTtcblxuICAgIGlmICghYmFzZVR5cGUpIHtcbiAgICAgIGNvbnN0IGFuY2VzdG9yVHlwZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgIGFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlID0gYW5jZXN0b3JUeXBlcy5pbmNsdWRlcyhhbmNlc3RvclR5cGUpO1xuXG4gICAgICBpZiAoIWFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlKSB7XG4gICAgICAgIGFuY2VzdG9yVHlwZXMucHVzaChhbmNlc3RvclR5cGUpO1xuXG4gICAgICAgIHRoaXMuc3VwZXJUeXBlcy5mb3JFYWNoKChzdXBlclR5cGUpID0+IHtcbiAgICAgICAgICBzdXBlclR5cGUucmV0cmlldmVBbmNlc3RvclR5cGVzKGFuY2VzdG9yVHlwZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JUeXBlcztcbiAgfVxuXG4gIGlzQ290eXBlKCkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICBwcm9wZXJ0aWVzTGVuZ3RoID0gcHJvcGVydGllcy5sZW5ndGgsXG4gICAgICAgICAgY290eXBlID0gKHByb3BlcnRpZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBjb3R5cGU7XG4gIH1cblxuICBpc1ByZWZpeGVkKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gKHRoaXMucHJlZml4TmFtZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcHJlZml4ZWQ7XG4gIH1cblxuICBnZXRQcmVmaXhlZE5hbWUoKSB7XG4gICAgbGV0IHByZWZpeGVkTmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBwcmVmaXhlZE5hbWUgPSBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4ZWROYW1lO1xuICB9XG5cbiAgZ2V0Tm9taW5hbFR5cGVOYW1lKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCksXG4gICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gcHJlZml4ZWQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZTtcblxuICAgIHJldHVybiBub21pbmFsVHlwZU5hbWU7XG4gIH1cblxuICBpc0Jhc2ljKCkge1xuICAgIGxldCBiYXNpYyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RTdXBlclR5cGUgPSBmaXJzdCh0aGlzLnN1cGVyVHlwZXMpLFxuICAgICAgICAgICAgc3VwZXJUeXBlID0gZmlyc3RTdXBlclR5cGUsIC8vL1xuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmIChzdXBlclR5cGUgPT09IGJhc2VUeXBlKSB7XG4gICAgICAgIGJhc2ljID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYmFzaWM7XG4gIH1cblxuICBpc1JlZmluZWQoKSB7XG4gICAgbGV0IHJlZmluZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cGVyVHlwZXNMZW5ndGggPSB0aGlzLnN1cGVyVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cGVyVHlwZXNMZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZpcnN0U3VwZXJUeXBlID0gZmlyc3QodGhpcy5zdXBlclR5cGVzKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGZpcnN0U3VwZXJUeXBlLCAvLy9cbiAgICAgICAgICAgIHN1cGVyVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlTmFtZSA9PT0gdGhpcy5uYW1lKSB7XG4gICAgICAgIHJlZmluZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWZpbmVkO1xuICB9XG5cbiAgaXNKb2luZWRUbyh0eXBlKSB7XG4gICAgbGV0IGpvaW5lZFRvID0gZmFsc2U7XG5cbiAgICBjb25zdCBhbmNlc3RvclR5cGVzID0gdGhpcy5yZXRyaWV2ZUFuY2VzdG9yVHlwZXMoKSxcbiAgICAgICAgICB0eXBlQW5jZXN0b3JUeXBlcyA9IHR5cGUucmV0cmlldmVBbmNlc3RvclR5cGVzKCksXG4gICAgICAgICAgaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcyA9IGludGVyc2VjdGlvbihhbmNlc3RvclR5cGVzLCB0eXBlQW5jZXN0b3JUeXBlcywgKGFuY2VzdG9yVHlwZSwgdHlwZUFuY2VzdG9yVHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUgPSBhbmNlc3RvclR5cGUuaXNFcXVhbFRvKHR5cGVBbmNlc3RvclR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCA9IGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXNMZW5ndGggPiAwKSB7XG4gICAgICBqb2luZWRUbyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpvaW5lZFRvO1xuICB9XG5cbiAgaXNFcXVhbFRvKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gKHRoaXMgPT09IHR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc1N1YlR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1YlR5cGVPZjtcblxuICAgIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgaWYgKHRoaXMgPT09IGJhc2VUeXBlKSB7XG4gICAgICBzdWJUeXBlT2YgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3ViVHlwZU9mID0gdGhpcy5zdXBlclR5cGVzLnNvbWUoKHN1cGVyVHlwZSkgPT4geyAvLy9cbiAgICAgICAgaWYgKHN1cGVyVHlwZSA9PT0gdHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSA9IHN1cGVyVHlwZS5pc1N1YlR5cGVPZih0eXBlKTtcblxuICAgICAgICBpZiAoc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBzdWJUeXBlT2Y7XG4gIH1cblxuICBpc1N1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBzdWJUeXBlT2YgPSB0eXBlLmlzU3ViVHlwZU9mKHRoaXMpLFxuICAgICAgICAgIHN1cGVyVHlwZU9mID0gc3ViVHlwZU9mOyAgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3ViVHlwZU9mID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvT3JTdWJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9PclN1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3VwZXJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdXBlclR5cGVPZik7XG5cbiAgICByZXR1cm4gZXF1YWxUb09yU3VwZXJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mIHx8IHN1cGVyVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2Y7XG4gIH1cblxuICBjb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpIHtcbiAgICBjb25zdCBuYW1lVHlwZU5hbWUgPSAodGhpcy5uYW1lID09PSB0eXBlTmFtZSksXG4gICAgICAgICAgY29tcGFyZXNUb1R5cGVOYW1lID0gbmFtZVR5cGVOYW1lOyAgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1R5cGVOYW1lO1xuICB9XG5cbiAgY29tcGFyZVByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsLCBpbmNsdWRlU3VwZXJ0eXBlcyA9IHRydWUpIHtcbiAgICBsZXQgY29tcGFyZXNUb1Byb3Zpc2lvbmFsO1xuXG4gICAgY29uc3QgcHJvdmlzaW9uYWxBID0gcHJvdmlzaW9uYWw7IC8vL1xuXG4gICAgcHJvdmlzaW9uYWwgPSB0aGlzLmlzUHJvdmlzaW9uYWwoaW5jbHVkZVN1cGVydHlwZXMpO1xuXG4gICAgY29uc3QgcHJvdmlzaW9uYWxCID0gcHJvdmlzaW9uYWw7IC8vL1xuXG4gICAgY29tcGFyZXNUb1Byb3Zpc2lvbmFsID0gKHByb3Zpc2lvbmFsQSA9PT0gcHJvdmlzaW9uYWxCKTtcblxuICAgIHJldHVybiBjb21wYXJlc1RvUHJvdmlzaW9uYWw7XG4gIH1cblxuICBjb21wYXJlTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICAgIGxldCBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gZmFsc2U7XG5cbiAgICBjb25zdCBuYW1lTm9taW5hbFR5cGVOYW1lID0gKHRoaXMubmFtZSA9PT0gbm9taW5hbFR5cGVOYW1lKTtcblxuICAgIGlmIChuYW1lTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKTtcblxuICAgICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZ2V0UHJlZml4ZWROYW1lKCksXG4gICAgICAgICAgICAgIHByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSA9IChwcmVmaXhlZE5hbWUgPT09IG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWU7XG4gIH1cblxuICBjb21wYXJlUHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lID0gZmFsc2U7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBjb25zdCBwcmVmaXhlZE5hbWUgPSB0aGlzLmdldFByZWZpeGVkTmFtZSgpLFxuICAgICAgICAgICAgcHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSA9IChwcmVmaXhlZFR5cGVOYW1lID09PSBwcmVmaXhlZE5hbWUpO1xuXG4gICAgICBpZiAocHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSkge1xuICAgICAgICBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lO1xuICB9XG5cbiAgdG9KU09OKGFicmlkZ2VkID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICBpZiAoIWFicmlkZ2VkKSB7XG4gICAgICBjb25zdCBwcmVmaXhOYW1lSlNPTiA9IHByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OKHRoaXMucHJlZml4TmFtZSksXG4gICAgICAgICAgICBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgICBwcm92aXNpbm9hbEpTT00gPSBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHRoaXMucHJvdmlzaW9uYWwpLFxuICAgICAgICAgICAgcHJlZml4TmFtZSA9IHByZWZpeE5hbWVKU09OLCAgLy8vXG4gICAgICAgICAgICBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04sICAvLy9cbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTiwgIC8vL1xuICAgICAgICAgICAgcHJvdmlzaW9uYWwgPSBwcm92aXNpbm9hbEpTT007ICAvLy9cblxuICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCB7XG4gICAgICAgIHByZWZpeE5hbWUsXG4gICAgICAgIHN1cGVyVHlwZXMsXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIHByb3Zpc2lvbmFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHR5cGVOb2RlID0gaW5zdGFudGlhdGVUeXBlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICBuYW1lID0gbmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbik7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsOyAvLy9cblxuICAgICAgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgcHJlZml4TmFtZSwgc3VwZXJUeXBlcywgcHJvcGVydGllcywgcHJvdmlzaW9uYWwpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWUobmFtZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0cmluZyA9IG5hbWUsICAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICBwcmVmaXhOYW1lID0gbnVsbCxcbiAgICAgICAgICBzdXBlclR5cGVzID0gW10sXG4gICAgICAgICAgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHByb3Zpc2lvbmFsID0gZmFsc2U7XG5cbiAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJwdXNoIiwiZmlyc3QiLCJpbnRlcnNlY3Rpb24iLCJhcnJheVV0aWxpdGllcyIsImRlZmluZSIsIlR5cGUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibmFtZSIsInByZWZpeE5hbWUiLCJzdXBlclR5cGVzIiwicHJvcGVydGllcyIsInByb3Zpc2lvbmFsIiwiZ2V0TmFtZSIsImdldFByZWZpeE5hbWUiLCJnZXRTdXBlclR5cGVzIiwiZ2V0VHlwZU5vZGUiLCJnZXROb2RlIiwidHlwZU5vZGUiLCJnZXRQcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVByb3BlcnRpZXMiLCJpc1Byb3Zpc2lvbmFsIiwiaW5jbHVkZVN1cGVyVHlwZXMiLCJzb21lIiwic3VwZXJUeXBlUHJvdmlzaW9uYWwiLCJzZXROYW1lIiwic2V0UHJlZml4TmFtZSIsInNldFN1cGVyVHlwZXMiLCJzZXRQcm9wZXJ0aWVzIiwic2V0UHJvdmlzaW9uYWwiLCJzZXRTdXBlclR5cGUiLCJpc0Jhc2VUeXBlIiwiYmFzZVR5cGUiLCJCQVNFX1RZUEVfU1lNQk9MIiwiaXNFc3RhYmxpc2hlZCIsImVzdGFibGlzaGVkIiwicmV0cmlldmVBbmNlc3RvclR5cGVzIiwiYW5jZXN0b3JUeXBlcyIsImFuY2VzdG9yVHlwZSIsImFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlIiwiaW5jbHVkZXMiLCJpc0NvdHlwZSIsInByb3BlcnRpZXNMZW5ndGgiLCJsZW5ndGgiLCJjb3R5cGUiLCJpc1ByZWZpeGVkIiwicHJlZml4ZWQiLCJnZXRQcmVmaXhlZE5hbWUiLCJwcmVmaXhlZE5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJpc0Jhc2ljIiwiYmFzaWMiLCJzdXBlclR5cGVzTGVuZ3RoIiwiZmlyc3RTdXBlclR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwiaXNSZWZpbmVkIiwicmVmaW5lZCIsInN1cGVyVHlwZU5hbWUiLCJpc0pvaW5lZFRvIiwidHlwZSIsImpvaW5lZFRvIiwidHlwZUFuY2VzdG9yVHlwZXMiLCJpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzIiwidHlwZUFuY2VzdG9yVHlwZSIsImFuY2VzdG9yVHlwZUVxdWFsVG9BVHlwZW5jZXN0b3JUeXBlIiwiaXNFcXVhbFRvIiwiaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCIsImVxdWFsVG8iLCJpc1N1YlR5cGVPZiIsInN1YlR5cGVPZiIsInN1cGVyVHlwZVN1YlR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwic3VwZXJUeXBlT2YiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsImVxdWFsVG9PclN1YlR5cGVPZiIsImlzRXF1YWxUb09yU3VwZXJUeXBlT2YiLCJlcXVhbFRvT3JTdXBlclR5cGVPZiIsImlzRXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mIiwiZXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mIiwiY29tcGFyZVR5cGVOYW1lIiwidHlwZU5hbWUiLCJuYW1lVHlwZU5hbWUiLCJjb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlUHJvdmlzaW9uYWwiLCJpbmNsdWRlU3VwZXJ0eXBlcyIsImNvbXBhcmVzVG9Qcm92aXNpb25hbCIsInByb3Zpc2lvbmFsQSIsInByb3Zpc2lvbmFsQiIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lIiwibmFtZU5vbWluYWxUeXBlTmFtZSIsInByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSIsInRvSlNPTiIsImFicmlkZ2VkIiwiZ2V0U3RyaW5nIiwianNvbiIsInByZWZpeE5hbWVKU09OIiwicHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04iLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3Zpc2lub2FsSlNPTSIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJPYmplY3QiLCJhc3NpZ24iLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlIiwibmFtZUZyb21UeXBlTm9kZSIsInByZWZpeE5hbWVGcm9tSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInByb3BlcnRpZXNGcm9tSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJmcm9tTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBc0JBOzs7ZUFBQTs7O2dDQXBCd0I7MkJBQ087MEJBRVI7eUJBQ0s7NkJBQ0k7MkJBQ0M7eUJBQ0E7c0JBQ0c7c0JBUVM7QUFFN0MsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFLEdBQUdDLHlCQUFjO01BRXBELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsdUJBQU87SUFDOUMsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsQ0FBRTtRQUNwRyxLQUFLLENBQUNSLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtJQUNyQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNMLElBQUk7SUFDbEI7SUFFQU0sZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNMLFVBQVU7SUFDeEI7SUFFQU0sZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNMLFVBQVU7SUFDeEI7SUFF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
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IEJBU0VfVFlQRV9TWU1CT0wgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBuYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBwcm9wZXJ0aWVzRnJvbUpTT04sXG4gICAgICAgICBwcmVmaXhOYW1lRnJvbUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzRnJvbUpTT04sXG4gICAgICAgICBwcm92aXNpb25hbEZyb21KU09OLFxuICAgICAgICAgcHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTixcbiAgICAgICAgIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OLFxuICAgICAgICAgcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHB1c2gsIGZpcnN0LCBpbnRlcnNlY3Rpb24gfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0UHJlZml4TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhOYW1lO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgZ2V0VHlwZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHR5cGVOb2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzID0gW10pIHtcbiAgICBwdXNoKHByb3BlcnRpZXMsIHRoaXMucHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKTtcblxuICAgICAgcHVzaChwcm9wZXJ0aWVzLCBzdXBlclR5cGVQcm9wZXJ0aWVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBzZXRQcmVmaXhOYW1lKHByZWZpeE5hbWUpIHtcbiAgICB0aGlzLnByZWZpeE5hbWUgPSBwcmVmaXhOYW1lO1xuICB9XG5cbiAgc2V0U3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMocHJvcGVydGllcykge1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICBzZXRQcm92aXNpb25hbChwcm92aXNpb25hbCkge1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIHNldFN1cGVyVHlwZShzdXBlclR5cGUpIHtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBbXG4gICAgICBzdXBlclR5cGVcbiAgICBdO1xuICB9XG5cbiAgaXNCYXNlVHlwZSgpIHtcbiAgICBsZXQgYmFzZVR5cGUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IEJBU0VfVFlQRV9TWU1CT0wpIHtcbiAgICAgIGJhc2VUeXBlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZVR5cGU7XG4gIH1cblxuICBpc0VzdGFibGlzaGVkKCkge1xuICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy5pc1Byb3Zpc2lvbmFsKCksXG4gICAgICAgICAgZXN0YWJsaXNoZWQgPSAhcHJvdmlzaW9uYWw7XG5cbiAgICByZXR1cm4gZXN0YWJsaXNoZWQ7XG4gIH1cblxuICByZXRyaWV2ZUFuY2VzdG9yVHlwZXMoYW5jZXN0b3JUeXBlcyA9IFtdKSB7XG4gICAgY29uc3QgYmFzZVR5cGUgPSB0aGlzLmlzQmFzZVR5cGUoKTtcblxuICAgIGlmICghYmFzZVR5cGUpIHtcbiAgICAgIGNvbnN0IGFuY2VzdG9yVHlwZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgIGFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlID0gYW5jZXN0b3JUeXBlcy5pbmNsdWRlcyhhbmNlc3RvclR5cGUpO1xuXG4gICAgICBpZiAoIWFuY2VzdG9yVHlwZXNJbmNsdWRlQW5jZXN0b3JUeXBlKSB7XG4gICAgICAgIGFuY2VzdG9yVHlwZXMucHVzaChhbmNlc3RvclR5cGUpO1xuXG4gICAgICAgIHRoaXMuc3VwZXJUeXBlcy5mb3JFYWNoKChzdXBlclR5cGUpID0+IHtcbiAgICAgICAgICBzdXBlclR5cGUucmV0cmlldmVBbmNlc3RvclR5cGVzKGFuY2VzdG9yVHlwZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JUeXBlcztcbiAgfVxuXG4gIGlzQ290eXBlKCkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICBwcm9wZXJ0aWVzTGVuZ3RoID0gcHJvcGVydGllcy5sZW5ndGgsXG4gICAgICAgICAgY290eXBlID0gKHByb3BlcnRpZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBjb3R5cGU7XG4gIH1cblxuICBpc1ByZWZpeGVkKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gKHRoaXMucHJlZml4TmFtZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcHJlZml4ZWQ7XG4gIH1cblxuICBnZXRQcmVmaXhlZE5hbWUoKSB7XG4gICAgbGV0IHByZWZpeGVkTmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBwcmVmaXhlZE5hbWUgPSBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4ZWROYW1lO1xuICB9XG5cbiAgZ2V0Tm9taW5hbFR5cGVOYW1lKCkge1xuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCksXG4gICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gcHJlZml4ZWQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLnByZWZpeE5hbWV9JHt0aGlzLm5hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZTtcblxuICAgIHJldHVybiBub21pbmFsVHlwZU5hbWU7XG4gIH1cblxuICBpc0Jhc2ljKCkge1xuICAgIGxldCBiYXNpYyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHRoaXMuc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RTdXBlclR5cGUgPSBmaXJzdCh0aGlzLnN1cGVyVHlwZXMpLFxuICAgICAgICAgICAgc3VwZXJUeXBlID0gZmlyc3RTdXBlclR5cGUsIC8vL1xuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmIChzdXBlclR5cGUgPT09IGJhc2VUeXBlKSB7XG4gICAgICAgIGJhc2ljID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYmFzaWM7XG4gIH1cblxuICBpc1JlZmluZWQoKSB7XG4gICAgbGV0IHJlZmluZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cGVyVHlwZXNMZW5ndGggPSB0aGlzLnN1cGVyVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cGVyVHlwZXNMZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZpcnN0U3VwZXJUeXBlID0gZmlyc3QodGhpcy5zdXBlclR5cGVzKSxcbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IGZpcnN0U3VwZXJUeXBlLCAvLy9cbiAgICAgICAgICAgIHN1cGVyVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlTmFtZSA9PT0gdGhpcy5uYW1lKSB7XG4gICAgICAgIHJlZmluZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWZpbmVkO1xuICB9XG5cbiAgaXNKb2luZWRUbyh0eXBlKSB7XG4gICAgbGV0IGpvaW5lZFRvID0gZmFsc2U7XG5cbiAgICBjb25zdCBhbmNlc3RvclR5cGVzID0gdGhpcy5yZXRyaWV2ZUFuY2VzdG9yVHlwZXMoKSxcbiAgICAgICAgICB0eXBlQW5jZXN0b3JUeXBlcyA9IHR5cGUucmV0cmlldmVBbmNlc3RvclR5cGVzKCksXG4gICAgICAgICAgaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcyA9IGludGVyc2VjdGlvbihhbmNlc3RvclR5cGVzLCB0eXBlQW5jZXN0b3JUeXBlcywgKGFuY2VzdG9yVHlwZSwgdHlwZUFuY2VzdG9yVHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUgPSBhbmNlc3RvclR5cGUuaXNFcXVhbFRvKHR5cGVBbmNlc3RvclR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCA9IGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXMubGVuZ3RoO1xuXG4gICAgaWYgKGludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXNMZW5ndGggPiAwKSB7XG4gICAgICBqb2luZWRUbyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpvaW5lZFRvO1xuICB9XG5cbiAgaXNFcXVhbFRvKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gKHRoaXMgPT09IHR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc1N1YlR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1YlR5cGVPZjtcblxuICAgIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgaWYgKHRoaXMgPT09IGJhc2VUeXBlKSB7XG4gICAgICBzdWJUeXBlT2YgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3ViVHlwZU9mID0gdGhpcy5zdXBlclR5cGVzLnNvbWUoKHN1cGVyVHlwZSkgPT4geyAvLy9cbiAgICAgICAgaWYgKHN1cGVyVHlwZSA9PT0gdHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSA9IHN1cGVyVHlwZS5pc1N1YlR5cGVPZih0eXBlKTtcblxuICAgICAgICBpZiAoc3VwZXJUeXBlU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBzdWJUeXBlT2Y7XG4gIH1cblxuICBpc1N1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBzdWJUeXBlT2YgPSB0eXBlLmlzU3ViVHlwZU9mKHRoaXMpLFxuICAgICAgICAgIHN1cGVyVHlwZU9mID0gc3ViVHlwZU9mOyAgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3ViVHlwZU9mID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvT3JTdWJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9PclN1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb09yU3VwZXJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdXBlclR5cGVPZik7XG5cbiAgICByZXR1cm4gZXF1YWxUb09yU3VwZXJUeXBlT2Y7XG4gIH1cblxuICBpc0VxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZiA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mID0gKGVxdWFsVG8gfHwgc3ViVHlwZU9mIHx8IHN1cGVyVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2Y7XG4gIH1cblxuICBjb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpIHtcbiAgICBjb25zdCBuYW1lVHlwZU5hbWUgPSAodGhpcy5uYW1lID09PSB0eXBlTmFtZSksXG4gICAgICAgICAgY29tcGFyZXNUb1R5cGVOYW1lID0gbmFtZVR5cGVOYW1lOyAgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1R5cGVOYW1lO1xuICB9XG5cbiAgY29tcGFyZVByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKSB7XG4gICAgY29uc3QgY29tcGFyZXNUb1Byb3Zpc2lvbmFsID0gKHByb3Zpc2lvbmFsID09PSB0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgIHJldHVybiBjb21wYXJlc1RvUHJvdmlzaW9uYWw7XG4gIH1cblxuICBjb21wYXJlTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICAgIGxldCBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gZmFsc2U7XG5cbiAgICBjb25zdCBuYW1lTm9taW5hbFR5cGVOYW1lID0gKHRoaXMubmFtZSA9PT0gbm9taW5hbFR5cGVOYW1lKTtcblxuICAgIGlmIChuYW1lTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICBjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKTtcblxuICAgICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZ2V0UHJlZml4ZWROYW1lKCksXG4gICAgICAgICAgICAgIHByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSA9IChwcmVmaXhlZE5hbWUgPT09IG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWU7XG4gIH1cblxuICBjb21wYXJlUHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lID0gZmFsc2U7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBjb25zdCBwcmVmaXhlZE5hbWUgPSB0aGlzLmdldFByZWZpeGVkTmFtZSgpLFxuICAgICAgICAgICAgcHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSA9IChwcmVmaXhlZFR5cGVOYW1lID09PSBwcmVmaXhlZE5hbWUpO1xuXG4gICAgICBpZiAocHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSkge1xuICAgICAgICBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lO1xuICB9XG5cbiAgdG9KU09OKGFicmlkZ2VkID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICBpZiAoIWFicmlkZ2VkKSB7XG4gICAgICBjb25zdCBwcmVmaXhOYW1lSlNPTiA9IHByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OKHRoaXMucHJlZml4TmFtZSksXG4gICAgICAgICAgICBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgICBwcm92aXNpbm9hbEpTT00gPSBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHRoaXMucHJvdmlzaW9uYWwpLFxuICAgICAgICAgICAgcHJlZml4TmFtZSA9IHByZWZpeE5hbWVKU09OLCAgLy8vXG4gICAgICAgICAgICBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04sICAvLy9cbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTiwgIC8vL1xuICAgICAgICAgICAgcHJvdmlzaW9uYWwgPSBwcm92aXNpbm9hbEpTT007ICAvLy9cblxuICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCB7XG4gICAgICAgIHByZWZpeE5hbWUsXG4gICAgICAgIHN1cGVyVHlwZXMsXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIHByb3Zpc2lvbmFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHR5cGVOb2RlID0gaW5zdGFudGlhdGVUeXBlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICBuYW1lID0gbmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbik7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsOyAvLy9cblxuICAgICAgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgcHJlZml4TmFtZSwgc3VwZXJUeXBlcywgcHJvcGVydGllcywgcHJvdmlzaW9uYWwpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWUobmFtZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0cmluZyA9IG5hbWUsICAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICBwcmVmaXhOYW1lID0gbnVsbCxcbiAgICAgICAgICBzdXBlclR5cGVzID0gW10sXG4gICAgICAgICAgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHByb3Zpc2lvbmFsID0gZmFsc2U7XG5cbiAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJwdXNoIiwiZmlyc3QiLCJpbnRlcnNlY3Rpb24iLCJhcnJheVV0aWxpdGllcyIsImRlZmluZSIsIlR5cGUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibmFtZSIsInByZWZpeE5hbWUiLCJzdXBlclR5cGVzIiwicHJvcGVydGllcyIsInByb3Zpc2lvbmFsIiwiZ2V0TmFtZSIsImdldFByZWZpeE5hbWUiLCJnZXRTdXBlclR5cGVzIiwiZ2V0VHlwZU5vZGUiLCJnZXROb2RlIiwidHlwZU5vZGUiLCJnZXRQcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVByb3BlcnRpZXMiLCJpc1Byb3Zpc2lvbmFsIiwic2V0TmFtZSIsInNldFByZWZpeE5hbWUiLCJzZXRTdXBlclR5cGVzIiwic2V0UHJvcGVydGllcyIsInNldFByb3Zpc2lvbmFsIiwic2V0U3VwZXJUeXBlIiwiaXNCYXNlVHlwZSIsImJhc2VUeXBlIiwiQkFTRV9UWVBFX1NZTUJPTCIsImlzRXN0YWJsaXNoZWQiLCJlc3RhYmxpc2hlZCIsInJldHJpZXZlQW5jZXN0b3JUeXBlcyIsImFuY2VzdG9yVHlwZXMiLCJhbmNlc3RvclR5cGUiLCJhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSIsImluY2x1ZGVzIiwiaXNDb3R5cGUiLCJwcm9wZXJ0aWVzTGVuZ3RoIiwibGVuZ3RoIiwiY290eXBlIiwiaXNQcmVmaXhlZCIsInByZWZpeGVkIiwiZ2V0UHJlZml4ZWROYW1lIiwicHJlZml4ZWROYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwiaXNCYXNpYyIsImJhc2ljIiwic3VwZXJUeXBlc0xlbmd0aCIsImZpcnN0U3VwZXJUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsImlzUmVmaW5lZCIsInJlZmluZWQiLCJzdXBlclR5cGVOYW1lIiwiaXNKb2luZWRUbyIsInR5cGUiLCJqb2luZWRUbyIsInR5cGVBbmNlc3RvclR5cGVzIiwiaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcyIsInR5cGVBbmNlc3RvclR5cGUiLCJhbmNlc3RvclR5cGVFcXVhbFRvQVR5cGVuY2VzdG9yVHlwZSIsImlzRXF1YWxUbyIsImludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXNMZW5ndGgiLCJlcXVhbFRvIiwiaXNTdWJUeXBlT2YiLCJzdWJUeXBlT2YiLCJzb21lIiwic3VwZXJUeXBlU3ViVHlwZU9mVHlwZSIsImlzU3VwZXJUeXBlT2YiLCJzdXBlclR5cGVPZiIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiZXF1YWxUb09yU3ViVHlwZU9mIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsImVxdWFsVG9PclN1cGVyVHlwZU9mIiwiaXNFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJjb21wYXJlVHlwZU5hbWUiLCJ0eXBlTmFtZSIsIm5hbWVUeXBlTmFtZSIsImNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVQcm92aXNpb25hbCIsImNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJjb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lIiwibmFtZU5vbWluYWxUeXBlTmFtZSIsInByZWZpeGVkTmFtZU5vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZVByZWZpeGVkTmFtZSIsInRvSlNPTiIsImFicmlkZ2VkIiwiZ2V0U3RyaW5nIiwianNvbiIsInByZWZpeE5hbWVKU09OIiwicHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04iLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3Zpc2lub2FsSlNPTSIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJPYmplY3QiLCJhc3NpZ24iLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlIiwibmFtZUZyb21UeXBlTm9kZSIsInByZWZpeE5hbWVGcm9tSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInByb3BlcnRpZXNGcm9tSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJmcm9tTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBc0JBOzs7ZUFBQTs7O2dDQXBCd0I7MkJBQ087MEJBRVI7eUJBQ0s7NkJBQ0k7MkJBQ0M7eUJBQ0E7c0JBQ0c7c0JBUVM7QUFFN0MsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFLEdBQUdDLHlCQUFjO01BRXBELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsdUJBQU87SUFDOUMsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsQ0FBRTtRQUNwRyxLQUFLLENBQUNSLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtJQUNyQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNMLElBQUk7SUFDbEI7SUFFQU0sZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNMLFVBQVU7SUFDeEI7SUFFQU0sZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNMLFVBQVU7SUFDeEI7SUFFQU0sY0FBYztRQUNaLE1BQU1WLE9BQU8sSUFBSSxDQUFDVyxPQUFPLElBQ25CQyxXQUFXWixNQUFPLEdBQUc7UUFFM0IsT0FBT1k7SUFDVDtJQUVBQyxjQUFjUixhQUFhLEVBQUUsRUFBRTtRQUM3QmQsS0FBS2MsWUFBWSxJQUFJLENBQUNBLFVBQVU7UUFFaEMsSUFBSSxDQUFDRCxVQUFVLENBQUNVLE9BQU8sQ0FBQyxDQUFDQztZQUN2QixNQUFNQyxzQkFBc0JELFVBQVVGLGFBQWE7WUFFbkR0QixLQUFLYyxZQUFZVztRQUNuQjtRQUVBLE9BQU9YO0lBQ1Q7SUFFQVksZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNYLFdBQVc7SUFDekI7SUFFQVksUUFBUWhCLElBQUksRUFBRTtRQUNaLElBQUksQ0FBQ0EsSUFBSSxHQUFHQTtJQUNkO0lBRUFpQixjQUFjaEIsVUFBVSxFQUFFO1FBQ3hCLElBQUksQ0FBQ0EsVUFBVSxHQUFHQTtJQUNwQjtJQUVBaUIsY0FBY2hCLFVBQVUsRUFBRTtRQUN4QixJQUFJLENBQUNBLFVBQVUsR0FBR0E7SUFDcEI7SUFFQWlCLGNBQWNoQixVQUFVLEVBQUU7UUFDeEIsSUFBSSxDQUFDQSxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFpQixlQUFlaEIsV0FBVyxFQUFFO1FBQzFCLElBQUksQ0FBQ0EsV0FBVyxHQUFHQTtJQUNyQjtJQUVBaUIsYUFBYVIsU0FBUyxFQUFFO1FBQ3RCLElBQUksQ0FBQ1gsVUFBVSxHQUFHO1lBQ2hCVztTQUNEO0lBQ0g7SUFFQVMsYUFBYTtRQUNYLElBQUlDLFdBQVc7UUFFZixJQUFJLElBQUksQ0FBQ3ZCLElBQUksS0FBS3dCLDJCQUFnQixFQUFFO1lBQ2xDRCxXQUFXO1FBQ2I7UUFFQSxPQUFPQTtJQUNUO0lBRUFFLGdCQUFnQjtRQUNkLE1BQU1yQixjQUFjLElBQUksQ0FBQ1csYUFBYSxJQUNoQ1csY0FBYyxDQUFDdEI7UUFFckIsT0FBT3NCO0lBQ1Q7SUFFQUMsc0JBQXNCQyxnQkFBZ0IsRUFBRSxFQUFFO1FBQ3hDLE1BQU1MLFdBQVcsSUFBSSxDQUFDRCxVQUFVO1FBRWhDLElBQUksQ0FBQ0MsVUFBVTtZQUNiLE1BQU1NLGVBQWUsSUFBSSxFQUNuQkMsbUNBQW1DRixjQUFjRyxRQUFRLENBQUNGO1lBRWhFLElBQUksQ0FBQ0Msa0NBQWtDO2dCQUNyQ0YsY0FBY3ZDLElBQUksQ0FBQ3dDO2dCQUVuQixJQUFJLENBQUMzQixVQUFVLENBQUNVLE9BQU8sQ0FBQyxDQUFDQztvQkFDdkJBLFVBQVVjLHFCQUFxQixDQUFDQztnQkFDbEM7WUFDRjtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBSSxXQUFXO1FBQ1QsTUFBTTdCLGFBQWEsSUFBSSxDQUFDUSxhQUFhLElBQy9Cc0IsbUJBQW1COUIsV0FBVytCLE1BQU0sRUFDcENDLFNBQVVGLG1CQUFtQjtRQUVuQyxPQUFPRTtJQUNUO0lBRUFDLGFBQWE7UUFDWCxNQUFNQyxXQUFZLElBQUksQ0FBQ3BDLFVBQVUsS0FBSztRQUV0QyxPQUFPb0M7SUFDVDtJQUVBQyxrQkFBa0I7UUFDaEIsSUFBSUMsZUFBZTtRQUVuQixNQUFNRixXQUFXLElBQUksQ0FBQ0QsVUFBVTtRQUVoQyxJQUFJQyxVQUFVO1lBQ1pFLGVBQWUsR0FBRyxJQUFJLENBQUN0QyxVQUFVLEdBQUcsSUFBSSxDQUFDRCxJQUFJLEVBQUU7UUFDakQ7UUFFQSxPQUFPdUM7SUFDVDtJQUVBQyxxQkFBcUI7UUFDbkIsTUFBTUgsV0FBVyxJQUFJLENBQUNELFVBQVUsSUFDMUJLLGtCQUFrQkosV0FDQyxHQUFHLElBQUksQ0FBQ3BDLFVBQVUsR0FBRyxJQUFJLENBQUNELElBQUksRUFBRSxHQUM3QixJQUFJLENBQUNBLElBQUk7UUFFckMsT0FBT3lDO0lBQ1Q7SUFFQUMsVUFBVTtRQUNSLElBQUlDLFFBQVE7UUFFWixNQUFNQyxtQkFBbUIsSUFBSSxDQUFDMUMsVUFBVSxDQUFDZ0MsTUFBTTtRQUUvQyxJQUFJVSxxQkFBcUIsR0FBRztZQUMxQixNQUFNQyxpQkFBaUJ2RCxNQUFNLElBQUksQ0FBQ1ksVUFBVSxHQUN0Q1csWUFBWWdDLGdCQUNadEIsV0FBV3VCLElBQUFBLHlCQUFtQjtZQUVwQyxJQUFJakMsY0FBY1UsVUFBVTtnQkFDMUJvQixRQUFRO1lBQ1Y7UUFDRjtRQUVBLE9BQU9BO0lBQ1Q7SUFFQUksWUFBWTtRQUNWLElBQUlDLFVBQVU7UUFFZCxNQUFNSixtQkFBbUIsSUFBSSxDQUFDMUMsVUFBVSxDQUFDZ0MsTUFBTTtRQUUvQyxJQUFJVSxxQkFBcUIsR0FBRztZQUMxQixNQUFNQyxpQkFBaUJ2RCxNQUFNLElBQUksQ0FBQ1ksVUFBVSxHQUN0Q1csWUFBWWdDLGdCQUNaSSxnQkFBZ0JwQyxVQUFVUixPQUFPO1lBRXZDLElBQUk0QyxrQkFBa0IsSUFBSSxDQUFDakQsSUFBSSxFQUFFO2dCQUMvQmdELFVBQVU7WUFDWjtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBRSxXQUFXQyxJQUFJLEVBQUU7UUFDZixJQUFJQyxXQUFXO1FBRWYsTUFBTXhCLGdCQUFnQixJQUFJLENBQUNELHFCQUFxQixJQUMxQzBCLG9CQUFvQkYsS0FBS3hCLHFCQUFxQixJQUM5QzJCLDRCQUE0Qi9ELGFBQWFxQyxlQUFleUIsbUJBQW1CLENBQUN4QixjQUFjMEI7WUFDeEYsTUFBTUMsc0NBQXNDM0IsYUFBYTRCLFNBQVMsQ0FBQ0Y7WUFFbkUsSUFBSUMscUNBQXFDO2dCQUN2QyxPQUFPO1lBQ1Q7UUFDRixJQUNBRSxrQ0FBa0NKLDBCQUEwQnBCLE1BQU07UUFFeEUsSUFBSXdCLGtDQUFrQyxHQUFHO1lBQ3ZDTixXQUFXO1FBQ2I7UUFFQSxPQUFPQTtJQUNUO0lBRUFLLFVBQVVOLElBQUksRUFBRTtRQUNkLE1BQU1RLFVBQVcsSUFBSSxLQUFLUjtRQUUxQixPQUFPUTtJQUNUO0lBRUFDLFlBQVlULElBQUksRUFBRTtRQUNoQixJQUFJVTtRQUVKLE1BQU10QyxXQUFXdUIsSUFBQUEseUJBQW1CO1FBRXBDLElBQUksSUFBSSxLQUFLdkIsVUFBVTtZQUNyQnNDLFlBQVk7UUFDZCxPQUFPO1lBQ0xBLFlBQVksSUFBSSxDQUFDM0QsVUFBVSxDQUFDNEQsSUFBSSxDQUFDLENBQUNqRDtnQkFDaEMsSUFBSUEsY0FBY3NDLE1BQU07b0JBQ3RCLE9BQU87Z0JBQ1Q7Z0JBRUEsTUFBTVkseUJBQXlCbEQsVUFBVStDLFdBQVcsQ0FBQ1Q7Z0JBRXJELElBQUlZLHdCQUF3QjtvQkFDMUIsT0FBTztnQkFDVDtZQUNGO1FBQ0Y7UUFFQSxPQUFPRjtJQUNUO0lBRUFHLGNBQWNiLElBQUksRUFBRTtRQUNsQixNQUFNVSxZQUFZVixLQUFLUyxXQUFXLENBQUMsSUFBSSxHQUNqQ0ssY0FBY0osV0FBWSxHQUFHO1FBRW5DLE9BQU9JO0lBQ1Q7SUFFQUMscUJBQXFCZixJQUFJLEVBQUU7UUFDekIsTUFBTVEsVUFBVSxJQUFJLENBQUNGLFNBQVMsQ0FBQ04sT0FDekJVLFlBQVksSUFBSSxDQUFDRCxXQUFXLENBQUNULE9BQzdCZ0IscUJBQXNCUixXQUFXRTtRQUV2QyxPQUFPTTtJQUNUO0lBRUFDLHVCQUF1QmpCLElBQUksRUFBRTtRQUMzQixNQUFNUSxVQUFVLElBQUksQ0FBQ0YsU0FBUyxDQUFDTixPQUN6QmMsY0FBYyxJQUFJLENBQUNELGFBQWEsQ0FBQ2IsT0FDakNrQix1QkFBd0JWLFdBQVdNO1FBRXpDLE9BQU9JO0lBQ1Q7SUFFQUMsOEJBQThCbkIsSUFBSSxFQUFFO1FBQ2xDLE1BQU1RLFVBQVUsSUFBSSxDQUFDRixTQUFTLENBQUNOLE9BQ3pCVSxZQUFZLElBQUksQ0FBQ0QsV0FBVyxDQUFDVCxPQUM3QmMsY0FBYyxJQUFJLENBQUNELGFBQWEsQ0FBQ2IsT0FDakNvQiw4QkFBK0JaLFdBQVdFLGFBQWFJO1FBRTdELE9BQU9NO0lBQ1Q7SUFFQUMsZ0JBQWdCQyxRQUFRLEVBQUU7UUFDeEIsTUFBTUMsZUFBZ0IsSUFBSSxDQUFDMUUsSUFBSSxLQUFLeUUsVUFDOUJFLHFCQUFxQkQsY0FBZSxHQUFHO1FBRTdDLE9BQU9DO0lBQ1Q7SUFFQUMsbUJBQW1CeEUsV0FBVyxFQUFFO1FBQzlCLE1BQU15RSx3QkFBeUJ6RSxnQkFBZ0IsSUFBSSxDQUFDQSxXQUFXO1FBRS9ELE9BQU95RTtJQUNUO0lBRUFDLHVCQUF1QnJDLGVBQWUsRUFBRTtRQUN0QyxJQUFJc0MsNEJBQTRCO1FBRWhDLE1BQU1DLHNCQUF1QixJQUFJLENBQUNoRixJQUFJLEtBQUt5QztRQUUzQyxJQUFJdUMscUJBQXFCO1lBQ3ZCRCw0QkFBNEI7UUFDOUIsT0FBTztZQUNMLE1BQU0xQyxXQUFXLElBQUksQ0FBQ0QsVUFBVTtZQUVoQyxJQUFJQyxVQUFVO2dCQUNaLE1BQU1FLGVBQWUsSUFBSSxDQUFDRCxlQUFlLElBQ25DMkMsOEJBQStCMUMsaUJBQWlCRTtnQkFFdEQsSUFBSXdDLDZCQUE2QjtvQkFDL0JGLDRCQUE0QjtnQkFDOUI7WUFDRjtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBRyx3QkFBd0JDLGdCQUFnQixFQUFFO1FBQ3hDLElBQUlDLDZCQUE2QjtRQUVqQyxNQUFNL0MsV0FBVyxJQUFJLENBQUNELFVBQVU7UUFFaEMsSUFBSUMsVUFBVTtZQUNaLE1BQU1FLGVBQWUsSUFBSSxDQUFDRCxlQUFlLElBQ25DK0MsK0JBQWdDRixxQkFBcUI1QztZQUUzRCxJQUFJOEMsOEJBQThCO2dCQUNoQ0QsNkJBQTZCO1lBQy9CO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFFLE9BQU9DLFdBQVcsS0FBSyxFQUFFO1FBQ3ZCLE1BQU0xRixTQUFTLElBQUksQ0FBQzJGLFNBQVM7UUFFN0IsTUFBTUMsT0FBTztZQUNYNUY7UUFDRjtRQUVBLElBQUksQ0FBQzBGLFVBQVU7WUFDYixNQUFNRyxpQkFBaUJDLElBQUFBLGdDQUEwQixFQUFDLElBQUksQ0FBQzFGLFVBQVUsR0FDM0QyRixpQkFBaUJDLElBQUFBLGdDQUEwQixFQUFDLElBQUksQ0FBQzNGLFVBQVUsR0FDM0Q0RixpQkFBaUJDLElBQUFBLGdDQUEwQixFQUFDLElBQUksQ0FBQzVGLFVBQVUsR0FDM0Q2RixrQkFBa0JDLElBQUFBLGtDQUE0QixFQUFDLElBQUksQ0FBQzdGLFdBQVcsR0FDL0RILGFBQWF5RixnQkFDYnhGLGFBQWEwRixnQkFDYnpGLGFBQWEyRixnQkFDYjFGLGNBQWM0RixpQkFBa0IsR0FBRztZQUV6Q0UsT0FBT0MsTUFBTSxDQUFDVixNQUFNO2dCQUNsQnhGO2dCQUNBQztnQkFDQUM7Z0JBQ0FDO1lBQ0Y7UUFDRjtRQUVBLE9BQU9xRjtJQUNUO0lBRUEsT0FBT3pGLE9BQU8sT0FBTztJQUVyQixPQUFPb0csU0FBU1gsSUFBSSxFQUFFN0YsT0FBTyxFQUFFO1FBQzdCLElBQUl1RDtRQUVKa0QsSUFBQUEsb0JBQVcsRUFBQyxDQUFDekc7WUFDWCxNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHNEYsTUFDYi9FLFdBQVc0RixJQUFBQSw0QkFBZSxFQUFDekcsUUFBUUQsVUFDbkNFLE9BQU9ZLFVBQ1BYLGFBQWEsTUFDYkMsT0FBT3VHLElBQUFBLHlCQUFnQixFQUFDN0YsVUFBVWQsVUFDbENLLGFBQWF1RyxJQUFBQSx3QkFBa0IsRUFBQ2YsTUFBTTdGLFVBQ3RDTSxhQUFhdUcsSUFBQUEsd0JBQWtCLEVBQUNoQixNQUFNN0YsVUFDdENPLGFBQWF1RyxJQUFBQSx3QkFBa0IsRUFBQ2pCLE1BQU03RixVQUN0Q1EsY0FBY3VHLElBQUFBLHlCQUFtQixFQUFDbEI7WUFFeEM3RixVQUFVLE1BQU0sR0FBRztZQUVuQnVELE9BQU8sSUFBSXpELEtBQUtFLFNBQVNDLFFBQVFDLE1BQU1DLFlBQVlDLE1BQU1DLFlBQVlDLFlBQVlDLFlBQVlDO1FBQy9GLEdBQUdSO1FBRUgsT0FBT3VEO0lBQ1Q7SUFFQSxPQUFPeUQsU0FBUzVHLElBQUksRUFBRUosT0FBTyxFQUFFO1FBQzdCLE1BQU1DLFNBQVNHLE1BQ1RGLE9BQU8sTUFDUEMsYUFBYSxNQUNiRSxhQUFhLE1BQ2JDLGFBQWEsRUFBRSxFQUNmQyxhQUFhLEVBQUUsRUFDZkMsY0FBYztRQUVwQlIsVUFBVTtRQUVWLE1BQU11RCxPQUFPLElBQUl6RCxLQUFLRSxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxNQUFNQyxZQUFZQyxZQUFZQyxZQUFZQztRQUVuRyxPQUFPK0M7SUFDVDtBQUNGIn0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-nominal",
3
3
  "author": "James Smith",
4
- "version": "1.0.610",
4
+ "version": "1.0.613",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-nominal",
7
7
  "description": "Occam's Nominal language.",
@@ -11,9 +11,9 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "necessary": "^17.7.2",
14
- "occam-furtle": "^3.0.541",
14
+ "occam-furtle": "^3.0.542",
15
15
  "occam-grammar-utilities": "^8.1.27",
16
- "occam-languages": "^3.0.91",
16
+ "occam-languages": "^3.0.92",
17
17
  "occam-query": "^4.1.210"
18
18
  },
19
19
  "devDependencies": {
@@ -27,9 +27,9 @@
27
27
  "juxtapose": "^4.0.143",
28
28
  "lively-cli": "^3.0.3",
29
29
  "occam-lexers": "^23.2.12",
30
- "occam-model": "^1.0.597",
30
+ "occam-model": "^1.0.598",
31
31
  "occam-parsers": "^23.2.17",
32
- "occam-server": "^7.0.96",
32
+ "occam-server": "^7.0.97",
33
33
  "watchful-cli": "^1.7.102"
34
34
  },
35
35
  "scripts": {
@@ -61,7 +61,8 @@ export default define(class CotypeDeclaration extends Declaration {
61
61
 
62
62
  context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration...`);
63
63
 
64
- const verifyType = this.verifyType.bind(this),
64
+ const superTypes = [],
65
+ verifyType = this.verifyType.bind(this),
65
66
  verifySuperTypes = this.verifySuperTypes.bind(this),
66
67
  verifyTypePrefix = this.verifyTypePrefix.bind(this),
67
68
  verifyPropertyDeclaratisons = this.verifyPropertyDeclaratisons.bind(this);
@@ -71,7 +72,7 @@ export default define(class CotypeDeclaration extends Declaration {
71
72
  verifySuperTypes,
72
73
  verifyTypePrefix,
73
74
  verifyPropertyDeclaratisons
74
- ], context, (context, back) => {
75
+ ], superTypes, context, (superTypes, context, back) => {
75
76
  const properties = this.getProperties(),
76
77
  typePrefix = context.getTypePrefix(),
77
78
  prefixName = (typePrefix !== null) ?
@@ -84,6 +85,8 @@ export default define(class CotypeDeclaration extends Declaration {
84
85
 
85
86
  this.type.setPrefixName(prefixName);
86
87
 
88
+ this.type.setSuperTypes(superTypes);
89
+
87
90
  context.addType(this.type);
88
91
 
89
92
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration.`);
@@ -100,7 +103,7 @@ export default define(class CotypeDeclaration extends Declaration {
100
103
  });
101
104
  });
102
105
 
103
- verifyType(context, forward, back) {
106
+ verifyType(superTypes, context, forward, back) {
104
107
  const typeString = this.type.getString(),
105
108
  cotypeDeclarationString = this.getString(); ///
106
109
 
@@ -129,14 +132,12 @@ export default define(class CotypeDeclaration extends Declaration {
129
132
  return back();
130
133
  }
131
134
 
132
- this.type.setProvisional(this.provisional);
133
-
134
135
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type`);
135
136
 
136
- return forward(context, back);
137
+ return forward(superTypes, context, back);
137
138
  }
138
139
 
139
- verifyTypePrefix(context, forward, back) {
140
+ verifyTypePrefix(superTypes, context, forward, back) {
140
141
  const typeString = this.type.getString(),
141
142
  cotypeDeclarationString = this.getString(); ///
142
143
 
@@ -152,10 +153,10 @@ export default define(class CotypeDeclaration extends Declaration {
152
153
 
153
154
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's prefix.`);
154
155
 
155
- return forward(context, back);
156
+ return forward(superTypes, context, back);
156
157
  }
157
158
 
158
- verifySuperTypes(context, forward, back) {
159
+ verifySuperTypes(superTypes, context, forward, back) {
159
160
  const cotypeDeclarationString = this.getString(); ///
160
161
 
161
162
  context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's super-types...`);
@@ -164,27 +165,21 @@ export default define(class CotypeDeclaration extends Declaration {
164
165
 
165
166
  if (superTypesLength === 0) {
166
167
  const baseType = baseTypeFromNothing(),
167
- superTyupe = baseType; ///
168
-
169
- this.type.setSuperType(superTyupe);
168
+ superType = baseType; ///
170
169
 
171
- return forward(context, back);
170
+ this.superTypes.push(superType);
172
171
  }
173
172
 
174
- const superTypes = []; ///
175
-
176
173
  return every(this.superTypes, (superType, context, forward, back) => {
177
- return this.verifySuperType(superType, superTypes, context, forward, back);
174
+ return this.verifySuperType(superTypes, superType, context, forward, back);
178
175
  }, context, (context, back) => {
179
- this.type.setSuperTypes(superTypes);
180
-
181
176
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's super-types.`);
182
177
 
183
- return forward(context, back);
178
+ return forward(superTypes, context, back);
184
179
  }, back);
185
180
  }
186
181
 
187
- verifySuperType(superType, superTypes, context, forward, back) {
182
+ verifySuperType(superTypes, superType, context, forward, back) {
188
183
  const superTypeString = superType.getString(),
189
184
  cotypeDeclarationString = this.getString(); ///
190
185
 
@@ -215,7 +210,7 @@ export default define(class CotypeDeclaration extends Declaration {
215
210
  return forward(context, back);
216
211
  }
217
212
 
218
- verifyPropertyDeclaratisons(context, forward, back) {
213
+ verifyPropertyDeclaratisons(superTypes, context, forward, back) {
219
214
  const typeString = this.type.getString(),
220
215
  cotypeDeclarationString = this.getString(); ///
221
216
 
@@ -232,7 +227,7 @@ export default define(class CotypeDeclaration extends Declaration {
232
227
  }, context, (context, back) => {
233
228
  context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's property declarations.`);
234
229
 
235
- return forward(context, back);
230
+ return forward(superTypes, context, back);
236
231
  }, back);
237
232
  }
238
233
 
@@ -51,7 +51,8 @@ export default define(class TypeDeclaration extends Declaration {
51
51
 
52
52
  context.trace(`Verifying the '${typeDeclarationString}' type declaration...`);
53
53
 
54
- const verifyType = this.verifyType.bind(this),
54
+ const superTypes = [],
55
+ verifyType = this.verifyType.bind(this),
55
56
  verifySuperTypes = this.verifySuperTypes.bind(this),
56
57
  verifyTypePrefix = this.verifyTypePrefix.bind(this);
57
58
 
@@ -59,7 +60,7 @@ export default define(class TypeDeclaration extends Declaration {
59
60
  verifyType,
60
61
  verifySuperTypes,
61
62
  verifyTypePrefix
62
- ], context, (context, back) => {
63
+ ], superTypes, context, (superTypes, context, back) => {
63
64
  const properties = this.getProperties(),
64
65
  typePrefix = context.getTypePrefix(),
65
66
  prefixName = (typePrefix !== null) ?
@@ -72,6 +73,8 @@ export default define(class TypeDeclaration extends Declaration {
72
73
 
73
74
  this.type.setPrefixName(prefixName);
74
75
 
76
+ this.type.setSuperTypes(superTypes);
77
+
75
78
  context.addType(this.type);
76
79
 
77
80
  context.debug(`...verified the '${typeDeclarationString}' type declaration.`);
@@ -88,7 +91,7 @@ export default define(class TypeDeclaration extends Declaration {
88
91
  });
89
92
  });
90
93
 
91
- verifyType(context, forward, back) {
94
+ verifyType(superTypes, context, forward, back) {
92
95
  const typeString = this.type.getString(),
93
96
  typeDeclarationString = this.getString(); ///
94
97
 
@@ -117,14 +120,12 @@ export default define(class TypeDeclaration extends Declaration {
117
120
  return back();
118
121
  }
119
122
 
120
- this.type.setProvisional(this.provisional);
121
-
122
123
  context.debug(`...verified the '${typeDeclarationString}' type declaration's '${typeString}' type`);
123
124
 
124
- return forward(context, back);
125
+ return forward(superTypes, context, back);
125
126
  }
126
127
 
127
- verifyTypePrefix(context, forward, back) {
128
+ verifyTypePrefix(superTypes, context, forward, back) {
128
129
  const typeString = this.type.getString(),
129
130
  typeDeclarationString = this.getString(); ///
130
131
 
@@ -140,10 +141,10 @@ export default define(class TypeDeclaration extends Declaration {
140
141
 
141
142
  context.debug(`...verified the '${typeDeclarationString}' type declaration's '${typeString}' type's prefix.`);
142
143
 
143
- return forward(context, back);
144
+ return forward(superTypes, context, back);
144
145
  }
145
146
 
146
- verifySuperTypes(context, forward, back) {
147
+ verifySuperTypes(superTypes, context, forward, back) {
147
148
  const typeDeclarationString = this.getString(); ///
148
149
 
149
150
  context.trace(`Verifying the '${typeDeclarationString}' type declaration's super-types...`);
@@ -152,27 +153,21 @@ export default define(class TypeDeclaration extends Declaration {
152
153
 
153
154
  if (superTypesLength === 0) {
154
155
  const baseType = baseTypeFromNothing(),
155
- superTyupe = baseType; ///
156
-
157
- this.type.setSuperType(superTyupe);
156
+ superType = baseType; ///
158
157
 
159
- return forward(context, back);
158
+ this.superTypes.push(superType);
160
159
  }
161
160
 
162
- const superTypes = []; ///
163
-
164
161
  return every(this.superTypes, (superType, context, forward, back) => {
165
- return this.verifySuperType(superType, superTypes, context, forward, back);
162
+ return this.verifySuperType(superTypes, superType, context, forward, back);
166
163
  }, context, (context, back) => {
167
- this.type.setSuperTypes(superTypes);
168
-
169
164
  context.debug(`...verified the '${typeDeclarationString}' type declaration's super-types.`);
170
165
 
171
- return forward(context, back);
166
+ return forward(superTypes, context, back);
172
167
  }, back);
173
168
  }
174
169
 
175
- verifySuperType(superType, superTypes, context, forward, back) {
170
+ verifySuperType(superTypes, superType, context, forward, back) {
176
171
  const superTypeString = superType.getString(),
177
172
  typeDeclarationString = this.getString(); ///
178
173
 
@@ -62,22 +62,8 @@ export default define(class Type extends Element {
62
62
  return properties;
63
63
  }
64
64
 
65
- isProvisional(includeSuperTypes = true) {
66
- let provisional = this.provisional;
67
-
68
- if (includeSuperTypes) {
69
- if (!provisional) {
70
- provisional = this.superTypes.some((superType) => {
71
- const superTypeProvisional = superType.isProvisional();
72
-
73
- if (superTypeProvisional) {
74
- return true;
75
- }
76
- });
77
- }
78
- }
79
-
80
- return provisional;
65
+ isProvisional() {
66
+ return this.provisional;
81
67
  }
82
68
 
83
69
  setName(name) {
@@ -116,8 +102,8 @@ export default define(class Type extends Element {
116
102
  return baseType;
117
103
  }
118
104
 
119
- isEstablished(includeSuperTypes = true) {
120
- const provisional = this.isProvisional(includeSuperTypes),
105
+ isEstablished() {
106
+ const provisional = this.isProvisional(),
121
107
  established = !provisional;
122
108
 
123
109
  return established;
@@ -303,16 +289,8 @@ export default define(class Type extends Element {
303
289
  return comparesToTypeName;
304
290
  }
305
291
 
306
- compareProvisional(provisional, includeSupertypes = true) {
307
- let comparesToProvisional;
308
-
309
- const provisionalA = provisional; ///
310
-
311
- provisional = this.isProvisional(includeSupertypes);
312
-
313
- const provisionalB = provisional; ///
314
-
315
- comparesToProvisional = (provisionalA === provisionalB);
292
+ compareProvisional(provisional) {
293
+ const comparesToProvisional = (provisional === this.provisional);
316
294
 
317
295
  return comparesToProvisional;
318
296
  }