three-nebula 10.0.3 → 11.0.0

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.
Files changed (41) hide show
  1. package/.claude/rules/no-coauthor.md +4 -0
  2. package/CHANGELOG.md +23 -0
  3. package/build/cjs/behaviour/Rotate.js +2 -2
  4. package/build/cjs/core/System.js +2 -2
  5. package/build/cjs/core/constants.js +2 -2
  6. package/build/cjs/emitter/Emitter.js +10 -3
  7. package/build/cjs/initializer/Rotation.js +95 -0
  8. package/build/cjs/initializer/index.js +9 -1
  9. package/build/cjs/initializer/types.js +4 -2
  10. package/build/cjs/renderer/GPURenderer/Desktop/index.js +23 -2
  11. package/build/cjs/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +2 -2
  12. package/build/cjs/renderer/GPURenderer/Desktop/shaders/vertexShader.js +2 -2
  13. package/build/cjs/renderer/GPURenderer/Mobile/index.js +23 -2
  14. package/build/cjs/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +2 -2
  15. package/build/cjs/renderer/GPURenderer/Mobile/shaders/vertexShader.js +2 -2
  16. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/constants.js +9 -4
  17. package/build/cjs/renderer/GPURenderer/common/stores/Target.js +3 -1
  18. package/build/cjs/renderer/MeshRenderer.js +8 -8
  19. package/build/cjs/renderer/SpriteRenderer.js +6 -1
  20. package/build/cjs/utils/uid.js +3 -5
  21. package/build/esm/behaviour/Rotate.js +2 -2
  22. package/build/esm/core/System.js +2 -2
  23. package/build/esm/core/constants.js +3 -3
  24. package/build/esm/emitter/Emitter.js +11 -4
  25. package/build/esm/initializer/Rotation.js +54 -0
  26. package/build/esm/initializer/index.js +2 -1
  27. package/build/esm/initializer/types.js +2 -1
  28. package/build/esm/renderer/GPURenderer/Desktop/index.js +28 -2
  29. package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +8 -1
  30. package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +4 -1
  31. package/build/esm/renderer/GPURenderer/Mobile/index.js +28 -2
  32. package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +8 -1
  33. package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +4 -1
  34. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +6 -3
  35. package/build/esm/renderer/GPURenderer/common/stores/Target.js +3 -1
  36. package/build/esm/renderer/MeshRenderer.js +7 -8
  37. package/build/esm/renderer/SpriteRenderer.js +5 -1
  38. package/build/esm/utils/uid.js +2 -2
  39. package/build/three-nebula.js +1 -1
  40. package/build/three-nebula.js.map +1 -1
  41. package/package.json +12 -12
