easy-richtextarea 4.0.16 → 4.0.18

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.
@@ -60,6 +60,18 @@ var DeleteOperation = /*#__PURE__*/ function() {
60
60
  return this.position;
61
61
  }
62
62
  },
63
+ {
64
+ key: "transformContent",
65
+ value: function transformContent(content) {
66
+ var start, end;
67
+ start = 0;
68
+ end = this.position;
69
+ var leftContent = content.substring(start, end), contentLength = this.content.length;
70
+ start = this.position + contentLength;
71
+ var rightContent = content.substring(start), transformedContent = leftContent + rightContent;
72
+ return transformedContent;
73
+ }
74
+ },
63
75
  {
64
76
  key: "transformOperation",
65
77
  value: function transformOperation(operation) {
@@ -143,18 +155,6 @@ var DeleteOperation = /*#__PURE__*/ function() {
143
155
  }
144
156
  }
145
157
  },
146
- {
147
- key: "transformContent",
148
- value: function transformContent(content) {
149
- var start, end;
150
- start = 0;
151
- end = this.position;
152
- var leftContent = content.substring(start, end), contentLength = this.content.length;
153
- start = this.position + contentLength;
154
- var rightContent = content.substring(start), transformedContent = leftContent + rightContent;
155
- return transformedContent;
156
- }
157
- },
158
158
  {
159
159
  key: "transformSelection",
160
160
  value: function transformSelection(selection) {
@@ -287,4 +287,4 @@ var DeleteOperation = /*#__PURE__*/ function() {
287
287
  return DeleteOperation;
288
288
  }();
289
289
 
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb24vZGVsZXRlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0IEVtcHR5T3BlcmF0aW9uIGZyb20gXCIuLi9vcGVyYXRpb24vZW1wdHlcIjtcclxuXHJcbmltcG9ydCB7IElOU0VSVF9UWVBFLCBERUxFVEVfVFlQRSwgRU1QVFlfVFlQRSB9IGZyb20gXCIuLi90eXBlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVsZXRlT3BlcmF0aW9uIHtcclxuICBjb25zdHJ1Y3Rvcih0eXBlLCBjb250ZW50LCBwb3NpdGlvbikge1xyXG5cdCAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybU9wZXJhdGlvbihvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IHR5cGUgPSBvcGVyYXRpb24uZ2V0VHlwZSgpO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIElOU0VSVF9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA8PSByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uIDwgcmhvLmNvbnRlbnQubGVuZ3RoICsgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFt0YXUubGVmdChyaG8pLnNoaWZ0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uID49IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNoaWZ0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcblxyXG4gICAgICBjYXNlIERFTEVURV9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA8IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbdGF1LmNsb25lKCldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnRha2VuRnJvbSh0YXUpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50Lmxlbmd0aCArIHRhdS5wb3NpdGlvbiA+IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNwbGl0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA9PT0gcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudC5sZW5ndGggKyB0YXUucG9zaXRpb24gPD0gcmhvLmNvbnRlbnQubGVuZ3RoICsgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFtFbXB0eU9wZXJhdGlvbi5mcm9tTm90aGluZygpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50Lmxlbmd0aCArIHRhdS5wb3NpdGlvbiA+IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNoaWZ0KHJoby50YWtlbkZyb20odGF1KSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+PSByaG8uY29udGVudC5sZW5ndGggKyByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtyaG8uc2hpZnQodGF1KV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbRW1wdHlPcGVyYXRpb24uZnJvbU5vdGhpbmcoKV07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudC5sZW5ndGggKyB0YXUucG9zaXRpb24gPiByaG8uY29udGVudC5sZW5ndGggKyByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gW3Joby5zaGlmdChyaG8udGFrZW5Gcm9tKHRhdSkpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KShvcGVyYXRpb24sIHRoaXMpO1xyXG5cclxuICAgICAgY2FzZSBFTVBUWV9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1Db250ZW50KGNvbnRlbnQpIHtcclxuICAgIGxldCBzdGFydCwgZW5kO1xyXG5cclxuICAgIHN0YXJ0ID0gMDtcclxuXHJcbiAgICBlbmQgPSB0aGlzLnBvc2l0aW9uO1xyXG5cclxuICAgIGNvbnN0IGxlZnRDb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCksXHJcbiAgICAgICAgICBjb250ZW50TGVuZ3RoID0gdGhpcy5jb250ZW50Lmxlbmd0aDtcclxuXHJcbiAgICBzdGFydCA9IHRoaXMucG9zaXRpb24gKyBjb250ZW50TGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IHJpZ2h0Q29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0KSxcclxuICAgICAgICAgIHRyYW5zZm9ybWVkQ29udGVudCA9IGxlZnRDb250ZW50ICsgcmlnaHRDb250ZW50O1xyXG5cclxuICAgIHJldHVybiB0cmFuc2Zvcm1lZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKSB7XHJcbiAgICBsZXQgdHJhbnNmb3JtZWRTZWxlY3Rpb247XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgY29udGVudExlbmd0aCA9IHRoaXMuY29udGVudC5sZW5ndGgsXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiwgLy8vXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBjb250ZW50TGVuZ3RoO1xyXG5cclxuICAgIGlmIChmYWxzZSkge1xyXG4gICAgICAvLy9cclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA+PSBlbmRQb3NpdGlvbikge1xyXG4gICAgICBjb25zdCBvZmZzZXQgPSAtY29udGVudExlbmd0aDtcclxuXHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLnNoaWZ0ZWQob2Zmc2V0KTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA+PSBzdGFydFBvc2l0aW9uKSB7XHJcbiAgICAgIGlmIChzZWxlY3Rpb25FbmRQb3NpdGlvbiA+IGVuZFBvc2l0aW9uKSB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvblN0YXJ0UG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgZW5kT2Zmc2V0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiAtIGVuZFBvc2l0aW9uO1xyXG5cclxuICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5zaGlmdGVkKG9mZnNldCkuZW5kUG9zaXRpb25TaGlmdGVkKGVuZE9mZnNldCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvblN0YXJ0UG9zaXRpb247XHJcblxyXG4gICAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmVtcHRpZWQoKS5zaGlmdGVkKG9mZnNldCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uRW5kUG9zaXRpb24gPiBlbmRQb3NpdGlvbikge1xyXG4gICAgICBjb25zdCBlbmRPZmZzZXQgPSAtY29udGVudExlbmd0aDtcclxuXHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmVuZFBvc2l0aW9uU2hpZnRlZChlbmRPZmZzZXQpO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3Rpb25FbmRQb3NpdGlvbiA+IHN0YXJ0UG9zaXRpb24pIHtcclxuICAgICAgY29uc3QgZW5kT2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvbkVuZFBvc2l0aW9uO1xyXG5cclxuICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSBzZWxlY3Rpb24uZW5kUG9zaXRpb25TaGlmdGVkKGVuZE9mZnNldCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5jbG9uZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHNoaWZ0ZWQob2Zmc2V0KSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50LFxyXG4gICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uICsgb2Zmc2V0LFxyXG4gICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzaGlmdChvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSB0aGlzLmNvbnRlbnQubGVuZ3RoLFxyXG4gICAgICAgICAgb2Zmc2V0ID0gLWNvbnRlbnRMZW5ndGgsXHJcbiAgICAgICAgICBzaGlmdGVkT3BlcmF0aW9uID0gb3BlcmF0aW9uLnNoaWZ0ZWQob2Zmc2V0KTtcclxuXHJcbiAgICByZXR1cm4gc2hpZnRlZE9wZXJhdGlvblxyXG4gIH1cclxuXHJcbiAgdGFrZW5Gcm9tKGRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgbGV0IGNvbnRlbnQgPSBkZWxldGVPcGVyYXRpb24uZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHBvc2l0aW9uID0gZGVsZXRlT3BlcmF0aW9uLmdldFBvc2l0aW9uKCk7XHJcblxyXG4gICAgbGV0IGNvbnRlbnRMZW5ndGggPSBjb250ZW50Lmxlbmd0aDtcclxuXHJcbiAgICBpZiAoKHRoaXMucG9zaXRpb24gPiBwb3NpdGlvbikgJiYgKHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoID49IHBvc2l0aW9uICsgY29udGVudExlbmd0aCkpIHtcclxuICAgICAgY29uc3QgY29udGVudExlbmd0aCA9IHRoaXMucG9zaXRpb24gLSBwb3NpdGlvbixcclxuICAgICAgICAgICAgc3RhcnQgPSAwLFxyXG4gICAgICAgICAgICBlbmQgPSBzdGFydCArIGNvbnRlbnRMZW5ndGg7ICAvLy9cclxuXHJcbiAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuXHJcbiAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKHRoaXMucG9zaXRpb24gPD0gcG9zaXRpb24pICYmICh0aGlzLnBvc2l0aW9uICsgdGhpcy5jb250ZW50Lmxlbmd0aCA8IHBvc2l0aW9uICsgY29udGVudExlbmd0aCkpIHtcclxuICAgICAgY29udGVudExlbmd0aCA9IChwb3NpdGlvbiArIGNvbnRlbnRMZW5ndGgpIC0gKHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoKTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gKHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoKSAtIHBvc2l0aW9uLFxyXG4gICAgICAgICAgICBlbmQgPSBzdGFydCArIGNvbnRlbnRMZW5ndGg7ICAvLy9cclxuXHJcbiAgICAgIHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiArIHRoaXMuY29udGVudC5sZW5ndGg7XHJcblxyXG4gICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlbGV0ZU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHNwbGl0KGRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgbGV0IGNvbnRlbnQgPSBkZWxldGVPcGVyYXRpb24uZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHBvc2l0aW9uID0gZGVsZXRlT3BlcmF0aW9uLmdldFBvc2l0aW9uKCk7XHJcblxyXG4gICAgbGV0IHN0YXJ0LFxyXG4gICAgICAgIGVuZDtcclxuXHJcbiAgICBzdGFydCA9IDA7XHJcblxyXG4gICAgZW5kID0gdGhpcy5wb3NpdGlvbiAtIHBvc2l0aW9uO1xyXG5cclxuICAgIGNvbnN0IGxlZnRDb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgc3RhcnQgPSB0aGlzLnBvc2l0aW9uIC0gcG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IHJpZ2h0Q29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0KTtcclxuXHJcbiAgICBjb250ZW50ID0gbGVmdENvbnRlbnQgKyByaWdodENvbnRlbnQ7XHJcblxyXG4gICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBpbnZlcnQoSW5zZXJ0T3BlcmF0aW9uLCBEZWxldGVPcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IGluc2VydE9wZXJhdGlvbiA9IEluc2VydE9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKHRoaXMuY29udGVudCwgdGhpcy5wb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGluc2VydE9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIGNsb25lKCkge1xyXG4gICAgY29uc3QgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24odGhpcy5jb250ZW50LCB0aGlzLnBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gZGVsZXRlT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgdG9KU09OKCkge1xyXG4gICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZSxcclxuICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQsXHJcbiAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb24sXHJcbiAgICAgICAgICBqc29uID0ge1xyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGpzb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xyXG4gICAgY29uc3QgeyB0eXBlLCBjb250ZW50LCBwb3NpdGlvbiB9ID0ganNvbixcclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IG5ldyBEZWxldGVPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbikge1xyXG4gICAgY29uc3QgdHlwZSA9IERFTEVURV9UWVBFLCAvLy9cclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IG5ldyBEZWxldGVPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSB7XHJcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBiZWdpbiA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uOyAgLy8vXHJcblxyXG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoYmVnaW4sIGVuZCk7ICAvLy9cclxuXHJcbiAgICBjb25zdCB0eXBlID0gREVMRVRFX1RZUEUsIC8vL1xyXG4gICAgICAgICAgcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLCAvLy9cclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IG5ldyBEZWxldGVPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG59XHJcbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiRGVsZXRlT3BlcmF0aW9uIiwidHlwZSIsImNvbnRlbnQiLCJwb3NpdGlvbiIsImdldFR5cGUiLCJnZXRDb250ZW50IiwiZ2V0UG9zaXRpb24iLCJ0cmFuc2Zvcm1PcGVyYXRpb24iLCJvcGVyYXRpb24iLCJJTlNFUlRfVFlQRSIsInRhdSIsInJobyIsImNsb25lIiwibGVuZ3RoIiwibGVmdCIsInNoaWZ0IiwiREVMRVRFX1RZUEUiLCJ0YWtlbkZyb20iLCJzcGxpdCIsIkVtcHR5T3BlcmF0aW9uIiwiZnJvbU5vdGhpbmciLCJFTVBUWV9UWVBFIiwidHJhbnNmb3JtQ29udGVudCIsInN0YXJ0IiwiZW5kIiwibGVmdENvbnRlbnQiLCJzdWJzdHJpbmciLCJjb250ZW50TGVuZ3RoIiwicmlnaHRDb250ZW50IiwidHJhbnNmb3JtZWRDb250ZW50IiwidHJhbnNmb3JtU2VsZWN0aW9uIiwic2VsZWN0aW9uIiwidHJhbnNmb3JtZWRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZW5kUG9zaXRpb24iLCJvZmZzZXQiLCJzaGlmdGVkIiwiZW5kT2Zmc2V0IiwiZW5kUG9zaXRpb25TaGlmdGVkIiwiZW1wdGllZCIsImRlbGV0ZU9wZXJhdGlvbiIsImZyb21Db250ZW50QW5kUG9zaXRpb24iLCJzaGlmdGVkT3BlcmF0aW9uIiwiaW52ZXJ0IiwiSW5zZXJ0T3BlcmF0aW9uIiwiaW5zZXJ0T3BlcmF0aW9uIiwidG9KU09OIiwianNvbiIsImZyb21KU09OIiwiZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24iLCJiZWdpbiIsInNsaWNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQU1xQkE7OzswREFKTTtxQkFFMEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMsSUFBQSxBQUFNQSxnQ0FBTjthQUFNQSxnQkFDUEMsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLFFBQVE7OEJBRGhCSDtRQUVsQixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWCxJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFFBQVEsR0FBR0E7O2lCQUpDSDs7WUFPbkJJLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO1lBQ2xCOzs7WUFFQUksS0FBQUE7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
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb24vZGVsZXRlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0IEVtcHR5T3BlcmF0aW9uIGZyb20gXCIuLi9vcGVyYXRpb24vZW1wdHlcIjtcclxuXHJcbmltcG9ydCB7IElOU0VSVF9UWVBFLCBERUxFVEVfVFlQRSwgRU1QVFlfVFlQRSB9IGZyb20gXCIuLi90eXBlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVsZXRlT3BlcmF0aW9uIHtcclxuICBjb25zdHJ1Y3Rvcih0eXBlLCBjb250ZW50LCBwb3NpdGlvbikge1xyXG5cdCAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCkge1xyXG4gICAgbGV0IHN0YXJ0LCBlbmQ7XHJcblxyXG4gICAgc3RhcnQgPSAwO1xyXG5cclxuICAgIGVuZCA9IHRoaXMucG9zaXRpb247XHJcblxyXG4gICAgY29uc3QgbGVmdENvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCwgZW5kKSxcclxuICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSB0aGlzLmNvbnRlbnQubGVuZ3RoO1xyXG5cclxuICAgIHN0YXJ0ID0gdGhpcy5wb3NpdGlvbiArIGNvbnRlbnRMZW5ndGg7XHJcblxyXG4gICAgY29uc3QgcmlnaHRDb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQpLFxyXG4gICAgICAgICAgdHJhbnNmb3JtZWRDb250ZW50ID0gbGVmdENvbnRlbnQgKyByaWdodENvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkQ29udGVudDtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybU9wZXJhdGlvbihvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IHR5cGUgPSBvcGVyYXRpb24uZ2V0VHlwZSgpO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIElOU0VSVF9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA8PSByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uIDwgcmhvLmNvbnRlbnQubGVuZ3RoICsgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFt0YXUubGVmdChyaG8pLnNoaWZ0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uID49IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNoaWZ0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcblxyXG4gICAgICBjYXNlIERFTEVURV9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA8IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbdGF1LmNsb25lKCldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnRha2VuRnJvbSh0YXUpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50Lmxlbmd0aCArIHRhdS5wb3NpdGlvbiA+IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNwbGl0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA9PT0gcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudC5sZW5ndGggKyB0YXUucG9zaXRpb24gPD0gcmhvLmNvbnRlbnQubGVuZ3RoICsgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFtFbXB0eU9wZXJhdGlvbi5mcm9tTm90aGluZygpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50Lmxlbmd0aCArIHRhdS5wb3NpdGlvbiA+IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNoaWZ0KHJoby50YWtlbkZyb20odGF1KSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+PSByaG8uY29udGVudC5sZW5ndGggKyByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtyaG8uc2hpZnQodGF1KV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbRW1wdHlPcGVyYXRpb24uZnJvbU5vdGhpbmcoKV07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudC5sZW5ndGggKyB0YXUucG9zaXRpb24gPiByaG8uY29udGVudC5sZW5ndGggKyByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gW3Joby5zaGlmdChyaG8udGFrZW5Gcm9tKHRhdSkpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KShvcGVyYXRpb24sIHRoaXMpO1xyXG5cclxuICAgICAgY2FzZSBFTVBUWV9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKSB7XHJcbiAgICBsZXQgdHJhbnNmb3JtZWRTZWxlY3Rpb247XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgY29udGVudExlbmd0aCA9IHRoaXMuY29udGVudC5sZW5ndGgsXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiwgLy8vXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBjb250ZW50TGVuZ3RoO1xyXG5cclxuICAgIGlmIChmYWxzZSkge1xyXG4gICAgICAvLy9cclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA+PSBlbmRQb3NpdGlvbikge1xyXG4gICAgICBjb25zdCBvZmZzZXQgPSAtY29udGVudExlbmd0aDtcclxuXHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLnNoaWZ0ZWQob2Zmc2V0KTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA+PSBzdGFydFBvc2l0aW9uKSB7XHJcbiAgICAgIGlmIChzZWxlY3Rpb25FbmRQb3NpdGlvbiA+IGVuZFBvc2l0aW9uKSB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvblN0YXJ0UG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgZW5kT2Zmc2V0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiAtIGVuZFBvc2l0aW9uO1xyXG5cclxuICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5zaGlmdGVkKG9mZnNldCkuZW5kUG9zaXRpb25TaGlmdGVkKGVuZE9mZnNldCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvblN0YXJ0UG9zaXRpb247XHJcblxyXG4gICAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmVtcHRpZWQoKS5zaGlmdGVkKG9mZnNldCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uRW5kUG9zaXRpb24gPiBlbmRQb3NpdGlvbikge1xyXG4gICAgICBjb25zdCBlbmRPZmZzZXQgPSAtY29udGVudExlbmd0aDtcclxuXHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmVuZFBvc2l0aW9uU2hpZnRlZChlbmRPZmZzZXQpO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3Rpb25FbmRQb3NpdGlvbiA+IHN0YXJ0UG9zaXRpb24pIHtcclxuICAgICAgY29uc3QgZW5kT2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvbkVuZFBvc2l0aW9uO1xyXG5cclxuICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSBzZWxlY3Rpb24uZW5kUG9zaXRpb25TaGlmdGVkKGVuZE9mZnNldCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5jbG9uZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHNoaWZ0ZWQob2Zmc2V0KSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50LFxyXG4gICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uICsgb2Zmc2V0LFxyXG4gICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzaGlmdChvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSB0aGlzLmNvbnRlbnQubGVuZ3RoLFxyXG4gICAgICAgICAgb2Zmc2V0ID0gLWNvbnRlbnRMZW5ndGgsXHJcbiAgICAgICAgICBzaGlmdGVkT3BlcmF0aW9uID0gb3BlcmF0aW9uLnNoaWZ0ZWQob2Zmc2V0KTtcclxuXHJcbiAgICByZXR1cm4gc2hpZnRlZE9wZXJhdGlvblxyXG4gIH1cclxuXHJcbiAgdGFrZW5Gcm9tKGRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgbGV0IGNvbnRlbnQgPSBkZWxldGVPcGVyYXRpb24uZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHBvc2l0aW9uID0gZGVsZXRlT3BlcmF0aW9uLmdldFBvc2l0aW9uKCk7XHJcblxyXG4gICAgbGV0IGNvbnRlbnRMZW5ndGggPSBjb250ZW50Lmxlbmd0aDtcclxuXHJcbiAgICBpZiAoKHRoaXMucG9zaXRpb24gPiBwb3NpdGlvbikgJiYgKHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoID49IHBvc2l0aW9uICsgY29udGVudExlbmd0aCkpIHtcclxuICAgICAgY29uc3QgY29udGVudExlbmd0aCA9IHRoaXMucG9zaXRpb24gLSBwb3NpdGlvbixcclxuICAgICAgICAgICAgc3RhcnQgPSAwLFxyXG4gICAgICAgICAgICBlbmQgPSBzdGFydCArIGNvbnRlbnRMZW5ndGg7ICAvLy9cclxuXHJcbiAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuXHJcbiAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKHRoaXMucG9zaXRpb24gPD0gcG9zaXRpb24pICYmICh0aGlzLnBvc2l0aW9uICsgdGhpcy5jb250ZW50Lmxlbmd0aCA8IHBvc2l0aW9uICsgY29udGVudExlbmd0aCkpIHtcclxuICAgICAgY29udGVudExlbmd0aCA9IChwb3NpdGlvbiArIGNvbnRlbnRMZW5ndGgpIC0gKHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoKTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gKHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoKSAtIHBvc2l0aW9uLFxyXG4gICAgICAgICAgICBlbmQgPSBzdGFydCArIGNvbnRlbnRMZW5ndGg7ICAvLy9cclxuXHJcbiAgICAgIHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiArIHRoaXMuY29udGVudC5sZW5ndGg7XHJcblxyXG4gICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlbGV0ZU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHNwbGl0KGRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgbGV0IGNvbnRlbnQgPSBkZWxldGVPcGVyYXRpb24uZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHBvc2l0aW9uID0gZGVsZXRlT3BlcmF0aW9uLmdldFBvc2l0aW9uKCk7XHJcblxyXG4gICAgbGV0IHN0YXJ0LFxyXG4gICAgICAgIGVuZDtcclxuXHJcbiAgICBzdGFydCA9IDA7XHJcblxyXG4gICAgZW5kID0gdGhpcy5wb3NpdGlvbiAtIHBvc2l0aW9uO1xyXG5cclxuICAgIGNvbnN0IGxlZnRDb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgc3RhcnQgPSB0aGlzLnBvc2l0aW9uIC0gcG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IHJpZ2h0Q29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0KTtcclxuXHJcbiAgICBjb250ZW50ID0gbGVmdENvbnRlbnQgKyByaWdodENvbnRlbnQ7XHJcblxyXG4gICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBpbnZlcnQoSW5zZXJ0T3BlcmF0aW9uLCBEZWxldGVPcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IGluc2VydE9wZXJhdGlvbiA9IEluc2VydE9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKHRoaXMuY29udGVudCwgdGhpcy5wb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGluc2VydE9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIGNsb25lKCkge1xyXG4gICAgY29uc3QgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24odGhpcy5jb250ZW50LCB0aGlzLnBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gZGVsZXRlT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgdG9KU09OKCkge1xyXG4gICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZSxcclxuICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQsXHJcbiAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb24sXHJcbiAgICAgICAgICBqc29uID0ge1xyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGpzb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xyXG4gICAgY29uc3QgeyB0eXBlLCBjb250ZW50LCBwb3NpdGlvbiB9ID0ganNvbixcclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IG5ldyBEZWxldGVPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbikge1xyXG4gICAgY29uc3QgdHlwZSA9IERFTEVURV9UWVBFLCAvLy9cclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IG5ldyBEZWxldGVPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSB7XHJcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBiZWdpbiA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uOyAgLy8vXHJcblxyXG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoYmVnaW4sIGVuZCk7ICAvLy9cclxuXHJcbiAgICBjb25zdCB0eXBlID0gREVMRVRFX1RZUEUsIC8vL1xyXG4gICAgICAgICAgcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLCAvLy9cclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IG5ldyBEZWxldGVPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG59XHJcbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiRGVsZXRlT3BlcmF0aW9uIiwidHlwZSIsImNvbnRlbnQiLCJwb3NpdGlvbiIsImdldFR5cGUiLCJnZXRDb250ZW50IiwiZ2V0UG9zaXRpb24iLCJ0cmFuc2Zvcm1Db250ZW50Iiwic3RhcnQiLCJlbmQiLCJsZWZ0Q29udGVudCIsInN1YnN0cmluZyIsImNvbnRlbnRMZW5ndGgiLCJsZW5ndGgiLCJyaWdodENvbnRlbnQiLCJ0cmFuc2Zvcm1lZENvbnRlbnQiLCJ0cmFuc2Zvcm1PcGVyYXRpb24iLCJvcGVyYXRpb24iLCJJTlNFUlRfVFlQRSIsInRhdSIsInJobyIsImNsb25lIiwibGVmdCIsInNoaWZ0IiwiREVMRVRFX1RZUEUiLCJ0YWtlbkZyb20iLCJzcGxpdCIsIkVtcHR5T3BlcmF0aW9uIiwiZnJvbU5vdGhpbmciLCJFTVBUWV9UWVBFIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwic2VsZWN0aW9uIiwidHJhbnNmb3JtZWRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZW5kUG9zaXRpb24iLCJvZmZzZXQiLCJzaGlmdGVkIiwiZW5kT2Zmc2V0IiwiZW5kUG9zaXRpb25TaGlmdGVkIiwiZW1wdGllZCIsImRlbGV0ZU9wZXJhdGlvbiIsImZyb21Db250ZW50QW5kUG9zaXRpb24iLCJzaGlmdGVkT3BlcmF0aW9uIiwiaW52ZXJ0IiwiSW5zZXJ0T3BlcmF0aW9uIiwiaW5zZXJ0T3BlcmF0aW9uIiwidG9KU09OIiwianNvbiIsImZyb21KU09OIiwiZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24iLCJiZWdpbiIsInNsaWNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQU1xQkE7OzswREFKTTtxQkFFMEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMsSUFBQSxBQUFNQSxnQ0FBTjthQUFNQSxnQkFDUEMsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLFFBQVE7OEJBRGhCSDtRQUVsQixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWCxJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFFBQVEsR0FBR0E7O2lCQUpDSDs7WUFPbkJJLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO1lBQ2xCOzs7WUFFQUksS0FBQUE7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
@@ -40,6 +40,13 @@ var EmptyOperation = /*#__PURE__*/ function() {
40
40
  return this.type;
41
41
  }
42
42
  },
43
+ {
44
+ key: "transformContent",
45
+ value: function transformContent(content) {
46
+ var transformedContent = content; ///
47
+ return transformedContent;
48
+ }
49
+ },
43
50
  {
44
51
  key: "transformOperation",
45
52
  value: function transformOperation(operation) {
@@ -50,13 +57,6 @@ var EmptyOperation = /*#__PURE__*/ function() {
50
57
  }(operation, this);
51
58
  }
52
59
  },
53
- {
54
- key: "transformContent",
55
- value: function transformContent(content) {
56
- var transformedContent = content; ///
57
- return transformedContent;
58
- }
59
- },
60
60
  {
61
61
  key: "transformSelection",
62
62
  value: function transformSelection(selection) {
@@ -113,4 +113,4 @@ var EmptyOperation = /*#__PURE__*/ function() {
113
113
  return EmptyOperation;
114
114
  }();
115
115
 
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb24vZW1wdHkuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFTVBUWV9UWVBFIH0gZnJvbSBcIi4uL3R5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbXB0eU9wZXJhdGlvbiB7XHJcbiAgY29uc3RydWN0b3IodHlwZSkge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtT3BlcmF0aW9uKG9wZXJhdGlvbikge1xyXG4gICAgcmV0dXJuICgodGF1LCByaG8pID0+IHtcclxuXHJcbiAgICAgIHJldHVybiBbdGF1LmNsb25lKCldO1xyXG5cclxuICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1Db250ZW50KGNvbnRlbnQpIHtcclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IGNvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHJldHVybiB0cmFuc2Zvcm1lZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKSB7XHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5jbG9uZSgpO1xyXG5cclxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHNoaWZ0KG9wZXJhdGlvbikge1xyXG4gIFx0Y29uc3Qgb2Zmc2V0ID0gMCxcclxuICAgICAgICAgIHNoaWZ0ZWRPcGVyYXRpb24gPSBvcGVyYXRpb24uc2hpZnRlZChvZmZzZXQpO1xyXG5cclxuICBcdHJldHVybiBzaGlmdGVkT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgaW52ZXJ0KEluc2VydE9wZXJhdGlvbiwgRGVsZXRlT3BlcmF0aW9uKSB7XHJcbiAgICBjb25zdCB0eXBlID0gRU1QVFlfVFlQRSxcclxuICAgICAgICAgIGVtcHR5T3BlcmF0aW9uID0gbmV3IEVtcHR5T3BlcmF0aW9uKHR5cGUpO1xyXG5cclxuICAgIHJldHVybiBlbXB0eU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIGNsb25lKCkge1xyXG4gICAgY29uc3QgZW1wdHlPcGVyYXRpb24gPSBFbXB0eU9wZXJhdGlvbi5mcm9tTm90aGluZygpO1xyXG5cclxuICAgIHJldHVybiBlbXB0eU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHRvSlNPTigpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUsXHJcbiAgICAgICAgICBqc29uID0ge1xyXG4gICAgICAgICAgICB0eXBlXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgIHJldHVybiBqc29uO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcclxuICAgIGNvbnN0IHsgdHlwZSB9ID0ganNvbixcclxuICAgICAgICAgIGVtcHR5T3BlcmF0aW9uID0gbmV3IEVtcHR5T3BlcmF0aW9uKHR5cGUpO1xyXG5cclxuICAgIHJldHVybiBlbXB0eU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcclxuICAgIGNvbnN0IHR5cGUgPSBFTVBUWV9UWVBFLCAvLy9cclxuICAgICAgICAgIGVtcHR5T3BlcmF0aW9uID0gbmV3IEVtcHR5T3BlcmF0aW9uKHR5cGUpO1xyXG5cclxuICAgIHJldHVybiBlbXB0eU9wZXJhdGlvbjtcclxuICB9XHJcbn1cclxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJFbXB0eU9wZXJhdGlvbiIsInR5cGUiLCJnZXRUeXBlIiwidHJhbnNmb3JtT3BlcmF0aW9uIiwib3BlcmF0aW9uIiwidGF1IiwicmhvIiwiY2xvbmUiLCJ0cmFuc2Zvcm1Db250ZW50IiwiY29udGVudCIsInRyYW5zZm9ybWVkQ29udGVudCIsInRyYW5zZm9ybVNlbGVjdGlvbiIsInNlbGVjdGlvbiIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwic2hpZnQiLCJvZmZzZXQiLCJzaGlmdGVkT3BlcmF0aW9uIiwic2hpZnRlZCIsImludmVydCIsIkluc2VydE9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsIkVNUFRZX1RZUEUiLCJlbXB0eU9wZXJhdGlvbiIsImZyb21Ob3RoaW5nIiwidG9KU09OIiwianNvbiIsImZyb21KU09OIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUlxQkE7OztxQkFGTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFWixJQUFBLEFBQU1BLCtCQUFOO2FBQU1BLGVBQ1BDLElBQUk7OEJBREdEO1FBRWpCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTs7aUJBRktEOztZQUtuQkUsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVU7Z0JBQ1IsT0FBTyxJQUFJLENBQUNELElBQUk7WUFDbEI7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CQyxTQUFTLEVBQUU7Z0JBQzVCLE9BQU8sQUFBQyxTQUFDQyxLQUFLQyxLQUFRO29CQUVwQixPQUFPO3dCQUFDRCxJQUFJRSxLQUFLO3FCQUFHO2dCQUV0QixFQUFHSCxXQUFXLElBQUk7WUFDcEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCQyxPQUFPLEVBQUU7Z0JBQ3hCLElBQU1DLHFCQUFxQkQsU0FBUyxHQUFHO2dCQUV2QyxPQUFPQztZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQkMsU0FBUyxFQUFFO2dCQUM1QixJQUFNQyx1QkFBdUJELFVBQVVMLEtBQUs7Z0JBRTVDLE9BQU9NO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTVYsU0FBUyxFQUFFO2dCQUNoQixJQUFNVyxTQUFTLEdBQ1JDLG1CQUFtQlosVUFBVWEsT0FBTyxDQUFDRjtnQkFFNUMsT0FBT0M7WUFDUjs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPQyxlQUFlLEVBQUVDLGVBQWUsRUFBRTtnQkFDdkMsSUFBTW5CLE9BQU9vQixpQkFBVSxFQUNqQkMsaUJBQWlCLElBdENOdEIsZUFzQ3lCQztnQkFFMUMsT0FBT3FCO1lBQ1Q7OztZQUVBZixLQUFBQTttQkFBQUEsU0FBQUEsUUFBUTtnQkFDTixJQUFNZSxpQkFBaUJ0QixBQTVDTkEsZUE0Q3FCdUIsV0FBVztnQkFFakQsT0FBT0Q7WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTO2dCQUNQLElBQU12QixPQUFPLElBQUksQ0FBQ0EsSUFBSSxFQUNoQndCLE9BQU87b0JBQ0x4QixNQUFBQTtnQkFDRjtnQkFFTixPQUFPd0I7WUFDVDs7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTRCxJQUFJLEVBQUU7Z0JBQ3BCLElBQU0sQUFBRXhCLE9BQVN3QixLQUFUeEIsTUFDRnFCLGlCQUFpQixJQTVETnRCLGVBNER5QkM7Z0JBRTFDLE9BQU9xQjtZQUNUOzs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0EsY0FBYztnQkFDbkIsSUFBTXRCLE9BQU9vQixpQkFBVSxFQUNqQkMsaUJBQWlCLElBbkVOdEIsZUFtRXlCQztnQkFFMUMsT0FBT3FCO1lBQ1Q7OztXQXRFbUJ0QiJ9
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb24vZW1wdHkuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFTVBUWV9UWVBFIH0gZnJvbSBcIi4uL3R5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbXB0eU9wZXJhdGlvbiB7XHJcbiAgY29uc3RydWN0b3IodHlwZSkge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtQ29udGVudChjb250ZW50KSB7XHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZENvbnRlbnQgPSBjb250ZW50OyAvLy9cclxuXHJcbiAgICByZXR1cm4gdHJhbnNmb3JtZWRDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtT3BlcmF0aW9uKG9wZXJhdGlvbikge1xyXG4gICAgcmV0dXJuICgodGF1LCByaG8pID0+IHtcclxuXHJcbiAgICAgIHJldHVybiBbdGF1LmNsb25lKCldO1xyXG5cclxuICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKSB7XHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5jbG9uZSgpO1xyXG5cclxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHNoaWZ0KG9wZXJhdGlvbikge1xyXG4gIFx0Y29uc3Qgb2Zmc2V0ID0gMCxcclxuICAgICAgICAgIHNoaWZ0ZWRPcGVyYXRpb24gPSBvcGVyYXRpb24uc2hpZnRlZChvZmZzZXQpO1xyXG5cclxuICBcdHJldHVybiBzaGlmdGVkT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgaW52ZXJ0KEluc2VydE9wZXJhdGlvbiwgRGVsZXRlT3BlcmF0aW9uKSB7XHJcbiAgICBjb25zdCB0eXBlID0gRU1QVFlfVFlQRSxcclxuICAgICAgICAgIGVtcHR5T3BlcmF0aW9uID0gbmV3IEVtcHR5T3BlcmF0aW9uKHR5cGUpO1xyXG5cclxuICAgIHJldHVybiBlbXB0eU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIGNsb25lKCkge1xyXG4gICAgY29uc3QgZW1wdHlPcGVyYXRpb24gPSBFbXB0eU9wZXJhdGlvbi5mcm9tTm90aGluZygpO1xyXG5cclxuICAgIHJldHVybiBlbXB0eU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHRvSlNPTigpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUsXHJcbiAgICAgICAgICBqc29uID0ge1xyXG4gICAgICAgICAgICB0eXBlXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgIHJldHVybiBqc29uO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcclxuICAgIGNvbnN0IHsgdHlwZSB9ID0ganNvbixcclxuICAgICAgICAgIGVtcHR5T3BlcmF0aW9uID0gbmV3IEVtcHR5T3BlcmF0aW9uKHR5cGUpO1xyXG5cclxuICAgIHJldHVybiBlbXB0eU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcclxuICAgIGNvbnN0IHR5cGUgPSBFTVBUWV9UWVBFLCAvLy9cclxuICAgICAgICAgIGVtcHR5T3BlcmF0aW9uID0gbmV3IEVtcHR5T3BlcmF0aW9uKHR5cGUpO1xyXG5cclxuICAgIHJldHVybiBlbXB0eU9wZXJhdGlvbjtcclxuICB9XHJcbn1cclxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJFbXB0eU9wZXJhdGlvbiIsInR5cGUiLCJnZXRUeXBlIiwidHJhbnNmb3JtQ29udGVudCIsImNvbnRlbnQiLCJ0cmFuc2Zvcm1lZENvbnRlbnQiLCJ0cmFuc2Zvcm1PcGVyYXRpb24iLCJvcGVyYXRpb24iLCJ0YXUiLCJyaG8iLCJjbG9uZSIsInRyYW5zZm9ybVNlbGVjdGlvbiIsInNlbGVjdGlvbiIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwic2hpZnQiLCJvZmZzZXQiLCJzaGlmdGVkT3BlcmF0aW9uIiwic2hpZnRlZCIsImludmVydCIsIkluc2VydE9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsIkVNUFRZX1RZUEUiLCJlbXB0eU9wZXJhdGlvbiIsImZyb21Ob3RoaW5nIiwidG9KU09OIiwianNvbiIsImZyb21KU09OIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUlxQkE7OztxQkFGTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFWixJQUFBLEFBQU1BLCtCQUFOO2FBQU1BLGVBQ1BDLElBQUk7OEJBREdEO1FBRWpCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTs7aUJBRktEOztZQUtuQkUsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVU7Z0JBQ1IsT0FBTyxJQUFJLENBQUNELElBQUk7WUFDbEI7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCQyxPQUFPLEVBQUU7Z0JBQ3hCLElBQU1DLHFCQUFxQkQsU0FBUyxHQUFHO2dCQUV2QyxPQUFPQztZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQkMsU0FBUyxFQUFFO2dCQUM1QixPQUFPLEFBQUMsU0FBQ0MsS0FBS0MsS0FBUTtvQkFFcEIsT0FBTzt3QkFBQ0QsSUFBSUUsS0FBSztxQkFBRztnQkFFdEIsRUFBR0gsV0FBVyxJQUFJO1lBQ3BCOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQkMsU0FBUyxFQUFFO2dCQUM1QixJQUFNQyx1QkFBdUJELFVBQVVGLEtBQUs7Z0JBRTVDLE9BQU9HO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTVAsU0FBUyxFQUFFO2dCQUNoQixJQUFNUSxTQUFTLEdBQ1JDLG1CQUFtQlQsVUFBVVUsT0FBTyxDQUFDRjtnQkFFNUMsT0FBT0M7WUFDUjs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPQyxlQUFlLEVBQUVDLGVBQWUsRUFBRTtnQkFDdkMsSUFBTW5CLE9BQU9vQixpQkFBVSxFQUNqQkMsaUJBQWlCLElBdENOdEIsZUFzQ3lCQztnQkFFMUMsT0FBT3FCO1lBQ1Q7OztZQUVBWixLQUFBQTttQkFBQUEsU0FBQUEsUUFBUTtnQkFDTixJQUFNWSxpQkFBaUJ0QixBQTVDTkEsZUE0Q3FCdUIsV0FBVztnQkFFakQsT0FBT0Q7WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTO2dCQUNQLElBQU12QixPQUFPLElBQUksQ0FBQ0EsSUFBSSxFQUNoQndCLE9BQU87b0JBQ0x4QixNQUFBQTtnQkFDRjtnQkFFTixPQUFPd0I7WUFDVDs7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTRCxJQUFJLEVBQUU7Z0JBQ3BCLElBQU0sQUFBRXhCLE9BQVN3QixLQUFUeEIsTUFDRnFCLGlCQUFpQixJQTVETnRCLGVBNER5QkM7Z0JBRTFDLE9BQU9xQjtZQUNUOzs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0EsY0FBYztnQkFDbkIsSUFBTXRCLE9BQU9vQixpQkFBVSxFQUNqQkMsaUJBQWlCLElBbkVOdEIsZUFtRXlCQztnQkFFMUMsT0FBT3FCO1lBQ1Q7OztXQXRFbUJ0QiJ9
@@ -61,6 +61,18 @@ var InsertOperation = /*#__PURE__*/ function() {
61
61
  return this.position;
62
62
  }
63
63
  },
64
+ {
65
+ key: "transformContent",
66
+ value: function transformContent(content) {
67
+ var start, end;
68
+ start = 0;
69
+ end = this.position;
70
+ var leftContent = content.substring(start, end);
71
+ start = this.position;
72
+ var rightContent = content.substring(start), transformedContent = leftContent + this.content + rightContent;
73
+ return transformedContent;
74
+ }
75
+ },
64
76
  {
65
77
  key: "transformOperation",
66
78
  value: function transformOperation(operation) {
@@ -125,18 +137,6 @@ var InsertOperation = /*#__PURE__*/ function() {
125
137
  }
126
138
  }
127
139
  },
128
- {
129
- key: "transformContent",
130
- value: function transformContent(content) {
131
- var start, end;
132
- start = 0;
133
- end = this.position;
134
- var leftContent = content.substring(start, end);
135
- start = this.position;
136
- var rightContent = content.substring(start), transformedContent = leftContent + this.content + rightContent;
137
- return transformedContent;
138
- }
139
- },
140
140
  {
141
141
  key: "transformSelection",
142
142
  value: function transformSelection(selection) {
@@ -242,4 +242,4 @@ var InsertOperation = /*#__PURE__*/ function() {
242
242
  return InsertOperation;
243
243
  }();
244
244
 
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb24vaW5zZXJ0LmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0IGNvbnRlbnRDb21wYXJlIGZyb20gXCIuLi9jb250ZW50Q29tcGFyZVwiO1xyXG5pbXBvcnQgRGVsZXRlT3BlcmF0aW9uIGZyb20gXCIuLi9vcGVyYXRpb24vZGVsZXRlXCI7XHJcblxyXG5pbXBvcnQgeyBJTlNFUlRfVFlQRSwgREVMRVRFX1RZUEUsIEVNUFRZX1RZUEUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc2VydE9wZXJhdGlvbiB7XHJcbiAgY29uc3RydWN0b3IodHlwZSwgY29udGVudCwgcG9zaXRpb24pIHtcclxuXHQgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGU7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFBvc2l0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb247XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1PcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBjb25zdCB0eXBlID0gb3BlcmF0aW9uLmdldFR5cGUoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBJTlNFUlRfVFlQRTpcclxuICAgICAgICByZXR1cm4gKCh0YXUsIHJobykgPT4ge1xyXG5cclxuICAgICAgICAgIGlmICh0YXUucG9zaXRpb24gPCByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA9PT0gcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudCA9PT0gcmhvLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gW3RhdS5jbG9uZSgpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50ICE9PSByaG8uY29udGVudCkge1xyXG4gICAgICAgICAgICAgIGlmIChjb250ZW50Q29tcGFyZShyaG8uY29udGVudCwgdGF1LmNvbnRlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW3Joby5zaGlmdCh0YXUpXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gW3Joby5zaGlmdCh0YXUpXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSkob3BlcmF0aW9uLCB0aGlzKTtcclxuXHJcbiAgICAgIGNhc2UgREVMRVRFX1RZUEU6XHJcbiAgICAgICAgcmV0dXJuICgodGF1LCByaG8pID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uICsgdGF1LmNvbnRlbnQubGVuZ3RoIDw9IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gW3RhdS5jbG9uZSgpXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uIDwgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbcmhvLmxlZnQodGF1KSwgcmhvLmxlZnQodGF1KS5zaGlmdChyaG8uc2hpZnQocmhvLnJpZ2h0KHRhdSkpKV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+PSByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtyaG8uc2hpZnQodGF1KV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcblxyXG4gICAgICBjYXNlIEVNUFRZX1RZUEU6XHJcbiAgICAgICAgcmV0dXJuICgodGF1LCByaG8pID0+IHtcclxuXHJcbiAgICAgICAgICByZXR1cm4gW3RhdS5jbG9uZSgpXTtcclxuXHJcbiAgICAgICAgfSkob3BlcmF0aW9uLCB0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCkge1xyXG4gICAgbGV0IHN0YXJ0LFxyXG4gICAgICAgIGVuZDtcclxuXHJcbiAgICBzdGFydCA9IDA7XHJcblxyXG4gICAgZW5kID0gdGhpcy5wb3NpdGlvbjtcclxuXHJcbiAgICBjb25zdCBsZWZ0Q29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgIHN0YXJ0ID0gdGhpcy5wb3NpdGlvbjtcclxuXHJcbiAgICBjb25zdCByaWdodENvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZENvbnRlbnQgPSBsZWZ0Q29udGVudCArIHRoaXMuY29udGVudCArIHJpZ2h0Q29udGVudDtcclxuXHJcbiAgICByZXR1cm4gdHJhbnNmb3JtZWRDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtU2VsZWN0aW9uKHNlbGVjdGlvbikge1xyXG4gICAgbGV0IHRyYW5zZm9ybWVkU2VsZWN0aW9uO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSwgLy8vXHJcbiAgICAgICAgICBjb250ZW50TGVuZ3RoID0gdGhpcy5jb250ZW50Lmxlbmd0aCxcclxuICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uOyAvLy9cclxuXHJcbiAgICBpZiAoZmFsc2UpIHtcclxuICAgICAgLy8vXHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPj0gc3RhcnRQb3NpdGlvbikge1xyXG4gICAgICBjb25zdCBvZmZzZXQgPSBjb250ZW50TGVuZ3RoOyAvLy9cclxuXHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLnNoaWZ0ZWQob2Zmc2V0KTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uRW5kUG9zaXRpb24gPiBzdGFydFBvc2l0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSB0aGlzLmNvbnRlbnQubGVuZ3RoLFxyXG4gICAgICAgICAgICBlbmRPZmZzZXQgPSBjb250ZW50TGVuZ3RoOyAgLy8vXHJcblxyXG4gICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5lbmRQb3NpdGlvblNoaWZ0ZWQoZW5kT2Zmc2V0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmNsb25lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2hpZnRlZChvZmZzZXQpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQsXHJcbiAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb24gKyBvZmZzZXQsXHJcbiAgICAgICAgICBpbnNlcnRPcGVyYXRpb24gPSBJbnNlcnRPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGluc2VydE9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHNoaWZ0KG9wZXJhdGlvbikge1xyXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5jb250ZW50Lmxlbmd0aCxcclxuXHRcdFx0XHQgIG9mZnNldCA9IGxlbmd0aCwgIC8vL1xyXG4gICAgICAgICAgc2hpZnRlZE9wZXJhdGlvbiA9IG9wZXJhdGlvbi5zaGlmdGVkKG9mZnNldCk7XHJcblxyXG4gICAgcmV0dXJuIHNoaWZ0ZWRPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBsZWZ0KGRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgbGV0IGNvbnRlbnQgPSBkZWxldGVPcGVyYXRpb24uZ2V0Q29udGVudCgpO1xyXG5cclxuICAgIGNvbnN0IHBvc2l0aW9uID0gZGVsZXRlT3BlcmF0aW9uLmdldFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBjb250ZW50TGVuZ3RoID0gdGhpcy5wb3NpdGlvbiAtIHBvc2l0aW9uLFxyXG4gICAgICAgICAgc3RhcnQgPSAwLFxyXG4gICAgICAgICAgZW5kID0gY29udGVudExlbmd0aDsgIC8vL1xyXG5cclxuICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuXHJcbiAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGRlbGV0ZU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHJpZ2h0KGRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgbGV0IGNvbnRlbnQgPSBkZWxldGVPcGVyYXRpb24uZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHBvc2l0aW9uID0gZGVsZXRlT3BlcmF0aW9uLmdldFBvc2l0aW9uKCk7XHJcblxyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBvc2l0aW9uIC0gcG9zaXRpb247XHJcblxyXG4gICAgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uO1xyXG5cclxuICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCk7XHJcblxyXG4gICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBpbnZlcnQoSW5zZXJ0T3BlcmF0aW9uLCBEZWxldGVPcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKHRoaXMuY29udGVudCwgdGhpcy5wb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGRlbGV0ZU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIGNsb25lKCkge1xyXG4gICAgY29uc3QgaW5zZXJ0T3BlcmF0aW9uID0gSW5zZXJ0T3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24odGhpcy5jb250ZW50LCB0aGlzLnBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gaW5zZXJ0T3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgdG9KU09OKCkge1xyXG4gICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZSxcclxuICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQsXHJcbiAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb24sXHJcbiAgICAgICAgICBqc29uID0ge1xyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICBwb3NpdGlvblxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICByZXR1cm4ganNvbjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XHJcbiAgICBjb25zdCB7IHR5cGUsIGNvbnRlbnQsIHBvc2l0aW9uIH0gPSBqc29uLFxyXG4gICAgICAgICAgaW5zZXJ0T3BlcmF0aW9uID0gbmV3IEluc2VydE9wZXJhdGlvbih0eXBlLCBjb250ZW50LCBwb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGluc2VydE9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tQ29udGVudEFuZFBvc2l0aW9uKGNvbnRlbnQsIHBvc2l0aW9uKSB7XHJcbiAgICBjb25zdCB0eXBlID0gSU5TRVJUX1RZUEUsICAvLy9cclxuICAgICAgICAgIGluc2VydE9wZXJhdGlvbiA9IG5ldyBJbnNlcnRPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBpbnNlcnRPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSB7XHJcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHR5cGUgPSBJTlNFUlRfVFlQRSwgIC8vL1xyXG4gICAgICAgICAgcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLCAvLy9cclxuICAgICAgICAgIGluc2VydE9wZXJhdGlvbiA9IG5ldyBJbnNlcnRPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBpbnNlcnRPcGVyYXRpb247XHJcbiAgfVxyXG59XHJcbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiSW5zZXJ0T3BlcmF0aW9uIiwidHlwZSIsImNvbnRlbnQiLCJwb3NpdGlvbiIsImdldFR5cGUiLCJnZXRDb250ZW50IiwiZ2V0UG9zaXRpb24iLCJ0cmFuc2Zvcm1PcGVyYXRpb24iLCJvcGVyYXRpb24iLCJJTlNFUlRfVFlQRSIsInRhdSIsInJobyIsImNsb25lIiwiY29udGVudENvbXBhcmUiLCJzaGlmdCIsIkRFTEVURV9UWVBFIiwibGVuZ3RoIiwibGVmdCIsInJpZ2h0IiwiRU1QVFlfVFlQRSIsInRyYW5zZm9ybUNvbnRlbnQiLCJzdGFydCIsImVuZCIsImxlZnRDb250ZW50Iiwic3Vic3RyaW5nIiwicmlnaHRDb250ZW50IiwidHJhbnNmb3JtZWRDb250ZW50IiwidHJhbnNmb3JtU2VsZWN0aW9uIiwic2VsZWN0aW9uIiwidHJhbnNmb3JtZWRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJjb250ZW50TGVuZ3RoIiwic3RhcnRQb3NpdGlvbiIsIm9mZnNldCIsInNoaWZ0ZWQiLCJlbmRPZmZzZXQiLCJlbmRQb3NpdGlvblNoaWZ0ZWQiLCJpbnNlcnRPcGVyYXRpb24iLCJmcm9tQ29udGVudEFuZFBvc2l0aW9uIiwic2hpZnRlZE9wZXJhdGlvbiIsImRlbGV0ZU9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsImludmVydCIsInRvSlNPTiIsImpzb24iLCJmcm9tSlNPTiIsImZyb21Db250ZW50QW5kU2VsZWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQU9xQkE7OzttRUFMTTsyREFDQztxQkFFeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMsSUFBQSxBQUFNQSxnQ0FBTjthQUFNQSxnQkFDUEMsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLFFBQVE7OEJBRGhCSDtRQUVsQixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWCxJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFFBQVEsR0FBR0E7O2lCQUpDSDs7WUFPbkJJLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO1lBQ2xCOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLGFBQWE7Z0JBQ1gsT0FBTyxJQUFJLENB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
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb24vaW5zZXJ0LmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0IGNvbnRlbnRDb21wYXJlIGZyb20gXCIuLi9jb250ZW50Q29tcGFyZVwiO1xyXG5pbXBvcnQgRGVsZXRlT3BlcmF0aW9uIGZyb20gXCIuLi9vcGVyYXRpb24vZGVsZXRlXCI7XHJcblxyXG5pbXBvcnQgeyBJTlNFUlRfVFlQRSwgREVMRVRFX1RZUEUsIEVNUFRZX1RZUEUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc2VydE9wZXJhdGlvbiB7XHJcbiAgY29uc3RydWN0b3IodHlwZSwgY29udGVudCwgcG9zaXRpb24pIHtcclxuXHQgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGU7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFBvc2l0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb247XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1Db250ZW50KGNvbnRlbnQpIHtcclxuICAgIGxldCBzdGFydCxcclxuICAgICAgICAgZW5kO1xyXG5cclxuICAgIHN0YXJ0ID0gMDtcclxuXHJcbiAgICBlbmQgPSB0aGlzLnBvc2l0aW9uO1xyXG5cclxuICAgIGNvbnN0IGxlZnRDb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgc3RhcnQgPSB0aGlzLnBvc2l0aW9uO1xyXG5cclxuICAgIGNvbnN0IHJpZ2h0Q29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0KSxcclxuICAgICAgICAgIHRyYW5zZm9ybWVkQ29udGVudCA9IGxlZnRDb250ZW50ICsgdGhpcy5jb250ZW50ICsgcmlnaHRDb250ZW50O1xyXG5cclxuICAgIHJldHVybiB0cmFuc2Zvcm1lZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1PcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBjb25zdCB0eXBlID0gb3BlcmF0aW9uLmdldFR5cGUoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBJTlNFUlRfVFlQRTpcclxuICAgICAgICByZXR1cm4gKCh0YXUsIHJobykgPT4ge1xyXG5cclxuICAgICAgICAgIGlmICh0YXUucG9zaXRpb24gPCByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA9PT0gcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudCA9PT0gcmhvLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gW3RhdS5jbG9uZSgpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50ICE9PSByaG8uY29udGVudCkge1xyXG4gICAgICAgICAgICAgIGlmIChjb250ZW50Q29tcGFyZShyaG8uY29udGVudCwgdGF1LmNvbnRlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW3Joby5zaGlmdCh0YXUpXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gW3Joby5zaGlmdCh0YXUpXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSkob3BlcmF0aW9uLCB0aGlzKTtcclxuXHJcbiAgICAgIGNhc2UgREVMRVRFX1RZUEU6XHJcbiAgICAgICAgcmV0dXJuICgodGF1LCByaG8pID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uICsgdGF1LmNvbnRlbnQubGVuZ3RoIDw9IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gW3RhdS5jbG9uZSgpXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uIDwgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbcmhvLmxlZnQodGF1KSwgcmhvLmxlZnQodGF1KS5zaGlmdChyaG8uc2hpZnQocmhvLnJpZ2h0KHRhdSkpKV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+PSByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtyaG8uc2hpZnQodGF1KV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcblxyXG4gICAgICBjYXNlIEVNUFRZX1RZUEU6XHJcbiAgICAgICAgcmV0dXJuICgodGF1LCByaG8pID0+IHtcclxuXHJcbiAgICAgICAgICByZXR1cm4gW3RhdS5jbG9uZSgpXTtcclxuXHJcbiAgICAgICAgfSkob3BlcmF0aW9uLCB0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24pIHtcclxuICAgIGxldCB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksIC8vL1xyXG4gICAgICAgICAgY29udGVudExlbmd0aCA9IHRoaXMuY29udGVudC5sZW5ndGgsXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjsgLy8vXHJcblxyXG4gICAgaWYgKGZhbHNlKSB7XHJcbiAgICAgIC8vL1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3Rpb25TdGFydFBvc2l0aW9uID49IHN0YXJ0UG9zaXRpb24pIHtcclxuICAgICAgY29uc3Qgb2Zmc2V0ID0gY29udGVudExlbmd0aDsgLy8vXHJcblxyXG4gICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5zaGlmdGVkKG9mZnNldCk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbkVuZFBvc2l0aW9uID4gc3RhcnRQb3NpdGlvbikge1xyXG4gICAgICBjb25zdCBjb250ZW50TGVuZ3RoID0gdGhpcy5jb250ZW50Lmxlbmd0aCxcclxuICAgICAgICAgICAgZW5kT2Zmc2V0ID0gY29udGVudExlbmd0aDsgIC8vL1xyXG5cclxuICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSBzZWxlY3Rpb24uZW5kUG9zaXRpb25TaGlmdGVkKGVuZE9mZnNldCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5jbG9uZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHNoaWZ0ZWQob2Zmc2V0KSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50LFxyXG4gICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uICsgb2Zmc2V0LFxyXG4gICAgICAgICAgaW5zZXJ0T3BlcmF0aW9uID0gSW5zZXJ0T3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBpbnNlcnRPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzaGlmdChvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuY29udGVudC5sZW5ndGgsXHJcblx0XHRcdFx0ICBvZmZzZXQgPSBsZW5ndGgsICAvLy9cclxuICAgICAgICAgIHNoaWZ0ZWRPcGVyYXRpb24gPSBvcGVyYXRpb24uc2hpZnRlZChvZmZzZXQpO1xyXG5cclxuICAgIHJldHVybiBzaGlmdGVkT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgbGVmdChkZWxldGVPcGVyYXRpb24pIHtcclxuICAgIGxldCBjb250ZW50ID0gZGVsZXRlT3BlcmF0aW9uLmdldENvbnRlbnQoKTtcclxuXHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbi5nZXRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgY29udGVudExlbmd0aCA9IHRoaXMucG9zaXRpb24gLSBwb3NpdGlvbixcclxuICAgICAgICAgIHN0YXJ0ID0gMCxcclxuICAgICAgICAgIGVuZCA9IGNvbnRlbnRMZW5ndGg7ICAvLy9cclxuXHJcbiAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICByaWdodChkZWxldGVPcGVyYXRpb24pIHtcclxuICAgIGxldCBjb250ZW50ID0gZGVsZXRlT3BlcmF0aW9uLmdldENvbnRlbnQoKSxcclxuICAgICAgICBwb3NpdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbi5nZXRQb3NpdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wb3NpdGlvbiAtIHBvc2l0aW9uO1xyXG5cclxuICAgIHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjtcclxuXHJcbiAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQpO1xyXG5cclxuICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gZGVsZXRlT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgaW52ZXJ0KEluc2VydE9wZXJhdGlvbiwgRGVsZXRlT3BlcmF0aW9uKSB7XHJcbiAgICBjb25zdCBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRQb3NpdGlvbih0aGlzLmNvbnRlbnQsIHRoaXMucG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBjbG9uZSgpIHtcclxuICAgIGNvbnN0IGluc2VydE9wZXJhdGlvbiA9IEluc2VydE9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKHRoaXMuY29udGVudCwgdGhpcy5wb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGluc2VydE9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHRvSlNPTigpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUsXHJcbiAgICAgICAgICBjb250ZW50ID0gdGhpcy5jb250ZW50LFxyXG4gICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICAgICAganNvbiA9IHtcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgcG9zaXRpb25cclxuICAgICAgICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGpzb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xyXG4gICAgY29uc3QgeyB0eXBlLCBjb250ZW50LCBwb3NpdGlvbiB9ID0ganNvbixcclxuICAgICAgICAgIGluc2VydE9wZXJhdGlvbiA9IG5ldyBJbnNlcnRPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBpbnNlcnRPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbikge1xyXG4gICAgY29uc3QgdHlwZSA9IElOU0VSVF9UWVBFLCAgLy8vXHJcbiAgICAgICAgICBpbnNlcnRPcGVyYXRpb24gPSBuZXcgSW5zZXJ0T3BlcmF0aW9uKHR5cGUsIGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gaW5zZXJ0T3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbikge1xyXG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICB0eXBlID0gSU5TRVJUX1RZUEUsICAvLy9cclxuICAgICAgICAgIHBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiwgLy8vXHJcbiAgICAgICAgICBpbnNlcnRPcGVyYXRpb24gPSBuZXcgSW5zZXJ0T3BlcmF0aW9uKHR5cGUsIGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gaW5zZXJ0T3BlcmF0aW9uO1xyXG4gIH1cclxufVxyXG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIkluc2VydE9wZXJhdGlvbiIsInR5cGUiLCJjb250ZW50IiwicG9zaXRpb24iLCJnZXRUeXBlIiwiZ2V0Q29udGVudCIsImdldFBvc2l0aW9uIiwidHJhbnNmb3JtQ29udGVudCIsInN0YXJ0IiwiZW5kIiwibGVmdENvbnRlbnQiLCJzdWJzdHJpbmciLCJyaWdodENvbnRlbnQiLCJ0cmFuc2Zvcm1lZENvbnRlbnQiLCJ0cmFuc2Zvcm1PcGVyYXRpb24iLCJvcGVyYXRpb24iLCJJTlNFUlRfVFlQRSIsInRhdSIsInJobyIsImNsb25lIiwiY29udGVudENvbXBhcmUiLCJzaGlmdCIsIkRFTEVURV9UWVBFIiwibGVuZ3RoIiwibGVmdCIsInJpZ2h0IiwiRU1QVFlfVFlQRSIsInRyYW5zZm9ybVNlbGVjdGlvbiIsInNlbGVjdGlvbiIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzZWxlY3Rpb25FbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwiY29udGVudExlbmd0aCIsInN0YXJ0UG9zaXRpb24iLCJvZmZzZXQiLCJzaGlmdGVkIiwiZW5kT2Zmc2V0IiwiZW5kUG9zaXRpb25TaGlmdGVkIiwiaW5zZXJ0T3BlcmF0aW9uIiwiZnJvbUNvbnRlbnRBbmRQb3NpdGlvbiIsInNoaWZ0ZWRPcGVyYXRpb24iLCJkZWxldGVPcGVyYXRpb24iLCJEZWxldGVPcGVyYXRpb24iLCJpbnZlcnQiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJmcm9tQ29udGVudEFuZFNlbGVjdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFPcUJBOzs7bUVBTE07MkRBQ0M7cUJBRXlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRDLElBQUEsQUFBTUEsZ0NBQU47YUFBTUEsZ0JBQ1BDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxRQUFROzhCQURoQkg7UUFFbEIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1gsSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxRQUFRLEdBQUdBOztpQkFKQ0g7O1lBT25CSSxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtZQUNsQjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhO2dCQUNYLE9BQU8sSUFBSSxD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
@@ -377,28 +377,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
377
377
  return active;
378
378
  }
379
379
  },
380
- {
381
- key: "undo",
382
- value: function undo(event, element) {
383
- var operation = this.undoBuffer.undo();
384
- if (operation !== null) {
385
- var undoable = false;
386
- this.applyOperation(operation);
387
- this.intermediateHandler(event, element, undoable);
388
- }
389
- }
390
- },
391
- {
392
- key: "redo",
393
- value: function redo(event, element) {
394
- var operation = this.undoBuffer.redo();
395
- if (operation !== null) {
396
- var undoable = false;
397
- this.applyOperation(operation);
398
- this.intermediateHandler(event, element, undoable);
399
- }
400
- }
401
- },
402
380
  {
403
381
  key: "getContent",
404
382
  value: function getContent() {
@@ -459,15 +437,30 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
459
437
  }
460
438
  },
461
439
  {
462
- key: "applyOperation",
463
- value: function applyOperation(operation) {
464
- var content = this.getContent(), selection = this.getSelection();
465
- var transformedContent = operation.transformContent(content), transformedSelection = operation.transformSelection(selection);
466
- content = transformedContent; ///
467
- selection = transformedSelection; ///
468
- var setPreviousContent = false, setPreviousSelection = false;
469
- this.setContent(content, setPreviousContent);
440
+ key: "undo",
441
+ value: function undo(event, element) {
442
+ var operation = this.undoBuffer.undo();
443
+ if (operation !== null) {
444
+ this.revert(event, element, operation);
445
+ }
446
+ }
447
+ },
448
+ {
449
+ key: "redo",
450
+ value: function redo(event, element) {
451
+ var operation = this.undoBuffer.redo();
452
+ if (operation !== null) {
453
+ this.revert(event, element, operation);
454
+ }
455
+ }
456
+ },
457
+ {
458
+ key: "revert",
459
+ value: function revert(event, element, operation) {
460
+ var undoable = false, selection = _selection.default.fromOperation(operation), setPreviousSelection = false;
461
+ this.applyOperation(operation);
470
462
  this.setSelection(selection, setPreviousSelection);
463
+ this.intermediateHandler(event, element, undoable);
471
464
  }
472
465
  },
473
466
  {
@@ -480,11 +473,23 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
480
473
  var setPreviousContent = false, setPreviousSelection = false;
481
474
  this.setContent(content, setPreviousContent);
482
475
  this.setSelection(selection, setPreviousSelection);
483
- this.undoBuffer.transform(transformedPendingOperations);
476
+ this.undoBuffer.transform(operations);
484
477
  var event = null, element = this, undoable = false, eventType = CHANGE_EVENT_TYPE;
485
478
  this.intermediateHandler(event, element, undoable, eventType);
486
479
  }
487
480
  },
481
+ {
482
+ key: "applyOperation",
483
+ value: function applyOperation(operation) {
484
+ var content = this.getContent(), selection = this.getSelection();
485
+ var transformedContent = operation.transformContent(content), transformedSelection = operation.transformSelection(selection);
486
+ content = transformedContent; ///
487
+ selection = transformedSelection; ///
488
+ var setPreviousContent = false, setPreviousSelection = false;
489
+ this.setContent(content, setPreviousContent);
490
+ this.setSelection(selection, setPreviousSelection);
491
+ }
492
+ },
488
493
  {
489
494
  key: "activate",
490
495
  value: function activate() {
@@ -660,4 +665,4 @@ function defer(func) {
660
665
  setTimeout(func, 0);
661
666
  }
662
667
 
663
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCwgZXZlbnRUeXBlcyB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XHJcbmltcG9ydCBEZWxldGVPcGVyYXRpb24gZnJvbSBcIi4vb3BlcmF0aW9uL2RlbGV0ZVwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtQ29udGVudCBmcm9tIFwiLi90cmFuc2Zvcm0vY29udGVudFwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtU2VsZWN0aW9uIGZyb20gXCIuL3RyYW5zZm9ybS9zZWxlY3Rpb25cIjtcclxuaW1wb3J0IGdlbmVyYXRlT3BlcmF0aW9ucyBmcm9tIFwiLi9vcGVyYXRpb25zL2dlbmVyYXRlXCI7XHJcblxyXG5pbXBvcnQgeyBaX0tFWV9DT0RFIH0gZnJvbSBcIi4va2V5Q29kZXNcIjtcclxuaW1wb3J0IHsgVEVYVCwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcblxyXG5jb25zdCB7IENVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgIENPUFlfRVZFTlRfVFlQRSxcclxuICAgICAgICBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgUEFTVEVfRVZFTlRfVFlQRSxcclxuICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgS0VZRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgIENPTlRFWFRNRU5VX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSA9IGV2ZW50VHlwZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIsIHByZXZpb3VzQ29udGVudCwgcHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIGlzUmVhZE9ubHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkT25seTtcclxuICB9XHJcblxyXG4gIGdldFVuZG9CdWZmZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51bmRvQnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldm91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9jdXNlZChmb2N1c2VkKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVhZE9ubHkocmVhZE9ubHkpIHtcclxuICAgIHRoaXMucmVhZE9ubHkgPSByZWFkT25seTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpIHtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGludGVybWVkaWF0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlID0gdHJ1ZSwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucHJldmlvdXNDb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodW5kb2FibGUpIHtcclxuICAgICAgaWYgKGNvbnRlbnRDaGFuZ2VkKSB7XHJcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9ucyA9IGdlbmVyYXRlT3BlcmF0aW9ucyh0aGlzLnByZXZpb3VzQ29udGVudCwgY29udGVudCk7XHJcblxyXG4gICAgICAgIHRoaXMudW5kb0J1ZmZlci5hZGRPcGVyYXRpb25zKG9wZXJhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsga2V5Q29kZSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgaWYgKGtleUNvZGUgPT09IFpfS0VZX0NPREUpIHtcclxuICAgICAgY29uc3QgeyBjdHJsS2V5LCBtZXRhS2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgIGlmIChjdHJsS2V5IHx8IG1ldGFLZXkpIHtcclxuICAgICAgICBjb25zdCB7IHNoaWZ0S2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgICAgc2hpZnRLZXkgP1xyXG4gICAgICAgICAgdGhpcy5yZWRvKGV2ZW50LCBlbGVtZW50KSA6XHJcbiAgICAgICAgICAgIHRoaXMudW5kbyhldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCB1bmRvYWJsZSA9IHRydWUsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmx1ckhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBpbnB1dEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwYXN0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsgY2xpcGJvYXJkRGF0YSB9ID0gZXZlbnQsXHJcbiAgICAgICAgICB0ZXh0RGF0YSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShURVhUKTtcclxuXHJcbiAgICBpZiAodGV4dERhdGEgPT09IEVNUFRZX1NUUklORykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoIXNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGV4dERhdGEsIC8vL1xyXG4gICAgICAgICAgaW5zZXJ0T3BlcmF0aW9uID0gSW5zZXJ0T3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICBvcGVyYXRpb24gPSBpbnNlcnRPcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgY29weUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbXB0eSA9IHNlbGVjdGlvbi5pc0VtcHR5KCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZENvbnRlbnQgPSB0aGlzLmdldFNlbGVjdGVkQ29udGVudCgpO1xyXG5cclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGN1dEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbXB0eSA9IHNlbGVjdGlvbi5pc0VtcHR5KCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZENvbnRlbnQgPSB0aGlzLmdldFNlbGVjdGVkQ29udGVudCgpO1xyXG5cclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICBvcGVyYXRpb24gPSBkZWxldGVPcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmUoKSB7XHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmhhc0NsYXNzKFwiYWN0aXZlXCIpO1xyXG5cclxuICAgIHJldHVybiBhY3RpdmU7XHJcbiAgfVxyXG5cclxuICB1bmRvKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLnVuZG9CdWZmZXIudW5kbygpO1xyXG5cclxuICAgIGlmIChvcGVyYXRpb24gIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgdW5kb2FibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVkbyhldmVudCwgZWxlbWVudCkge1xyXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy51bmRvQnVmZmVyLnJlZG8oKTtcclxuXHJcbiAgICBpZiAob3BlcmF0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IHVuZG9hYmxlID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHZhbHVlIH0gPSBkb21FbGVtZW50LFxyXG4gICAgICAgICAgY29udGVudCA9IHZhbHVlOyAgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ29udGVudCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3RlZENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBoYXNDb250ZW50Q2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gdGhpcy5wcmV2aW91c0NvbnRlbnQpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSAhY29udGVudFByZXZpb3VzQ29udGVudDtcclxuXHJcbiAgICByZXR1cm4gY29udGVudENoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBoYXNTZWxlY3Rpb25DaGFuZ2VkKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyh0aGlzLnByZXZpb3VzU2VsZWN0aW9uKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSAhc2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb25DaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBPYmplY3QuYXNzaWduKGRvbUVsZW1lbnQsIHtcclxuICAgICAgdmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c0NvbnRlbnQpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseU9wZXJhdGlvbihvcGVyYXRpb24pIHtcclxuICAgIGxldCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZENvbnRlbnQgPSBvcGVyYXRpb24udHJhbnNmb3JtQ29udGVudChjb250ZW50KSxcclxuICAgICAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gb3BlcmF0aW9uLnRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24pO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0ob3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucyksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy51bmRvQnVmZmVyLnRyYW5zZm9ybSh0cmFuc2Zvcm1lZFBlbmRpbmdPcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IG51bGwsXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcyxcclxuICAgICAgICAgIHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9mZihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBsZXQgeyBlbGVtZW50IH0gPSBldmVudExpc3RlbmVyO1xyXG5cclxuICAgICAgY29uc3QgeyBoYW5kbGVyIH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICBoYW5kbGVyRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xyXG5cclxuICAgICAgZWxlbWVudCA9IHRoaXM7IC8vL1xyXG5cclxuICAgICAgaWYgKChoYW5kbGVyICE9PSB0aGlzLmJsdXJIYW5kbGVyKSAmJiAoaGFuZGxlciAhPT0gdGhpcy5mb2N1c0hhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLnNjcm9sbEhhbmRsZXIpKSB7XHJcbiAgICAgICAgaGFuZGxlci5jYWxsKGhhbmRsZXJFbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkNoYW5nZSwgb25TY3JvbGwsIG9uRm9jdXMsIG9uQmx1ciB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyOyAvLy9cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gY29udGVudDsgIC8vL1xyXG5cclxuICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb247ICAvLy9cclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub25DaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9uRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBibHVySGFuZGxlciAmJiB0aGlzLm9uQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihDVVRfRVZFTlRfVFlQRSwgdGhpcy5jdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKENPUFlfRVZFTlRfVFlQRSwgdGhpcy5jb3B5SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihQQVNURV9FVkVOVF9UWVBFLCB0aGlzLnBhc3RlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub24oU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUsIHRoaXMuc2VsZWN0Q2hhbmdlSGFuZGxlcik7XHJcbiAgfVxyXG5cclxuICB3aWxsVW5tb3VudCgpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9uU2Nyb2xsLCBvbkZvY3VzLCBvbkJsdXIgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZSwgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1cjsgLy8vXHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub2ZmU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9mZkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vZmZCbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihDVVRfRVZFTlRfVFlQRSwgdGhpcy5jdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT1BZX0VWRU5UX1RZUEUsIHRoaXMuY29weUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub2ZmKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25DaGFuZ2VcIixcclxuICAgIFwib25TY3JvbGxcIixcclxuICAgIFwib25Gb2N1c1wiLFxyXG4gICAgXCJvbkJsdXJcIlxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGZvY3VzZWQgPSBmYWxzZSxcclxuICAgICAgICAgIHJlYWRPbmx5ID0gZmFsc2UsXHJcbiAgICAgICAgICB1bmRvQnVmZmVyID0gVW5kb0J1ZmZlci5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbCxcclxuICAgICAgICAgIHJpY2hUZXh0YXJlYSA9IEVsZW1lbnQuZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCBmb2N1c2VkLCByZWFkT25seSwgdW5kb0J1ZmZlciwgcHJldmlvdXNDb250ZW50LCBwcmV2aW91c1NlbGVjdGlvbiwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcclxuXHJcbiAgICByZXR1cm4gcmljaFRleHRhcmVhO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZGVmZXIoZnVuYykge1xyXG4gIHNldFRpbWVvdXQoZnVuYywgMCk7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJpY2hUZXh0YXJlYSIsIkNVVF9FVkVOVF9UWVBFIiwiZXZlbnRUeXBlcyIsIkNPUFlfRVZFTlRfVFlQRSIsIkJMVVJfRVZFTlRfVFlQRSIsIlBBU1RFX0VWRU5UX1RZUEUiLCJJTlBVVF9FVkVOVF9UWVBFIiwiRk9DVVNfRVZFTlRfVFlQRSIsIkNIQU5HRV9FVkVOVF9UWVBFIiwiU0NST0xMX0VWRU5UX1RZUEUiLCJLRVlET1dOX0VWRU5UX1RZUEUiLCJDT05URVhUTUVOVV9FVkVOVF9UWVBFIiwiU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUiLCJzZWxlY3RvciIsImZvY3VzZWQiLCJyZWFkT25seSIsInVuZG9CdWZmZXIiLCJwcmV2aW91c0NvbnRlbnQiLCJwcmV2aW91c1NlbGVjdGlvbiIsImludGVybWVkaWF0ZUhhbmRsZXIiLCJldmVudCIsImVsZW1lbnQiLCJ1bmRvYWJsZSIsImV2ZW50VHlwZSIsInNlbGVjdGlvbkNoYW5nZWQiLCJoYXNTZWxlY3Rpb25DaGFuZ2VkIiwiY29udGVudCIsInNldENvbnRlbnQiLCJnZXRDb250ZW50Iiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwiY29udGVudENoYW5nZWQiLCJoYXNDb250ZW50Q2hhbmdlZCIsImNoYW5nZWQiLCJjYWxsSGFuZGxlcnMiLCJvcGVyYXRpb25zIiwiZ2VuZXJhdGVPcGVyYXRpb25zIiwiYWRkT3BlcmF0aW9ucyIsInNlbGVjdENoYW5nZUhhbmRsZXIiLCJjb250ZXh0bWVudUhhbmRsZXIiLCJwcmV2ZW50RGVmYXVsdCIsImtleURvd25IYW5kbGVyIiwia2V5Q29kZSIsIlpfS0VZX0NPREUiLCJjdHJsS2V5IiwibWV0YUtleSIsInNoaWZ0S2V5IiwicmVkbyIsInVuZG8iLCJkZWZlciIsInNjcm9sbEhhbmRsZXIiLCJmb2N1c0hhbmRsZXIiLCJibHVySGFuZGxlciIsImlucHV0SGFuZGxlciIsInBhc3RlSGFuZGxlciIsImNsaXBib2FyZERhdGEiLCJ0ZXh0RGF0YSIsImdldERhdGEiLCJURVhUIiwiRU1QVFlfU1RSSU5HIiwic2VsZWN0aW9uRW1wdHkiLCJpc0VtcHR5IiwiZGVsZXRlT3BlcmF0aW9uIiwiRGVsZXRlT3BlcmF0aW9uIiwiZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24iLCJvcGVyYXRpb24iLCJhcHBseU9wZXJhdGlvbiIsImluc2VydE9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsImNvcHlIYW5kbGVyIiwic2VsZWN0ZWRDb250ZW50IiwiZ2V0U2VsZWN0ZWRDb250ZW50IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiY3V0SGFuZGxlciIsImlzRm9jdXNlZCIsImlzUmVhZE9ubHkiLCJnZXRVbmRvQnVmZmVyIiwiZ2V0UHJldmlvdXNDb250ZW50IiwicHJldm91c0NvbnRlbnQiLCJnZXRQcmV2aW91c1NlbGVjdGlvbiIsInNldEZvY3VzZWQiLCJzZXRSZWFkT25seSIsInNldFByZXZpb3VzQ29udGVudCIsInNldFByZXZpb3VzU2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsImRvbUVsZW1lbnQiLCJnZXRET01FbGVtZW50IiwidmFsdWUiLCJTZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInN0YXJ0IiwiZW5kIiwic2xpY2UiLCJjb250ZW50UHJldmlvdXNDb250ZW50Iiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsInNldFNlbGVjdGlvblJhbmdlIiwidHJhbnNmb3JtZWRDb250ZW50IiwidHJhbnNmb3JtQ29udGVudCIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwidHJhbnNmb3JtIiwidHJhbnNmb3JtZWRQZW5kaW5nT3BlcmF0aW9ucyIsImFjdGl2YXRlIiwib24iLCJhZGRDbGFzcyIsImRlYWN0aXZhdGUiLCJvZmYiLCJyZW1vdmVDbGFzcyIsIm9uQmx1ciIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib2ZmQmx1ciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvbkZvY3VzIiwib2ZmRm9jdXMiLCJvblNjcm9sbCIsIm9mZlNjcm9sbCIsIm9uQ2hhbmdlIiwiY2hhbmdlSGFuZGxlciIsIm9mZkNoYW5nZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsImV2ZW50TGlzdGVuZXJzIiwiZmluZEV2ZW50TGlzdGVuZXJzIiwiZm9yRWFjaCIsImV2ZW50TGlzdGVuZXIiLCJoYW5kbGVyRWxlbWVudCIsImNhbGwiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJkb2N1bWVudCIsIndpbGxVbm1vdW50IiwiZnJvbUNsYXNzIiwiQ2xhc3MiLCJFbGVtZW50IiwiVW5kb0J1ZmZlciIsImZyb21Ob3RoaW5nIiwicmljaFRleHRhcmVhIiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUEyQnFCQTs7O29CQXpCeUI7OERBRXhCOytEQUNDOzJEQUNLOzJEQUNBOzREQUNDOytEQUNFOzZEQUNBO3dCQUVKO3lCQUNROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
668
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCwgZXZlbnRUeXBlcyB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XHJcbmltcG9ydCBEZWxldGVPcGVyYXRpb24gZnJvbSBcIi4vb3BlcmF0aW9uL2RlbGV0ZVwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtQ29udGVudCBmcm9tIFwiLi90cmFuc2Zvcm0vY29udGVudFwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtU2VsZWN0aW9uIGZyb20gXCIuL3RyYW5zZm9ybS9zZWxlY3Rpb25cIjtcclxuaW1wb3J0IGdlbmVyYXRlT3BlcmF0aW9ucyBmcm9tIFwiLi9vcGVyYXRpb25zL2dlbmVyYXRlXCI7XHJcblxyXG5pbXBvcnQgeyBaX0tFWV9DT0RFIH0gZnJvbSBcIi4va2V5Q29kZXNcIjtcclxuaW1wb3J0IHsgVEVYVCwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcblxyXG5jb25zdCB7IENVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgIENPUFlfRVZFTlRfVFlQRSxcclxuICAgICAgICBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgUEFTVEVfRVZFTlRfVFlQRSxcclxuICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgS0VZRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgIENPTlRFWFRNRU5VX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSA9IGV2ZW50VHlwZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIsIHByZXZpb3VzQ29udGVudCwgcHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIGlzUmVhZE9ubHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkT25seTtcclxuICB9XHJcblxyXG4gIGdldFVuZG9CdWZmZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51bmRvQnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldm91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9jdXNlZChmb2N1c2VkKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVhZE9ubHkocmVhZE9ubHkpIHtcclxuICAgIHRoaXMucmVhZE9ubHkgPSByZWFkT25seTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpIHtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGludGVybWVkaWF0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlID0gdHJ1ZSwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucHJldmlvdXNDb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodW5kb2FibGUpIHtcclxuICAgICAgaWYgKGNvbnRlbnRDaGFuZ2VkKSB7XHJcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9ucyA9IGdlbmVyYXRlT3BlcmF0aW9ucyh0aGlzLnByZXZpb3VzQ29udGVudCwgY29udGVudCk7XHJcblxyXG4gICAgICAgIHRoaXMudW5kb0J1ZmZlci5hZGRPcGVyYXRpb25zKG9wZXJhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsga2V5Q29kZSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgaWYgKGtleUNvZGUgPT09IFpfS0VZX0NPREUpIHtcclxuICAgICAgY29uc3QgeyBjdHJsS2V5LCBtZXRhS2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgIGlmIChjdHJsS2V5IHx8IG1ldGFLZXkpIHtcclxuICAgICAgICBjb25zdCB7IHNoaWZ0S2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgICAgc2hpZnRLZXkgP1xyXG4gICAgICAgICAgdGhpcy5yZWRvKGV2ZW50LCBlbGVtZW50KSA6XHJcbiAgICAgICAgICAgIHRoaXMudW5kbyhldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCB1bmRvYWJsZSA9IHRydWUsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmx1ckhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBpbnB1dEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwYXN0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsgY2xpcGJvYXJkRGF0YSB9ID0gZXZlbnQsXHJcbiAgICAgICAgICB0ZXh0RGF0YSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShURVhUKTtcclxuXHJcbiAgICBpZiAodGV4dERhdGEgPT09IEVNUFRZX1NUUklORykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoIXNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGV4dERhdGEsIC8vL1xyXG4gICAgICAgICAgaW5zZXJ0T3BlcmF0aW9uID0gSW5zZXJ0T3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICBvcGVyYXRpb24gPSBpbnNlcnRPcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgY29weUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbXB0eSA9IHNlbGVjdGlvbi5pc0VtcHR5KCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZENvbnRlbnQgPSB0aGlzLmdldFNlbGVjdGVkQ29udGVudCgpO1xyXG5cclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGN1dEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbXB0eSA9IHNlbGVjdGlvbi5pc0VtcHR5KCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZENvbnRlbnQgPSB0aGlzLmdldFNlbGVjdGVkQ29udGVudCgpO1xyXG5cclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICBvcGVyYXRpb24gPSBkZWxldGVPcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmUoKSB7XHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmhhc0NsYXNzKFwiYWN0aXZlXCIpO1xyXG5cclxuICAgIHJldHVybiBhY3RpdmU7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZW50KCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgeyB2YWx1ZSB9ID0gZG9tRWxlbWVudCxcclxuICAgICAgICAgIGNvbnRlbnQgPSB2YWx1ZTsgIC8vL1xyXG5cclxuICAgIHJldHVybiBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0aW9uKCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gU2VsZWN0aW9uLmZyb21ET01FbGVtZW50KGRvbUVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc3RhcnQgPSBzdGFydFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBlbmQgPSBlbmRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0ZWRDb250ZW50ID0gY29udGVudC5zbGljZShzdGFydCwgZW5kKTtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgaGFzQ29udGVudENoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBjb250ZW50UHJldmlvdXNDb250ZW50ID0gKGNvbnRlbnQgPT09IHRoaXMucHJldmlvdXNDb250ZW50KSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gIWNvbnRlbnRQcmV2aW91c0NvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25QcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbi5pc0VxdWFsVG8odGhpcy5wcmV2aW91c1NlbGVjdGlvbiksXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gIXNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uQ2hhbmdlZDtcclxuICB9XHJcblxyXG4gIHNldENvbnRlbnQoY29udGVudCwgc2V0UHJldmlvdXNDb250ZW50ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNDb250ZW50KSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gY29udGVudDsgIC8vL1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlKSB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgZG9tRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdW5kbyhldmVudCwgZWxlbWVudCkge1xyXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy51bmRvQnVmZmVyLnVuZG8oKTtcclxuXHJcbiAgICBpZiAob3BlcmF0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMucmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVkbyhldmVudCwgZWxlbWVudCkge1xyXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy51bmRvQnVmZmVyLnJlZG8oKTtcclxuXHJcbiAgICBpZiAob3BlcmF0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMucmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbU9wZXJhdGlvbihvcGVyYXRpb24pLFxyXG4gICAgICAgICAgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0ob3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucyksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy51bmRvQnVmZmVyLnRyYW5zZm9ybShvcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IG51bGwsXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcyxcclxuICAgICAgICAgIHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtZWRDb250ZW50ID0gb3BlcmF0aW9uLnRyYW5zZm9ybUNvbnRlbnQoY29udGVudCksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IG9wZXJhdGlvbi50cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgY29uc3Qgc2V0UHJldmlvdXNDb250ZW50ID0gZmFsc2UsXHJcbiAgICAgICAgICBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9mZihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBsZXQgeyBlbGVtZW50IH0gPSBldmVudExpc3RlbmVyO1xyXG5cclxuICAgICAgY29uc3QgeyBoYW5kbGVyIH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICBoYW5kbGVyRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xyXG5cclxuICAgICAgZWxlbWVudCA9IHRoaXM7IC8vL1xyXG5cclxuICAgICAgaWYgKChoYW5kbGVyICE9PSB0aGlzLmJsdXJIYW5kbGVyKSAmJiAoaGFuZGxlciAhPT0gdGhpcy5mb2N1c0hhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLnNjcm9sbEhhbmRsZXIpKSB7XHJcbiAgICAgICAgaGFuZGxlci5jYWxsKGhhbmRsZXJFbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkNoYW5nZSwgb25TY3JvbGwsIG9uRm9jdXMsIG9uQmx1ciB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyOyAvLy9cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gY29udGVudDsgIC8vL1xyXG5cclxuICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb247ICAvLy9cclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub25DaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9uRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBibHVySGFuZGxlciAmJiB0aGlzLm9uQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihDVVRfRVZFTlRfVFlQRSwgdGhpcy5jdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKENPUFlfRVZFTlRfVFlQRSwgdGhpcy5jb3B5SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihQQVNURV9FVkVOVF9UWVBFLCB0aGlzLnBhc3RlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub24oU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUsIHRoaXMuc2VsZWN0Q2hhbmdlSGFuZGxlcik7XHJcbiAgfVxyXG5cclxuICB3aWxsVW5tb3VudCgpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9uU2Nyb2xsLCBvbkZvY3VzLCBvbkJsdXIgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZSwgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1cjsgLy8vXHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub2ZmU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9mZkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vZmZCbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihDVVRfRVZFTlRfVFlQRSwgdGhpcy5jdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT1BZX0VWRU5UX1RZUEUsIHRoaXMuY29weUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub2ZmKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25DaGFuZ2VcIixcclxuICAgIFwib25TY3JvbGxcIixcclxuICAgIFwib25Gb2N1c1wiLFxyXG4gICAgXCJvbkJsdXJcIlxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGZvY3VzZWQgPSBmYWxzZSxcclxuICAgICAgICAgIHJlYWRPbmx5ID0gZmFsc2UsXHJcbiAgICAgICAgICB1bmRvQnVmZmVyID0gVW5kb0J1ZmZlci5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbCxcclxuICAgICAgICAgIHJpY2hUZXh0YXJlYSA9IEVsZW1lbnQuZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCBmb2N1c2VkLCByZWFkT25seSwgdW5kb0J1ZmZlciwgcHJldmlvdXNDb250ZW50LCBwcmV2aW91c1NlbGVjdGlvbiwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcclxuXHJcbiAgICByZXR1cm4gcmljaFRleHRhcmVhO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZGVmZXIoZnVuYykge1xyXG4gIHNldFRpbWVvdXQoZnVuYywgMCk7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJpY2hUZXh0YXJlYSIsIkNVVF9FVkVOVF9UWVBFIiwiZXZlbnRUeXBlcyIsIkNPUFlfRVZFTlRfVFlQRSIsIkJMVVJfRVZFTlRfVFlQRSIsIlBBU1RFX0VWRU5UX1RZUEUiLCJJTlBVVF9FVkVOVF9UWVBFIiwiRk9DVVNfRVZFTlRfVFlQRSIsIkNIQU5HRV9FVkVOVF9UWVBFIiwiU0NST0xMX0VWRU5UX1RZUEUiLCJLRVlET1dOX0VWRU5UX1RZUEUiLCJDT05URVhUTUVOVV9FVkVOVF9UWVBFIiwiU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUiLCJzZWxlY3RvciIsImZvY3VzZWQiLCJyZWFkT25seSIsInVuZG9CdWZmZXIiLCJwcmV2aW91c0NvbnRlbnQiLCJwcmV2aW91c1NlbGVjdGlvbiIsImludGVybWVkaWF0ZUhhbmRsZXIiLCJldmVudCIsImVsZW1lbnQiLCJ1bmRvYWJsZSIsImV2ZW50VHlwZSIsInNlbGVjdGlvbkNoYW5nZWQiLCJoYXNTZWxlY3Rpb25DaGFuZ2VkIiwiY29udGVudCIsInNldENvbnRlbnQiLCJnZXRDb250ZW50Iiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwiY29udGVudENoYW5nZWQiLCJoYXNDb250ZW50Q2hhbmdlZCIsImNoYW5nZWQiLCJjYWxsSGFuZGxlcnMiLCJvcGVyYXRpb25zIiwiZ2VuZXJhdGVPcGVyYXRpb25zIiwiYWRkT3BlcmF0aW9ucyIsInNlbGVjdENoYW5nZUhhbmRsZXIiLCJjb250ZXh0bWVudUhhbmRsZXIiLCJwcmV2ZW50RGVmYXVsdCIsImtleURvd25IYW5kbGVyIiwia2V5Q29kZSIsIlpfS0VZX0NPREUiLCJjdHJsS2V5IiwibWV0YUtleSIsInNoaWZ0S2V5IiwicmVkbyIsInVuZG8iLCJkZWZlciIsInNjcm9sbEhhbmRsZXIiLCJmb2N1c0hhbmRsZXIiLCJibHVySGFuZGxlciIsImlucHV0SGFuZGxlciIsInBhc3RlSGFuZGxlciIsImNsaXBib2FyZERhdGEiLCJ0ZXh0RGF0YSIsImdldERhdGEiLCJURVhUIiwiRU1QVFlfU1RSSU5HIiwic2VsZWN0aW9uRW1wdHkiLCJpc0VtcHR5IiwiZGVsZXRlT3BlcmF0aW9uIiwiRGVsZXRlT3BlcmF0aW9uIiwiZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24iLCJvcGVyYXRpb24iLCJhcHBseU9wZXJhdGlvbiIsImluc2VydE9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsImNvcHlIYW5kbGVyIiwic2VsZWN0ZWRDb250ZW50IiwiZ2V0U2VsZWN0ZWRDb250ZW50IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiY3V0SGFuZGxlciIsImlzRm9jdXNlZCIsImlzUmVhZE9ubHkiLCJnZXRVbmRvQnVmZmVyIiwiZ2V0UHJldmlvdXNDb250ZW50IiwicHJldm91c0NvbnRlbnQiLCJnZXRQcmV2aW91c1NlbGVjdGlvbiIsInNldEZvY3VzZWQiLCJzZXRSZWFkT25seSIsInNldFByZXZpb3VzQ29udGVudCIsInNldFByZXZpb3VzU2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsImRvbUVsZW1lbnQiLCJnZXRET01FbGVtZW50IiwidmFsdWUiLCJTZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInN0YXJ0IiwiZW5kIiwic2xpY2UiLCJjb250ZW50UHJldmlvdXNDb250ZW50Iiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsInNldFNlbGVjdGlvblJhbmdlIiwicmV2ZXJ0IiwiZnJvbU9wZXJhdGlvbiIsInRyYW5zZm9ybSIsInRyYW5zZm9ybWVkQ29udGVudCIsInRyYW5zZm9ybUNvbnRlbnQiLCJ0cmFuc2Zvcm1lZFNlbGVjdGlvbiIsInRyYW5zZm9ybVNlbGVjdGlvbiIsImFjdGl2YXRlIiwib24iLCJhZGRDbGFzcyIsImRlYWN0aXZhdGUiLCJvZmYiLCJyZW1vdmVDbGFzcyIsIm9uQmx1ciIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib2ZmQmx1ciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvbkZvY3VzIiwib2ZmRm9jdXMiLCJvblNjcm9sbCIsIm9mZlNjcm9sbCIsIm9uQ2hhbmdlIiwiY2hhbmdlSGFuZGxlciIsIm9mZkNoYW5nZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsImV2ZW50TGlzdGVuZXJzIiwiZmluZEV2ZW50TGlzdGVuZXJzIiwiZm9yRWFjaCIsImV2ZW50TGlzdGVuZXIiLCJoYW5kbGVyRWxlbWVudCIsImNhbGwiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJkb2N1bWVudCIsIndpbGxVbm1vdW50IiwiZnJvbUNsYXNzIiwiQ2xhc3MiLCJFbGVtZW50IiwiVW5kb0J1ZmZlciIsImZyb21Ob3RoaW5nIiwicmljaFRleHRhcmVhIiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJmdW5jIiwi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