@@ -87,19 +87,14 @@ var MeshRenderer = /*#__PURE__*/function (_BaseRenderer) {
87
87
  value: function onParticleUpdate(particle) {
88
88
  var target = particle.target,
89
89
  useAlpha = particle.useAlpha,
90
- useColor = particle.useColor,
91
- rotation = particle.rotation;
90
+ useColor = particle.useColor;
92
91
 
93
92
  if (!target) {
94
93
  return;
95
94
  }
96
95
 
97
96
  target.position.copy(particle.position);
98
-
99
- if (!this.isThreeSprite(particle)) {
100
- target.rotation.set(rotation.x, rotation.y, rotation.z);
101
- }
102
-
97
+ this.rotate(particle);
103
98
  this.scale(particle);
104
99
 
105
100
  if (useAlpha) {
@@ -111,6 +106,11 @@ var MeshRenderer = /*#__PURE__*/function (_BaseRenderer) {
111
106
  target.material.color.copy(particle.color);
112
107
  }
113
108
  }
109
+ }, {
110
+ key: "rotate",
111
+ value: function rotate(particle) {
112
+ particle.target.rotation.set(particle.rotation.x, particle.rotation.y, particle.rotation.z);
113
+ }
114
114
  }, {
115
115
  key: "scale",
116
116
  value: function scale(particle) {
@@ -133,4 +133,4 @@ var MeshRenderer = /*#__PURE__*/function (_BaseRenderer) {
133
133
  }(_BaseRenderer2["default"]);
134
134
 
135
135
  exports["default"] = MeshRenderer;
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9NZXNoUmVuZGVyZXIuanMiXSwibmFtZXMiOlsiTWVzaFJlbmRlcmVyIiwiY29udGFpbmVyIiwiVEhSRUUiLCJ0eXBlIiwiX3RhcmdldFBvb2wiLCJQb29sIiwiX21hdGVyaWFsUG9vbCIsIl9ib2R5IiwiTWVzaCIsIkJveEdlb21ldHJ5IiwiTWVzaExhbWJlcnRNYXRlcmlhbCIsImNvbG9yIiwicGFydGljbGUiLCJ0YXJnZXQiLCJpc1Nwcml0ZSIsImJvZHkiLCJnZXQiLCJ1c2VBbHBoYSIsInVzZUNvbG9yIiwibWF0ZXJpYWwiLCJfX3B1aWQiLCJQVUlEIiwiaWQiLCJwb3NpdGlvbiIsImNvcHkiLCJhZGQiLCJyb3RhdGlvbiIsImlzVGhyZWVTcHJpdGUiLCJzZXQiLCJ4IiwieSIsInoiLCJzY2FsZSIsIm9wYWNpdHkiLCJhbHBoYSIsInRyYW5zcGFyZW50IiwiZXhwaXJlIiwicmVtb3ZlIiwiQmFzZVJlbmRlcmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBO0FBQ0E7QUFDQTtJQUNxQkEsWTs7Ozs7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDRSx3QkFBWUMsU0FBWixFQUF1QkMsS0FBdkIsRUFBOEI7QUFBQTs7QUFBQTtBQUM1Qiw4QkFBTUMseUJBQU47QUFFQSxVQUFLRixTQUFMLEdBQWlCQSxTQUFqQjtBQUNBLFVBQUtHLFdBQUwsR0FBbUIsSUFBSUMsVUFBSixFQUFuQjtBQUNBLFVBQUtDLGFBQUwsR0FBcUIsSUFBSUQsVUFBSixFQUFyQjtBQUNBLFVBQUtFLEtBQUwsR0FBYSxJQUFJTCxLQUFLLENBQUNNLElBQVYsQ0FDWCxJQUFJTixLQUFLLENBQUNPLFdBQVYsQ0FBc0IsRUFBdEIsRUFBMEIsRUFBMUIsRUFBOEIsRUFBOUIsQ0FEVyxFQUVYLElBQUlQLEtBQUssQ0FBQ1EsbUJBQVYsQ0FBOEI7QUFBRUMsTUFBQUEsS0FBSyxFQUFF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QUFRLENBQUNNLFFBQWxDLEVBQ0UsS0FBS1osYUFBTCxDQUFtQjhCLE1BQW5CLENBQTBCeEIsUUFBUSxDQUFDQyxNQUFULENBQWdCTSxRQUExQzs7QUFFRixhQUFLZixXQUFMLENBQWlCZ0MsTUFBakIsQ0FBd0J4QixRQUFRLENBQUNDLE1BQWpDOztBQUNBLGFBQUtaLFNBQUwsQ0FBZW9DLE1BQWYsQ0FBc0J6QixRQUFRLENBQUNDLE1BQS9CO0FBQ0FELFFBQUFBLFFBQVEsQ0FBQ0MsTUFBVCxHQUFrQixJQUFsQjtBQUNEO0FBQ0Y7OztFQWxGdUN5Qix5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSAnLi9CYXNlUmVuZGVyZXInO1xuaW1wb3J0IHsgUFVJRCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBvb2wgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IFJFTkRFUkVSX1RZUEVfTUVTSCBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQHJlcXVpcmVzIFRIUkVFIC0geyBNZXNoLCBCb3hHZW9tZXRyeSwgTWVzaExhbWJlcnRNYXRlcmlhbCB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lc2hSZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGFpbmVyIC0gQW4gT2JqZWN0M0QgY29udGFpbmVyLCB1c3VhbGx5IGEgVEhSRUUuU2NlbmVcbiAgICogQHBhcmFtIHtvYmplY3R9IFRIUkVFIC0gVEhSRUUgQXBpXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb250YWluZXIsIFRIUkVFKSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0aGlzLl90YXJnZXRQb29sID0gbmV3IFBvb2woKTtcbiAgICB0aGlzLl9tYXRlcmlhbFBvb2wgPSBuZXcgUG9vbCgpO1xuICAgIHRoaXMuX2JvZHkgPSBuZXcgVEhSRUUuTWVzaChcbiAgICAgIG5ldyBUSFJFRS5Cb3hHZW9tZXRyeSg1MCwgNTAsIDUwKSxcbiAgICAgIG5ldyBUSFJFRS5NZXNoTGFtYmVydE1hdGVyaWFsKHsgY29sb3I6ICcjZmYwMDAwJyB9KVxuICAgICk7XG4gIH1cblxuICBpc1RocmVlU3ByaXRlKHBhcnRpY2xlKSB7XG4gICAgcmV0dXJuIHBhcnRpY2xlLnRhcmdldC5pc1Nwcml0ZTtcbiAgfVxuXG4gIG9uU3lzdGVtVXBkYXRlKCkge31cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIGlmICghcGFydGljbGUudGFyZ2V0KSB7XG4gICAgICAvL3NldCB0YXJnZXRcbiAgICAgIGlmICghcGFydGljbGUuYm9keSkgcGFydGljbGUuYm9keSA9IHRoaXMuX2JvZHk7XG4gICAgICBwYXJ0aWNsZS50YXJnZXQgPSB0aGlzLl90YXJnZXRQb29sLmdldChwYXJ0aWNsZS5ib2R5KTtcblxuICAgICAgLy9zZXQgbWF0ZXJpYWxcbiAgICAgIGlmIChwYXJ0aWNsZS51c2VBbHBoYSB8fCBwYXJ0aWNsZS51c2VDb2xvcikge1xuICAgICAgICBwYXJ0aWNsZS50YXJnZXQubWF0ZXJpYWwuX19wdWlkID0gUFVJRC5pZChwYXJ0aWNsZS5ib2R5Lm1hdGVyaWFsKTtcbiAgICAgICAgcGFydGljbGUudGFyZ2V0Lm1hdGVyaWFsID0gdGhpcy5fbWF0ZXJpYWxQb29sLmdldChcbiAgICAgICAgICBwYXJ0aWNsZS50YXJnZXQubWF0ZXJpYWxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFydGljbGUudGFyZ2V0KSB7XG4gICAgICBwYXJ0aWNsZS50YXJnZXQucG9zaXRpb24uY29weShwYXJ0aWNsZS5wb3NpdGlvbik7XG4gICAgICB0aGlzLmNvbnRhaW5lci5hZGQocGFydGljbGUudGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgeyB0YXJnZXQsIHVzZUFscGhhLCB1c2VDb2xvciwgcm90YXRpb24gfSA9IHBhcnRpY2xlO1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0YXJnZXQucG9zaXRpb24uY29weShwYXJ0aWNsZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoIXRoaXMuaXNUaHJlZVNwcml0ZShwYXJ0aWNsZSkpIHtcbiAgICAgIHRhcmdldC5yb3RhdGlvbi5zZXQocm90YXRpb24ueCwgcm90YXRpb24ueSwgcm90YXRpb24ueik7XG4gICAgfVxuXG4gICAgdGhpcy5zY2FsZShwYXJ0aWNsZSk7XG5cbiAgICBpZiAodXNlQWxwaGEpIHtcbiAgICAgIHRhcmdldC5tYXRlcmlhbC5vcGFjaXR5ID0gcGFydGljbGUuYWxwaGE7XG4gICAgICB0YXJnZXQubWF0ZXJpYWwudHJhbnNwYXJlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh1c2VDb2xvcikge1xuICAgICAgdGFyZ2V0Lm1hdGVyaWFsLmNvbG9yLmNvcHkocGFydGljbGUuY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIHNjYWxlKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUudGFyZ2V0LnNjYWxlLnNldChwYXJ0aWNsZS5zY2FsZSwgcGFydGljbGUuc2NhbGUsIHBhcnRpY2xlLnNjYWxlKTtcbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLnRhcmdldCkge1xuICAgICAgaWYgKHBhcnRpY2xlLnVzZUFscGhhIHx8IHBhcnRpY2xlLnVzZUNvbG9yKVxuICAgICAgICB0aGlzLl9tYXRlcmlhbFBvb2wuZXhwaXJlKHBhcnRpY2xlLnRhcmdldC5tYXRlcmlhbCk7XG5cbiAgICAgIHRoaXMuX3RhcmdldFBvb2wuZXhwaXJlKHBhcnRpY2xlLnRhcmdldCk7XG4gICAgICB0aGlzLmNvbnRhaW5lci5yZW1vdmUocGFydGljbGUudGFyZ2V0KTtcbiAgICAgIHBhcnRpY2xlLnRhcmdldCA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9NZXNoUmVuZGVyZXIuanMiXSwibmFtZXMiOlsiTWVzaFJlbmRlcmVyIiwiY29udGFpbmVyIiwiVEhSRUUiLCJ0eXBlIiwiX3RhcmdldFBvb2wiLCJQb29sIiwiX21hdGVyaWFsUG9vbCIsIl9ib2R5IiwiTWVzaCIsIkJveEdlb21ldHJ5IiwiTWVzaExhbWJlcnRNYXRlcmlhbCIsImNvbG9yIiwicGFydGljbGUiLCJ0YXJnZXQiLCJpc1Nwcml0ZSIsImJvZHkiLCJnZXQiLCJ1c2VBbHBoYSIsInVzZUNvbG9yIiwibWF0ZXJpYWwiLCJfX3B1aWQiLCJQVUlEIiwiaWQiLCJwb3NpdGlvbiIsImNvcHkiLCJhZGQiLCJyb3RhdGUiLCJzY2FsZSIsIm9wYWNpdHkiLCJhbHBoYSIsInRyYW5zcGFyZW50Iiwicm90YXRpb24iLCJzZXQiLCJ4IiwieSIsInoiLCJleHBpcmUiLCJyZW1vdmUiLCJCYXNlUmVuZGVyZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQTtBQUNBO0lBQ3FCQSxZOzs7OztBQUNuQjtBQUNGO0FBQ0E7QUFDQTtBQUNFLHdCQUFZQyxTQUFaLEVBQXVCQyxLQUF2QixFQUE4QjtBQUFBOztBQUFBO0FBQzVCLDhCQUFNQyx5QkFBTjtBQUVBLFVBQUtGLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsVUFBS0csV0FBTCxHQUFtQixJQUFJQyxVQUFKLEVBQW5CO0FBQ0EsVUFBS0MsYUFBTCxHQUFxQixJQUFJRCxVQUFKLEVBQXJCO0FBQ0EsVUFBS0UsS0FBTCxHQUFhLElBQUlMLEtBQUssQ0FBQ00sSUFBVixDQUNYLElBQUlOLEtBQUssQ0FBQ08sV0FBVixDQUFzQixFQUF0QixFQUEwQixFQUExQixFQUE4QixFQUE5QixDQURXLEVBRVgsSUFBSVAsS0FBSyxDQUFDUSxtQkFBVixDQUE4QjtBQUFFQyxNQUFBQSxLQUFLLEVBQUU7QUFBVCxLQUE5QixDQUZXLENBQWI7QUFONEI7QUFVN0I7Ozs7a0NBRWFDLFEsRUFBVTtBQUN0QixhQUFPQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JDLFFBQXZCO0FBQ0Q7OztxQ0FFZ0IsQ0FBRTs7O3NDQUVERixRLEVBQVU7QUFDMUIsVUFBSSxDQUFDQSxRQUFRLENBQUNDLE1BQWQsRUFBc0I7QUFDcEI7QUFDQSxZQUFJLENBQUNELFFBQVEsQ0FBQ0csSUFBZCxFQUFvQkgsUUFBUSxDQUFDRyxJQUFULEdBQWdCLEtBQUtSLEtBQXJCO0FBQ3BCSyxRQUFBQSxRQUFRLENBQUNDLE1BQVQsR0FBa0IsS0FBS1QsV0FBTCxDQUFpQlksR0FBakIsQ0FBcUJKLFFBQVEsQ0FBQ0csSUFBOUIsQ0FBbEIsQ0FIb0IsQ0FLcEI7O0FBQ0EsWUFBSUgsUUFBUSxDQUFDSyxRQUFULElBQXFCTCxRQUFRLENBQUNNLFFBQWxDLEVBQTRDO0FBQzFDTixVQUFBQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JNLFFBQWhCLENBQXlCQyxNQUF6QixHQUFrQ0MsWUFBS0MsRUFBTCxDQUFRVixRQUFRLENBQUNHLElBQVQsQ0FBY0ksUUFBdEIsQ0FBbEM7QUFDQVAsVUFBQUEsUUFBUSxDQUFDQyxNQUFULENBQWdCTSxRQUFoQixHQUEyQixLQUFLYixhQUFMLENBQW1CVSxHQUFuQixDQUN6QkosUUFBUSxDQUFDQyxNQUFULENBQWdCTSxRQURTLENBQTNCO0FBR0Q7QUFDRjs7QUFFRCxVQUFJUCxRQUFRLENBQUNDLE1BQWIsRUFBcUI7QUFDbkJELFFBQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQlUsUUFBaEIsQ0FBeUJDLElBQXpCLENBQThCWixRQUFRLENBQUNXLFFBQXZDO0FBQ0EsYUFBS3RCLFNBQUwsQ0FBZXdCLEdBQWYsQ0FBbUJiLFFBQVEsQ0FBQ0MsTUFBNUI7QUFDRDtBQUNGOzs7cUNBRWdCRCxRLEVBQVU7QUFBQSxVQUNqQkMsTUFEaUIsR0FDY0QsUUFEZCxDQUNqQkMsTUFEaUI7QUFBQSxVQUNUSSxRQURTLEdBQ2NMLFFBRGQsQ0FDVEssUUFEUztBQUFBLFVBQ0NDLFFBREQsR0FDY04sUUFEZCxDQUNDTSxRQUREOztBQUd6QixVQUFJLENBQUNMLE1BQUwsRUFBYTtBQUNYO0FBQ0Q7O0FBRURBLE1BQUFBLE1BQU0sQ0FBQ1UsUUFBUCxDQUFnQkMsSUFBaEIsQ0FBcUJaLFFBQVEsQ0FBQ1csUUFBOUI7QUFFQSxXQUFLRyxNQUFMLENBQVlkLFFBQVo7QUFFQSxXQUFLZSxLQUFMLENBQVdmLFFBQVg7O0FBRUEsVUFBSUssUUFBSixFQUFjO0FBQ1pKLFFBQUFBLE1BQU0sQ0FBQ00sUUFBUCxDQUFnQlMsT0FBaEIsR0FBMEJoQixRQUFRLENBQUNpQixLQUFuQztBQUNBaEIsUUFBQUEsTUFBTSxDQUFDTSxRQUFQLENBQWdCVyxXQUFoQixHQUE4QixJQUE5QjtBQUNEOztBQUVELFVBQUlaLFFBQUosRUFBYztBQUNaTCxRQUFBQSxNQUFNLENBQUNNLFFBQVAsQ0FBZ0JSLEtBQWhCLENBQXNCYSxJQUF0QixDQUEyQlosUUFBUSxDQUFDRCxLQUFwQztBQUNEO0FBQ0Y7OzsyQkFFTUMsUSxFQUFVO0FBQ2ZBLE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQmtCLFFBQWhCLENBQXlCQyxHQUF6QixDQUE2QnBCLFFBQVEsQ0FBQ21CLFFBQVQsQ0FBa0JFLENBQS9DLEVBQWtEckIsUUFBUSxDQUFDbUIsUUFBVCxDQUFrQkcsQ0FBcEUsRUFBdUV0QixRQUFRLENBQUNtQixRQUFULENBQWtCSSxDQUF6RjtBQUNEOzs7MEJBRUt2QixRLEVBQVU7QUFDZEEsTUFBQUEsUUFBUSxDQUFDQyxNQUFULENBQWdCYyxLQUFoQixDQUFzQkssR0FBdEIsQ0FBMEJwQixRQUFRLENBQUNlLEtBQW5DLEVBQTBDZixRQUFRLENBQUNlLEtBQW5ELEVBQTBEZixRQUFRLENBQUNlLEtBQW5FO0FBQ0Q7OzttQ0FFY2YsUSxFQUFVO0FBQ3ZCLFVBQUlBLFFBQVEsQ0FBQ0MsTUFBYixFQUFxQjtBQUNuQixZQUFJRCxRQUFRLENBQUNLLFFBQVQsSUFBcUJMLFFBQVEsQ0FBQ00sUUFBbEMsRUFDRSxLQUFLWixhQUFMLENBQW1COEIsTUFBbkIsQ0FBMEJ4QixRQUFRLENBQUNDLE1BQVQsQ0FBZ0JNLFFBQTFDOztBQUVGLGFBQUtmLFdBQUwsQ0FBaUJnQyxNQUFqQixDQUF3QnhCLFFBQVEsQ0FBQ0MsTUFBakM7O0FBQ0EsYUFBS1osU0FBTCxDQUFlb0MsTUFBZixDQUFzQnpCLFFBQVEsQ0FBQ0MsTUFBL0I7QUFDQUQsUUFBQUEsUUFBUSxDQUFDQyxNQUFULEdBQWtCLElBQWxCO0FBQ0Q7QUFDRjs7O0VBcEZ1Q3lCLHlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tICcuL0Jhc2VSZW5kZXJlcic7XG5pbXBvcnQgeyBQVUlEIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUG9vbCB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgUkVOREVSRVJfVFlQRV9NRVNIIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBAcmVxdWlyZXMgVEhSRUUgLSB7IE1lc2gsIEJveEdlb21ldHJ5LCBNZXNoTGFtYmVydE1hdGVyaWFsIH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVzaFJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250YWluZXIgLSBBbiBPYmplY3QzRCBjb250YWluZXIsIHVzdWFsbHkgYSBUSFJFRS5TY2VuZVxuICAgKiBAcGFyYW0ge29iamVjdH0gVEhSRUUgLSBUSFJFRSBBcGlcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbnRhaW5lciwgVEhSRUUpIHtcbiAgICBzdXBlcih0eXBlKTtcblxuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRoaXMuX3RhcmdldFBvb2wgPSBuZXcgUG9vbCgpO1xuICAgIHRoaXMuX21hdGVyaWFsUG9vbCA9IG5ldyBQb29sKCk7XG4gICAgdGhpcy5fYm9keSA9IG5ldyBUSFJFRS5NZXNoKFxuICAgICAgbmV3IFRIUkVFLkJveEdlb21ldHJ5KDUwLCA1MCwgNTApLFxuICAgICAgbmV3IFRIUkVFLk1lc2hMYW1iZXJ0TWF0ZXJpYWwoeyBjb2xvcjogJyNmZjAwMDAnIH0pXG4gICAgKTtcbiAgfVxuXG4gIGlzVGhyZWVTcHJpdGUocGFydGljbGUpIHtcbiAgICByZXR1cm4gcGFydGljbGUudGFyZ2V0LmlzU3ByaXRlO1xuICB9XG5cbiAgb25TeXN0ZW1VcGRhdGUoKSB7fVxuXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIC8vc2V0IHRhcmdldFxuICAgICAgaWYgKCFwYXJ0aWNsZS5ib2R5KSBwYXJ0aWNsZS5ib2R5ID0gdGhpcy5fYm9keTtcbiAgICAgIHBhcnRpY2xlLnRhcmdldCA9IHRoaXMuX3RhcmdldFBvb2wuZ2V0KHBhcnRpY2xlLmJvZHkpO1xuXG4gICAgICAvL3NldCBtYXRlcmlhbFxuICAgICAgaWYgKHBhcnRpY2xlLnVzZUFscGhhIHx8IHBhcnRpY2xlLnVzZUNvbG9yKSB7XG4gICAgICAgIHBhcnRpY2xlLnRhcmdldC5tYXRlcmlhbC5fX3B1aWQgPSBQVUlELmlkKHBhcnRpY2xlLmJvZHkubWF0ZXJpYWwpO1xuICAgICAgICBwYXJ0aWNsZS50YXJnZXQubWF0ZXJpYWwgPSB0aGlzLl9tYXRlcmlhbFBvb2wuZ2V0KFxuICAgICAgICAgIHBhcnRpY2xlLnRhcmdldC5tYXRlcmlhbFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHBhcnRpY2xlLnRhcmdldC5wb3NpdGlvbi5jb3B5KHBhcnRpY2xlLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLmFkZChwYXJ0aWNsZS50YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBjb25zdCB7IHRhcmdldCwgdXNlQWxwaGEsIHVzZUNvbG9yIH0gPSBwYXJ0aWNsZTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGFyZ2V0LnBvc2l0aW9uLmNvcHkocGFydGljbGUucG9zaXRpb24pO1xuXG4gICAgdGhpcy5yb3RhdGUocGFydGljbGUpO1xuXG4gICAgdGhpcy5zY2FsZShwYXJ0aWNsZSk7XG5cbiAgICBpZiAodXNlQWxwaGEpIHtcbiAgICAgIHRhcmdldC5tYXRlcmlhbC5vcGFjaXR5ID0gcGFydGljbGUuYWxwaGE7XG4gICAgICB0YXJnZXQubWF0ZXJpYWwudHJhbnNwYXJlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh1c2VDb2xvcikge1xuICAgICAgdGFyZ2V0Lm1hdGVyaWFsLmNvbG9yLmNvcHkocGFydGljbGUuY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIHJvdGF0ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnRhcmdldC5yb3RhdGlvbi5zZXQocGFydGljbGUucm90YXRpb24ueCwgcGFydGljbGUucm90YXRpb24ueSwgcGFydGljbGUucm90YXRpb24ueik7XG4gIH1cblxuICBzY2FsZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnRhcmdldC5zY2FsZS5zZXQocGFydGljbGUuc2NhbGUsIHBhcnRpY2xlLnNjYWxlLCBwYXJ0aWNsZS5zY2FsZSk7XG4gIH1cblxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIGlmIChwYXJ0aWNsZS51c2VBbHBoYSB8fCBwYXJ0aWNsZS51c2VDb2xvcilcbiAgICAgICAgdGhpcy5fbWF0ZXJpYWxQb29sLmV4cGlyZShwYXJ0aWNsZS50YXJnZXQubWF0ZXJpYWwpO1xuXG4gICAgICB0aGlzLl90YXJnZXRQb29sLmV4cGlyZShwYXJ0aWNsZS50YXJnZXQpO1xuICAgICAgdGhpcy5jb250YWluZXIucmVtb3ZlKHBhcnRpY2xlLnRhcmdldCk7XG4gICAgICBwYXJ0aWNsZS50YXJnZXQgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -51,6 +51,11 @@ var SpriteRenderer = /*#__PURE__*/function (_MeshRenderer) {
51
51
  }
52
52
 
53
53
  (0, _createClass2["default"])(SpriteRenderer, [{
54
+ key: "rotate",
55
+ value: function rotate(particle) {
56
+ particle.target.material.rotation = particle.rotation.z;
57
+ }
58
+ }, {
54
59
  key: "scale",
55
60
  value: function scale(particle) {
56
61
  particle.target.scale.set(particle.scale * particle.radius, particle.scale * particle.radius, 1);
@@ -60,4 +65,4 @@ var SpriteRenderer = /*#__PURE__*/function (_MeshRenderer) {
60
65
  }(_MeshRenderer2["default"]);
61
66
 
62
67
  exports["default"] = SpriteRenderer;
63
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9TcHJpdGVSZW5kZXJlci5qcyJdLCJuYW1lcyI6WyJTcHJpdGVSZW5kZXJlciIsImNvbnRhaW5lciIsIlRIUkVFIiwidHlwZSIsIl9ib2R5IiwiU3ByaXRlIiwiU3ByaXRlTWF0ZXJpYWwiLCJjb2xvciIsInBhcnRpY2xlIiwidGFyZ2V0Iiwic2NhbGUiLCJzZXQiLCJyYWRpdXMiLCJNZXNoUmVuZGVyZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQTtBQUNBO0lBQ3FCQSxjOzs7OztBQUNuQiwwQkFBWUMsU0FBWixFQUF1QkMsS0FBdkIsRUFBOEI7QUFBQTs7QUFBQTtBQUM1Qiw4QkFBTUQsU0FBTixFQUFpQkMsS0FBakI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLQyxJQUFMLEdBQVlBLDJCQUFaO0FBQ0EsVUFBS0MsS0FBTCxHQUFhLElBQUlGLEtBQUssQ0FBQ0csTUFBVixDQUNYLElBQUlILEtBQUssQ0FBQ0ksY0FBVixDQUF5QjtBQUFFQyxNQUFBQSxLQUFLLEVBQUU7QUFBVCxLQUF6QixDQURXLENBQWI7QUFSNEI7QUFXN0I7Ozs7MEJBRUtDLFEsRUFBVTtBQUNkQSxNQUFBQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JDLEtBQWhCLENBQXNCQyxHQUF0QixDQUNFSCxRQUFRLENBQUNFLEtBQVQsR0FBaUJGLFFBQVEsQ0FBQ0ksTUFENUIsRUFFRUosUUFBUSxDQUFDRSxLQUFULEdBQWlCRixRQUFRLENBQUNJLE1BRjVCLEVBR0UsQ0FIRjtBQUtEOzs7RUFwQnlDQyx5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNZXNoUmVuZGVyZXIgZnJvbSAnLi9NZXNoUmVuZGVyZXInO1xuaW1wb3J0IHsgUkVOREVSRVJfVFlQRV9TUFJJVEUgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEByZXF1aXJlcyBUSFJFRSAtIHsgTWVzaCwgQm94R2VvbWV0cnksIE1lc2hMYW1iZXJ0TWF0ZXJpYWwsIFNwcml0ZSwgU3ByaXRlTWF0ZXJpYWwgfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTcHJpdGVSZW5kZXJlciBleHRlbmRzIE1lc2hSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKGNvbnRhaW5lciwgVEhSRUUpIHtcbiAgICBzdXBlcihjb250YWluZXIsIFRIUkVFKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjbGFzcyB0eXBlLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLl9ib2R5ID0gbmV3IFRIUkVFLlNwcml0ZShcbiAgICAgIG5ldyBUSFJFRS5TcHJpdGVNYXRlcmlhbCh7IGNvbG9yOiAweGZmZmZmZiB9KVxuICAgICk7XG4gIH1cblxuICBzY2FsZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnRhcmdldC5zY2FsZS5zZXQoXG4gICAgICBwYXJ0aWNsZS5zY2FsZSAqIHBhcnRpY2xlLnJhZGl1cyxcbiAgICAgIHBhcnRpY2xlLnNjYWxlICogcGFydGljbGUucmFkaXVzLFxuICAgICAgMVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9TcHJpdGVSZW5kZXJlci5qcyJdLCJuYW1lcyI6WyJTcHJpdGVSZW5kZXJlciIsImNvbnRhaW5lciIsIlRIUkVFIiwidHlwZSIsIl9ib2R5IiwiU3ByaXRlIiwiU3ByaXRlTWF0ZXJpYWwiLCJjb2xvciIsInBhcnRpY2xlIiwidGFyZ2V0IiwibWF0ZXJpYWwiLCJyb3RhdGlvbiIsInoiLCJzY2FsZSIsInNldCIsInJhZGl1cyIsIk1lc2hSZW5kZXJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7QUFFQTtBQUNBO0FBQ0E7SUFDcUJBLGM7Ozs7O0FBQ25CLDBCQUFZQyxTQUFaLEVBQXVCQyxLQUF2QixFQUE4QjtBQUFBOztBQUFBO0FBQzVCLDhCQUFNRCxTQUFOLEVBQWlCQyxLQUFqQjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFVBQUtDLElBQUwsR0FBWUEsMkJBQVo7QUFDQSxVQUFLQyxLQUFMLEdBQWEsSUFBSUYsS0FBSyxDQUFDRyxNQUFWLENBQ1gsSUFBSUgsS0FBSyxDQUFDSSxjQUFWLENBQXlCO0FBQUVDLE1BQUFBLEtBQUssRUFBRTtBQUFULEtBQXpCLENBRFcsQ0FBYjtBQVI0QjtBQVc3Qjs7OzsyQkFFTUMsUSxFQUFVO0FBQ2ZBLE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQkMsUUFBaEIsQ0FBeUJDLFFBQXpCLEdBQW9DSCxRQUFRLENBQUNHLFFBQVQsQ0FBa0JDLENBQXREO0FBQ0Q7OzswQkFFS0osUSxFQUFVO0FBQ2RBLE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQkksS0FBaEIsQ0FBc0JDLEdBQXRCLENBQ0VOLFFBQVEsQ0FBQ0ssS0FBVCxHQUFpQkwsUUFBUSxDQUFDTyxNQUQ1QixFQUVFUCxRQUFRLENBQUNLLEtBQVQsR0FBaUJMLFFBQVEsQ0FBQ08sTUFGNUIsRUFHRSxDQUhGO0FBS0Q7OztFQXhCeUNDLHlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1lc2hSZW5kZXJlciBmcm9tICcuL01lc2hSZW5kZXJlcic7XG5pbXBvcnQgeyBSRU5ERVJFUl9UWVBFX1NQUklURSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQHJlcXVpcmVzIFRIUkVFIC0geyBNZXNoLCBCb3hHZW9tZXRyeSwgTWVzaExhbWJlcnRNYXRlcmlhbCwgU3ByaXRlLCBTcHJpdGVNYXRlcmlhbCB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNwcml0ZVJlbmRlcmVyIGV4dGVuZHMgTWVzaFJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoY29udGFpbmVyLCBUSFJFRSkge1xuICAgIHN1cGVyKGNvbnRhaW5lciwgVEhSRUUpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGNsYXNzIHR5cGUuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuX2JvZHkgPSBuZXcgVEhSRUUuU3ByaXRlKFxuICAgICAgbmV3IFRIUkVFLlNwcml0ZU1hdGVyaWFsKHsgY29sb3I6IDB4ZmZmZmZmIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJvdGF0ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnRhcmdldC5tYXRlcmlhbC5yb3RhdGlvbiA9IHBhcnRpY2xlLnJvdGF0aW9uLno7XG4gIH1cblxuICBzY2FsZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnRhcmdldC5zY2FsZS5zZXQoXG4gICAgICBwYXJ0aWNsZS5zY2FsZSAqIHBhcnRpY2xlLnJhZGl1cyxcbiAgICAgIHBhcnRpY2xlLnNjYWxlICogcGFydGljbGUucmFkaXVzLFxuICAgICAgMVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,14 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports["default"] = void 0;
9
7
 
10
- var _v = _interopRequireDefault(require("uuid/v1"));
8
+ var _uuid = require("uuid");
11
9
 
12
- var _default = _v["default"];
10
+ var _default = _uuid.v1;
13
11
  exports["default"] = _default;
14
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy91aWQuanMiXSwibmFtZXMiOlsidWlkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7ZUFFZUEsYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1aWQgZnJvbSAndXVpZC92MSc7XG5cbmV4cG9ydCBkZWZhdWx0IHVpZDtcbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy91aWQuanMiXSwibmFtZXMiOlsidWlkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O2VBRWVBLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2MSBhcyB1aWQgfSBmcm9tICd1dWlkJztcblxuZXhwb3J0IGRlZmF1bHQgdWlkO1xuIl19
@@ -179,7 +179,7 @@ export default class Rotate extends Behaviour {
179
179
  particle.rotation = new Vector3D();
180
180
  }
181
181
 
182
- particle.rotation.eulerFromDir(particle.velocity);
182
+ particle.rotation.copy(particle.velocity);
183
183
  break;
184
184
 
185
185
  case 'set':
@@ -211,4 +211,4 @@ export default class Rotate extends Behaviour {
211
211
  }
212
212
 
213
213
  }
214
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUm90YXRlLmpzIl0sIm5hbWVzIjpbIkRSIiwiUEkiLCJNYXRoVXRpbHMiLCJWZWN0b3IzRCIsImNyZWF0ZVNwYW4iLCJCZWhhdmlvdXIiLCJnZXRFYXNpbmdCeU5hbWUiLCJCRUhBVklPVVJfVFlQRV9ST1RBVEUiLCJ0eXBlIiwiUm90YXRlIiwiY29uc3RydWN0b3IiLCJ4IiwieSIsInoiLCJsaWZlIiwiZWFzaW5nIiwiaXNFbmFibGVkIiwicmVzZXQiLCJyb3RhdGlvblR5cGUiLCJfcm90YXRpb25UeXBlIiwidW5kZWZpbmVkIiwiaW5pdGlhbGl6ZSIsInBhcnRpY2xlIiwiX3NldFJvdGF0aW9uIiwicm90YXRpb24iLCJ0cmFuc2Zvcm0iLCJmUiIsInRSIiwiYWRkUiIsImdldFZhbHVlIiwicGFydGljbGVSb3RhdGlvbiIsInZhbHVlIiwicmFuZG9tQVRvQiIsInNldCIsImNvcHkiLCJtdXRhdGUiLCJ0aW1lIiwiaW5kZXgiLCJlbmVyZ2l6ZSIsImV1bGVyRnJvbURpciIsInZlbG9jaXR5IiwibGVycCIsImVuZXJneSIsImFkZCIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsRUFBVCxFQUFhQyxFQUFiLFFBQXVCLGNBQXZCO0FBQ0EsU0FBU0MsU0FBVCxFQUFvQkMsUUFBcEIsRUFBOEJDLFVBQTlCLFFBQWdELFNBQWhEO0FBRUEsT0FBT0MsU0FBUCxNQUFzQixhQUF0QjtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsU0FBaEM7QUFDQSxTQUFTQyxxQkFBcUIsSUFBSUMsSUFBbEMsUUFBOEMsU0FBOUM7QUFFQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxNQUFOLFNBQXFCSixTQUFyQixDQUErQjtBQUM1QztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VLLEVBQUFBLFdBQVcsQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLEVBQU9DLENBQVAs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LENBQUNFLFFBQVQsQ0FBa0JtQixHQUFsQixDQUFzQnJCLFFBQVEsQ0FBQ0csU0FBVCxDQUFtQkcsSUFBekM7QUFDQTtBQWxDSjtBQW9DRDs7QUFFYyxTQUFSZ0IsUUFBUSxDQUFDQyxJQUFELEVBQU87QUFDcEIsVUFBTTtBQUFFbEMsTUFBQUEsQ0FBRjtBQUFLQyxNQUFBQSxDQUFMO0FBQVFDLE1BQUFBLENBQVI7QUFBV0MsTUFBQUEsSUFBWDtBQUFpQkMsTUFBQUEsTUFBakI7QUFBeUJDLE1BQUFBLFNBQVMsR0FBRztBQUFyQyxRQUE4QzZCLElBQXBEO0FBRUEsV0FBTyxJQUFJcEMsTUFBSixDQUFXRSxDQUFYLEVBQWNDLENBQWQsRUFBaUJDLENBQWpCLEVBQW9CQyxJQUFwQixFQUEwQlIsZUFBZSxDQUFDUyxNQUFELENBQXpDLEVBQW1EQyxTQUFuRCxDQUFQO0FBQ0Q7O0FBM00yQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERSLCBQSSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNYXRoVXRpbHMsIFZlY3RvcjNELCBjcmVhdGVTcGFuIH0gZnJvbSAnLi4vbWF0aCc7XG5cbmltcG9ydCBCZWhhdmlvdXIgZnJvbSAnLi9CZWhhdmlvdXInO1xuaW1wb3J0IHsgZ2V0RWFzaW5nQnlOYW1lIH0gZnJvbSAnLi4vZWFzZSc7XG5pbXBvcnQgeyBCRUhBVklPVVJfVFlQRV9ST1RBVEUgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEJlaGF2aW91ciB0aGF0IHJvdGF0ZXMgcGFydGljbGVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb3RhdGUgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFJvdGF0ZSBiZWhhdmlvdXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gWCBheGlzIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gWSBheGlzIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB6IC0gWiBheGlzIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaWZlIC0gVGhlIGxpZmUgb2YgdGhlIGJlaGF2aW91clxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSBUaGUgZWFzaW5nIGVxdWF0aW9uIHRvIHVzZSBmb3IgdHJhbnNmb3Jtc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0VuYWJsZWQ9dHJ1ZV0gLSBEZXRlcm1pbmVzIGlmIHRoZSBiZWhhdmlvdXIgd2lsbCBiZSBhcHBsaWVkIG9yIG5vdFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHgsIHksIHosIGxpZmUsIGVhc2luZywgaXNFbmFibGVkID0gdHJ1ZSkge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZywgdHlwZSwgaXNFbmFibGVkKTtcblxuICAgIHRoaXMucmVzZXQoeCwgeSwgeik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcm90YXRpb24gdHlwZS5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHJvdGF0aW9uVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm90YXRpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJvdGF0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHNldCByb3RhdGlvblR5cGUocm90YXRpb25UeXBlKSB7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHJvdGF0aW9uIHR5cGUuIEVOVU0gb2YgWydzYW1lJywgJ3NldCcsICd0bycsICdhZGQnXS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuX3JvdGF0aW9uVHlwZSA9IHJvdGF0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGJlaGF2aW91ciBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFggYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFkgYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geiAtIFogYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIHRoZSBsaWZlIG9mIHRoZSBiZWhhdmlvdXJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWFzaW5nIC0gdGhlIGVhc2luZyBlcXVhdGlvbiB0byB1c2UgZm9yIHRyYW5zZm9ybXNcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICByZXNldCh4LCB5LCB6LCBsaWZlLCBlYXNpbmcpIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBYIGF4aXMgcm90YXRpb24uXG4gICAgICogQHR5cGUge251bWJlcnxTcGFufVxuICAgICAqL1xuICAgIHRoaXMueCA9IHggfHwgMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFkgYXhpcyByb3RhdGlvbi5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfFNwYW59XG4gICAgICovXG4gICAgdGhpcy55ID0geSB8fCAwO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgWiBheGlzIHJvdGF0aW9uLlxuICAgICAqIEB0eXBlIHtudW1iZXJ8U3Bhbn1cbiAgICAgKi9cbiAgICB0aGlzLnogPSB6IHx8IDA7XG5cbiAgICBpZiAoeCA9PT0gdW5kZWZpbmVkIHx8IHggPT0gJ3NhbWUnKSB7XG4gICAgICB0aGlzLnJvdGF0aW9uVHlwZSA9ICdzYW1lJztcbiAgICB9IGVsc2UgaWYgKHkgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJvdGF0aW9uVHlwZSA9ICdzZXQnO1xuICAgIH0gZWxzZSBpZiAoeiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJvdGF0aW9uVHlwZSA9ICd0byc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm90YXRpb25UeXBlID0gJ2FkZCc7XG4gICAgICB0aGlzLnggPSBjcmVhdGVTcGFuKHRoaXMueCAqIERSKTtcbiAgICAgIHRoaXMueSA9IGNyZWF0ZVNwYW4odGhpcy55ICogRFIpO1xuICAgICAgdGhpcy56ID0gY3JlYXRlU3Bhbih0aGlzLnogKiBEUik7XG4gICAgfVxuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBiZWhhdmlvdXIgb24gYSBwYXJ0aWNsZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gdGhlIHBhcnRpY2xlIHRvIGluaXRpYWxpemUgdGhlIGJlaGF2aW91ciBvblxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBzd2l0Y2ggKHRoaXMucm90YXRpb25UeXBlKSB7XG4gICAgICBjYXNlICdzYW1lJzpcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NldCc6XG4gICAgICAgIHRoaXMuX3NldFJvdGF0aW9uKHBhcnRpY2xlLnJvdGF0aW9uLCB0aGlzLngpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndG8nOlxuICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uZlIgPSBwYXJ0aWNsZS50cmFuc2Zvcm0uZlIgfHwgbmV3IFZlY3RvcjNEKCk7XG4gICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS50UiA9IHBhcnRpY2xlLnRyYW5zZm9ybS50UiB8fCBuZXcgVmVjdG9yM0QoKTtcbiAgICAgICAgdGhpcy5fc2V0Um90YXRpb24ocGFydGljbGUudHJhbnNmb3JtLmZSLCB0aGlzLngpO1xuICAgICAgICB0aGlzLl9zZXRSb3RhdGlvbihwYXJ0aWNsZS50cmFuc2Zvcm0udFIsIHRoaXMueSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhZGQnOlxuICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uYWRkUiA9IG5ldyBWZWN0b3IzRChcbiAgICAgICAgICB0aGlzLnguZ2V0VmFsdWUoKSxcbiAgICAgICAgICB0aGlzLnkuZ2V0VmFsdWUoKSxcbiAgICAgICAgICB0aGlzLnouZ2V0VmFsdWUoKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcGFydGljbGUncyByb3RhdGlvbiBwcmlvciB0byB0aGUgYmVoYXZpb3VyIGJlaW5nIGFwcGxpZWQuXG4gICAqXG4gICAqIE5PVEUgSXQncyBoYXJkIHRvIHNlZSBoZXJlLCBidXQgdGhpcyBpcyBtdXRhdGluZyB0aGUgcGFydGljbGUncyByb3RhdGlvblxuICAgKiBldmVuIHRob3VnaCB0aGUgcGFydGljbGUgaXMgbm90IGJlaW5nIHBhc3NlZCBpbiBkaXJlY3RseS5cbiAgICpcbiAgICogTk9URSB0aGUgZWxzZSBpZiBiZWxvdyB3aWxsIG5ldmVyIGJlIHJlYWNoZWQgYmVjYXVzZSB0aGUgdmFsdWUgYmVpbmcgcGFzc2VkIGluXG4gICAqIHdpbGwgbmV2ZXIgYmUgb2YgdHlwZSBWZWN0b3IzRC5cbiAgICpcbiAgICogQHBhcmFtIHtWZWN0b3IzRH0gcGFydGljbGVSb3RhdGlvbiAtIHRoZSBwYXJ0aWNsZSdzIHJvdGF0aW9uIHZlY3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHZhbHVlIC0gdGhlIHZhbHVlIHRvIHNldCB0aGUgcm90YXRpb24gdmFsdWUgdG8sIGlmICdyYW5kb20nXG4gICAqIHJvdGF0aW9uIGlzIHJhbmRvbWlzZWRcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBfc2V0Um90YXRpb24ocGFydGljbGVSb3RhdGlvbiwgdmFsdWUpIHtcbiAgICBwYXJ0aWNsZVJvdGF0aW9uID0gcGFydGljbGVSb3RhdGlvbiB8fCBuZXcgVmVjdG9yM0QoKTtcbiAgICBpZiAodmFsdWUgPT0gJ3JhbmRvbScpIHtcbiAgICAgIHZhciB4ID0gTWF0aFV0aWxzLnJhbmRvbUFUb0IoLVBJLCBQSSk7XG4gICAgICB2YXIgeSA9IE1hdGhVdGlscy5yYW5kb21BVG9CKC1QSSwgUEkpO1xuICAgICAgdmFyIHogPSBNYXRoVXRpbHMucmFuZG9tQVRvQigtUEksIFBJKTtcblxuICAgICAgcGFydGljbGVSb3RhdGlvbi5zZXQoeCwgeSwgeik7XG4gICAgfVxuICAgIC8vIHdlIGNhbid0IGV2ZXIgZ2V0IGhlcmUgYmVjYXVzZSB2YWx1ZSB3aWxsIG5ldmVyIGJlIGEgVmVjdG9yM0QhXG4gICAgLy8gY29uc2lkZXIgcmVmYWN0b3JpbmcgdG9cbiAgICAvLyAgaWYgKHZhbHVlIGluc3RhbmNlIG9mIFNwYW4pIHsgdmVjMy5hZGQodmFsdWUuZ2V0VmFsdWUoKSk7IH1cbiAgICBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFZlY3RvcjNEKSB7XG4gICAgICBwYXJ0aWNsZVJvdGF0aW9uLmNvcHkodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNdXRhdGVzIHRoZSBwYXJ0aWNsZS5yb3RhdGlvbiBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIxNjIyOTU2L2hvdy10by1jb252ZXJ0LWRpcmVjdGlvbi12ZWN0b3ItdG8tZXVsZXItYW5nbGVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gZW5naW5lIHRpbWVcbiAgICogQHBhcmFtIHtpbnRlZ2VyfSBpbmRleCAtIHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIG11dGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmVuZXJnaXplKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMucm90YXRpb25UeXBlKSB7XG4gICAgICAvLyBvcmllbnRzIHRoZSBwYXJ0aWNsZSBpbiB0aGUgZGlyZWN0aW9uIGl0IGlzIG1vdmluZ1xuICAgICAgY2FzZSAnc2FtZSc6XG4gICAgICAgIGlmICghcGFydGljbGUucm90YXRpb24pIHtcbiAgICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbiA9IG5ldyBWZWN0b3IzRCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFydGljbGUucm90YXRpb24uZXVsZXJGcm9tRGlyKHBhcnRpY2xlLnZlbG9jaXR5KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NldCc6XG4gICAgICAgIC8vXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0byc6XG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLnggPSBNYXRoVXRpbHMubGVycChcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uZlIueCxcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0udFIueCxcbiAgICAgICAgICB0aGlzLmVuZXJneVxuICAgICAgICApO1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi55ID0gTWF0aFV0aWxzLmxlcnAoXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmZSLnksXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLnRSLnksXG4gICAgICAgICAgdGhpcy5lbmVyZ3lcbiAgICAgICAgKTtcbiAgICAgICAgcGFydGljbGUucm90YXRpb24ueiA9IE1hdGhVdGlscy5sZXJwKFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5mUi56LFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS50Ui56LFxuICAgICAgICAgIHRoaXMuZW5lcmd5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhZGQnOlxuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi5hZGQocGFydGljbGUudHJhbnNmb3JtLmFkZFIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgeCwgeSwgeiwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlIH0gPSBqc29uO1xuXG4gICAgcmV0dXJuIG5ldyBSb3RhdGUoeCwgeSwgeiwgbGlmZSwgZ2V0RWFzaW5nQnlOYW1lKGVhc2luZyksIGlzRW5hYmxlZCk7XG4gIH1cbn1cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUm90YXRlLmpzIl0sIm5hbWVzIjpbIkRSIiwiUEkiLCJNYXRoVXRpbHMiLCJWZWN0b3IzRCIsImNyZWF0ZVNwYW4iLCJCZWhhdmlvdXIiLCJnZXRFYXNpbmdCeU5hbWUiLCJCRUhBVklPVVJfVFlQRV9ST1RBVEUiLCJ0eXBlIiwiUm90YXRlIiwiY29uc3RydWN0b3IiLCJ4IiwieSIsInoiLCJsaWZlIiwiZWFzaW5nIiwiaXNFbmFibGVkIiwicmVzZXQiLCJyb3RhdGlvblR5cGUiLCJfcm90YXRpb25UeXBlIiwidW5kZWZpbmVkIiwiaW5pdGlhbGl6ZSIsInBhcnRpY2xlIiwiX3NldFJvdGF0aW9uIiwicm90YXRpb24iLCJ0cmFuc2Zvcm0iLCJmUiIsInRSIiwiYWRkUiIsImdldFZhbHVlIiwicGFydGljbGVSb3RhdGlvbiIsInZhbHVlIiwicmFuZG9tQVRvQiIsInNldCIsImNvcHkiLCJtdXRhdGUiLCJ0aW1lIiwiaW5kZXgiLCJlbmVyZ2l6ZSIsInZlbG9jaXR5IiwibGVycCIsImVuZXJneSIsImFkZCIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsRUFBVCxFQUFhQyxFQUFiLFFBQXVCLGNBQXZCO0FBQ0EsU0FBU0MsU0FBVCxFQUFvQkMsUUFBcEIsRUFBOEJDLFVBQTlCLFFBQWdELFNBQWhEO0FBRUEsT0FBT0MsU0FBUCxNQUFzQixhQUF0QjtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsU0FBaEM7QUFDQSxTQUFTQyxxQkFBcUIsSUFBSUMsSUFBbEMsUUFBOEMsU0FBOUM7QUFFQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxNQUFOLFNBQXFCSixTQUFyQixDQUErQjtBQUM1QztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VLLEVBQUFBLFdBQVcsQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLEVBQU9DLENBQVAsRUFBVUMsSUFBVixFQUFn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QmtCLEdBQWxCLENBQXNCcEIsUUFBUSxDQUFDRyxTQUFULENBQW1CRyxJQUF6QztBQUNBO0FBbENKO0FBb0NEOztBQUVjLFNBQVJlLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPO0FBQ3BCLFVBQU07QUFBRWpDLE1BQUFBLENBQUY7QUFBS0MsTUFBQUEsQ0FBTDtBQUFRQyxNQUFBQSxDQUFSO0FBQVdDLE1BQUFBLElBQVg7QUFBaUJDLE1BQUFBLE1BQWpCO0FBQXlCQyxNQUFBQSxTQUFTLEdBQUc7QUFBckMsUUFBOEM0QixJQUFwRDtBQUVBLFdBQU8sSUFBSW5DLE1BQUosQ0FBV0UsQ0FBWCxFQUFjQyxDQUFkLEVBQWlCQyxDQUFqQixFQUFvQkMsSUFBcEIsRUFBMEJSLGVBQWUsQ0FBQ1MsTUFBRCxDQUF6QyxFQUFtREMsU0FBbkQsQ0FBUDtBQUNEOztBQTNNMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEUiwgUEkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTWF0aFV0aWxzLCBWZWN0b3IzRCwgY3JlYXRlU3BhbiB9IGZyb20gJy4uL21hdGgnO1xuXG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gJy4vQmVoYXZpb3VyJztcbmltcG9ydCB7IGdldEVhc2luZ0J5TmFtZSB9IGZyb20gJy4uL2Vhc2UnO1xuaW1wb3J0IHsgQkVIQVZJT1VSX1RZUEVfUk9UQVRFIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBCZWhhdmlvdXIgdGhhdCByb3RhdGVzIHBhcnRpY2xlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm90YXRlIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSb3RhdGUgYmVoYXZpb3VyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFggYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFkgYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geiAtIFogYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBiZWhhdmlvdXJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWFzaW5nIC0gVGhlIGVhc2luZyBlcXVhdGlvbiB0byB1c2UgZm9yIHRyYW5zZm9ybXNcbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNFbmFibGVkPXRydWVdIC0gRGV0ZXJtaW5lcyBpZiB0aGUgYmVoYXZpb3VyIHdpbGwgYmUgYXBwbGllZCBvciBub3RcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih4LCB5LCB6LCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcsIHR5cGUsIGlzRW5hYmxlZCk7XG5cbiAgICB0aGlzLnJlc2V0KHgsIHksIHopO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJvdGF0aW9uIHR5cGUuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldCByb3RhdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdGF0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByb3RhdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ31cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBzZXQgcm90YXRpb25UeXBlKHJvdGF0aW9uVHlwZSkge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByb3RhdGlvbiB0eXBlLiBFTlVNIG9mIFsnc2FtZScsICdzZXQnLCAndG8nLCAnYWRkJ10uXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLl9yb3RhdGlvblR5cGUgPSByb3RhdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBiZWhhdmlvdXIgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBYIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBZIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBaIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSB0aGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIHRoZSBlYXNpbmcgZXF1YXRpb24gdG8gdXNlIGZvciB0cmFuc2Zvcm1zXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVzZXQoeCwgeSwgeiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgLyoqXG4gICAgICogQGRlc2MgWCBheGlzIHJvdGF0aW9uLlxuICAgICAqIEB0eXBlIHtudW1iZXJ8U3Bhbn1cbiAgICAgKi9cbiAgICB0aGlzLnggPSB4IHx8IDA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBZIGF4aXMgcm90YXRpb24uXG4gICAgICogQHR5cGUge251bWJlcnxTcGFufVxuICAgICAqL1xuICAgIHRoaXMueSA9IHkgfHwgMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFogYXhpcyByb3RhdGlvbi5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfFNwYW59XG4gICAgICovXG4gICAgdGhpcy56ID0geiB8fCAwO1xuXG4gICAgaWYgKHggPT09IHVuZGVmaW5lZCB8fCB4ID09ICdzYW1lJykge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAnc2FtZSc7XG4gICAgfSBlbHNlIGlmICh5ID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAnc2V0JztcbiAgICB9IGVsc2UgaWYgKHogPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAndG8nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdGF0aW9uVHlwZSA9ICdhZGQnO1xuICAgICAgdGhpcy54ID0gY3JlYXRlU3Bhbih0aGlzLnggKiBEUik7XG4gICAgICB0aGlzLnkgPSBjcmVhdGVTcGFuKHRoaXMueSAqIERSKTtcbiAgICAgIHRoaXMueiA9IGNyZWF0ZVNwYW4odGhpcy56ICogRFIpO1xuICAgIH1cblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgYmVoYXZpb3VyIG9uIGEgcGFydGljbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplIHRoZSBiZWhhdmlvdXIgb25cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgc3dpdGNoICh0aGlzLnJvdGF0aW9uVHlwZSkge1xuICAgICAgY2FzZSAnc2FtZSc6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZXQnOlxuICAgICAgICB0aGlzLl9zZXRSb3RhdGlvbihwYXJ0aWNsZS5yb3RhdGlvbiwgdGhpcy54KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvJzpcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmZSID0gcGFydGljbGUudHJhbnNmb3JtLmZSIHx8IG5ldyBWZWN0b3IzRCgpO1xuICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0udFIgPSBwYXJ0aWNsZS50cmFuc2Zvcm0udFIgfHwgbmV3IFZlY3RvcjNEKCk7XG4gICAgICAgIHRoaXMuX3NldFJvdGF0aW9uKHBhcnRpY2xlLnRyYW5zZm9ybS5mUiwgdGhpcy54KTtcbiAgICAgICAgdGhpcy5fc2V0Um90YXRpb24ocGFydGljbGUudHJhbnNmb3JtLnRSLCB0aGlzLnkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmFkZFIgPSBuZXcgVmVjdG9yM0QoXG4gICAgICAgICAgdGhpcy54LmdldFZhbHVlKCksXG4gICAgICAgICAgdGhpcy55LmdldFZhbHVlKCksXG4gICAgICAgICAgdGhpcy56LmdldFZhbHVlKClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBhcnRpY2xlJ3Mgcm90YXRpb24gcHJpb3IgdG8gdGhlIGJlaGF2aW91ciBiZWluZyBhcHBsaWVkLlxuICAgKlxuICAgKiBOT1RFIEl0J3MgaGFyZCB0byBzZWUgaGVyZSwgYnV0IHRoaXMgaXMgbXV0YXRpbmcgdGhlIHBhcnRpY2xlJ3Mgcm90YXRpb25cbiAgICogZXZlbiB0aG91Z2ggdGhlIHBhcnRpY2xlIGlzIG5vdCBiZWluZyBwYXNzZWQgaW4gZGlyZWN0bHkuXG4gICAqXG4gICAqIE5PVEUgdGhlIGVsc2UgaWYgYmVsb3cgd2lsbCBuZXZlciBiZSByZWFjaGVkIGJlY2F1c2UgdGhlIHZhbHVlIGJlaW5nIHBhc3NlZCBpblxuICAgKiB3aWxsIG5ldmVyIGJlIG9mIHR5cGUgVmVjdG9yM0QuXG4gICAqXG4gICAqIEBwYXJhbSB7VmVjdG9yM0R9IHBhcnRpY2xlUm90YXRpb24gLSB0aGUgcGFydGljbGUncyByb3RhdGlvbiB2ZWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZSAtIHRoZSB2YWx1ZSB0byBzZXQgdGhlIHJvdGF0aW9uIHZhbHVlIHRvLCBpZiAncmFuZG9tJ1xuICAgKiByb3RhdGlvbiBpcyByYW5kb21pc2VkXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgX3NldFJvdGF0aW9uKHBhcnRpY2xlUm90YXRpb24sIHZhbHVlKSB7XG4gICAgcGFydGljbGVSb3RhdGlvbiA9IHBhcnRpY2xlUm90YXRpb24gfHwgbmV3IFZlY3RvcjNEKCk7XG4gICAgaWYgKHZhbHVlID09ICdyYW5kb20nKSB7XG4gICAgICB2YXIgeCA9IE1hdGhVdGlscy5yYW5kb21BVG9CKC1QSSwgUEkpO1xuICAgICAgdmFyIHkgPSBNYXRoVXRpbHMucmFuZG9tQVRvQigtUEksIFBJKTtcbiAgICAgIHZhciB6ID0gTWF0aFV0aWxzLnJhbmRvbUFUb0IoLVBJLCBQSSk7XG5cbiAgICAgIHBhcnRpY2xlUm90YXRpb24uc2V0KHgsIHksIHopO1xuICAgIH1cbiAgICAvLyB3ZSBjYW4ndCBldmVyIGdldCBoZXJlIGJlY2F1c2UgdmFsdWUgd2lsbCBuZXZlciBiZSBhIFZlY3RvcjNEIVxuICAgIC8vIGNvbnNpZGVyIHJlZmFjdG9yaW5nIHRvXG4gICAgLy8gIGlmICh2YWx1ZSBpbnN0YW5jZSBvZiBTcGFuKSB7IHZlYzMuYWRkKHZhbHVlLmdldFZhbHVlKCkpOyB9XG4gICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBWZWN0b3IzRCkge1xuICAgICAgcGFydGljbGVSb3RhdGlvbi5jb3B5KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTXV0YXRlcyB0aGUgcGFydGljbGUucm90YXRpb24gcHJvcGVydHkuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMTYyMjk1Ni9ob3ctdG8tY29udmVydC1kaXJlY3Rpb24tdmVjdG9yLXRvLWV1bGVyLWFuZ2xlc1xuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gYXBwbHkgdGhlIGJlaGF2aW91ciB0b1xuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIGVuZ2luZSB0aW1lXG4gICAqIEBwYXJhbSB7aW50ZWdlcn0gaW5kZXggLSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBtdXRhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5lbmVyZ2l6ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuXG4gICAgc3dpdGNoICh0aGlzLnJvdGF0aW9uVHlwZSkge1xuICAgICAgLy8gb3JpZW50cyB0aGUgcGFydGljbGUgaW4gdGhlIGRpcmVjdGlvbiBpdCBpcyBtb3ZpbmdcbiAgICAgIGNhc2UgJ3NhbWUnOlxuICAgICAgICBpZiAoIXBhcnRpY2xlLnJvdGF0aW9uKSB7XG4gICAgICAgICAgcGFydGljbGUucm90YXRpb24gPSBuZXcgVmVjdG9yM0QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLmNvcHkocGFydGljbGUudmVsb2NpdHkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgLy9cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvJzpcbiAgICAgICAgcGFydGljbGUucm90YXRpb24ueCA9IE1hdGhVdGlscy5sZXJwKFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5mUi54LFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS50Ui54LFxuICAgICAgICAgIHRoaXMuZW5lcmd5XG4gICAgICAgICk7XG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLnkgPSBNYXRoVXRpbHMubGVycChcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uZlIueSxcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0udFIueSxcbiAgICAgICAgICB0aGlzLmVuZXJneVxuICAgICAgICApO1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi56ID0gTWF0aFV0aWxzLmxlcnAoXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmZSLnosXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLnRSLnosXG4gICAgICAgICAgdGhpcy5lbmVyZ3lcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLmFkZChwYXJ0aWNsZS50cmFuc2Zvcm0uYWRkUik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyB4LCB5LCB6LCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUgfSA9IGpzb247XG5cbiAgICByZXR1cm4gbmV3IFJvdGF0ZSh4LCB5LCB6LCBsaWZlLCBnZXRFYXNpbmdCeU5hbWUoZWFzaW5nKSwgaXNFbmFibGVkKTtcbiAgfVxufVxuIl19
@@ -259,7 +259,7 @@ export default class System {
259
259
  while (i--) {
260
260
  const emitter = this.emitters[i];
261
261
  emitter.update(d);
262
- emitter.isEmitting && this.dispatch(SYSTEM_UPDATE);
262
+ emitter.particles.length && this.dispatch(SYSTEM_UPDATE);
263
263
  }
264
264
  }
265
265
 
@@ -317,4 +317,4 @@ export default class System {
317
317
  }
318
318
 
319
319
  }
320
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL1N5c3RlbS5qcyJdLCJuYW1lcyI6WyJFdmVudERpc3BhdGNoZXIiLCJFTUlUVEVSX0FEREVEIiwiRU1JVFRFUl9SRU1PVkVEIiwiU1lTVEVNX1VQREFURSIsIlNZU1RFTV9VUERBVEVfQUZURVIiLCJERUZBVUxUX1NZU1RFTV9ERUxUQSIsIkVtaXR0ZXIiLCJJTlRFR1JBVElPTl9UWVBFX0VVTEVSIiwiUE9PTF9NQVgiLCJQb29sIiwiZnJvbUpTT04iLCJmcm9tSlNPTkFzeW5jIiwiQ09SRV9UWVBFX1NZU1RFTSIsInR5cGUiLCJTeXN0ZW0iLCJjb25zdHJ1Y3RvciIsInByZVBhcnRpY2xlcyIsImludGVncmF0aW9uVHlwZSIsImNhblVwZGF0ZSIsImVtaXR0ZXJzIiwicmVuZGVyZXJzIiwicG9vbCIsImV2ZW50RGlzcGF0Y2hlciIsImpzb24iLCJUSFJFRSIsIm9wdGlvbnMiLCJkaXNwYXRjaCIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGF0Y2hFdmVudCIsImFkZFJlbmRlcmVyIiwicmVuZGVyZXIiLCJwdXNoIiwiaW5pdCIsInJlbW92ZVJlbmRlcmVyIiwic3BsaWNlIiwiaW5kZXhPZiIsInJlbW92ZSIsImFkZEVtaXR0ZXIiLCJlbWl0dGVyIiwiaW5kZXgiLCJsZW5ndGgiLCJwYXJlbnQiLCJyZW1vdmVFbWl0dGVyIiwidW5kZWZpbmVkIiwiZW1pdCIsIm9uU3RhcnQiLCJvblVwZGF0ZSIsIm9uRW5kIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm1hcCIsImxpZmUiLCJJbmZpbml0eSIsImV4cGVyaW1lbnRhbF9lbWl0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lciIsImFsbCIsImUiLCJjb25zb2xlIiwid2FybiIsInVwZGF0ZSIsImRlbHRhIiwiZCIsImkiLCJpc0VtaXR0aW5nIiwiZ2V0Q291bnQiLCJ0b3RhbCIsInBhcnRpY2xlcyIsImRlc3Ryb3kiLCJyIl0sIm1hcHBpbmdz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QUFLbEQsUUFBTCxDQUFjdUMsQ0FBZCxDQUFQO0FBQ0Q7O0FBRUQsU0FBSyxJQUFJWSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHN0IsTUFBcEIsRUFBNEI2QixDQUFDLEVBQTdCLEVBQWlDO0FBQy9CLFVBQUksS0FBS2xELFNBQUwsQ0FBZWtELENBQWYsS0FBcUIsS0FBS2xELFNBQUwsQ0FBZWtELENBQWYsRUFBa0JELE9BQTNDLEVBQW9EO0FBQ2xELGFBQUtqRCxTQUFMLENBQWVrRCxDQUFmLEVBQWtCRCxPQUFsQjtBQUNBLGVBQU8sS0FBS2pELFNBQUwsQ0FBZWtELENBQWYsQ0FBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBS25ELFFBQUwsQ0FBY3NCLE1BQWQsR0FBdUIsQ0FBdkI7QUFDQSxTQUFLcEIsSUFBTCxDQUFVZ0QsT0FBVjtBQUNBLFNBQUtuRCxTQUFMLEdBQWlCLElBQWpCO0FBQ0Q7O0FBM1N5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudERpc3BhdGNoZXIsIHtcbiAgRU1JVFRFUl9BRERFRCxcbiAgRU1JVFRFUl9SRU1PVkVELFxuICBTWVNURU1fVVBEQVRFLFxuICBTWVNURU1fVVBEQVRFX0FGVEVSLFxufSBmcm9tICcuLi9ldmVudHMnO1xuXG5pbXBvcnQgeyBERUZBVUxUX1NZU1RFTV9ERUxUQSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBFbWl0dGVyIGZyb20gJy4uL2VtaXR0ZXIvRW1pdHRlcic7XG5pbXBvcnQgeyBJTlRFR1JBVElPTl9UWVBFX0VVTEVSIH0gZnJvbSAnLi4vbWF0aC9jb25zdGFudHMnO1xuaW1wb3J0IHsgUE9PTF9NQVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IFBvb2wgZnJvbSAnLi9Qb29sJztcbmltcG9ydCBmcm9tSlNPTiBmcm9tICcuL2Zyb21KU09OJztcbmltcG9ydCBmcm9tSlNPTkFzeW5jIGZyb20gJy4vZnJvbUpTT05Bc3luYyc7XG5pbXBvcnQgeyBDT1JFX1RZUEVfU1lTVEVNIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgY29yZSBvZiB0aGUgdGhyZWUtc3lzdGVtIHBhcnRpY2xlIGVuZ2luZS5cbiAqIEEgU3lzdGVtIGluc3RhbmNlIGNhbiBjb250YWluIG11bHRpcGxlIGVtaXR0ZXJzLCBlYWNoIHdpdGggdGhlaXIgb3duIGluaXRpYWxpemVyc1xuICogYW5kIGJlaGF2aW91cnMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeXN0ZW0ge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFN5c3RlbSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFRIUkVFIC0gVGhyZWVKc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZVBhcnRpY2xlcz1QT09MX01BWF0gLSBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBzdGFydCB3aXRoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbaW50ZWdyYXRpb25UeXBlPUlOVEVHUkFUSU9OX1RZUEVfRVVMRVJdIC0gVGhlIGludGVncmF0aW9uIHR5cGUgdG8gdXNlXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJlUGFydGljbGVzID0gUE9PTF9NQVgsXG4gICAgaW50ZWdyYXRpb25UeXBlID0gSU5URUdSQVRJT05fVFlQRV9FVUxFUlxuICApIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBzeXN0ZW0gY2FuIHVwZGF0ZSBvciBub3QuIFNldCB0byBmYWxzZSB3aGVuIGRlc3Ryb3lpbmdcbiAgICAgKiB0byBlbnN1cmUgdGhhdCBleHRlcm5hbCBjYWxscyB0byB1cGRhdGUgZG8gbm90IHRocm93IGVycm9ycy5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmNhblVwZGF0ZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBzdGFydCB3aXRoLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5wcmVQYXJ0aWNsZXMgPSBwcmVQYXJ0aWNsZXM7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgaW50ZWdyYXRpb24gYWxnb3JpdGhtIHR5cGUgdG8gdXNlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuaW50ZWdyYXRpb25UeXBlID0gaW50ZWdyYXRpb25UeXBlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGVtaXR0ZXJzIGluIHRoZSBwYXJ0aWNsZSBzeXN0ZW0uXG4gICAgICogQHR5cGUge2FycmF5PEVtaXR0ZXI+fVxuICAgICAqL1xuICAgIHRoaXMuZW1pdHRlcnMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByZW5kZXJlcnMgZm9yIHRoZSBzeXN0ZW0uXG4gICAgICogQHR5cGUge2FycmF5PFJlbmRlcmVyPn1cbiAgICAgKi9cbiAgICB0aGlzLnJlbmRlcmVycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgQSBwb29sIHVzZWQgdG8gbWFuYWdlIHRoZSBpbnRlcm5hbCBzeXN0ZW0gY2FjaGUgb2Ygb2JqZWN0c1xuICAgICAqIEB0eXBlIHtQb29sfVxuICAgICAqL1xuICAgIHRoaXMucG9vbCA9IG5ldyBQb29sKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBJbnRlcm5hbCBldmVudCBkaXNwYXRjaGVyXG4gICAgICogQHR5cGUge0V2ZW50RGlzcGF0Y2hlcn1cbiAgICAgKi9cbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlciA9IG5ldyBFdmVudERpc3BhdGNoZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgU3lzdGVtIGluc3RhbmNlIGZyb20gYSBKU09OIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjcmVhdGUgdGhlIFN5c3RlbSBpbnN0YW5jZSBmcm9tXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBUSFJFRSAtIFRoZSBXZWIgR0wgQXBpIHRvIHVzZSBlZy4sIFRIUkVFXG4gICAqIEByZXR1cm4ge1N5c3RlbX1cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21KU09OQXN5bmMgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIFRIUkVFKSB7XG4gICAgcmV0dXJuIGZyb21KU09OKGpzb24sIFRIUkVFLCBTeXN0ZW0sIEVtaXR0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGEgU3lzdGVtIGluc3RhbmNlIGZyb20gSlNPTiBhc3luY2hyb25vdXNseS4gRW5zdXJlcyBhbGwgdGV4dHVyZXMgYXJlXG4gICAqIGZ1bGx5IGxvYWRlZCBiZWZvcmUgcmVzb2x2aW5nIHdpdGggdGhlIGluc3RhbnRpYXRlZCBTeXN0ZW0gaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBqc29uIC0gVGhlIEpTT04gdG8gY3JlYXRlIHRoZSBTeXN0ZW0gaW5zdGFuY2UgZnJvbVxuICAgKiBAcGFyYW0ge29iamVjdH0gVEhSRUUgLSBUaGUgV2ViIEdMIEFwaSB0byB1c2UgZWcuLCBUSFJFRVxuICAgKiBAcGFyYW0gez9vYmplY3R9IG9wdGlvbnMgLSBPcHRpb25hbCBjb25maWcgb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPFN5c3RlbT59XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT05Bc3luYyhqc29uLCBUSFJFRSwgb3B0aW9ucykge1xuICAgIHJldHVybiBmcm9tSlNPTkFzeW5jKGpzb24sIFRIUkVFLCBTeXN0ZW0sIEVtaXR0ZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3h5IG1ldGhvZCBmb3IgdGhlIGludGVybmFsIGV2ZW50IGRpc3BhdGNoZXIncyBkaXNwYXRjaEV2ZW50IG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IC0gVGhlIGV2ZW50IHRvIGRpc3BhdGNoXG4gICAqIEBwYXJhbSB7b2JqZWN0PFN5c3RlbXxFbWl0dGVyfFBhcnRpY2xlPn0gW3RhcmdldD10aGlzXSAtIFRoZSBldmVudCB0YXJnZXRcbiAgICovXG4gIGRpc3BhdGNoKGV2ZW50LCB0YXJnZXQgPSB0aGlzKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIuZGlzcGF0Y2hFdmVudChldmVudCwgdGFyZ2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVuZGVyZXIgdG8gdGhlIFN5c3RlbSBpbnN0YW5jZSBhbmQgaW5pdGlhbGl6ZXMgaXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IHJlbmRlcmVyIC0gVGhlIHJlbmRlcmVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICBhZGRSZW5kZXJlcihyZW5kZXJlcikge1xuICAgIHRoaXMucmVuZGVyZXJzLnB1c2gocmVuZGVyZXIpO1xuICAgIHJlbmRlcmVyLmluaXQodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcmVuZGVyZXIgZnJvbSB0aGUgU3lzdGVtIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlbmRlcmVyfSByZW5kZXJlclxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICByZW1vdmVSZW5kZXJlcihyZW5kZXJlcikge1xuICAgIHRoaXMucmVuZGVyZXJzLnNwbGljZSh0aGlzLnJlbmRlcmVycy5pbmRleE9mKHJlbmRlcmVyKSwgMSk7XG4gICAgcmVuZGVyZXIucmVtb3ZlKHRoaXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBlbWl0dGVyIHRvIHRoZSBTeXN0ZW0gaW5zdGFuY2UuXG4gICAqIERpc3BhdGNoZXMgdGhlIEVNSVRURVJfQURERUQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7RW1pdHRlcn0gZW1pdHRlciAtIFRoZSBlbWl0dGVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICBhZGRFbWl0dGVyKGVtaXR0ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgZW1pdHRlci5wYXJlbnQgPSB0aGlzO1xuICAgIGVtaXR0ZXIuaW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMuZW1pdHRlcnMucHVzaChlbWl0dGVyKTtcbiAgICB0aGlzLmRpc3BhdGNoKEVNSVRURVJfQURERUQsIGVtaXR0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBlbWl0dGVyIGZyb20gdGhlIFN5c3RlbSBpbnN0YW5jZS5cbiAgICogRGlzcGF0Y2hlcyB0aGUgRU1JVFRFUl9SRU1PVkVEIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge0VtaXR0ZXJ9IGVtaXR0ZXIgLSBUaGUgZW1pdHRlciB0byByZW1vdmVcbiAgICogQHJldHVybiB7U3lzdGVtfVxuICAgKi9cbiAgcmVtb3ZlRW1pdHRlcihlbWl0dGVyKSB7XG4gICAgaWYgKGVtaXR0ZXIucGFyZW50ICE9PSB0aGlzKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBlbWl0dGVyLnBhcmVudCA9IG51bGw7XG4gICAgZW1pdHRlci5pbmRleCA9IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuZW1pdHRlcnMuc3BsaWNlKHRoaXMuZW1pdHRlcnMuaW5kZXhPZihlbWl0dGVyKSwgMSk7XG4gICAgdGhpcy5kaXNwYXRjaChFTUlUVEVSX1JFTU9WRUQsIGVtaXR0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogV2lyZXMgdXAgbGlmZSBjeWNsZSBtZXRob2RzIGFuZCBjYXVzZXMgYSBzeXN0ZW0ncyBlbWl0dGVycyB0byBlbWl0IHBhcnRpY2xlcy5cbiAgICogRXhwZWN0cyBlbWl0dGVycyB0byBoYXZlIHRoZWlyIHRvdGFsRW1pdFRpbWVzIGFuZCBsaWZlIHNldCBhbHJlYWR5LlxuICAgKiBJbmlmbml0ZSBzeXN0ZW1zIHdpbGwgcmVzb2x2ZSBpbW1lZGlhdGVseS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGhvb2tzIC0gRnVuY3Rpb25zIHRvIGhvb2sgaW50byB0aGUgbGlmZSBjeWNsZSBBUElcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gaG9va3Mub25TdGFydCAtIENhbGxlZCB3aGVuIHRoZSBzeXN0ZW0gc3RhcnRzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGhvb2tzLm9uVXBkYXRlIC0gQ2FsbGVkIGVhY2ggdGltZSB0aGUgc3lzdGVtIHVwZGF0ZXNcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gaG9va3Mub25FbmQgLSBDYWxsZWQgd2hlbiB0aGUgc3lzdGVtJ3MgZW1pdHRlcnMgaGF2ZSBhbGwgZGllZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlfVxuICAgKi9cbiAgZW1pdCh7IG9uU3RhcnQsIG9uVXBkYXRlLCBvbkVuZCB9KSB7XG4gICAgaWYgKG9uU3RhcnQpIHtcbiAgICAgIG9uU3RhcnQoKTtcbiAgICB9XG5cbiAgICBpZiAob25VcGRhdGUpIHtcbiAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyLmFkZEV2ZW50TGlzdGVuZXIoU1lTVEVNX1VQREFURSwgb25VcGRhdGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGVtaXR0ZXJzID0gdGhpcy5lbWl0dGVycy5tYXAoZW1pdHRlciA9PiB7XG4gICAgICBjb25zdCB7IGxpZmUgfSA9IGVtaXR0ZXI7XG5cbiAgICAgIGlmIChsaWZlID09PSBJbmZpbml0eSkge1xuICAgICAgICBpZiAob25FbmQpIHtcbiAgICAgICAgICBvbkVuZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW1pdHRlci5leHBlcmltZW50YWxfZW1pdCgpO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBlbWl0dGVyLmFkZE9uRW1pdHRlckRlYWRFdmVudExpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICBpZiAob25FbmQpIHtcbiAgICAgICAgICAgIG9uRW5kKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBlbWl0dGVyLmV4cGVyaW1lbnRhbF9lbWl0KCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZW1pdHRlcnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGFydGljbGUgc3lzdGVtIGJhc2VkIG9uIHRoZSBkZWx0YSBwYXNzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGFuaW1hdGUgPSAoKSA9PiB7XG4gICAqICAgdGhyZWVSZW5kZXJlci5yZW5kZXIodGhyZWVTY2VuZSwgdGhyZWVDYW1lcmEpO1xuICAgKiAgIHN5c3RlbS51cGRhdGUoKTtcbiAgICogICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XG4gICAqIH1cbiAgICogYW5pbWF0ZSgpO1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVsdGEgLSBEZWx0YSB0aW1lXG4gICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAqL1xuICB1cGRhdGUoZGVsdGEgPSBERUZBVUxUX1NZU1RFTV9ERUxUQSkge1xuICAgIGNvbnN0IGQgPSBkZWx0YSB8fCBERUZBVUxUX1NZU1RFTV9ERUxUQTtcblxuICAgIGlmICh0aGlzLmNhblVwZGF0ZSkge1xuICAgICAgaWYgKGQgPiAwKSB7XG4gICAgICAgIGxldCBpID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgIGNvbnN0IGVtaXR0ZXIgPSB0aGlzLmVtaXR0ZXJzW2ldO1xuXG4gICAgICAgICAgZW1pdHRlci51cGRhdGUoZCk7XG4gICAgICAgICAgZW1pdHRlci5pc0VtaXR0aW5nICYmIHRoaXMuZGlzcGF0Y2goU1lTVEVNX1VQREFURSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXNwYXRjaChTWVNURU1fVVBEQVRFX0FGVEVSKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGNvdW50IG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFydGljbGVzIGluIHRoZSBzeXN0ZW0uXG4gICAqXG4gICAqIEByZXR1cm4ge2ludGVnZXJ9XG4gICAqL1xuICBnZXRDb3VudCgpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcblxuICAgIGxldCB0b3RhbCA9IDA7XG5cbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdG90YWwgKz0gdGhpcy5lbWl0dGVyc1tpXS5wYXJ0aWNsZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiB0b3RhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbGwgZW1pdHRlcnMsIHJlbmRlcmVycyBhbmQgdGhlIE5lYnVsYSBwb29sLlxuICAgKiBFbnN1cmVzIHRoYXQgdGhpcy51cGRhdGUgd2lsbCBub3QgcGVyZm9ybSBhbnkgb3BlcmF0aW9ucyB3aGlsZSB0aGUgc3lzdGVtXG4gICAqIGlzIGJlaW5nIGRlc3Ryb3llZC5cbiAgICpcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgdGhpcy5jYW5VcGRhdGUgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGUgPSAwOyBlIDwgbGVuZ3RoOyBlKyspIHtcbiAgICAgIHRoaXMuZW1pdHRlcnNbZV0gJiYgdGhpcy5lbWl0dGVyc1tlXS5kZXN0cm95KCk7XG4gICAgICBkZWxldGUgdGhpcy5lbWl0dGVyc1tlXTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCByID0gMDsgciA8IGxlbmd0aDsgcisrKSB7XG4gICAgICBpZiAodGhpcy5yZW5kZXJlcnNbcl0gJiYgdGhpcy5yZW5kZXJlcnNbcl0uZGVzdHJveSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyc1tyXS5kZXN0cm95KCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnJlbmRlcmVyc1tyXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVtaXR0ZXJzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5wb29sLmRlc3Ryb3koKTtcbiAgICB0aGlzLmNhblVwZGF0ZSA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
320
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL1N5c3RlbS5qcyJdLCJuYW1lcyI6WyJFdmVudERpc3BhdGNoZXIiLCJFTUlUVEVSX0FEREVEIiwiRU1JVFRFUl9SRU1PVkVEIiwiU1lTVEVNX1VQREFURSIsIlNZU1RFTV9VUERBVEVfQUZURVIiLCJERUZBVUxUX1NZU1RFTV9ERUxUQSIsIkVtaXR0ZXIiLCJJTlRFR1JBVElPTl9UWVBFX0VVTEVSIiwiUE9PTF9NQVgiLCJQb29sIiwiZnJvbUpTT04iLCJmcm9tSlNPTkFzeW5jIiwiQ09SRV9UWVBFX1NZU1RFTSIsInR5cGUiLCJTeXN0ZW0iLCJjb25zdHJ1Y3RvciIsInByZVBhcnRpY2xlcyIsImludGVncmF0aW9uVHlwZSIsImNhblVwZGF0ZSIsImVtaXR0ZXJzIiwicmVuZGVyZXJzIiwicG9vbCIsImV2ZW50RGlzcGF0Y2hlciIsImpzb24iLCJUSFJFRSIsIm9wdGlvbnMiLCJkaXNwYXRjaCIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGF0Y2hFdmVudCIsImFkZFJlbmRlcmVyIiwicmVuZGVyZXIiLCJwdXNoIiwiaW5pdCIsInJlbW92ZVJlbmRlcmVyIiwic3BsaWNlIiwiaW5kZXhPZiIsInJlbW92ZSIsImFkZEVtaXR0ZXIiLCJlbWl0dGVyIiwiaW5kZXgiLCJsZW5ndGgiLCJwYXJlbnQiLCJyZW1vdmVFbWl0dGVyIiwidW5kZWZpbmVkIiwiZW1pdCIsIm9uU3RhcnQiLCJvblVwZGF0ZSIsIm9uRW5kIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm1hcCIsImxpZmUiLCJJbmZpbml0eSIsImV4cGVyaW1lbnRhbF9lbWl0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lciIsImFsbCIsImUiLCJjb25zb2xlIiwid2FybiIsInVwZGF0ZSIsImRlbHRhIiwiZCIsImkiLCJwYXJ0aWNsZXMiLCJnZXRDb3VudCIsInRvdGFsIiwiZGVzdHJveSIsInIiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9B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QUFLakQsUUFBTCxDQUFjdUMsQ0FBZCxDQUFQO0FBQ0Q7O0FBRUQsU0FBSyxJQUFJVyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHNUIsTUFBcEIsRUFBNEI0QixDQUFDLEVBQTdCLEVBQWlDO0FBQy9CLFVBQUksS0FBS2pELFNBQUwsQ0FBZWlELENBQWYsS0FBcUIsS0FBS2pELFNBQUwsQ0FBZWlELENBQWYsRUFBa0JELE9BQTNDLEVBQW9EO0FBQ2xELGFBQUtoRCxTQUFMLENBQWVpRCxDQUFmLEVBQWtCRCxPQUFsQjtBQUNBLGVBQU8sS0FBS2hELFNBQUwsQ0FBZWlELENBQWYsQ0FBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBS2xELFFBQUwsQ0FBY3NCLE1BQWQsR0FBdUIsQ0FBdkI7QUFDQSxTQUFLcEIsSUFBTCxDQUFVK0MsT0FBVjtBQUNBLFNBQUtsRCxTQUFMLEdBQWlCLElBQWpCO0FBQ0Q7O0FBM1N5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudERpc3BhdGNoZXIsIHtcbiAgRU1JVFRFUl9BRERFRCxcbiAgRU1JVFRFUl9SRU1PVkVELFxuICBTWVNURU1fVVBEQVRFLFxuICBTWVNURU1fVVBEQVRFX0FGVEVSLFxufSBmcm9tICcuLi9ldmVudHMnO1xuXG5pbXBvcnQgeyBERUZBVUxUX1NZU1RFTV9ERUxUQSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBFbWl0dGVyIGZyb20gJy4uL2VtaXR0ZXIvRW1pdHRlcic7XG5pbXBvcnQgeyBJTlRFR1JBVElPTl9UWVBFX0VVTEVSIH0gZnJvbSAnLi4vbWF0aC9jb25zdGFudHMnO1xuaW1wb3J0IHsgUE9PTF9NQVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IFBvb2wgZnJvbSAnLi9Qb29sJztcbmltcG9ydCBmcm9tSlNPTiBmcm9tICcuL2Zyb21KU09OJztcbmltcG9ydCBmcm9tSlNPTkFzeW5jIGZyb20gJy4vZnJvbUpTT05Bc3luYyc7XG5pbXBvcnQgeyBDT1JFX1RZUEVfU1lTVEVNIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgY29yZSBvZiB0aGUgdGhyZWUtc3lzdGVtIHBhcnRpY2xlIGVuZ2luZS5cbiAqIEEgU3lzdGVtIGluc3RhbmNlIGNhbiBjb250YWluIG11bHRpcGxlIGVtaXR0ZXJzLCBlYWNoIHdpdGggdGhlaXIgb3duIGluaXRpYWxpemVyc1xuICogYW5kIGJlaGF2aW91cnMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeXN0ZW0ge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFN5c3RlbSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFRIUkVFIC0gVGhyZWVKc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZVBhcnRpY2xlcz1QT09MX01BWF0gLSBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBzdGFydCB3aXRoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbaW50ZWdyYXRpb25UeXBlPUlOVEVHUkFUSU9OX1RZUEVfRVVMRVJdIC0gVGhlIGludGVncmF0aW9uIHR5cGUgdG8gdXNlXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJlUGFydGljbGVzID0gUE9PTF9NQVgsXG4gICAgaW50ZWdyYXRpb25UeXBlID0gSU5URUdSQVRJT05fVFlQRV9FVUxFUlxuICApIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBzeXN0ZW0gY2FuIHVwZGF0ZSBvciBub3QuIFNldCB0byBmYWxzZSB3aGVuIGRlc3Ryb3lpbmdcbiAgICAgKiB0byBlbnN1cmUgdGhhdCBleHRlcm5hbCBjYWxscyB0byB1cGRhdGUgZG8gbm90IHRocm93IGVycm9ycy5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmNhblVwZGF0ZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBzdGFydCB3aXRoLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5wcmVQYXJ0aWNsZXMgPSBwcmVQYXJ0aWNsZXM7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgaW50ZWdyYXRpb24gYWxnb3JpdGhtIHR5cGUgdG8gdXNlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuaW50ZWdyYXRpb25UeXBlID0gaW50ZWdyYXRpb25UeXBlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGVtaXR0ZXJzIGluIHRoZSBwYXJ0aWNsZSBzeXN0ZW0uXG4gICAgICogQHR5cGUge2FycmF5PEVtaXR0ZXI+fVxuICAgICAqL1xuICAgIHRoaXMuZW1pdHRlcnMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByZW5kZXJlcnMgZm9yIHRoZSBzeXN0ZW0uXG4gICAgICogQHR5cGUge2FycmF5PFJlbmRlcmVyPn1cbiAgICAgKi9cbiAgICB0aGlzLnJlbmRlcmVycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgQSBwb29sIHVzZWQgdG8gbWFuYWdlIHRoZSBpbnRlcm5hbCBzeXN0ZW0gY2FjaGUgb2Ygb2JqZWN0c1xuICAgICAqIEB0eXBlIHtQb29sfVxuICAgICAqL1xuICAgIHRoaXMucG9vbCA9IG5ldyBQb29sKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBJbnRlcm5hbCBldmVudCBkaXNwYXRjaGVyXG4gICAgICogQHR5cGUge0V2ZW50RGlzcGF0Y2hlcn1cbiAgICAgKi9cbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlciA9IG5ldyBFdmVudERpc3BhdGNoZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgU3lzdGVtIGluc3RhbmNlIGZyb20gYSBKU09OIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjcmVhdGUgdGhlIFN5c3RlbSBpbnN0YW5jZSBmcm9tXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBUSFJFRSAtIFRoZSBXZWIgR0wgQXBpIHRvIHVzZSBlZy4sIFRIUkVFXG4gICAqIEByZXR1cm4ge1N5c3RlbX1cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21KU09OQXN5bmMgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIFRIUkVFKSB7XG4gICAgcmV0dXJuIGZyb21KU09OKGpzb24sIFRIUkVFLCBTeXN0ZW0sIEVtaXR0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGEgU3lzdGVtIGluc3RhbmNlIGZyb20gSlNPTiBhc3luY2hyb25vdXNseS4gRW5zdXJlcyBhbGwgdGV4dHVyZXMgYXJlXG4gICAqIGZ1bGx5IGxvYWRlZCBiZWZvcmUgcmVzb2x2aW5nIHdpdGggdGhlIGluc3RhbnRpYXRlZCBTeXN0ZW0gaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBqc29uIC0gVGhlIEpTT04gdG8gY3JlYXRlIHRoZSBTeXN0ZW0gaW5zdGFuY2UgZnJvbVxuICAgKiBAcGFyYW0ge29iamVjdH0gVEhSRUUgLSBUaGUgV2ViIEdMIEFwaSB0byB1c2UgZWcuLCBUSFJFRVxuICAgKiBAcGFyYW0gez9vYmplY3R9IG9wdGlvbnMgLSBPcHRpb25hbCBjb25maWcgb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPFN5c3RlbT59XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT05Bc3luYyhqc29uLCBUSFJFRSwgb3B0aW9ucykge1xuICAgIHJldHVybiBmcm9tSlNPTkFzeW5jKGpzb24sIFRIUkVFLCBTeXN0ZW0sIEVtaXR0ZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3h5IG1ldGhvZCBmb3IgdGhlIGludGVybmFsIGV2ZW50IGRpc3BhdGNoZXIncyBkaXNwYXRjaEV2ZW50IG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IC0gVGhlIGV2ZW50IHRvIGRpc3BhdGNoXG4gICAqIEBwYXJhbSB7b2JqZWN0PFN5c3RlbXxFbWl0dGVyfFBhcnRpY2xlPn0gW3RhcmdldD10aGlzXSAtIFRoZSBldmVudCB0YXJnZXRcbiAgICovXG4gIGRpc3BhdGNoKGV2ZW50LCB0YXJnZXQgPSB0aGlzKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIuZGlzcGF0Y2hFdmVudChldmVudCwgdGFyZ2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVuZGVyZXIgdG8gdGhlIFN5c3RlbSBpbnN0YW5jZSBhbmQgaW5pdGlhbGl6ZXMgaXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IHJlbmRlcmVyIC0gVGhlIHJlbmRlcmVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICBhZGRSZW5kZXJlcihyZW5kZXJlcikge1xuICAgIHRoaXMucmVuZGVyZXJzLnB1c2gocmVuZGVyZXIpO1xuICAgIHJlbmRlcmVyLmluaXQodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcmVuZGVyZXIgZnJvbSB0aGUgU3lzdGVtIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlbmRlcmVyfSByZW5kZXJlclxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICByZW1vdmVSZW5kZXJlcihyZW5kZXJlcikge1xuICAgIHRoaXMucmVuZGVyZXJzLnNwbGljZSh0aGlzLnJlbmRlcmVycy5pbmRleE9mKHJlbmRlcmVyKSwgMSk7XG4gICAgcmVuZGVyZXIucmVtb3ZlKHRoaXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBlbWl0dGVyIHRvIHRoZSBTeXN0ZW0gaW5zdGFuY2UuXG4gICAqIERpc3BhdGNoZXMgdGhlIEVNSVRURVJfQURERUQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7RW1pdHRlcn0gZW1pdHRlciAtIFRoZSBlbWl0dGVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICBhZGRFbWl0dGVyKGVtaXR0ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgZW1pdHRlci5wYXJlbnQgPSB0aGlzO1xuICAgIGVtaXR0ZXIuaW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMuZW1pdHRlcnMucHVzaChlbWl0dGVyKTtcbiAgICB0aGlzLmRpc3BhdGNoKEVNSVRURVJfQURERUQsIGVtaXR0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBlbWl0dGVyIGZyb20gdGhlIFN5c3RlbSBpbnN0YW5jZS5cbiAgICogRGlzcGF0Y2hlcyB0aGUgRU1JVFRFUl9SRU1PVkVEIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge0VtaXR0ZXJ9IGVtaXR0ZXIgLSBUaGUgZW1pdHRlciB0byByZW1vdmVcbiAgICogQHJldHVybiB7U3lzdGVtfVxuICAgKi9cbiAgcmVtb3ZlRW1pdHRlcihlbWl0dGVyKSB7XG4gICAgaWYgKGVtaXR0ZXIucGFyZW50ICE9PSB0aGlzKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBlbWl0dGVyLnBhcmVudCA9IG51bGw7XG4gICAgZW1pdHRlci5pbmRleCA9IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuZW1pdHRlcnMuc3BsaWNlKHRoaXMuZW1pdHRlcnMuaW5kZXhPZihlbWl0dGVyKSwgMSk7XG4gICAgdGhpcy5kaXNwYXRjaChFTUlUVEVSX1JFTU9WRUQsIGVtaXR0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogV2lyZXMgdXAgbGlmZSBjeWNsZSBtZXRob2RzIGFuZCBjYXVzZXMgYSBzeXN0ZW0ncyBlbWl0dGVycyB0byBlbWl0IHBhcnRpY2xlcy5cbiAgICogRXhwZWN0cyBlbWl0dGVycyB0byBoYXZlIHRoZWlyIHRvdGFsRW1pdFRpbWVzIGFuZCBsaWZlIHNldCBhbHJlYWR5LlxuICAgKiBJbmlmbml0ZSBzeXN0ZW1zIHdpbGwgcmVzb2x2ZSBpbW1lZGlhdGVseS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGhvb2tzIC0gRnVuY3Rpb25zIHRvIGhvb2sgaW50byB0aGUgbGlmZSBjeWNsZSBBUElcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gaG9va3Mub25TdGFydCAtIENhbGxlZCB3aGVuIHRoZSBzeXN0ZW0gc3RhcnRzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGhvb2tzLm9uVXBkYXRlIC0gQ2FsbGVkIGVhY2ggdGltZSB0aGUgc3lzdGVtIHVwZGF0ZXNcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gaG9va3Mub25FbmQgLSBDYWxsZWQgd2hlbiB0aGUgc3lzdGVtJ3MgZW1pdHRlcnMgaGF2ZSBhbGwgZGllZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlfVxuICAgKi9cbiAgZW1pdCh7IG9uU3RhcnQsIG9uVXBkYXRlLCBvbkVuZCB9KSB7XG4gICAgaWYgKG9uU3RhcnQpIHtcbiAgICAgIG9uU3RhcnQoKTtcbiAgICB9XG5cbiAgICBpZiAob25VcGRhdGUpIHtcbiAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyLmFkZEV2ZW50TGlzdGVuZXIoU1lTVEVNX1VQREFURSwgb25VcGRhdGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGVtaXR0ZXJzID0gdGhpcy5lbWl0dGVycy5tYXAoZW1pdHRlciA9PiB7XG4gICAgICBjb25zdCB7IGxpZmUgfSA9IGVtaXR0ZXI7XG5cbiAgICAgIGlmIChsaWZlID09PSBJbmZpbml0eSkge1xuICAgICAgICBpZiAob25FbmQpIHtcbiAgICAgICAgICBvbkVuZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW1pdHRlci5leHBlcmltZW50YWxfZW1pdCgpO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBlbWl0dGVyLmFkZE9uRW1pdHRlckRlYWRFdmVudExpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICBpZiAob25FbmQpIHtcbiAgICAgICAgICAgIG9uRW5kKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBlbWl0dGVyLmV4cGVyaW1lbnRhbF9lbWl0KCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZW1pdHRlcnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGFydGljbGUgc3lzdGVtIGJhc2VkIG9uIHRoZSBkZWx0YSBwYXNzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGFuaW1hdGUgPSAoKSA9PiB7XG4gICAqICAgdGhyZWVSZW5kZXJlci5yZW5kZXIodGhyZWVTY2VuZSwgdGhyZWVDYW1lcmEpO1xuICAgKiAgIHN5c3RlbS51cGRhdGUoKTtcbiAgICogICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XG4gICAqIH1cbiAgICogYW5pbWF0ZSgpO1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVsdGEgLSBEZWx0YSB0aW1lXG4gICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAqL1xuICB1cGRhdGUoZGVsdGEgPSBERUZBVUxUX1NZU1RFTV9ERUxUQSkge1xuICAgIGNvbnN0IGQgPSBkZWx0YSB8fCBERUZBVUxUX1NZU1RFTV9ERUxUQTtcblxuICAgIGlmICh0aGlzLmNhblVwZGF0ZSkge1xuICAgICAgaWYgKGQgPiAwKSB7XG4gICAgICAgIGxldCBpID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgIGNvbnN0IGVtaXR0ZXIgPSB0aGlzLmVtaXR0ZXJzW2ldO1xuXG4gICAgICAgICAgZW1pdHRlci51cGRhdGUoZCk7XG4gICAgICAgICAgZW1pdHRlci5wYXJ0aWNsZXMubGVuZ3RoICYmIHRoaXMuZGlzcGF0Y2goU1lTVEVNX1VQREFURSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXNwYXRjaChTWVNURU1fVVBEQVRFX0FGVEVSKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGNvdW50IG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFydGljbGVzIGluIHRoZSBzeXN0ZW0uXG4gICAqXG4gICAqIEByZXR1cm4ge2ludGVnZXJ9XG4gICAqL1xuICBnZXRDb3VudCgpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcblxuICAgIGxldCB0b3RhbCA9IDA7XG5cbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdG90YWwgKz0gdGhpcy5lbWl0dGVyc1tpXS5wYXJ0aWNsZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiB0b3RhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbGwgZW1pdHRlcnMsIHJlbmRlcmVycyBhbmQgdGhlIE5lYnVsYSBwb29sLlxuICAgKiBFbnN1cmVzIHRoYXQgdGhpcy51cGRhdGUgd2lsbCBub3QgcGVyZm9ybSBhbnkgb3BlcmF0aW9ucyB3aGlsZSB0aGUgc3lzdGVtXG4gICAqIGlzIGJlaW5nIGRlc3Ryb3llZC5cbiAgICpcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgdGhpcy5jYW5VcGRhdGUgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGUgPSAwOyBlIDwgbGVuZ3RoOyBlKyspIHtcbiAgICAgIHRoaXMuZW1pdHRlcnNbZV0gJiYgdGhpcy5lbWl0dGVyc1tlXS5kZXN0cm95KCk7XG4gICAgICBkZWxldGUgdGhpcy5lbWl0dGVyc1tlXTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCByID0gMDsgciA8IGxlbmd0aDsgcisrKSB7XG4gICAgICBpZiAodGhpcy5yZW5kZXJlcnNbcl0gJiYgdGhpcy5yZW5kZXJlcnNbcl0uZGVzdHJveSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyc1tyXS5kZXN0cm95KCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnJlbmRlcmVyc1tyXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVtaXR0ZXJzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5wb29sLmRlc3Ryb3koKTtcbiAgICB0aGlzLmNhblVwZGF0ZSA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { BEHAVIOUR_TYPE_ALPHA, BEHAVIOUR_TYPE_ATTRACTION, BEHAVIOUR_TYPE_COLOR, BEHAVIOUR_TYPE_CROSS_ZONE, BEHAVIOUR_TYPE_FORCE, BEHAVIOUR_TYPE_GRAVITY, BEHAVIOUR_TYPE_RANDOM_DRIFT, BEHAVIOUR_TYPE_REPULSION, BEHAVIOUR_TYPE_ROTATE, BEHAVIOUR_TYPE_SCALE, BEHAVIOUR_TYPE_SPRING } from '../behaviour/types';
2
- import { INITIALIZER_TYPE_BODY, INITIALIZER_TYPE_BODY_SPRITE, INITIALIZER_TYPE_LIFE, INITIALIZER_TYPE_MASS, INITIALIZER_TYPE_POLAR_VELOCITY, INITIALIZER_TYPE_POSITION, INITIALIZER_TYPE_RADIAL_VELOCITY, INITIALIZER_TYPE_RADIUS, INITIALIZER_TYPE_TEXTURE, INITIALIZER_TYPE_VECTOR_VELOCITY } from '../initializer/types';
2
+ import { INITIALIZER_TYPE_BODY, INITIALIZER_TYPE_BODY_SPRITE, INITIALIZER_TYPE_LIFE, INITIALIZER_TYPE_MASS, INITIALIZER_TYPE_POLAR_VELOCITY, INITIALIZER_TYPE_POSITION, INITIALIZER_TYPE_ROTATION, INITIALIZER_TYPE_RADIAL_VELOCITY, INITIALIZER_TYPE_RADIUS, INITIALIZER_TYPE_TEXTURE, INITIALIZER_TYPE_VECTOR_VELOCITY } from '../initializer/types';
3
3
  import { ZONE_TYPE_BOX, ZONE_TYPE_LINE, ZONE_TYPE_MESH, ZONE_TYPE_POINT, ZONE_TYPE_SPHERE } from '../zone/types';
4
4
  import { RENDERER_TYPE_SPRITE } from '../renderer/types';
5
5
  import { easeLinear } from '../ease';
@@ -104,7 +104,7 @@ export const DEFAULT_SYSTEM_DELTA = 0.0167;
104
104
  * @type {array<string>}
105
105
  */
106
106
 
107
- export const SUPPORTED_JSON_INITIALIZER_TYPES = [INITIALIZER_TYPE_POSITION, INITIALIZER_TYPE_LIFE, INITIALIZER_TYPE_RADIUS, INITIALIZER_TYPE_MASS, INITIALIZER_TYPE_BODY, INITIALIZER_TYPE_BODY_SPRITE, INITIALIZER_TYPE_TEXTURE, INITIALIZER_TYPE_POLAR_VELOCITY, INITIALIZER_TYPE_RADIAL_VELOCITY, INITIALIZER_TYPE_VECTOR_VELOCITY];
107
+ export const SUPPORTED_JSON_INITIALIZER_TYPES = [INITIALIZER_TYPE_POSITION, INITIALIZER_TYPE_ROTATION, INITIALIZER_TYPE_LIFE, INITIALIZER_TYPE_RADIUS, INITIALIZER_TYPE_MASS, INITIALIZER_TYPE_BODY, INITIALIZER_TYPE_BODY_SPRITE, INITIALIZER_TYPE_TEXTURE, INITIALIZER_TYPE_POLAR_VELOCITY, INITIALIZER_TYPE_RADIAL_VELOCITY, INITIALIZER_TYPE_VECTOR_VELOCITY];
108
108
  /**
109
109
  * @desc The types of behaviours supported by the System.fromJSON method.
110
110
  * @type {array<string>}
@@ -124,4 +124,4 @@ export const SUPPORTED_JSON_RENDERER_TYPES = [RENDERER_TYPE_SPRITE];
124
124
 
125
125
  export const SUPPORTED_JSON_ZONE_TYPES = [ZONE_TYPE_BOX, ZONE_TYPE_LINE, ZONE_TYPE_MESH, ZONE_TYPE_POINT, ZONE_TYPE_SPHERE];
126
126
  export { INITIALIZER_TYPES_THAT_REQUIRE_THREE } from '../initializer/types';
127
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJCRUhBVklPVVJfVFlQRV9BTFBIQSIsIkJFSEFWSU9VUl9UWVBFX0FUVFJBQ1RJT04iLCJCRUhBVklPVVJfVFlQRV9DT0xPUiIsIkJFSEFWSU9VUl9UWVBFX0NST1NTX1pPTkUiLCJCRUhBVklPVVJfVFlQRV9GT1JDRSIsIkJFSEFWSU9VUl9UWVBFX0dSQVZJVFkiLCJCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQiLCJCRUhBVklPVVJfVFlQRV9SRVBVTFNJT04iLCJCRUhBVklPVVJfVFlQRV9ST1RBVEUiLCJCRUhBVklPVVJfVFlQRV9TQ0FMRSIsIkJFSEFWSU9VUl9UWVBFX1NQUklORyIsIklOSVRJQUxJWkVSX1RZUEVfQk9EWSIsIklOSVRJQUxJWkVSX1RZUEVfQk9EWV9TUFJJVEUiLCJJTklUSUFMSVpFUl9UWVBFX0xJRkUiLCJJTklUSUFMSVpFUl9UWVBFX01BU1MiLCJJTklUSUFMSVpFUl9UWVBFX1BPTEFSX1ZFTE9DSVRZIiwiSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTiIsIklOSVRJQUxJWkVSX1RZUEVfUkFESUFMX1ZFTE9DSVRZIiwiSU5JVElBTElaRVJfVFlQRV9SQURJVVMiLCJJTklUSUFMSVpFUl9UWVBFX1RFWFRVUkUiLCJJTklUSUFMSVpFUl9UWVBFX1ZFQ1RPUl9WRUxPQ0lUWSIsIlpPTkVfVFlQRV9CT1giLCJaT05FX1RZUEVfTElORSIsIlpPTkVfVFlQRV9NRVNIIiwiWk9ORV9UWVBFX1BPSU5UIiwiWk9ORV9UWVBFX1NQSEVSRSIsIlJFTkRFUkVSX1RZUEVfU1BSSVRFIiwiZWFzZUxpbmVhciIsIkRFRkFVTFRfTElGRSIsIkluZmluaXR5IiwiREVGQVVMVF9BR0UiLCJERUZBVUxUX0VORVJHWSIsIkRFRkFVTFRfREVBRCIsIkRFRkFVTFRfU0xFRVAiLCJERUZBVUxUX0lOREVYIiwiREVGQVVMVF9CT0RZIiwiREVGQVVMVF9QQVJFTlQiLCJERUZBVUxUX01BU1MiLCJERUZBVUxUX1JBRElVUyIsIkRFRkFVTFRfQUxQSEEiLCJERUZBVUxUX1NDQUxFIiwiREVGQVVMVF9VU0VfQ09MT1IiLCJERUZBVUxUX1VTRV9BTFBIQSIsIkRFRkFVTFRfRUFTSU5HIiwiREVGQVVMVF9TWVNURU1fREVMVEEiLCJTVVBQT1JURURfSlNPTl9JTklUSUFMSVpFUl9UWVBFUyIsIlNVUFBPUlRFRF9KU09OX0JFSEFWSU9VUl9UWVBFUyIsIlNVUFBPUlRFRF9KU09OX1JFTkRFUkVSX1RZUEVTIiwiU1VQUE9SVEVEX0pTT05fWk9ORV9UWVBFUyIsIklOSVRJQUxJWkVSX1RZUEVTX1RIQVRfUkVRVUlSRV9USFJFRSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsb0JBREYsRUFFRUMseUJBRkYsRUFHRUMsb0JBSEYsRUFJRUMseUJBSkYsRUFLRUMsb0JBTEYsRUFNRUMsc0JBTkYsRUFPRUMsMkJBUEYsRUFRRUMsd0JBUkYsRUFTRUMscUJBVEYsRUFVRUMsb0JBVkYsRUFXRUMscUJBWEYsUUFZTyxvQkFaUDtBQWFBLFNBQ0VDLHFCQURGLEVBRUVDLDRCQUZGLEVBR0VDLHFCQUhGLEVBSUVDLHFCQUpGLEVBS0VDLCtCQUxGLEVBTUVDLHlCQU5GLEVBT0VDLGdDQVBGLEVBUUVDLHVCQVJGLEVBU0VDLHdCQVRGLEVBVUVDLGdDQVZGLFFBV08sc0JBWFA7QUFZQSxTQUNFQyxhQURGLEVBRUVDLGNBRkYsRUFHRUMsY0FIRixFQUlFQyxlQUpGLEVBS0VDLGdCQUxGLFFBTU8sZUFOUDtBQVFBLFNBQVNDLG9CQUFULFFBQXFDLG1CQUFyQztBQUNBLFNBQVNDLFVBQVQsUUFBMkIsU0FBM0I7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLFlBQVksR0FBR0MsUUFBckI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLFdBQVcsR0FBRyxDQUFwQjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsY0FBYyxHQUFHLENBQXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxZQUFZLEdBQUcsS0FBckI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGFBQWEsR0FBRyxLQUF0QjtBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsYUFBYSxHQUFHLENBQXRCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxZQUFZLEdBQUcsSUFBckI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGNBQWMsR0FBRyxJQUF2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsWUFBWSxHQUFHLENBQXJCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxjQUFjLEdBQUcsRUFBdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGFBQWEsR0FBRyxDQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsYUFBYSxHQUFHLENBQXRCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxpQkFBaUIsR0FBRyxLQUExQjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsaUJBQWlCLEdBQUcsS0FBMUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGNBQWMsR0FBR2hCLFVBQXZCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNaUIsb0JBQW9CLEdBQUcsTUFBN0I7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGdDQUFnQyxHQUFHLENBQzlDN0IseUJBRDhDLEVBRTlDSCxxQkFGOEMsRUFHOUNLLHVCQUg4QyxFQUk5Q0oscUJBSjhDLEVBSzlDSCxxQkFMOEMsRUFNOUNDLDRCQU44QyxFQU85Q08sd0JBUDhDLEVBUTlDSiwrQkFSOEMsRUFTOUNFLGdDQVQ4QyxFQVU5Q0csZ0NBVjhDLENBQXpDO0FBYVA7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNMEIsOEJBQThCLEdBQUcsQ0FDNUM5QyxvQkFENEMsRUFFNUNDLHlCQUY0QyxFQUc1Q0Msb0JBSDRDLEVBSTVDQyx5QkFKNEMsRUFLNUNDLG9CQUw0QyxFQU01Q0Msc0JBTjRDLEVBTzVDQywyQkFQNEMsRUFRNUNDLHdCQVI0QyxFQVM1Q0MscUJBVDRDLEVBVTVDQyxvQkFWNEMsRUFXNUNDLHFCQVg0QyxDQUF2QztBQWNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTXFDLDZCQUE2QixHQUFHLENBQUNyQixvQkFBRCxDQUF0QztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTXNCLHlCQUF5QixHQUFHLENBQ3ZDM0IsYUFEdUMsRUFFdkNDLGNBRnVDLEVBR3ZDQyxjQUh1QyxFQUl2Q0MsZUFKdUMsRUFLdkNDLGdCQUx1QyxDQUFsQztBQVFQLFNBQVN3QixvQ0FBVCxRQUFxRCxzQkFBckQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCRUhBVklPVVJfVFlQRV9BTFBIQSxcbiAgQkVIQVZJT1VSX1RZUEVfQVRUUkFDVElPTixcbiAgQkVIQVZJT1VSX1RZUEVfQ09MT1IsXG4gIEJFSEFWSU9VUl9UWVBFX0NST1NTX1pPTkUsXG4gIEJFSEFWSU9VUl9UWVBFX0ZPUkNFLFxuICBCRUhBVklPVVJfVFlQRV9HUkFWSVRZLFxuICBCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQsXG4gIEJFSEFWSU9VUl9UWVBFX1JFUFVMU0lPTixcbiAgQkVIQVZJT1VSX1RZUEVfUk9UQVRFLFxuICBCRUhBVklPVVJfVFlQRV9TQ0FMRSxcbiAgQkVIQVZJT1VSX1RZUEVfU1BSSU5HLFxufSBmcm9tICcuLi9iZWhhdmlvdXIvdHlwZXMnO1xuaW1wb3J0IHtcbiAgSU5JVElBTElaRVJfVFlQRV9CT0RZLFxuICBJTklUSUFMSVpFUl9UWVBFX0JPRFlfU1BSSVRFLFxuICBJTklUSUFMSVpFUl9UWVBFX0xJRkUsXG4gIElOSVRJQUxJWkVSX1RZUEVfTUFTUyxcbiAgSU5JVElBTElaRVJfVFlQRV9QT0xBUl9WRUxPQ0lUWSxcbiAgSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9SQURJQUxfVkVMT0NJVFksXG4gIElOSVRJQUxJWkVSX1RZUEVfUkFESVVTLFxuICBJTklUSUFMSVpFUl9UWVBFX1RFWFRVUkUsXG4gIElOSVRJQUxJWkVSX1RZUEVfVkVDVE9SX1ZFTE9DSVRZLFxufSBmcm9tICcuLi9pbml0aWFsaXplci90eXBlcyc7XG5pbXBvcnQge1xuICBaT05FX1RZUEVfQk9YLFxuICBaT05FX1RZUEVfTElORSxcbiAgWk9ORV9UWVBFX01FU0gsXG4gIFpPTkVfVFlQRV9QT0lOVCxcbiAgWk9ORV9UWVBFX1NQSEVSRSxcbn0gZnJvbSAnLi4vem9uZS90eXBlcyc7XG5cbmltcG9ydCB7IFJFTkRFUkVSX1RZUEVfU1BSSVRFIH0gZnJvbSAnLi4vcmVuZGVyZXIvdHlwZXMnO1xuaW1wb3J0IHsgZWFzZUxpbmVhciB9IGZyb20gJy4uL2Vhc2UnO1xuXG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgbGlmZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElGRSA9IEluZmluaXR5O1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGFnZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdFID0gMDtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBlbmVyZ3lcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VORVJHWSA9IDE7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgZGVhZFxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFQUQgPSBmYWxzZTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBzbGVlcFxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NMRUVQID0gZmFsc2U7XG5cbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBpbmRleFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5ERVggPSAwO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGJvZHlcbiAqIEB0eXBlIHs/b2JqZWN0fVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9CT0RZID0gbnVsbDtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBwYXJlbnRcbiAqIEB0eXBlIHs/RW1pdHRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUEFSRU5UID0gbnVsbDtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBtYXNzXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVNTID0gMTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSByYWRpdXNcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JBRElVUyA9IDEwO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGFscGhhXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BTFBIQSA9IDE7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgc2NhbGVcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NDQUxFID0gMTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSB1c2VDb2xvclxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1VTRV9DT0xPUiA9IGZhbHNlO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIHVzZUFscGhhXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVNFX0FMUEhBID0gZmFsc2U7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgZWFzaW5nXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VBU0lORyA9IGVhc2VMaW5lYXI7XG5cbi8qKlxuICogQGRlc2MgVGhlIGRlZmF1bHQgZGVsdGEgcHJvdmlkZWQgdG8gdGhlIFN5c3RlbSBpbnN0YW5jZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1lTVEVNX0RFTFRBID0gMC4wMTY3O1xuXG4vKipcbiAqIEBkZXNjIFRoZSB0eXBlcyBvZiBpbml0aWFsaXplcnMgc3VwcG9ydGVkIGJ5IHRoZSBTeXN0ZW0uZnJvbUpTT04gbWV0aG9kLlxuICogQHR5cGUge2FycmF5PHN0cmluZz59XG4gKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfSlNPTl9JTklUSUFMSVpFUl9UWVBFUyA9IFtcbiAgSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9MSUZFLFxuICBJTklUSUFMSVpFUl9UWVBFX1JBRElVUyxcbiAgSU5JVElBTElaRVJfVFlQRV9NQVNTLFxuICBJTklUSUFMSVpFUl9UWVBFX0JPRFksXG4gIElOSVRJQUxJWkVSX1RZUEVfQk9EWV9TUFJJVEUsXG4gIElOSVRJQUxJWkVSX1RZUEVfVEVYVFVSRSxcbiAgSU5JVElBTElaRVJfVFlQRV9QT0xBUl9WRUxPQ0lUWSxcbiAgSU5JVElBTElaRVJfVFlQRV9SQURJQUxfVkVMT0NJVFksXG4gIElOSVRJQUxJWkVSX1RZUEVfVkVDVE9SX1ZFTE9DSVRZLFxuXTtcblxuLyoqXG4gKiBAZGVzYyBUaGUgdHlwZXMgb2YgYmVoYXZpb3VycyBzdXBwb3J0ZWQgYnkgdGhlIFN5c3RlbS5mcm9tSlNPTiBtZXRob2QuXG4gKiBAdHlwZSB7YXJyYXk8c3RyaW5nPn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9KU09OX0JFSEFWSU9VUl9UWVBFUyA9IFtcbiAgQkVIQVZJT1VSX1RZUEVfQUxQSEEsXG4gIEJFSEFWSU9VUl9UWVBFX0FUVFJBQ1RJT04sXG4gIEJFSEFWSU9VUl9UWVBFX0NPTE9SLFxuICBCRUhBVklPVVJfVFlQRV9DUk9TU19aT05FLFxuICBCRUhBVklPVVJfVFlQRV9GT1JDRSxcbiAgQkVIQVZJT1VSX1RZUEVfR1JBVklUWSxcbiAgQkVIQVZJT1VSX1RZUEVfUkFORE9NX0RSSUZULFxuICBCRUhBVklPVVJfVFlQRV9SRVBVTFNJT04sXG4gIEJFSEFWSU9VUl9UWVBFX1JPVEFURSxcbiAgQkVIQVZJT1VSX1RZUEVfU0NBTEUsXG4gIEJFSEFWSU9VUl9UWVBFX1NQUklORyxcbl07XG5cbi8qKlxuICogQGRlc2MgVGhlIHR5cGVzIG9mIHJlbmRlcmVycyBzdXBwb3J0ZWQgYnkgdGhlIFN5c3RlbS5mcm9tSlNPTiBtZXRob2QuXG4gKiBAdHlwZSB7YXJyYXk8c3RyaW5nPn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9KU09OX1JFTkRFUkVSX1RZUEVTID0gW1JFTkRFUkVSX1RZUEVfU1BSSVRFXTtcblxuLyoqXG4gKiBAZGVzYyBUaGUgdHlwZXMgb2Ygem9uZXMgc3VwcG9ydGVkIGJ5IHRoZSBTeXN0ZW0uZnJvbUpTT04gbWV0aG9kLlxuICogQHR5cGUge2FycmF5PHN0cmluZz59XG4gKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfSlNPTl9aT05FX1RZUEVTID0gW1xuICBaT05FX1RZUEVfQk9YLFxuICBaT05FX1RZUEVfTElORSxcbiAgWk9ORV9UWVBFX01FU0gsXG4gIFpPTkVfVFlQRV9QT0lOVCxcbiAgWk9ORV9UWVBFX1NQSEVSRSxcbl07XG5cbmV4cG9ydCB7IElOSVRJQUxJWkVSX1RZUEVTX1RIQVRfUkVRVUlSRV9USFJFRSB9IGZyb20gJy4uL2luaXRpYWxpemVyL3R5cGVzJztcbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJCRUhBVklPVVJfVFlQRV9BTFBIQSIsIkJFSEFWSU9VUl9UWVBFX0FUVFJBQ1RJT04iLCJCRUhBVklPVVJfVFlQRV9DT0xPUiIsIkJFSEFWSU9VUl9UWVBFX0NST1NTX1pPTkUiLCJCRUhBVklPVVJfVFlQRV9GT1JDRSIsIkJFSEFWSU9VUl9UWVBFX0dSQVZJVFkiLCJCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQiLCJCRUhBVklPVVJfVFlQRV9SRVBVTFNJT04iLCJCRUhBVklPVVJfVFlQRV9ST1RBVEUiLCJCRUhBVklPVVJfVFlQRV9TQ0FMRSIsIkJFSEFWSU9VUl9UWVBFX1NQUklORyIsIklOSVRJQUxJWkVSX1RZUEVfQk9EWSIsIklOSVRJQUxJWkVSX1RZUEVfQk9EWV9TUFJJVEUiLCJJTklUSUFMSVpFUl9UWVBFX0xJRkUiLCJJTklUSUFMSVpFUl9UWVBFX01BU1MiLCJJTklUSUFMSVpFUl9UWVBFX1BPTEFSX1ZFTE9DSVRZIiwiSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTiIsIklOSVRJQUxJWkVSX1RZUEVfUk9UQVRJT04iLCJJTklUSUFMSVpFUl9UWVBFX1JBRElBTF9WRUxPQ0lUWSIsIklOSVRJQUxJWkVSX1RZUEVfUkFESVVTIiwiSU5JVElBTElaRVJfVFlQRV9URVhUVVJFIiwiSU5JVElBTElaRVJfVFlQRV9WRUNUT1JfVkVMT0NJVFkiLCJaT05FX1RZUEVfQk9YIiwiWk9ORV9UWVBFX0xJTkUiLCJaT05FX1RZUEVfTUVTSCIsIlpPTkVfVFlQRV9QT0lOVCIsIlpPTkVfVFlQRV9TUEhFUkUiLCJSRU5ERVJFUl9UWVBFX1NQUklURSIsImVhc2VMaW5lYXIiLCJERUZBVUxUX0xJRkUiLCJJbmZpbml0eSIsIkRFRkFVTFRfQUdFIiwiREVGQVVMVF9FTkVSR1kiLCJERUZBVUxUX0RFQUQiLCJERUZBVUxUX1NMRUVQIiwiREVGQVVMVF9JTkRFWCIsIkRFRkFVTFRfQk9EWSIsIkRFRkFVTFRfUEFSRU5UIiwiREVGQVVMVF9NQVNTIiwiREVGQVVMVF9SQURJVVMiLCJERUZBVUxUX0FMUEhBIiwiREVGQVVMVF9TQ0FMRSIsIkRFRkFVTFRfVVNFX0NPTE9SIiwiREVGQVVMVF9VU0VfQUxQSEEiLCJERUZBVUxUX0VBU0lORyIsIkRFRkFVTFRfU1lTVEVNX0RFTFRBIiwiU1VQUE9SVEVEX0pTT05fSU5JVElBTElaRVJfVFlQRVMiLCJTVVBQT1JURURfSlNPTl9CRUhBVklPVVJfVFlQRVMiLCJTVVBQT1JURURfSlNPTl9SRU5ERVJFUl9UWVBFUyIsIlNVUFBPUlRFRF9KU09OX1pPTkVfVFlQRVMiLCJJTklUSUFMSVpFUl9UWVBFU19USEFUX1JFUVVJUkVfVEhSRUUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0VBLG9CQURGLEVBRUVDLHlCQUZGLEVBR0VDLG9CQUhGLEVBSUVDLHlCQUpGLEVBS0VDLG9CQUxGLEVBTUVDLHNCQU5GLEVBT0VDLDJCQVBGLEVBUUVDLHdCQVJGLEVBU0VDLHFCQVRGLEVBVUVDLG9CQVZGLEVBV0VDLHFCQVhGLFFBWU8sb0JBWlA7QUFhQSxTQUNFQyxxQkFERixFQUVFQyw0QkFGRixFQUdFQyxxQkFIRixFQUlFQyxxQkFKRixFQUtFQywrQkFMRixFQU1FQyx5QkFORixFQU9FQyx5QkFQRixFQVFFQyxnQ0FSRixFQVNFQyx1QkFURixFQVVFQyx3QkFWRixFQVdFQyxnQ0FYRixRQVlPLHNCQVpQO0FBYUEsU0FDRUMsYUFERixFQUVFQyxjQUZGLEVBR0VDLGNBSEYsRUFJRUMsZUFKRixFQUtFQyxnQkFMRixRQU1PLGVBTlA7QUFRQSxTQUFTQyxvQkFBVCxRQUFxQyxtQkFBckM7QUFDQSxTQUFTQyxVQUFULFFBQTJCLFNBQTNCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxZQUFZLEdBQUdDLFFBQXJCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxXQUFXLEdBQUcsQ0FBcEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGNBQWMsR0FBRyxDQUF2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsWUFBWSxHQUFHLEtBQXJCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxhQUFhLEdBQUcsS0FBdEI7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGFBQWEsR0FBRyxDQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxjQUFjLEdBQUcsSUFBdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLFlBQVksR0FBRyxDQUFyQjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsY0FBYyxHQUFHLEVBQXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxhQUFhLEdBQUcsQ0FBdEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGFBQWEsR0FBRyxDQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsaUJBQWlCLEdBQUcsS0FBMUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGlCQUFpQixHQUFHLEtBQTFCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxjQUFjLEdBQUdoQixVQUF2QjtBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTWlCLG9CQUFvQixHQUFHLE1BQTdCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxnQ0FBZ0MsR0FBRyxDQUM5QzlCLHlCQUQ4QyxFQUU5Q0MseUJBRjhDLEVBRzlDSixxQkFIOEMsRUFJOUNNLHVCQUo4QyxFQUs5Q0wscUJBTDhDLEVBTTlDSCxxQkFOOEMsRUFPOUNDLDRCQVA4QyxFQVE5Q1Esd0JBUjhDLEVBUzlDTCwrQkFUOEMsRUFVOUNHLGdDQVY4QyxFQVc5Q0csZ0NBWDhDLENBQXpDO0FBY1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNMEIsOEJBQThCLEdBQUcsQ0FDNUMvQyxvQkFENEMsRUFFNUNDLHlCQUY0QyxFQUc1Q0Msb0JBSDRDLEVBSTVDQyx5QkFKNEMsRUFLNUNDLG9CQUw0QyxFQU01Q0Msc0JBTjRDLEVBTzVDQywyQkFQNEMsRUFRNUNDLHdCQVI0QyxFQVM1Q0MscUJBVDRDLEVBVTVDQyxvQkFWNEMsRUFXNUNDLHFCQVg0QyxDQUF2QztBQWNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTXNDLDZCQUE2QixHQUFHLENBQUNyQixvQkFBRCxDQUF0QztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTXNCLHlCQUF5QixHQUFHLENBQ3ZDM0IsYUFEdUMsRUFFdkNDLGNBRnVDLEVBR3ZDQyxjQUh1QyxFQUl2Q0MsZUFKdUMsRUFLdkNDLGdCQUx1QyxDQUFsQztBQVFQLFNBQVN3QixvQ0FBVCxRQUFxRCxzQkFBckQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCRUhBVklPVVJfVFlQRV9BTFBIQSxcbiAgQkVIQVZJT1VSX1RZUEVfQVRUUkFDVElPTixcbiAgQkVIQVZJT1VSX1RZUEVfQ09MT1IsXG4gIEJFSEFWSU9VUl9UWVBFX0NST1NTX1pPTkUsXG4gIEJFSEFWSU9VUl9UWVBFX0ZPUkNFLFxuICBCRUhBVklPVVJfVFlQRV9HUkFWSVRZLFxuICBCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQsXG4gIEJFSEFWSU9VUl9UWVBFX1JFUFVMU0lPTixcbiAgQkVIQVZJT1VSX1RZUEVfUk9UQVRFLFxuICBCRUhBVklPVVJfVFlQRV9TQ0FMRSxcbiAgQkVIQVZJT1VSX1RZUEVfU1BSSU5HLFxufSBmcm9tICcuLi9iZWhhdmlvdXIvdHlwZXMnO1xuaW1wb3J0IHtcbiAgSU5JVElBTElaRVJfVFlQRV9CT0RZLFxuICBJTklUSUFMSVpFUl9UWVBFX0JPRFlfU1BSSVRFLFxuICBJTklUSUFMSVpFUl9UWVBFX0xJRkUsXG4gIElOSVRJQUxJWkVSX1RZUEVfTUFTUyxcbiAgSU5JVElBTElaRVJfVFlQRV9QT0xBUl9WRUxPQ0lUWSxcbiAgSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9ST1RBVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9SQURJQUxfVkVMT0NJVFksXG4gIElOSVRJQUxJWkVSX1RZUEVfUkFESVVTLFxuICBJTklUSUFMSVpFUl9UWVBFX1RFWFRVUkUsXG4gIElOSVRJQUxJWkVSX1RZUEVfVkVDVE9SX1ZFTE9DSVRZLFxufSBmcm9tICcuLi9pbml0aWFsaXplci90eXBlcyc7XG5pbXBvcnQge1xuICBaT05FX1RZUEVfQk9YLFxuICBaT05FX1RZUEVfTElORSxcbiAgWk9ORV9UWVBFX01FU0gsXG4gIFpPTkVfVFlQRV9QT0lOVCxcbiAgWk9ORV9UWVBFX1NQSEVSRSxcbn0gZnJvbSAnLi4vem9uZS90eXBlcyc7XG5cbmltcG9ydCB7IFJFTkRFUkVSX1RZUEVfU1BSSVRFIH0gZnJvbSAnLi4vcmVuZGVyZXIvdHlwZXMnO1xuaW1wb3J0IHsgZWFzZUxpbmVhciB9IGZyb20gJy4uL2Vhc2UnO1xuXG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgbGlmZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElGRSA9IEluZmluaXR5O1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGFnZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdFID0gMDtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBlbmVyZ3lcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VORVJHWSA9IDE7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgZGVhZFxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFQUQgPSBmYWxzZTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBzbGVlcFxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NMRUVQID0gZmFsc2U7XG5cbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBpbmRleFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5ERVggPSAwO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGJvZHlcbiAqIEB0eXBlIHs/b2JqZWN0fVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9CT0RZID0gbnVsbDtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBwYXJlbnRcbiAqIEB0eXBlIHs/RW1pdHRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUEFSRU5UID0gbnVsbDtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBtYXNzXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVNTID0gMTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSByYWRpdXNcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JBRElVUyA9IDEwO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGFscGhhXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BTFBIQSA9IDE7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgc2NhbGVcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NDQUxFID0gMTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSB1c2VDb2xvclxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1VTRV9DT0xPUiA9IGZhbHNlO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIHVzZUFscGhhXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVNFX0FMUEhBID0gZmFsc2U7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgZWFzaW5nXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VBU0lORyA9IGVhc2VMaW5lYXI7XG5cbi8qKlxuICogQGRlc2MgVGhlIGRlZmF1bHQgZGVsdGEgcHJvdmlkZWQgdG8gdGhlIFN5c3RlbSBpbnN0YW5jZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1lTVEVNX0RFTFRBID0gMC4wMTY3O1xuXG4vKipcbiAqIEBkZXNjIFRoZSB0eXBlcyBvZiBpbml0aWFsaXplcnMgc3VwcG9ydGVkIGJ5IHRoZSBTeXN0ZW0uZnJvbUpTT04gbWV0aG9kLlxuICogQHR5cGUge2FycmF5PHN0cmluZz59XG4gKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfSlNPTl9JTklUSUFMSVpFUl9UWVBFUyA9IFtcbiAgSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9ST1RBVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9MSUZFLFxuICBJTklUSUFMSVpFUl9UWVBFX1JBRElVUyxcbiAgSU5JVElBTElaRVJfVFlQRV9NQVNTLFxuICBJTklUSUFMSVpFUl9UWVBFX0JPRFksXG4gIElOSVRJQUxJWkVSX1RZUEVfQk9EWV9TUFJJVEUsXG4gIElOSVRJQUxJWkVSX1RZUEVfVEVYVFVSRSxcbiAgSU5JVElBTElaRVJfVFlQRV9QT0xBUl9WRUxPQ0lUWSxcbiAgSU5JVElBTElaRVJfVFlQRV9SQURJQUxfVkVMT0NJVFksXG4gIElOSVRJQUxJWkVSX1RZUEVfVkVDVE9SX1ZFTE9DSVRZLFxuXTtcblxuLyoqXG4gKiBAZGVzYyBUaGUgdHlwZXMgb2YgYmVoYXZpb3VycyBzdXBwb3J0ZWQgYnkgdGhlIFN5c3RlbS5mcm9tSlNPTiBtZXRob2QuXG4gKiBAdHlwZSB7YXJyYXk8c3RyaW5nPn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9KU09OX0JFSEFWSU9VUl9UWVBFUyA9IFtcbiAgQkVIQVZJT1VSX1RZUEVfQUxQSEEsXG4gIEJFSEFWSU9VUl9UWVBFX0FUVFJBQ1RJT04sXG4gIEJFSEFWSU9VUl9UWVBFX0NPTE9SLFxuICBCRUhBVklPVVJfVFlQRV9DUk9TU19aT05FLFxuICBCRUhBVklPVVJfVFlQRV9GT1JDRSxcbiAgQkVIQVZJT1VSX1RZUEVfR1JBVklUWSxcbiAgQkVIQVZJT1VSX1RZUEVfUkFORE9NX0RSSUZULFxuICBCRUhBVklPVVJfVFlQRV9SRVBVTFNJT04sXG4gIEJFSEFWSU9VUl9UWVBFX1JPVEFURSxcbiAgQkVIQVZJT1VSX1RZUEVfU0NBTEUsXG4gIEJFSEFWSU9VUl9UWVBFX1NQUklORyxcbl07XG5cbi8qKlxuICogQGRlc2MgVGhlIHR5cGVzIG9mIHJlbmRlcmVycyBzdXBwb3J0ZWQgYnkgdGhlIFN5c3RlbS5mcm9tSlNPTiBtZXRob2QuXG4gKiBAdHlwZSB7YXJyYXk8c3RyaW5nPn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9KU09OX1JFTkRFUkVSX1RZUEVTID0gW1JFTkRFUkVSX1RZUEVfU1BSSVRFXTtcblxuLyoqXG4gKiBAZGVzYyBUaGUgdHlwZXMgb2Ygem9uZXMgc3VwcG9ydGVkIGJ5IHRoZSBTeXN0ZW0uZnJvbUpTT04gbWV0aG9kLlxuICogQHR5cGUge2FycmF5PHN0cmluZz59XG4gKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfSlNPTl9aT05FX1RZUEVTID0gW1xuICBaT05FX1RZUEVfQk9YLFxuICBaT05FX1RZUEVfTElORSxcbiAgWk9ORV9UWVBFX01FU0gsXG4gIFpPTkVfVFlQRV9QT0lOVCxcbiAgWk9ORV9UWVBFX1NQSEVSRSxcbl07XG5cbmV4cG9ydCB7IElOSVRJQUxJWkVSX1RZUEVTX1RIQVRfUkVRVUlSRV9USFJFRSB9IGZyb20gJy4uL2luaXRpYWxpemVyL3R5cGVzJztcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { DEFAULT_BIND_EMITTER, DEFAULT_BIND_EMITTER_EVENT, DEFAULT_DAMPING, DEFAULT_EMITTER_INDEX, DEFAULT_EMITTER_RATE } from './constants';
2
- import EventDispatcher, { EMITTER_DEAD, PARTICLE_CREATED, PARTICLE_DEAD, PARTICLE_UPDATE } from '../events';
2
+ import EventDispatcher, { EMITTER_DEAD, PARTICLE_CREATED, PARTICLE_DEAD, PARTICLE_UPDATE, SYSTEM_UPDATE } from '../events';
3
3
  import { INTEGRATION_TYPE_EULER, integrate } from '../math';
4
4
  import { Util, uid } from '../utils';
5
5
  import { InitializerUtil } from '../initializer';
@@ -569,7 +569,7 @@ export default class Emitter extends Particle {
569
569
 
570
570
 
571
571
  update(time) {
572
- if (!this.isEmitting) {
572
+ if (!this.isEmitting && this.particles.length === 0) {
573
573
  return;
574
574
  }
575
575
 
@@ -579,7 +579,10 @@ export default class Emitter extends Particle {
579
579
  this.destroy();
580
580
  }
581
581
 
582
- this.generate(time);
582
+ if (this.isEmitting) {
583
+ this.generate(time);
584
+ }
585
+
583
586
  this.integrate(time);
584
587
  let i = this.particles.length;
585
588
 
@@ -591,6 +594,10 @@ export default class Emitter extends Particle {
591
594
  this.bindEmitterEvent && this.dispatch(PARTICLE_DEAD, particle);
592
595
  this.parent.pool.expire(particle.reset());
593
596
  this.particles.splice(i, 1);
597
+
598
+ if (this.particles.length === 0) {
599
+ this.parent && this.parent.dispatch(SYSTEM_UPDATE);
600
+ }
594
601
  }
595
602
  }
596
603
 
@@ -698,4 +705,4 @@ export default class Emitter extends Particle {
698
705
  }
699
706
 
700
707
  }
701
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbWl0dGVyL0VtaXR0ZXIuanMiXSwibmFtZXMiOlsiREVGQVVMVF9CSU5EX0VNSVRURVIiLCJERUZBVUxUX0JJTkRfRU1JVFRFUl9FVkVOVCIsIkRFRkFVTFRfREFNUElORyIsIkRFRkFVTFRfRU1JVFRFUl9JTkRFWCIsIkRFRkFVTFRfRU1JVFRFUl9SQVRFIiwiRXZlbnREaXNwYXRjaGVyIiwiRU1JVFRFUl9ERUFEIiwiUEFSVElDTEVfQ1JFQVRFRCIsIlBBUlRJQ0xFX0RFQUQiLCJQQVJUSUNMRV9VUERBVEUiLCJJTlRFR1JBVElPTl9UWVBFX0VVTEVSIiwiaW50ZWdyYXRlIiwiVXRpbCIsInVpZCIsIkluaXRpYWxpemVyVXRpbCIsIlBhcnRpY2xlIiwiaXNOdW1iZXIiLCJFTUlUVEVSX1RZUEVfRU1JVFRFUiIsInR5cGUiLCJFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwcm9wZXJ0aWVzIiwicGFydGljbGVzIiwiaW5pdGlhbGl6ZXJzIiwiYmVoYXZpb3VycyIsImVtaXR0ZXJCZWhhdmlvdXJzIiwiY3VycmVudEVtaXRUaW1lIiwidG90YWxFbWl0VGltZXMiLCJkYW1waW5nIiwiYmluZEVtaXR0ZXIiLCJiaW5kRW1pdHRlckV2ZW50IiwicmF0ZSIsImlzRW1pdHRpbmciLCJpZCIsImNJRCIsIm5hbWUiLCJpbmRleCIsImV2ZW50RGlzcGF0Y2hlciIsImRpc3BhdGNoIiwiZXZlbnQiLCJ0YXJnZXQiLCJkaXNwYXRjaEV2ZW50Iiwic2V0UmF0ZSIsInNldFBvc2l0aW9uIiwibmV3UG9zaXRpb24iLCJwb3NpdGlvbiIsIngiLCJ5IiwieiIsInNldCIsInNldFJvdGF0aW9uIiwibmV3Um90YXRpb24iLCJyb3RhdGlvbiIsImVtaXQiLCJJbmZpbml0eSIsImxpZmUiLCJpbml0IiwiZXhwZXJpbWVudGFsX2VtaXQiLCJzZXRUb3RhbEVtaXRUaW1lcyIsInNldExpZmUiLCJzdG9wRW1pdCIsInJlbW92ZUFsbFBhcnRpY2xlcyIsImkiLCJsZW5ndGgiLCJkZWFkIiwiYWRkSW5pdGlhbGl6ZXIiLCJpbml0aWFsaXplciIsInB1c2giLCJhZGRJbml0aWFsaXplcnMiLCJzZXRJbml0aWFsaXplcnMiLCJyZW1vdmVJbml0aWFsaXplciIsImluZGV4T2YiLCJzcGxpY2UiLCJyZW1vdmVBbGxJbml0aWFsaXplcnMiLCJkZXN0cm95QXJyYXkiLCJhZGRCZWhhdmlvdXIiLCJiZWhhdmlvdXIiLCJhZGRCZWhhdmlvdXJzIiwic2V0QmVoYXZpb3VycyIsInJlbW92ZUJlaGF2aW91ciIsInJlbW92ZUFsbEJlaGF2aW91cnMiLCJhZGRFbWl0dGVyQmVoYXZpb3VyIiwiaW5pdGlhbGl6ZSIsImFkZEVtaXR0ZXJCZWhhdmlvdXJzIiwic2V0RW1pdHRlckJlaGF2aW91cnMiLCJyZW1vdmVFbWl0dGVyQmVoYXZpb3VyIiwicmVtb3ZlQWxsRW1pdHRlckJlaGF2aW91cnMiLCJhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lciIsIm9uRW1pdHRlckRlYWQiLCJhZGRFdmVudExpc3RlbmVyIiwiY3JlYXRlUGFydGljbGUiLCJwYXJ0aWNsZSIsInBhcmVudCIsInBvb2wiLCJnZXQiLCJzZXR1cFBhcnRpY2xlIiwidXBkYXRlIiwidGltZSIsImFnZSIsImRlc3Ryb3kiLCJnZW5lcmF0ZSIsImV4cGlyZSIsInJlc2V0IiwidXBkYXRlRW1pdHRlckJlaGF2aW91cnMiLCJzbGVlcCIsImFwcGx5QmVoYXZpb3VyIiwiaW50ZWdyYXRpb25UeXBlIiwiZ2V0VmFsdWUiLCJlbmVyZ3kiLCJyZW1vdmVFbWl0dGVyIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUNFQSxvQkFERixFQUVFQywwQkFGRixFQUdFQyxlQUhGLEVBSUVDLHFCQUpGLEVBS0VDLG9CQUxGLFFBTU8sYUFOUDtBQU9BLE9BQU9DLGVBQVAsSUFDRUMsWUFERixFQUVFQyxnQkFGRixFQUdFQyxhQUhGLEVBSUVDLGVBSkYsUUFLTyxXQUxQO0FBTUEsU0FBU0Msc0JBQVQsRUFBaUNDLFNBQWpDLFFBQWtELFNBQWxEO0FB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QUFZLElBQVo7QUFDQSxTQUFLNEMsTUFBTCxHQUFjLENBQWQ7QUFDQSxTQUFLakYsY0FBTCxHQUFzQixDQUFDLENBQXZCOztBQUVBLFFBQUksS0FBS0wsU0FBTCxDQUFleUMsTUFBZixJQUF5QixDQUE3QixFQUFnQztBQUM5QixXQUFLL0IsVUFBTCxHQUFrQixLQUFsQjtBQUNBLFdBQUt5QyxxQkFBTDtBQUNBLFdBQUtPLG1CQUFMO0FBQ0EsV0FBSzFDLFFBQUwsQ0FBZSxHQUFFLEtBQUtMLEVBQUcsSUFBRzNCLFlBQWEsRUFBekM7QUFFQSxXQUFLc0YsTUFBTCxJQUFlLEtBQUtBLE1BQUwsQ0FBWWlCLGFBQVosQ0FBMEIsSUFBMUIsQ0FBZjtBQUNEO0FBQ0Y7O0FBenBCMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBERUZBVUxUX0JJTkRfRU1JVFRFUixcbiAgREVGQVVMVF9CSU5EX0VNSVRURVJfRVZFTlQsXG4gIERFRkFVTFRfREFNUElORyxcbiAgREVGQVVMVF9FTUlUVEVSX0lOREVYLFxuICBERUZBVUxUX0VNSVRURVJfUkFURSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IEV2ZW50RGlzcGF0Y2hlciwge1xuICBFTUlUVEVSX0RFQUQsXG4gIFBBUlRJQ0xFX0NSRUFURUQsXG4gIFBBUlRJQ0xFX0RFQUQsXG4gIFBBUlRJQ0xFX1VQREFURSxcbn0gZnJvbSAnLi4vZXZlbnRzJztcbmltcG9ydCB7IElOVEVHUkFUSU9OX1RZUEVfRVVMRVIsIGludGVncmF0ZSB9IGZyb20gJy4uL21hdGgnO1xuaW1wb3J0IHsgVXRpbCwgdWlkIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBJbml0aWFsaXplclV0aWwgfSBmcm9tICcuLi9pbml0aWFsaXplcic7XG5pbXBvcnQgUGFydGljbGUgZnJvbSAnLi4vY29yZS9QYXJ0aWNsZSc7XG5pbXBvcnQgaXNOdW1iZXIgZnJvbSAnbG9kYXNoL2lzTnVtYmVyJztcbmltcG9ydCB7IEVNSVRURVJfVFlQRV9FTUlUVEVSIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBFbWl0dGVycyBhcmUgdGhlIFN5c3RlbSBlbmdpbmUncyBwYXJ0aWNsZSBmYWN0b3JpZXMuIFRoZXkgY2F1c2UgcGFydGljbGVzIHRvXG4gKiBiZSByZW5kZXJlZCBieSBlbWl0dGluZyB0aGVtLCBhbmQgc3RvcmUgYWxsIHBhcnRpY2xlIGluaXRpYWxpemVycyBhbmQgYmVoYXZpb3Vycy5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtaXR0ZXIgZXh0ZW5kcyBQYXJ0aWNsZSB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIEVtaXR0ZXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wZXJ0aWVzIC0gVGhlIHByb3BlcnRpZXMgdG8gaW5zdGFudGlhdGUgdGhlIGVtaXR0ZXIgd2l0aFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BlcnRpZXMpIHtcbiAgICBzdXBlcihwcm9wZXJ0aWVzKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjbGFzcyB0eXBlLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZXMgZW1pdHRlZCBieSB0aGlzIGVtaXR0ZXIuXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqL1xuICAgIHRoaXMucGFydGljbGVzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgaW5pdGlhbGl6ZXJzIGZvciBwYXJ0aWNsZXMgZW1pdHRlZCBieSB0aGlzIGVtaXR0ZXIuXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqL1xuICAgIHRoaXMuaW5pdGlhbGl6ZXJzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgYmVoYXZpb3VycyBmb3IgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLmJlaGF2aW91cnMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBiZWhhdmlvdXJzIGZvciB0aGUgZW1pdHRlci5cbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5lbWl0dGVyQmVoYXZpb3VycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGN1cnJlbnQgZW1pdCBpdGVyYXRpb24uXG4gICAgICogQHR5cGUge2ludGVnZXJ9XG4gICAgICovXG4gICAgdGhpcy5jdXJyZW50RW1pdFRpbWUgPSAwO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHRvdGFsIG51bWJlciBvZiB0aW1lcyB0aGUgZW1pdHRlciBzaG91bGQgZW1pdCBwYXJ0aWNsZXMuXG4gICAgICogQHR5cGUge2ludGVnZXJ9XG4gICAgICovXG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGZyaWN0aW9uIGNvZWZmaWNpZW50IGZvciBhbGwgcGFydGljbGUgdG8gZW1pdCBieS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuZGFtcGluZyA9IERFRkFVTFRfREFNUElORztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIEVuc3VyZXMgdGhhdCBwYXJ0aWNsZXMgZW1pdHRlZCBieSB0aGlzIGVtaXR0ZXIgYXJlIHBvc2l0aW9uZWRcbiAgICAgKiBhY2NvcmRpbmcgdG8gdGhlIGVtaXR0ZXIncyBwcm9wZXJ0aWVzLlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuYmluZEVtaXR0ZXIgPSBERUZBVUxUX0JJTkRfRU1JVFRFUjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIERldGVybWluZXMgaWYgdGhlIGVtaXR0ZXIgd2lsbCBkaXNwYXRjaCBpbnRlcm5hbCBldmVudHMuIERlZmF1bHRzXG4gICAgICogdG8gZmFsc2VcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgPSBERUZBVUxUX0JJTkRfRU1JVFRFUl9FVkVOVDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBudW1iZXIgb2YgcGFydGljbGVzIHRvIGVtaXQgcGVyIHNlY29uZCAoYSBbcGFydGljbGVdL2IgW3NdKVxuICAgICAqIEB0eXBlIHtSYXRlfVxuICAgICAqL1xuICAgIHRoaXMucmF0ZSA9IERFRkFVTFRfRU1JVFRFUl9SQVRFO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgRGV0ZXJtaW5lcyBpZiB0aGUgZW1pdHRlciBpcyBlbWl0dGluZyBwYXJ0aWNsZXMgb3Igbm90LlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuaXNFbWl0dGluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGVtaXR0ZXIncyBpZC5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuaWQgPSBgZW1pdHRlci0ke3VpZCgpfWA7XG4gICAgdGhpcy5jSUQgPSAwO1xuICAgIHRoaXMubmFtZSA9ICdFbWl0dGVyJztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBpbmRleCBvZiB0aGUgZW1pdHRlciBhcyBpdCBpcyBhZGRlZCB0byB0aGUgc3lzdGVtLlxuICAgICAqIEB0eXBlIHtudW1iZXJ8dW5kZWZpbmVkfVxuICAgICAqL1xuICAgIHRoaXMuaW5kZXggPSBERUZBVUxUX0VNSVRURVJfSU5ERVg7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgZW1pdHRlcidzIGludGVybmFsIGV2ZW50IGRpc3BhdGNoZXIuXG4gICAgICogQHR5cGUge0V2ZW50RGlzcGF0Y2hlcn1cbiAgICAgKi9cbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlciA9IG5ldyBFdmVudERpc3BhdGNoZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm94eSBtZXRob2QgZm9yIHRoZSBpbnRlcm5hbCBldmVudCBkaXNwYXRjaGVyJ3MgZGlzcGF0Y2hFdmVudCBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudCAtIFRoZSBldmVudCB0byBkaXNwYXRjaFxuICAgKiBAcGFyYW0ge29iamVjdDxQYXJ0aWNsZT59IFt0YXJnZXQ9dGhpc10gLSBUaGUgZXZlbnQgdGFyZ2V0XG4gICAqL1xuICBkaXNwYXRjaChldmVudCwgdGFyZ2V0ID0gdGhpcykge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyLmRpc3BhdGNoRXZlbnQoZXZlbnQsIHRhcmdldCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZW1pdHRlciByYXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JhdGV9IHJhdGUgLSBhIHJhdGUgaW5pdGlhbGl6ZXIgb2JqZWN0XG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRSYXRlKHJhdGUpIHtcbiAgICB0aGlzLnJhdGUgPSByYXRlO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdQb3NpdGlvbiAtIGFuIG9iamVjdCB0aGUgbmV3IHgsIHkgYW5kIHogcHJvcHNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldFBvc2l0aW9uKG5ld1Bvc2l0aW9uID0ge30pIHtcbiAgICBjb25zdCB7IHBvc2l0aW9uIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgeCA9IHBvc2l0aW9uLngsIHkgPSBwb3NpdGlvbi55LCB6ID0gcG9zaXRpb24ueiB9ID0gbmV3UG9zaXRpb247XG5cbiAgICB0aGlzLnBvc2l0aW9uLnNldCh4LCB5LCB6KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJvdGF0aW9uIG9mIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3Um90YXRpb24gLSBhbiBvYmplY3QgdGhlIG5ldyB4LCB5IGFuZCB6IHByb3BzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRSb3RhdGlvbihuZXdSb3RhdGlvbiA9IHt9KSB7XG4gICAgY29uc3QgeyByb3RhdGlvbiB9ID0gdGhpcztcbiAgICBjb25zdCB7IHggPSByb3RhdGlvbi54LCB5ID0gcm90YXRpb24ueSwgeiA9IHJvdGF0aW9uLnogfSA9IG5ld1JvdGF0aW9uO1xuXG4gICAgdGhpcy5yb3RhdGlvbi5zZXQoeCwgeSwgeik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0b3RhbCBudW1iZXIgb2YgdGltZXMgdGhlIGVtaXR0ZXIgc2hvdWxkIGVtaXQgcGFydGljbGVzIGFzIHdlbGwgYXNcbiAgICogdGhlIGVtaXR0ZXIncyBsaWZlLiBBbHNvIGludGlhbGl6ZXMgdGhlIGVtaXR0ZXIgcmF0ZS5cbiAgICogVGhpcyBlbmFibGVzIHRoZSBlbWl0dGVyIHRvIGVtaXQgcGFydGljbGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RvdGFsRW1pdFRpbWVzPUluZmluaXR5XSAtIHRoZSB0b3RhbCBudW1iZXIgb2YgdGltZXMgdG8gZW1pdCBwYXJ0aWNsZXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIHRoZSBsaWZlIG9mIHRoaXMgZW1pdHRlciBpbiBtaWxsaXNlY29uZHNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGVtaXQodG90YWxFbWl0VGltZXMgPSBJbmZpbml0eSwgbGlmZSA9IEluZmluaXR5KSB7XG4gICAgdGhpcy5jdXJyZW50RW1pdFRpbWUgPSAwO1xuICAgIHRoaXMudG90YWxFbWl0VGltZXMgPSBpc051bWJlcih0b3RhbEVtaXRUaW1lcykgPyB0b3RhbEVtaXRUaW1lcyA6IEluZmluaXR5O1xuXG4gICAgaWYgKHRvdGFsRW1pdFRpbWVzID09PSAxKSB7XG4gICAgICB0aGlzLmxpZmUgPSB0b3RhbEVtaXRUaW1lcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saWZlID0gaXNOdW1iZXIobGlmZSkgPyBsaWZlIDogSW5maW5pdHk7XG4gICAgfVxuXG4gICAgdGhpcy5yYXRlLmluaXQoKTtcbiAgICB0aGlzLmlzRW1pdHRpbmcgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRXhwZXJpbWVudGFsIGVtaXQgbWV0aG9kIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gdGhlIFN5c3RlbS5lbWl0IG1ldGhvZC5cbiAgICpcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGV4cGVyaW1lbnRhbF9lbWl0KCkge1xuICAgIGNvbnN0IHsgaXNFbWl0dGluZywgdG90YWxFbWl0VGltZXMsIGxpZmUgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWlzRW1pdHRpbmcpIHtcbiAgICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcblxuICAgICAgaWYgKCF0b3RhbEVtaXRUaW1lcykge1xuICAgICAgICB0aGlzLnNldFRvdGFsRW1pdFRpbWVzKEluZmluaXR5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsaWZlKSB7XG4gICAgICAgIHRoaXMuc2V0TGlmZShJbmZpbml0eSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmF0ZS5pbml0KCk7XG4gICAgICB0aGlzLmlzRW1pdHRpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRvdGFsIGVtaXQgdGltZXMgZm9yIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RvdGFsRW1pdFRpbWVzPUluZmluaXR5XSAtIHRoZSB0b3RhbCBudW1iZXIgb2YgdGltZXMgdG8gZW1pdCBwYXJ0aWNsZXNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldFRvdGFsRW1pdFRpbWVzKHRvdGFsRW1pdFRpbWVzID0gSW5maW5pdHkpIHtcbiAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gaXNOdW1iZXIodG90YWxFbWl0VGltZXMpID8gdG90YWxFbWl0VGltZXMgOiBJbmZpbml0eTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGxpZmUgb2YgdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSB0aGUgbGlmZSBvZiB0aGlzIGVtaXR0ZXIgaW4gbWlsbGlzZWNvbmRzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRMaWZlKGxpZmUgPSBJbmZpbml0eSkge1xuICAgIGlmICh0aGlzLnRvdGFsRW1pdFRpbWVzID09PSAxKSB7XG4gICAgICB0aGlzLmxpZmUgPSB0aGlzLnRvdGFsRW1pdFRpbWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpZmUgPSBpc051bWJlcihsaWZlKSA/IGxpZmUgOiBJbmZpbml0eTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wcyB0aGUgZW1pdHRlciBmcm9tIGVtaXR0aW5nIHBhcnRpY2xlcy5cbiAgICpcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBzdG9wRW1pdCgpIHtcbiAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gLTE7XG4gICAgdGhpcy5jdXJyZW50RW1pdFRpbWUgPSAwO1xuICAgIHRoaXMuaXNFbWl0dGluZyA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEtpbGxzIGFsbCBvZiB0aGUgZW1pdHRlcidzIHBhcnRpY2xlcy5cbiAgICpcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICByZW1vdmVBbGxQYXJ0aWNsZXMoKSB7XG4gICAgbGV0IGkgPSB0aGlzLnBhcnRpY2xlcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLnBhcnRpY2xlc1tpXS5kZWFkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHBhcnRpY2xlIGluaXRpYWxpemVyIHRvIHRoZSBlbWl0dGVyLlxuICAgKiBFYWNoIGluaXRpYWxpemVyIGlzIHJ1biBvbiBlYWNoIHBhcnRpY2xlIHdoZW4gdGhleSBhcmUgY3JlYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtJbml0aWFsaXplcn0gaW5pdGlhbGl6ZXIgLSBUaGUgaW5pdGlhbGl6ZXIgdG8gYWRkXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRJbml0aWFsaXplcihpbml0aWFsaXplcikge1xuICAgIHRoaXMuaW5pdGlhbGl6ZXJzLnB1c2goaW5pdGlhbGl6ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBtdWx0aXBsZSBwYXJ0aWNsZSBpbml0aWFsaXplcnMgdG8gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8SW5pdGlhbGl6ZXI+fSBpbml0aWFsaXplcnMgLSBhbiBhcnJheSBvZiBwYXJ0aWNsZSBpbml0aWFsaXplcnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZEluaXRpYWxpemVycyhpbml0aWFsaXplcnMpIHtcbiAgICBsZXQgaSA9IGluaXRpYWxpemVycy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLmFkZEluaXRpYWxpemVyKGluaXRpYWxpemVyc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZW1pdHRlcidzIHBhcnRpY2xlIGluaXRpYWxpemVycy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxJbml0aWFsaXplcj59IGluaXRpYWxpemVycyAtIGFuIGFycmF5IG9mIHBhcnRpY2xlIGluaXRpYWxpemVyc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0SW5pdGlhbGl6ZXJzKGluaXRpYWxpemVycykge1xuICAgIHRoaXMuaW5pdGlhbGl6ZXJzID0gaW5pdGlhbGl6ZXJzO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBpbml0aWFsaXplciBmcm9tIHRoZSBlbWl0dGVyJ3MgaW5pdGlhbGl6ZXJzIGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge0luaXRpYWxpemVyfSBpbml0aWFsaXplciAtIFRoZSBpbml0aWFsaXplciB0byByZW1vdmVcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHJlbW92ZUluaXRpYWxpemVyKGluaXRpYWxpemVyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmluaXRpYWxpemVycy5pbmRleE9mKGluaXRpYWxpemVyKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGluaXRpYWxpemVycy5cbiAgICpcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHJlbW92ZUFsbEluaXRpYWxpemVycygpIHtcbiAgICBVdGlsLmRlc3Ryb3lBcnJheSh0aGlzLmluaXRpYWxpemVycyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgYmVoYXZpb3VyIHRvIHRoZSBlbWl0dGVyLiBBbGwgZW1pdHRlciBiZWhhdmlvdXJzIGFyZSBhZGRlZCB0byBlYWNoIHBhcnRpY2xlIHdoZW5cbiAgICogdGhleSBhcmUgZW1pdHRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciAtIFRoZSBiZWhhdmlvdXIgdG8gYWRkIHRvIHRoZSBlbWl0dGVyXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgdGhpcy5iZWhhdmlvdXJzLnB1c2goYmVoYXZpb3VyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgYmVoYXZpb3VycyB0byB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRCZWhhdmlvdXJzKGJlaGF2aW91cnMpIHtcbiAgICBsZXQgaSA9IGJlaGF2aW91cnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5hZGRCZWhhdmlvdXIoYmVoYXZpb3Vyc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8QmVoYXZpb3VyPn0gYmVoYXZpb3VycyAtIGFuIGFycmF5IG9mIGVtaXR0ZXIgYmVoYXZpb3Vyc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0QmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgdGhpcy5iZWhhdmlvdXJzID0gYmVoYXZpb3VycztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGJlaGF2aW91ciBmcm9tIHRoZSBlbWl0dGVyJ3MgYmVoYXZpb3VycyBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciAtIFRoZSBiZWhhdmlvdXIgdG8gcmVtb3ZlXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmJlaGF2aW91cnMuaW5kZXhPZihiZWhhdmlvdXIpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuYmVoYXZpb3Vycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGJlaGF2aW91cnMgZnJvbSB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHJlbW92ZUFsbEJlaGF2aW91cnMoKSB7XG4gICAgVXRpbC5kZXN0cm95QXJyYXkodGhpcy5iZWhhdmlvdXJzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZW1pdHRlciBiZWhhdmlvdXIgdG8gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIGFkZCB0byB0aGUgZW1pdHRlclxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkRW1pdHRlckJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzLnB1c2goYmVoYXZpb3VyKTtcblxuICAgIGJlaGF2aW91ci5pbml0aWFsaXplKHRoaXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBtdWx0aXBsZSBiZWhhdmlvdXJzIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEJlaGF2aW91cj59IGJlaGF2aW91cnMgLSBhbiBhcnJheSBvZiBlbWl0dGVyIGJlaGF2aW91cnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZEVtaXR0ZXJCZWhhdmlvdXJzKGJlaGF2aW91cnMpIHtcbiAgICBsZXQgaSA9IGJlaGF2aW91cnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5hZGRFbWl0dGVyQmVoYXZpb3VyKGJlaGF2aW91cnNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIncyBiZWhhdmlvdXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEJlaGF2aW91cj59IGJlaGF2aW91cnMgLSBhbiBhcnJheSBvZiBlbWl0dGVyIGJlaGF2aW91cnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldEVtaXR0ZXJCZWhhdmlvdXJzKGJlaGF2aW91cnMpIHtcbiAgICBjb25zdCBsZW5ndGggPSBiZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMgPSBiZWhhdmlvdXJzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vyc1tpXS5pbml0aWFsaXplKHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGJlaGF2aW91ciBmcm9tIHRoZSBlbWl0dGVyJ3MgYmVoYXZpb3VycyBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciAtIFRoZSBiZWhhdmlvdXIgdG8gcmVtb3ZlXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVFbWl0dGVyQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lbWl0dGVyQmVoYXZpb3Vycy5pbmRleE9mKGJlaGF2aW91cik7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGJlaGF2aW91cnMgZnJvbSB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHJlbW92ZUFsbEVtaXR0ZXJCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZGVzdHJveUFycmF5KHRoaXMuZW1pdHRlckJlaGF2aW91cnMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBFTUlUVEVSX0RFQUQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b25FbWl0dGVyRGVhZH0gLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBFTUlUVEVSX0RFQUQgaXMgZGlzcGF0Y2hlZC5cbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZE9uRW1pdHRlckRlYWRFdmVudExpc3RlbmVyKG9uRW1pdHRlckRlYWQpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlci5hZGRFdmVudExpc3RlbmVyKGAke3RoaXMuaWR9XyR7RU1JVFRFUl9ERUFEfWAsICgpID0+XG4gICAgICBvbkVtaXR0ZXJEZWFkKClcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBhcnRpY2xlIGJ5IHJldHJlaXZpbmcgb25lIGZyb20gdGhlIHBvb2wgYW5kIHNldHRpbmcgaXQgdXAgd2l0aFxuICAgKiB0aGUgc3VwcGxpZWQgaW5pdGlhbGl6ZXIgYW5kIGJlaGF2aW91ci5cbiAgICpcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGNyZWF0ZVBhcnRpY2xlKCkge1xuICAgIGNvbnN0IHBhcnRpY2xlID0gdGhpcy5wYXJlbnQucG9vbC5nZXQoUGFydGljbGUpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgdGhpcy5zZXR1cFBhcnRpY2xlKHBhcnRpY2xlLCBpbmRleCk7XG4gICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuZGlzcGF0Y2goUEFSVElDTEVfQ1JFQVRFRCwgcGFydGljbGUpO1xuICAgIHRoaXMuYmluZEVtaXR0ZXJFdmVudCAmJiB0aGlzLmRpc3BhdGNoKFBBUlRJQ0xFX0NSRUFURUQsIHBhcnRpY2xlKTtcblxuICAgIHJldHVybiBwYXJ0aWNsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIGEgcGFydGljbGUgYnkgcnVubmluZyBhbGwgaW5pdGlhbGl6ZXJzIG9uIGl0IGFuZCBzZXR0aW5nIGl0cyBiZWhhdmlvdXJzLlxuICAgKiBBbHNvIGFkZHMgdGhlIHBhcnRpY2xlIHRvIHRoaXMucGFydGljbGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBzZXR1cFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHNldHVwUGFydGljbGUocGFydGljbGUsIGluZGV4KSB7XG4gICAgY29uc3QgeyBpbml0aWFsaXplcnMsIGJlaGF2aW91cnMgfSA9IHRoaXM7XG5cbiAgICBJbml0aWFsaXplclV0aWwuaW5pdGlhbGl6ZSh0aGlzLCBwYXJ0aWNsZSwgaW5pdGlhbGl6ZXJzKTtcblxuICAgIHBhcnRpY2xlLmFkZEJlaGF2aW91cnMoYmVoYXZpb3Vycyk7XG4gICAgcGFydGljbGUucGFyZW50ID0gdGhpcztcbiAgICBwYXJ0aWNsZS5pbmRleCA9IGluZGV4O1xuXG4gICAgdGhpcy5wYXJ0aWNsZXMucHVzaChwYXJ0aWNsZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZW1pdHRlciBhY2NvcmRpbmcgdG8gdGhlIHRpbWUgcGFzc2VkIGJ5IGNhbGxpbmcgdGhlIGdlbmVyYXRlXG4gICAqIGFuZCBpbnRlZ3JhdGUgbWV0aG9kcy4gVGhlIGdlbmVyYXRlIG1ldGhvZCBjcmVhdGVzIHBhcnRpY2xlcywgdGhlIGludGVncmF0ZVxuICAgKiBtZXRob2QgdXBkYXRlcyBleGlzdGluZyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIElmIHRoZSBlbWl0dGVyIGFnZSBpcyBncmVhdGVyIHRoYW4gdGltZSwgdGhlIGVtaXR0ZXIgaXMga2lsbGVkLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhbHNvIGluZGV4ZXMvZGVpbmRleGVzIHBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBTeXN0ZW0gZW5naW5lIHRpbWVcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICB1cGRhdGUodGltZSkge1xuICAgIGlmICghdGhpcy5pc0VtaXR0aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hZ2UgKz0gdGltZTtcblxuICAgIGlmICh0aGlzLmRlYWQgfHwgdGhpcy5hZ2UgPj0gdGhpcy5saWZlKSB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLmdlbmVyYXRlKHRpbWUpO1xuICAgIHRoaXMuaW50ZWdyYXRlKHRpbWUpO1xuXG4gICAgbGV0IGkgPSB0aGlzLnBhcnRpY2xlcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFydGljbGVzW2ldO1xuXG4gICAgICBpZiAocGFydGljbGUuZGVhZCkge1xuICAgICAgICB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5kaXNwYXRjaChQQVJUSUNMRV9ERUFELCBwYXJ0aWNsZSk7XG4gICAgICAgIHRoaXMuYmluZEVtaXR0ZXJFdmVudCAmJiB0aGlzLmRpc3BhdGNoKFBBUlRJQ0xFX0RFQUQsIHBhcnRpY2xlKTtcbiAgICAgICAgdGhpcy5wYXJlbnQucG9vbC5leHBpcmUocGFydGljbGUucmVzZXQoKSk7XG4gICAgICAgIHRoaXMucGFydGljbGVzLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUVtaXR0ZXJCZWhhdmlvdXJzKHRpbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGVtaXR0ZXIncyBlbWl0dGVyIGJlaGF2aW91cnMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgdXBkYXRlRW1pdHRlckJlaGF2aW91cnModGltZSkge1xuICAgIGlmICh0aGlzLnNsZWVwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5lbWl0dGVyQmVoYXZpb3Vycy5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzW2ldLmFwcGx5QmVoYXZpb3VyKHRoaXMsIHRpbWUsIGkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRoZSBpbnRlZ3JhdGlvbiBhbGdvcml0aG0gb24gdGhlIGVtaXR0ZXIgYW5kIGFsbCBwYXJ0aWNsZXMuXG4gICAqIFVwZGF0ZXMgdGhlIHBhcnRpY2xlcyB3aXRoIHRoZSB0aW1zdGFtcCBwYXNzZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgaW50ZWdyYXRlKHRpbWUpIHtcbiAgICBjb25zdCBpbnRlZ3JhdGlvblR5cGUgPSB0aGlzLnBhcmVudFxuICAgICAgPyB0aGlzLnBhcmVudC5pbnRlZ3JhdGlvblR5cGVcbiAgICAgIDogSU5URUdSQVRJT05fVFlQRV9FVUxFUjtcbiAgICBjb25zdCBkYW1waW5nID0gMSAtIHRoaXMuZGFtcGluZztcblxuICAgIGludGVncmF0ZSh0aGlzLCB0aW1lLCBkYW1waW5nLCBpbnRlZ3JhdGlvblR5cGUpO1xuXG4gICAgbGV0IGluZGV4ID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgIGNvbnN0IHBhcnRpY2xlID0gdGhpcy5wYXJ0aWNsZXNbaW5kZXhdO1xuXG4gICAgICBwYXJ0aWNsZS51cGRhdGUodGltZSwgaW5kZXgpO1xuICAgICAgaW50ZWdyYXRlKHBhcnRpY2xlLCB0aW1lLCBkYW1waW5nLCBpbnRlZ3JhdGlvblR5cGUpO1xuXG4gICAgICB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5kaXNwYXRjaChQQVJUSUNMRV9VUERBVEUsIHBhcnRpY2xlKTtcbiAgICAgIHRoaXMuYmluZEVtaXR0ZXJFdmVudCAmJiB0aGlzLmRpc3BhdGNoKFBBUlRJQ0xFX1VQREFURSwgcGFydGljbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgbmV3IHBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBTeXN0ZW0gZW5naW5lIHRpbWVcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBnZW5lcmF0ZSh0aW1lKSB7XG4gICAgaWYgKHRoaXMudG90YWxFbWl0VGltZXMgPT09IDEpIHtcbiAgICAgIGxldCBpID0gdGhpcy5yYXRlLmdldFZhbHVlKDk5OTk5KTtcblxuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHRoaXMuY0lEID0gaTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudG90YWxFbWl0VGltZXMgPSAwO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50RW1pdFRpbWUgKz0gdGltZTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRFbWl0VGltZSA8IHRoaXMudG90YWxFbWl0VGltZXMpIHtcbiAgICAgIGxldCBpID0gdGhpcy5yYXRlLmdldFZhbHVlKHRpbWUpO1xuXG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgdGhpcy5jSUQgPSBpO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlUGFydGljbGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogS2lsbHMgdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmRlYWQgPSB0cnVlO1xuICAgIHRoaXMuZW5lcmd5ID0gMDtcbiAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gLTE7XG5cbiAgICBpZiAodGhpcy5wYXJ0aWNsZXMubGVuZ3RoID09IDApIHtcbiAgICAgIHRoaXMuaXNFbWl0dGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5yZW1vdmVBbGxJbml0aWFsaXplcnMoKTtcbiAgICAgIHRoaXMucmVtb3ZlQWxsQmVoYXZpb3VycygpO1xuICAgICAgdGhpcy5kaXNwYXRjaChgJHt0aGlzLmlkfV8ke0VNSVRURVJfREVBRH1gKTtcblxuICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQucmVtb3ZlRW1pdHRlcih0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
708
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbWl0dGVyL0VtaXR0ZXIuanMiXSwibmFtZXMiOlsiREVGQVVMVF9CSU5EX0VNSVRURVIiLCJERUZBVUxUX0JJTkRfRU1JVFRFUl9FVkVOVCIsIkRFRkFVTFRfREFNUElORyIsIkRFRkFVTFRfRU1JVFRFUl9JTkRFWCIsIkRFRkFVTFRfRU1JVFRFUl9SQVRFIiwiRXZlbnREaXNwYXRjaGVyIiwiRU1JVFRFUl9ERUFEIiwiUEFSVElDTEVfQ1JFQVRFRCIsIlBBUlRJQ0xFX0RFQUQiLCJQQVJUSUNMRV9VUERBVEUiLCJTWVNURU1fVVBEQVRFIiwiSU5URUdSQVRJT05fVFlQRV9FVUxFUiIsImludGVncmF0ZSIsIlV0aWwiLCJ1aWQiLCJJbml0aWFsaXplclV0aWwiLCJQYXJ0aWNsZSIsImlzTnVtYmVyIiwiRU1JVFRFUl9UWVBFX0VNSVRURVIiLCJ0eXBlIiwiRW1pdHRlciIsImNvbnN0cnVjdG9yIiwicHJvcGVydGllcyIsInBhcnRpY2xlcyIsImluaXRpYWxpemVycyIsImJlaGF2aW91cnMiLCJlbWl0dGVyQmVoYXZpb3VycyIsImN1cnJlbnRFbWl0VGltZSIsInRvdGFsRW1pdFRpbWVzIiwiZGFtcGluZyIsImJpbmRFbWl0dGVyIiwiYmluZEVtaXR0ZXJFdmVudCIsInJhdGUiLCJpc0VtaXR0aW5nIiwiaWQiLCJjSUQiLCJuYW1lIiwiaW5kZXgiLCJldmVudERpc3BhdGNoZXIiLCJkaXNwYXRjaCIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGF0Y2hFdmVudCIsInNldFJhdGUiLCJzZXRQb3NpdGlvbiIsIm5ld1Bvc2l0aW9uIiwicG9zaXRpb24iLCJ4IiwieSIsInoiLCJzZXQiLCJzZXRSb3RhdGlvbiIsIm5ld1JvdGF0aW9uIiwicm90YXRpb24iLCJlbWl0IiwiSW5maW5pdHkiLCJsaWZlIiwiaW5pdCIsImV4cGVyaW1lbnRhbF9lbWl0Iiwic2V0VG90YWxFbWl0VGltZXMiLCJzZXRMaWZlIiwic3RvcEVtaXQiLCJyZW1vdmVBbGxQYXJ0aWNsZXMiLCJpIiwibGVuZ3RoIiwiZGVhZCIsImFkZEluaXRpYWxpemVyIiwiaW5pdGlhbGl6ZXIiLCJwdXNoIiwiYWRkSW5pdGlhbGl6ZXJzIiwic2V0SW5pdGlhbGl6ZXJzIiwicmVtb3ZlSW5pdGlhbGl6ZXIiLCJpbmRleE9mIiwic3BsaWNlIiwicmVtb3ZlQWxsSW5pdGlhbGl6ZXJzIiwiZGVzdHJveUFycmF5IiwiYWRkQmVoYXZpb3VyIiwiYmVoYXZpb3VyIiwiYWRkQmVoYXZpb3VycyIsInNldEJlaGF2aW91cnMiLCJyZW1vdmVCZWhhdmlvdXIiLCJyZW1vdmVBbGxCZWhhdmlvdXJzIiwiYWRkRW1pdHRlckJlaGF2aW91ciIsImluaXRpYWxpemUiLCJhZGRFbWl0dGVyQmVoYXZpb3VycyIsInNldEVtaXR0ZXJCZWhhdmlvdXJzIiwicmVtb3ZlRW1pdHRlckJlaGF2aW91ciIsInJlbW92ZUFsbEVtaXR0ZXJCZWhhdmlvdXJzIiwiYWRkT25FbWl0dGVyRGVhZEV2ZW50TGlzdGVuZXIiLCJvbkVtaXR0ZXJEZWFkIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNyZWF0ZVBhcnRpY2xlIiwicGFydGljbGUiLCJwYXJlbnQiLCJwb29sIiwiZ2V0Iiwic2V0dXBQYXJ0aWNsZSIsInVwZGF0ZSIsInRpbWUiLCJhZ2UiLCJkZXN0cm95IiwiZ2VuZXJhdGUiLCJleHBpcmUiLCJyZXNldCIsInVwZGF0ZUVtaXR0ZXJCZWhhdmlvdXJzIiwic2xlZXAiLCJhcHBseUJlaGF2aW91ciIsImludGVncmF0aW9uVHlwZSIsImdldFZhbHVlIiwiZW5lcmd5IiwicmVtb3ZlRW1pdHRlciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsb0JBREYsRUFFRUMsMEJBRkYsRUFHRUMsZUFIRixFQUlFQyxxQkFKRixFQUtFQyxvQkFMRixRQU1PLGFBTlA7QUFPQSxPQUFPQyxlQUFQLElBQ0VDLFlBREYsRUFFRUMsZ0JBRkYsRUFHRUMsYUFIRixFQUlFQyxlQUpGLEVBS0VDLGFBTEYsUUFNTyxXQU5QO0FBT0EsU0FBU0Msc0JBQVQs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Q0FBVTRFLFFBQVYsQ0FBbUJWLElBQW5CLENBQVI7O0FBRUEsVUFBSW5DLENBQUMsR0FBRyxDQUFSLEVBQVc7QUFDVCxhQUFLNUIsR0FBTCxHQUFXNEIsQ0FBWDtBQUNEOztBQUVELGFBQU9BLENBQUMsRUFBUixFQUFZO0FBQ1YsYUFBSzRCLGNBQUw7QUFDRDtBQUNGO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRVMsRUFBQUEsT0FBTyxHQUFHO0FBQ1IsU0FBS25DLElBQUwsR0FBWSxJQUFaO0FBQ0EsU0FBSzRDLE1BQUwsR0FBYyxDQUFkO0FBQ0EsU0FBS2pGLGNBQUwsR0FBc0IsQ0FBQyxDQUF2Qjs7QUFFQSxRQUFJLEtBQUtMLFNBQUwsQ0FBZXlDLE1BQWYsSUFBeUIsQ0FBN0IsRUFBZ0M7QUFDOUIsV0FBSy9CLFVBQUwsR0FBa0IsS0FBbEI7QUFDQSxXQUFLeUMscUJBQUw7QUFDQSxXQUFLTyxtQkFBTDtBQUNBLFdBQUsxQyxRQUFMLENBQWUsR0FBRSxLQUFLTCxFQUFHLElBQUc1QixZQUFhLEVBQXpDO0FBRUEsV0FBS3VGLE1BQUwsSUFBZSxLQUFLQSxNQUFMLENBQVlpQixhQUFaLENBQTBCLElBQTFCLENBQWY7QUFDRDtBQUNGOztBQWpxQjJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9CSU5EX0VNSVRURVIsXG4gIERFRkFVTFRfQklORF9FTUlUVEVSX0VWRU5ULFxuICBERUZBVUxUX0RBTVBJTkcsXG4gIERFRkFVTFRfRU1JVFRFUl9JTkRFWCxcbiAgREVGQVVMVF9FTUlUVEVSX1JBVEUsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBFdmVudERpc3BhdGNoZXIsIHtcbiAgRU1JVFRFUl9ERUFELFxuICBQQVJUSUNMRV9DUkVBVEVELFxuICBQQVJUSUNMRV9ERUFELFxuICBQQVJUSUNMRV9VUERBVEUsXG4gIFNZU1RFTV9VUERBVEUsXG59IGZyb20gJy4uL2V2ZW50cyc7XG5pbXBvcnQgeyBJTlRFR1JBVElPTl9UWVBFX0VVTEVSLCBpbnRlZ3JhdGUgfSBmcm9tICcuLi9tYXRoJztcbmltcG9ydCB7IFV0aWwsIHVpZCB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHsgSW5pdGlhbGl6ZXJVdGlsIH0gZnJvbSAnLi4vaW5pdGlhbGl6ZXInO1xuaW1wb3J0IFBhcnRpY2xlIGZyb20gJy4uL2NvcmUvUGFydGljbGUnO1xuaW1wb3J0IGlzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5pbXBvcnQgeyBFTUlUVEVSX1RZUEVfRU1JVFRFUiBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRW1pdHRlcnMgYXJlIHRoZSBTeXN0ZW0gZW5naW5lJ3MgcGFydGljbGUgZmFjdG9yaWVzLiBUaGV5IGNhdXNlIHBhcnRpY2xlcyB0b1xuICogYmUgcmVuZGVyZWQgYnkgZW1pdHRpbmcgdGhlbSwgYW5kIHN0b3JlIGFsbCBwYXJ0aWNsZSBpbml0aWFsaXplcnMgYW5kIGJlaGF2aW91cnMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbWl0dGVyIGV4dGVuZHMgUGFydGljbGUge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBFbWl0dGVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcGVydGllcyAtIFRoZSBwcm9wZXJ0aWVzIHRvIGluc3RhbnRpYXRlIHRoZSBlbWl0dGVyIHdpdGhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzKSB7XG4gICAgc3VwZXIocHJvcGVydGllcyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnRpY2xlcyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGluaXRpYWxpemVycyBmb3IgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLmluaXRpYWxpemVycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGJlaGF2aW91cnMgZm9yIHBhcnRpY2xlcyBlbWl0dGVkIGJ5IHRoaXMgZW1pdHRlci5cbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5iZWhhdmlvdXJzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgYmVoYXZpb3VycyBmb3IgdGhlIGVtaXR0ZXIuXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqL1xuICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjdXJyZW50IGVtaXQgaXRlcmF0aW9uLlxuICAgICAqIEB0eXBlIHtpbnRlZ2VyfVxuICAgICAqL1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSB0b3RhbCBudW1iZXIgb2YgdGltZXMgdGhlIGVtaXR0ZXIgc2hvdWxkIGVtaXQgcGFydGljbGVzLlxuICAgICAqIEB0eXBlIHtpbnRlZ2VyfVxuICAgICAqL1xuICAgIHRoaXMudG90YWxFbWl0VGltZXMgPSAtMTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBmcmljdGlvbiBjb2VmZmljaWVudCBmb3IgYWxsIHBhcnRpY2xlIHRvIGVtaXQgYnkuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmRhbXBpbmcgPSBERUZBVUxUX0RBTVBJTkc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBFbnN1cmVzIHRoYXQgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyIGFyZSBwb3NpdGlvbmVkXG4gICAgICogYWNjb3JkaW5nIHRvIHRoZSBlbWl0dGVyJ3MgcHJvcGVydGllcy5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmJpbmRFbWl0dGVyID0gREVGQVVMVF9CSU5EX0VNSVRURVI7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBlbWl0dGVyIHdpbGwgZGlzcGF0Y2ggaW50ZXJuYWwgZXZlbnRzLiBEZWZhdWx0c1xuICAgICAqIHRvIGZhbHNlXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5iaW5kRW1pdHRlckV2ZW50ID0gREVGQVVMVF9CSU5EX0VNSVRURVJfRVZFTlQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBlbWl0IHBlciBzZWNvbmQgKGEgW3BhcnRpY2xlXS9iIFtzXSlcbiAgICAgKiBAdHlwZSB7UmF0ZX1cbiAgICAgKi9cbiAgICB0aGlzLnJhdGUgPSBERUZBVUxUX0VNSVRURVJfUkFURTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIERldGVybWluZXMgaWYgdGhlIGVtaXR0ZXIgaXMgZW1pdHRpbmcgcGFydGljbGVzIG9yIG5vdC5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBlbWl0dGVyJ3MgaWQuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLmlkID0gYGVtaXR0ZXItJHt1aWQoKX1gO1xuICAgIHRoaXMuY0lEID0gMDtcbiAgICB0aGlzLm5hbWUgPSAnRW1pdHRlcic7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgaW5kZXggb2YgdGhlIGVtaXR0ZXIgYXMgaXQgaXMgYWRkZWQgdG8gdGhlIHN5c3RlbS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfHVuZGVmaW5lZH1cbiAgICAgKi9cbiAgICB0aGlzLmluZGV4ID0gREVGQVVMVF9FTUlUVEVSX0lOREVYO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGVtaXR0ZXIncyBpbnRlcm5hbCBldmVudCBkaXNwYXRjaGVyLlxuICAgICAqIEB0eXBlIHtFdmVudERpc3BhdGNoZXJ9XG4gICAgICovXG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIgPSBuZXcgRXZlbnREaXNwYXRjaGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJveHkgbWV0aG9kIGZvciB0aGUgaW50ZXJuYWwgZXZlbnQgZGlzcGF0Y2hlcidzIGRpc3BhdGNoRXZlbnQgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgLSBUaGUgZXZlbnQgdG8gZGlzcGF0Y2hcbiAgICogQHBhcmFtIHtvYmplY3Q8UGFydGljbGU+fSBbdGFyZ2V0PXRoaXNdIC0gVGhlIGV2ZW50IHRhcmdldFxuICAgKi9cbiAgZGlzcGF0Y2goZXZlbnQsIHRhcmdldCA9IHRoaXMpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIgcmF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSYXRlfSByYXRlIC0gYSByYXRlIGluaXRpYWxpemVyIG9iamVjdFxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0UmF0ZShyYXRlKSB7XG4gICAgdGhpcy5yYXRlID0gcmF0ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3UG9zaXRpb24gLSBhbiBvYmplY3QgdGhlIG5ldyB4LCB5IGFuZCB6IHByb3BzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRQb3NpdGlvbihuZXdQb3NpdGlvbiA9IHt9KSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gdGhpcztcbiAgICBjb25zdCB7IHggPSBwb3NpdGlvbi54LCB5ID0gcG9zaXRpb24ueSwgeiA9IHBvc2l0aW9uLnogfSA9IG5ld1Bvc2l0aW9uO1xuXG4gICAgdGhpcy5wb3NpdGlvbi5zZXQoeCwgeSwgeik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByb3RhdGlvbiBvZiB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1JvdGF0aW9uIC0gYW4gb2JqZWN0IHRoZSBuZXcgeCwgeSBhbmQgeiBwcm9wc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0Um90YXRpb24obmV3Um90YXRpb24gPSB7fSkge1xuICAgIGNvbnN0IHsgcm90YXRpb24gfSA9IHRoaXM7XG4gICAgY29uc3QgeyB4ID0gcm90YXRpb24ueCwgeSA9IHJvdGF0aW9uLnksIHogPSByb3RhdGlvbi56IH0gPSBuZXdSb3RhdGlvbjtcblxuICAgIHRoaXMucm90YXRpb24uc2V0KHgsIHksIHopO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRoZSBlbWl0dGVyIHNob3VsZCBlbWl0IHBhcnRpY2xlcyBhcyB3ZWxsIGFzXG4gICAqIHRoZSBlbWl0dGVyJ3MgbGlmZS4gQWxzbyBpbnRpYWxpemVzIHRoZSBlbWl0dGVyIHJhdGUuXG4gICAqIFRoaXMgZW5hYmxlcyB0aGUgZW1pdHRlciB0byBlbWl0IHBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0b3RhbEVtaXRUaW1lcz1JbmZpbml0eV0gLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSB0aGUgbGlmZSBvZiB0aGlzIGVtaXR0ZXIgaW4gbWlsbGlzZWNvbmRzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBlbWl0KHRvdGFsRW1pdFRpbWVzID0gSW5maW5pdHksIGxpZmUgPSBJbmZpbml0eSkge1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcbiAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gaXNOdW1iZXIodG90YWxFbWl0VGltZXMpID8gdG90YWxFbWl0VGltZXMgOiBJbmZpbml0eTtcblxuICAgIGlmICh0b3RhbEVtaXRUaW1lcyA9PT0gMSkge1xuICAgICAgdGhpcy5saWZlID0gdG90YWxFbWl0VGltZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlmZSA9IGlzTnVtYmVyKGxpZmUpID8gbGlmZSA6IEluZmluaXR5O1xuICAgIH1cblxuICAgIHRoaXMucmF0ZS5pbml0KCk7XG4gICAgdGhpcy5pc0VtaXR0aW5nID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCBlbWl0IG1ldGhvZCB0aGF0IGlzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBTeXN0ZW0uZW1pdCBtZXRob2QuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBleHBlcmltZW50YWxfZW1pdCgpIHtcbiAgICBjb25zdCB7IGlzRW1pdHRpbmcsIHRvdGFsRW1pdFRpbWVzLCBsaWZlIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFpc0VtaXR0aW5nKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFbWl0VGltZSA9IDA7XG5cbiAgICAgIGlmICghdG90YWxFbWl0VGltZXMpIHtcbiAgICAgICAgdGhpcy5zZXRUb3RhbEVtaXRUaW1lcyhJbmZpbml0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghbGlmZSkge1xuICAgICAgICB0aGlzLnNldExpZmUoSW5maW5pdHkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJhdGUuaW5pdCgpO1xuICAgICAgdGhpcy5pc0VtaXR0aW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0b3RhbCBlbWl0IHRpbWVzIGZvciB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0b3RhbEVtaXRUaW1lcz1JbmZpbml0eV0gLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRUb3RhbEVtaXRUaW1lcyh0b3RhbEVtaXRUaW1lcyA9IEluZmluaXR5KSB7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IGlzTnVtYmVyKHRvdGFsRW1pdFRpbWVzKSA/IHRvdGFsRW1pdFRpbWVzIDogSW5maW5pdHk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsaWZlIG9mIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmU9SW5maW5pdHldIC0gdGhlIGxpZmUgb2YgdGhpcyBlbWl0dGVyIGluIG1pbGxpc2Vjb25kc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0TGlmZShsaWZlID0gSW5maW5pdHkpIHtcbiAgICBpZiAodGhpcy50b3RhbEVtaXRUaW1lcyA9PT0gMSkge1xuICAgICAgdGhpcy5saWZlID0gdGhpcy50b3RhbEVtaXRUaW1lcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saWZlID0gaXNOdW1iZXIobGlmZSkgPyBsaWZlIDogSW5maW5pdHk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgdGhlIGVtaXR0ZXIgZnJvbSBlbWl0dGluZyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgc3RvcEVtaXQoKSB7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IC0xO1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcbiAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLaWxscyBhbGwgb2YgdGhlIGVtaXR0ZXIncyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVtb3ZlQWxsUGFydGljbGVzKCkge1xuICAgIGxldCBpID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5wYXJ0aWNsZXNbaV0uZGVhZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwYXJ0aWNsZSBpbml0aWFsaXplciB0byB0aGUgZW1pdHRlci5cbiAgICogRWFjaCBpbml0aWFsaXplciBpcyBydW4gb24gZWFjaCBwYXJ0aWNsZSB3aGVuIHRoZXkgYXJlIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7SW5pdGlhbGl6ZXJ9IGluaXRpYWxpemVyIC0gVGhlIGluaXRpYWxpemVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkSW5pdGlhbGl6ZXIoaW5pdGlhbGl6ZXIpIHtcbiAgICB0aGlzLmluaXRpYWxpemVycy5wdXNoKGluaXRpYWxpemVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgcGFydGljbGUgaW5pdGlhbGl6ZXJzIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEluaXRpYWxpemVyPn0gaW5pdGlhbGl6ZXJzIC0gYW4gYXJyYXkgb2YgcGFydGljbGUgaW5pdGlhbGl6ZXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRJbml0aWFsaXplcnMoaW5pdGlhbGl6ZXJzKSB7XG4gICAgbGV0IGkgPSBpbml0aWFsaXplcnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5hZGRJbml0aWFsaXplcihpbml0aWFsaXplcnNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIncyBwYXJ0aWNsZSBpbml0aWFsaXplcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8SW5pdGlhbGl6ZXI+fSBpbml0aWFsaXplcnMgLSBhbiBhcnJheSBvZiBwYXJ0aWNsZSBpbml0aWFsaXplcnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldEluaXRpYWxpemVycyhpbml0aWFsaXplcnMpIHtcbiAgICB0aGlzLmluaXRpYWxpemVycyA9IGluaXRpYWxpemVycztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gaW5pdGlhbGl6ZXIgZnJvbSB0aGUgZW1pdHRlcidzIGluaXRpYWxpemVycyBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtJbml0aWFsaXplcn0gaW5pdGlhbGl6ZXIgLSBUaGUgaW5pdGlhbGl6ZXIgdG8gcmVtb3ZlXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVJbml0aWFsaXplcihpbml0aWFsaXplcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0aWFsaXplcnMuaW5kZXhPZihpbml0aWFsaXplcik7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBpbml0aWFsaXplcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxJbml0aWFsaXplcnMoKSB7XG4gICAgVXRpbC5kZXN0cm95QXJyYXkodGhpcy5pbml0aWFsaXplcnMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGJlaGF2aW91ciB0byB0aGUgZW1pdHRlci4gQWxsIGVtaXR0ZXIgYmVoYXZpb3VycyBhcmUgYWRkZWQgdG8gZWFjaCBwYXJ0aWNsZSB3aGVuXG4gICAqIHRoZXkgYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIGFkZCB0byB0aGUgZW1pdHRlclxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIHRoaXMuYmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIGJlaGF2aW91cnMgdG8gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8QmVoYXZpb3VyPn0gYmVoYXZpb3VycyAtIGFuIGFycmF5IG9mIGVtaXR0ZXIgYmVoYXZpb3Vyc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgbGV0IGkgPSBiZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMuYWRkQmVoYXZpb3VyKGJlaGF2aW91cnNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIncyBiZWhhdmlvdXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEJlaGF2aW91cj59IGJlaGF2aW91cnMgLSBhbiBhcnJheSBvZiBlbWl0dGVyIGJlaGF2aW91cnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldEJlaGF2aW91cnMoYmVoYXZpb3Vycykge1xuICAgIHRoaXMuYmVoYXZpb3VycyA9IGJlaGF2aW91cnM7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5iZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZGVzdHJveUFycmF5KHRoaXMuYmVoYXZpb3Vycyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGVtaXR0ZXIgYmVoYXZpb3VyIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIC0gVGhlIGJlaGF2aW91ciB0byBhZGQgdG8gdGhlIGVtaXR0ZXJcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZEVtaXR0ZXJCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICBiZWhhdmlvdXIuaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgYmVoYXZpb3VycyB0byB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRFbWl0dGVyQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgbGV0IGkgPSBiZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMuYWRkRW1pdHRlckJlaGF2aW91cihiZWhhdmlvdXJzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBlbWl0dGVyJ3MgYmVoYXZpb3Vycy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRFbWl0dGVyQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYmVoYXZpb3Vycy5sZW5ndGg7XG5cbiAgICB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzID0gYmVoYXZpb3VycztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnNbaV0uaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlRW1pdHRlckJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZW1pdHRlckJlaGF2aW91cnMuaW5kZXhPZihiZWhhdmlvdXIpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxFbWl0dGVyQmVoYXZpb3VycygpIHtcbiAgICBVdGlsLmRlc3Ryb3lBcnJheSh0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGV2ZW50IGxpc3RlbmVyIGZvciB0aGUgRU1JVFRFUl9ERUFEIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29uRW1pdHRlckRlYWR9IC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgRU1JVFRFUl9ERUFEIGlzIGRpc3BhdGNoZWQuXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lcihvbkVtaXR0ZXJEZWFkKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihgJHt0aGlzLmlkfV8ke0VNSVRURVJfREVBRH1gLCAoKSA9PlxuICAgICAgb25FbWl0dGVyRGVhZCgpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYXJ0aWNsZSBieSByZXRyZWl2aW5nIG9uZSBmcm9tIHRoZSBwb29sIGFuZCBzZXR0aW5nIGl0IHVwIHdpdGhcbiAgICogdGhlIHN1cHBsaWVkIGluaXRpYWxpemVyIGFuZCBiZWhhdmlvdXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBjcmVhdGVQYXJ0aWNsZSgpIHtcbiAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFyZW50LnBvb2wuZ2V0KFBhcnRpY2xlKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHRoaXMuc2V0dXBQYXJ0aWNsZShwYXJ0aWNsZSwgaW5kZXgpO1xuICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoKFBBUlRJQ0xFX0NSRUFURUQsIHBhcnRpY2xlKTtcbiAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9DUkVBVEVELCBwYXJ0aWNsZSk7XG5cbiAgICByZXR1cm4gcGFydGljbGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBhIHBhcnRpY2xlIGJ5IHJ1bm5pbmcgYWxsIGluaXRpYWxpemVycyBvbiBpdCBhbmQgc2V0dGluZyBpdHMgYmVoYXZpb3Vycy5cbiAgICogQWxzbyBhZGRzIHRoZSBwYXJ0aWNsZSB0byB0aGlzLnBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gc2V0dXBcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBzZXR1cFBhcnRpY2xlKHBhcnRpY2xlLCBpbmRleCkge1xuICAgIGNvbnN0IHsgaW5pdGlhbGl6ZXJzLCBiZWhhdmlvdXJzIH0gPSB0aGlzO1xuXG4gICAgSW5pdGlhbGl6ZXJVdGlsLmluaXRpYWxpemUodGhpcywgcGFydGljbGUsIGluaXRpYWxpemVycyk7XG5cbiAgICBwYXJ0aWNsZS5hZGRCZWhhdmlvdXJzKGJlaGF2aW91cnMpO1xuICAgIHBhcnRpY2xlLnBhcmVudCA9IHRoaXM7XG4gICAgcGFydGljbGUuaW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMucGFydGljbGVzLnB1c2gocGFydGljbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGVtaXR0ZXIgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIHBhc3NlZCBieSBjYWxsaW5nIHRoZSBnZW5lcmF0ZVxuICAgKiBhbmQgaW50ZWdyYXRlIG1ldGhvZHMuIFRoZSBnZW5lcmF0ZSBtZXRob2QgY3JlYXRlcyBwYXJ0aWNsZXMsIHRoZSBpbnRlZ3JhdGVcbiAgICogbWV0aG9kIHVwZGF0ZXMgZXhpc3RpbmcgcGFydGljbGVzLlxuICAgKlxuICAgKiBJZiB0aGUgZW1pdHRlciBhZ2UgaXMgZ3JlYXRlciB0aGFuIHRpbWUsIHRoZSBlbWl0dGVyIGlzIGtpbGxlZC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgYWxzbyBpbmRleGVzL2RlaW5kZXhlcyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgdXBkYXRlKHRpbWUpIHtcbiAgICBpZiAoIXRoaXMuaXNFbWl0dGluZyAmJiB0aGlzLnBhcnRpY2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFnZSArPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMuZGVhZCB8fCB0aGlzLmFnZSA+PSB0aGlzLmxpZmUpIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRW1pdHRpbmcpXG4gICAge1xuICAgICAgdGhpcy5nZW5lcmF0ZSh0aW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLmludGVncmF0ZSh0aW1lKTtcblxuICAgIGxldCBpID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY29uc3QgcGFydGljbGUgPSB0aGlzLnBhcnRpY2xlc1tpXTtcblxuICAgICAgaWYgKHBhcnRpY2xlLmRlYWQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuZGlzcGF0Y2goUEFSVElDTEVfREVBRCwgcGFydGljbGUpO1xuICAgICAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9ERUFELCBwYXJ0aWNsZSk7XG4gICAgICAgIHRoaXMucGFyZW50LnBvb2wuZXhwaXJlKHBhcnRpY2xlLnJlc2V0KCkpO1xuICAgICAgICB0aGlzLnBhcnRpY2xlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGlmKHRoaXMucGFydGljbGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAge1xuICAgICAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoKFNZU1RFTV9VUERBVEUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVFbWl0dGVyQmVoYXZpb3Vycyh0aW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBlbWl0dGVyJ3MgZW1pdHRlciBiZWhhdmlvdXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHVwZGF0ZUVtaXR0ZXJCZWhhdmlvdXJzKHRpbWUpIHtcbiAgICBpZiAodGhpcy5zbGVlcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZW1pdHRlckJlaGF2aW91cnMubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vyc1tpXS5hcHBseUJlaGF2aW91cih0aGlzLCB0aW1lLCBpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyB0aGUgaW50ZWdyYXRpb24gYWxnb3JpdGhtIG9uIHRoZSBlbWl0dGVyIGFuZCBhbGwgcGFydGljbGVzLlxuICAgKiBVcGRhdGVzIHRoZSBwYXJ0aWNsZXMgd2l0aCB0aGUgdGltc3RhbXAgcGFzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGludGVncmF0ZSh0aW1lKSB7XG4gICAgY29uc3QgaW50ZWdyYXRpb25UeXBlID0gdGhpcy5wYXJlbnRcbiAgICAgID8gdGhpcy5wYXJlbnQuaW50ZWdyYXRpb25UeXBlXG4gICAgICA6IElOVEVHUkFUSU9OX1RZUEVfRVVMRVI7XG4gICAgY29uc3QgZGFtcGluZyA9IDEgLSB0aGlzLmRhbXBpbmc7XG5cbiAgICBpbnRlZ3JhdGUodGhpcywgdGltZSwgZGFtcGluZywgaW50ZWdyYXRpb25UeXBlKTtcblxuICAgIGxldCBpbmRleCA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFydGljbGVzW2luZGV4XTtcblxuICAgICAgcGFydGljbGUudXBkYXRlKHRpbWUsIGluZGV4KTtcbiAgICAgIGludGVncmF0ZShwYXJ0aWNsZSwgdGltZSwgZGFtcGluZywgaW50ZWdyYXRpb25UeXBlKTtcblxuICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuZGlzcGF0Y2goUEFSVElDTEVfVVBEQVRFLCBwYXJ0aWNsZSk7XG4gICAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9VUERBVEUsIHBhcnRpY2xlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIG5ldyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgZ2VuZXJhdGUodGltZSkge1xuICAgIGlmICh0aGlzLnRvdGFsRW1pdFRpbWVzID09PSAxKSB7XG4gICAgICBsZXQgaSA9IHRoaXMucmF0ZS5nZXRWYWx1ZSg5OTk5OSk7XG5cbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB0aGlzLmNJRCA9IGk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gMDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RW1pdFRpbWUgPCB0aGlzLnRvdGFsRW1pdFRpbWVzKSB7XG4gICAgICBsZXQgaSA9IHRoaXMucmF0ZS5nZXRWYWx1ZSh0aW1lKTtcblxuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHRoaXMuY0lEID0gaTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEtpbGxzIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICB0aGlzLmVuZXJneSA9IDA7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IC0xO1xuXG4gICAgaWYgKHRoaXMucGFydGljbGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVtb3ZlQWxsSW5pdGlhbGl6ZXJzKCk7XG4gICAgICB0aGlzLnJlbW92ZUFsbEJlaGF2aW91cnMoKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goYCR7dGhpcy5pZH1fJHtFTUlUVEVSX0RFQUR9YCk7XG5cbiAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LnJlbW92ZUVtaXR0ZXIodGhpcyk7XG4gICAgfVxuICB9XG59XG4iXX0=