three-nebula 10.0.2 → 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 (170) hide show
  1. package/.claude/rules/no-coauthor.md +4 -0
  2. package/CHANGELOG.md +23 -0
  3. package/build/cjs/behaviour/Alpha.js +2 -2
  4. package/build/cjs/behaviour/Attraction.js +2 -2
  5. package/build/cjs/behaviour/Behaviour.js +1 -1
  6. package/build/cjs/behaviour/Collision.js +2 -2
  7. package/build/cjs/behaviour/Color.js +2 -2
  8. package/build/cjs/behaviour/CrossZone.js +8 -4
  9. package/build/cjs/behaviour/Force.js +2 -2
  10. package/build/cjs/behaviour/Gravity.js +2 -2
  11. package/build/cjs/behaviour/RandomDrift.js +2 -2
  12. package/build/cjs/behaviour/Repulsion.js +2 -2
  13. package/build/cjs/behaviour/Rotate.js +5 -5
  14. package/build/cjs/behaviour/Scale.js +2 -2
  15. package/build/cjs/behaviour/Spring.js +2 -2
  16. package/build/cjs/constants/index.js +1 -1
  17. package/build/cjs/core/Particle.js +1 -1
  18. package/build/cjs/core/Pool.js +1 -1
  19. package/build/cjs/core/System.js +8 -4
  20. package/build/cjs/core/constants.js +2 -2
  21. package/build/cjs/core/fromJSON.js +6 -2
  22. package/build/cjs/core/fromJSONAsync.js +8 -4
  23. package/build/cjs/core/three/Euler.js +1 -1
  24. package/build/cjs/core/three/Math.js +1 -1
  25. package/build/cjs/core/three/Matrix4.js +1 -1
  26. package/build/cjs/core/three/Quaternion.js +1 -1
  27. package/build/cjs/core/three/Vector3.js +1 -1
  28. package/build/cjs/debug/Debug.js +1 -1
  29. package/build/cjs/debug/log.js +1 -1
  30. package/build/cjs/ease/index.js +1 -1
  31. package/build/cjs/emitter/Emitter.js +17 -6
  32. package/build/cjs/emitter/FollowEmitter.js +2 -2
  33. package/build/cjs/events/EventDispatcher.js +3 -3
  34. package/build/cjs/initializer/Body.js +2 -2
  35. package/build/cjs/initializer/BodySprite.js +3 -3
  36. package/build/cjs/initializer/Initializer.js +1 -1
  37. package/build/cjs/initializer/InitializerUtil.js +1 -1
  38. package/build/cjs/initializer/Life.js +2 -2
  39. package/build/cjs/initializer/Mass.js +2 -2
  40. package/build/cjs/initializer/Position.js +8 -4
  41. package/build/cjs/initializer/Radius.js +2 -2
  42. package/build/cjs/initializer/Rate.js +2 -2
  43. package/build/cjs/initializer/Rotation.js +95 -0
  44. package/build/cjs/initializer/Texture.js +3 -3
  45. package/build/cjs/initializer/Velocity/PolarVelocity.js +2 -2
  46. package/build/cjs/initializer/Velocity/RadialVelocity.js +2 -2
  47. package/build/cjs/initializer/Velocity/VectorVelocity.js +2 -2
  48. package/build/cjs/initializer/Velocity/Velocity.js +2 -2
  49. package/build/cjs/initializer/constants.js +1 -1
  50. package/build/cjs/initializer/index.js +9 -1
  51. package/build/cjs/initializer/types.js +4 -2
  52. package/build/cjs/math/ArraySpan.js +2 -2
  53. package/build/cjs/math/Box.js +1 -1
  54. package/build/cjs/math/ColorSpan.js +2 -2
  55. package/build/cjs/math/MathUtils.js +1 -1
  56. package/build/cjs/math/Polar3D.js +1 -1
  57. package/build/cjs/math/Span.js +1 -1
  58. package/build/cjs/math/Vector3D.js +1 -1
  59. package/build/cjs/math/constants.js +1 -1
  60. package/build/cjs/math/index.js +5 -1
  61. package/build/cjs/math/integration.js +1 -1
  62. package/build/cjs/renderer/BaseRenderer.js +1 -1
  63. package/build/cjs/renderer/CustomRenderer.js +1 -1
  64. package/build/cjs/renderer/GPURenderer/Desktop/index.js +25 -4
  65. package/build/cjs/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +2 -2
  66. package/build/cjs/renderer/GPURenderer/Desktop/shaders/vertexShader.js +2 -2
  67. package/build/cjs/renderer/GPURenderer/Mobile/index.js +25 -4
  68. package/build/cjs/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +2 -2
  69. package/build/cjs/renderer/GPURenderer/Mobile/shaders/vertexShader.js +2 -2
  70. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/constants.js +9 -4
  71. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/index.js +1 -1
  72. package/build/cjs/renderer/GPURenderer/common/TextureAtlas/index.js +1 -1
  73. package/build/cjs/renderer/GPURenderer/common/stores/Target.js +3 -1
  74. package/build/cjs/renderer/GPURenderer/common/stores/UniqueList.js +1 -1
  75. package/build/cjs/renderer/GPURenderer/index.js +2 -2
  76. package/build/cjs/renderer/MeshRenderer.js +9 -9
  77. package/build/cjs/renderer/SpriteRenderer.js +7 -2
  78. package/build/cjs/utils/index.js +1 -1
  79. package/build/cjs/utils/uid.js +3 -5
  80. package/build/cjs/zone/BoxZone.js +2 -2
  81. package/build/cjs/zone/LineZone.js +2 -2
  82. package/build/cjs/zone/MeshZone.js +2 -2
  83. package/build/cjs/zone/PointZone.js +6 -4
  84. package/build/cjs/zone/ScreenZone.js +2 -2
  85. package/build/cjs/zone/SphereZone.js +6 -4
  86. package/build/cjs/zone/Zone.js +1 -1
  87. package/build/esm/behaviour/Alpha.js +1 -1
  88. package/build/esm/behaviour/Attraction.js +1 -1
  89. package/build/esm/behaviour/Behaviour.js +1 -1
  90. package/build/esm/behaviour/Collision.js +1 -1
  91. package/build/esm/behaviour/Color.js +1 -1
  92. package/build/esm/behaviour/CrossZone.js +1 -1
  93. package/build/esm/behaviour/Force.js +1 -1
  94. package/build/esm/behaviour/Gravity.js +1 -1
  95. package/build/esm/behaviour/RandomDrift.js +1 -1
  96. package/build/esm/behaviour/Repulsion.js +1 -1
  97. package/build/esm/behaviour/Rotate.js +4 -4
  98. package/build/esm/behaviour/Scale.js +1 -1
  99. package/build/esm/behaviour/Spring.js +1 -1
  100. package/build/esm/constants/index.js +1 -1
  101. package/build/esm/core/Particle.js +1 -1
  102. package/build/esm/core/Pool.js +1 -1
  103. package/build/esm/core/System.js +2 -2
  104. package/build/esm/core/constants.js +3 -3
  105. package/build/esm/core/fromJSON.js +1 -1
  106. package/build/esm/core/fromJSONAsync.js +2 -2
  107. package/build/esm/core/three/Euler.js +1 -1
  108. package/build/esm/core/three/Math.js +1 -1
  109. package/build/esm/core/three/Matrix4.js +1 -1
  110. package/build/esm/core/three/Quaternion.js +1 -1
  111. package/build/esm/core/three/Vector3.js +1 -1
  112. package/build/esm/debug/Debug.js +1 -1
  113. package/build/esm/debug/log.js +1 -1
  114. package/build/esm/ease/index.js +1 -1
  115. package/build/esm/emitter/Emitter.js +11 -4
  116. package/build/esm/emitter/FollowEmitter.js +1 -1
  117. package/build/esm/events/EventDispatcher.js +3 -3
  118. package/build/esm/initializer/Body.js +1 -1
  119. package/build/esm/initializer/BodySprite.js +2 -2
  120. package/build/esm/initializer/Initializer.js +1 -1
  121. package/build/esm/initializer/InitializerUtil.js +1 -1
  122. package/build/esm/initializer/Life.js +1 -1
  123. package/build/esm/initializer/Mass.js +1 -1
  124. package/build/esm/initializer/Position.js +3 -2
  125. package/build/esm/initializer/Radius.js +1 -1
  126. package/build/esm/initializer/Rate.js +1 -1
  127. package/build/esm/initializer/Rotation.js +54 -0
  128. package/build/esm/initializer/Texture.js +2 -2
  129. package/build/esm/initializer/Velocity/PolarVelocity.js +1 -1
  130. package/build/esm/initializer/Velocity/RadialVelocity.js +1 -1
  131. package/build/esm/initializer/Velocity/VectorVelocity.js +1 -1
  132. package/build/esm/initializer/Velocity/Velocity.js +1 -1
  133. package/build/esm/initializer/constants.js +1 -1
  134. package/build/esm/initializer/index.js +2 -1
  135. package/build/esm/initializer/types.js +2 -1
  136. package/build/esm/math/ArraySpan.js +1 -1
  137. package/build/esm/math/Box.js +1 -1
  138. package/build/esm/math/ColorSpan.js +1 -1
  139. package/build/esm/math/MathUtils.js +1 -1
  140. package/build/esm/math/Polar3D.js +1 -1
  141. package/build/esm/math/Span.js +1 -1
  142. package/build/esm/math/constants.js +1 -1
  143. package/build/esm/math/integration.js +1 -1
  144. package/build/esm/renderer/BaseRenderer.js +1 -1
  145. package/build/esm/renderer/GPURenderer/Desktop/index.js +29 -3
  146. package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +8 -1
  147. package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +4 -1
  148. package/build/esm/renderer/GPURenderer/Mobile/index.js +29 -3
  149. package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +8 -1
  150. package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +4 -1
  151. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +6 -3
  152. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/index.js +1 -1
  153. package/build/esm/renderer/GPURenderer/common/TextureAtlas/index.js +1 -1
  154. package/build/esm/renderer/GPURenderer/common/stores/Target.js +3 -1
  155. package/build/esm/renderer/GPURenderer/common/stores/UniqueList.js +1 -1
  156. package/build/esm/renderer/GPURenderer/index.js +1 -1
  157. package/build/esm/renderer/MeshRenderer.js +7 -8
  158. package/build/esm/renderer/SpriteRenderer.js +5 -1
  159. package/build/esm/utils/index.js +1 -1
  160. package/build/esm/utils/uid.js +2 -2
  161. package/build/esm/zone/BoxZone.js +1 -1
  162. package/build/esm/zone/LineZone.js +1 -1
  163. package/build/esm/zone/MeshZone.js +1 -1
  164. package/build/esm/zone/PointZone.js +5 -3
  165. package/build/esm/zone/ScreenZone.js +1 -1
  166. package/build/esm/zone/SphereZone.js +5 -3
  167. package/build/esm/zone/Zone.js +1 -1
  168. package/build/three-nebula.js +1 -1
  169. package/build/three-nebula.js.map +1 -1
  170. package/package.json +31 -31
@@ -454,4 +454,4 @@ Object.assign(Vector3.prototype, {
454
454
  }
455
455
  });
456
456
  export { Vector3 };
457
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3RocmVlL1ZlY3RvcjMuanMiXSwibmFtZXMiOlsiX01hdGgiLCJRdWF0ZXJuaW9uIiwiVmVjdG9yMyIsIngiLCJ5IiwieiIsIk9iamVjdCIsImFzc2lnbiIsInByb3RvdHlwZSIsImlzVmVjdG9yMyIsInNldCIsInNldFNjYWxhciIsInNjYWxhciIsInNldFgiLCJzZXRZIiwic2V0WiIsInNldENvbXBvbmVudCIsImluZGV4IiwidmFsdWUiLCJFcnJvciIsImdldENvbXBvbmVudCIsImNsb25lIiwiY29uc3RydWN0b3IiLCJjb3B5IiwidiIsImFkZCIsInciLCJ1bmRlZmluZWQiLCJjb25zb2xlIiwid2FybiIsImFkZFZlY3RvcnMiLCJhZGRTY2FsYXIiLCJzIiwiYSIsImIiLCJhZGRTY2FsZWRWZWN0b3IiLCJzdWIiLCJzdWJWZWN0b3JzIiwic3ViU2NhbGFyIiwibXVsdGlwbHkiLCJtdWx0aXBseVZlY3RvcnMiLCJtdWx0aXBseVNjYWxhciIsImFwcGx5RXVsZXIiLCJxdWF0ZXJuaW9uIiwiZXVsZXIiLCJpc0V1bGVyIiwiZXJyb3IiLCJhcHBseVF1YXRlcm5pb24iLCJzZXRGcm9tRXVsZXIiLCJhcHBseUF4aXNBbmdsZSIsImF4aXMiLCJhbmdsZSIsInNldEZyb21BeGlzQW5nbGUiLCJhcHBseU1hdHJpeDMiLCJtIiwiZSIsImVsZW1lbnRzIiwiYXBwbHlNYXRyaXg0IiwicSIsInF4IiwicXkiLCJxeiIsInF3IiwiaXgiLCJpeSIsIml6IiwiaXciLCJwcm9qZWN0IiwiY2FtZXJhIiwibWF0cml4V29ybGRJbnZlcnNlIiwicHJvamVjdGlvbk1hdHJpeCIsInVucHJvamVjdCIsInByb2plY3Rpb25NYXRyaXhJbnZlcnNlIiwibWF0cml4V29ybGQiLCJ0cmFuc2Zvcm1EaXJlY3Rpb24iLCJub3JtYWxpemUiLCJkaXZpZGUiLCJkaXZpZGVTY2FsYXIiLCJtaW4iLCJNYXRoIiwibWF4IiwiY2xhbXAiLCJjbGFtcFNjYWxhciIsIm1pblZhbCIsIm1heFZhbCIsImNsYW1wTGVuZ3RoIiwibGVuZ3RoIiwiZmxvb3IiLCJjZWlsIiwicm91bmQiLCJyb3VuZFRvWmVybyIsIm5lZ2F0ZSIsImRvdCIsImxlbmd0aFNxIiwic3FydCIsIm1hbmhhdHRhbkxlbmd0aCIsImFicyIsInNldExlbmd0aCIsImxlcnAiLCJhbHBoYSIsImxlcnBWZWN0b3JzIiwidjEiLCJ2MiIsImNyb3NzIiwiY3Jvc3NWZWN0b3JzIiwiYXgiLCJheSIsImF6IiwiYngiLCJieSIsImJ6IiwicHJvamVjdE9uVmVjdG9yIiwidmVjdG9yIiwicHJvamVjdE9uUGxhbmUiLCJwbGFuZU5vcm1hbCIsInJlZmxlY3QiLCJub3JtYWwiLCJhbmdsZVRvIiwidGhldGEiLCJhY29zIiwiZGlzdGFuY2VUbyIsImRpc3RhbmNlVG9TcXVhcmVkIiwiZHgiLCJkeSIsImR6IiwibWFuaGF0dGFuRGlzdGFuY2VUbyIsInNldEZyb21TcGhlcmljYWwiLCJzZXRGcm9tU3BoZXJpY2FsQ29vcmRzIiwicmFkaXVzIiwicGhpIiwic2luUGhpUmFkaXVzIiwic2luIiwiY29zIiwic2V0RnJvbUN5bGluZHJpY2FsIiwiYyIsInNldEZyb21DeWxpbmRyaWNhbENvb3JkcyIsInNldEZyb21NYXRyaXhQb3NpdGlvbiIsInNldEZyb21NYXRyaXhTY2FsZSIsInN4Iiwic2V0RnJvbU1hdHJpeENvbHVtbiIsInN5Iiwic3oiLCJmcm9tQXJyYXkiLCJlcXVhbHMiLCJhcnJheSIsIm9mZnNldCIsInRvQXJyYXkiLCJmcm9tQnVmZmVyQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiZ2V0WCIsImdldFkiLCJnZXRaIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxLQUFULFFBQXNCLFdBQXRCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixpQkFBM0I7QUFFQTs7Ozs7Ozs7O0FBU0EsU0FBU0MsT0FBVCxDQUFrQkMsQ0FBbEIsRUFBcUJDLENBQXJCLEVBQXdCQyxDQUF4QixFQUE0QjtBQUUzQixPQUFLRixDQUFMLEdB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QVgsRUFBa0JDLE1BQWxCLEVBQTJCO0FBRW5DLFFBQUtELEtBQUssS0FBS3JILFNBQWYsRUFBMkJxSCxLQUFLLEdBQUcsRUFBUjtBQUMzQixRQUFLQyxNQUFNLEtBQUt0SCxTQUFoQixFQUE0QnNILE1BQU0sR0FBRyxDQUFUO0FBRTVCRCxJQUFBQSxLQUFLLENBQUVDLE1BQUYsQ0FBTCxHQUFrQixLQUFLOUksQ0FBdkI7QUFDQTZJLElBQUFBLEtBQUssQ0FBRUMsTUFBTSxHQUFHLENBQVgsQ0FBTCxHQUFzQixLQUFLN0ksQ0FBM0I7QUFDQTRJLElBQUFBLEtBQUssQ0FBRUMsTUFBTSxHQUFHLENBQVgsQ0FBTCxHQUFzQixLQUFLNUksQ0FBM0I7QUFFQSxXQUFPMkksS0FBUDtBQUVBLEdBdnFCZ0M7QUF5cUJqQ0csRUFBQUEsbUJBQW1CLEVBQUUsVUFBV0MsU0FBWCxFQUFzQm5JLEtBQXRCLEVBQTZCZ0ksTUFBN0IsRUFBc0M7QUFFMUQsUUFBS0EsTUFBTSxLQUFLdEgsU0FBaEIsRUFBNEI7QUFFM0JDLE1BQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFjLHFFQUFkO0FBRUE7O0FBRUQsU0FBSzFCLENBQUwsR0FBU2lKLFNBQVMsQ0FBQ0MsSUFBVixDQUFnQnBJLEtBQWhCLENBQVQ7QUFDQSxTQUFLYixDQUFMLEdBQVNnSixTQUFTLENBQUNFLElBQVYsQ0FBZ0JySSxLQUFoQixDQUFUO0FBQ0EsU0FBS1osQ0FBTCxHQUFTK0ksU0FBUyxDQUFDRyxJQUFWLENBQWdCdEksS0FBaEIsQ0FBVDtBQUVBLFdBQU8sSUFBUDtBQUVBO0FBdnJCZ0MsQ0FBbEM7QUE0ckJBLFNBQVNmLE9BQVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfTWF0aCB9IGZyb20gJy4vTWF0aC5qcyc7XG5pbXBvcnQgeyBRdWF0ZXJuaW9uIH0gZnJvbSAnLi9RdWF0ZXJuaW9uLmpzJztcblxuLyoqXG4gKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xuICogQGF1dGhvciBraWxlIC8gaHR0cDovL2tpbGUuc3RyYXZhZ2FuemEub3JnL1xuICogQGF1dGhvciBwaGlsb2diIC8gaHR0cDovL2Jsb2cudGhlaml0Lm9yZy9cbiAqIEBhdXRob3IgbWlrYWVsIGVtdGluZ2VyIC8gaHR0cDovL2dvbW8uc2UvXG4gKiBAYXV0aG9yIGVncmFldGhlciAvIGh0dHA6Ly9lZ3JhZXRoZXIuY29tL1xuICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XG4gKi9cblxuZnVuY3Rpb24gVmVjdG9yMyggeCwgeSwgeiApIHtcblxuXHR0aGlzLnggPSB4IHx8IDA7XG5cdHRoaXMueSA9IHkgfHwgMDtcblx0dGhpcy56ID0geiB8fCAwO1xuXG59XG5cbk9iamVjdC5hc3NpZ24oIFZlY3RvcjMucHJvdG90eXBlLCB7XG5cblx0aXNWZWN0b3IzOiB0cnVlLFxuXG5cdHNldDogZnVuY3Rpb24gKCB4LCB5LCB6ICkge1xuXG5cdFx0dGhpcy54ID0geDtcblx0XHR0aGlzLnkgPSB5O1xuXHRcdHRoaXMueiA9IHo7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHNldFNjYWxhcjogZnVuY3Rpb24gKCBzY2FsYXIgKSB7XG5cblx0XHR0aGlzLnggPSBzY2FsYXI7XG5cdFx0dGhpcy55ID0gc2NhbGFyO1xuXHRcdHRoaXMueiA9IHNjYWxhcjtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0WDogZnVuY3Rpb24gKCB4ICkge1xuXG5cdFx0dGhpcy54ID0geDtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0WTogZnVuY3Rpb24gKCB5ICkge1xuXG5cdFx0dGhpcy55ID0geTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0WjogZnVuY3Rpb24gKCB6ICkge1xuXG5cdFx0dGhpcy56ID0gejtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0Q29tcG9uZW50OiBmdW5jdGlvbiAoIGluZGV4LCB2YWx1ZSApIHtcblxuXHRcdHN3aXRjaCAoIGluZGV4ICkge1xuXG5cdFx0XHRjYXNlIDA6IHRoaXMueCA9IHZhbHVlOyBicmVhaztcblx0XHRcdGNhc2UgMTogdGhpcy55ID0gdmFsdWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAyOiB0aGlzLnogPSB2YWx1ZTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoICdpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICcgKyBpbmRleCApO1xuXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRnZXRDb21wb25lbnQ6IGZ1bmN0aW9uICggaW5kZXggKSB7XG5cblx0XHRzd2l0Y2ggKCBpbmRleCApIHtcblxuXHRcdFx0Y2FzZSAwOiByZXR1cm4gdGhpcy54O1xuXHRcdFx0Y2FzZSAxOiByZXR1cm4gdGhpcy55O1xuXHRcdFx0Y2FzZSAyOiByZXR1cm4gdGhpcy56O1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCAnaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAnICsgaW5kZXggKTtcblxuXHRcdH1cblxuXHR9LFxuXG5cdGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cblx0XHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoIHRoaXMueCwgdGhpcy55LCB0aGlzLnogKTtcblxuXHR9LFxuXG5cdGNvcHk6IGZ1bmN0aW9uICggdiApIHtcblxuXHRcdHRoaXMueCA9IHYueDtcblx0XHR0aGlzLnkgPSB2Lnk7XG5cdFx0dGhpcy56ID0gdi56O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uICggdiwgdyApIHtcblxuXHRcdGlmICggdyAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IzOiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuJyApO1xuXHRcdFx0cmV0dXJuIHRoaXMuYWRkVmVjdG9ycyggdiwgdyApO1xuXG5cdFx0fVxuXG5cdFx0dGhpcy54ICs9IHYueDtcblx0XHR0aGlzLnkgKz0gdi55O1xuXHRcdHRoaXMueiArPSB2Lno7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdGFkZFNjYWxhcjogZnVuY3Rpb24gKCBzICkge1xuXG5cdFx0dGhpcy54ICs9IHM7XG5cdFx0dGhpcy55ICs9IHM7XG5cdFx0dGhpcy56ICs9IHM7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdGFkZFZlY3RvcnM6IGZ1bmN0aW9uICggYSwgYiApIHtcblxuXHRcdHRoaXMueCA9IGEueCArIGIueDtcblx0XHR0aGlzLnkgPSBhLnkgKyBiLnk7XG5cdFx0dGhpcy56ID0gYS56ICsgYi56O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRhZGRTY2FsZWRWZWN0b3I6IGZ1bmN0aW9uICggdiwgcyApIHtcblxuXHRcdHRoaXMueCArPSB2LnggKiBzO1xuXHRcdHRoaXMueSArPSB2LnkgKiBzO1xuXHRcdHRoaXMueiArPSB2LnogKiBzO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRzdWI6IGZ1bmN0aW9uICggdiwgdyApIHtcblxuXHRcdGlmICggdyAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IzOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuJyApO1xuXHRcdFx0cmV0dXJuIHRoaXMuc3ViVmVjdG9ycyggdiwgdyApO1xuXG5cdFx0fVxuXG5cdFx0dGhpcy54IC09IHYueDtcblx0XHR0aGlzLnkgLT0gdi55O1xuXHRcdHRoaXMueiAtPSB2Lno7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHN1YlNjYWxhcjogZnVuY3Rpb24gKCBzICkge1xuXG5cdFx0dGhpcy54IC09IHM7XG5cdFx0dGhpcy55IC09IHM7XG5cdFx0dGhpcy56IC09IHM7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHN1YlZlY3RvcnM6IGZ1bmN0aW9uICggYSwgYiApIHtcblxuXHRcdHRoaXMueCA9IGEueCAtIGIueDtcblx0XHR0aGlzLnkgPSBhLnkgLSBiLnk7XG5cdFx0dGhpcy56ID0gYS56IC0gYi56O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRtdWx0aXBseTogZnVuY3Rpb24gKCB2LCB3ICkge1xuXG5cdFx0aWYgKCB3ICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjM6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5VmVjdG9ycyggYSwgYiApIGluc3RlYWQuJyApO1xuXHRcdFx0cmV0dXJuIHRoaXMubXVsdGlwbHlWZWN0b3JzKCB2LCB3ICk7XG5cblx0XHR9XG5cblx0XHR0aGlzLnggKj0gdi54O1xuXHRcdHRoaXMueSAqPSB2Lnk7XG5cdFx0dGhpcy56ICo9IHYuejtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0bXVsdGlwbHlTY2FsYXI6IGZ1bmN0aW9uICggc2NhbGFyICkge1xuXG5cdFx0dGhpcy54ICo9IHNjYWxhcjtcblx0XHR0aGlzLnkgKj0gc2NhbGFyO1xuXHRcdHRoaXMueiAqPSBzY2FsYXI7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdG11bHRpcGx5VmVjdG9yczogZnVuY3Rpb24gKCBhLCBiICkge1xuXG5cdFx0dGhpcy54ID0gYS54ICogYi54O1xuXHRcdHRoaXMueSA9IGEueSAqIGIueTtcblx0XHR0aGlzLnogPSBhLnogKiBiLno7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdGFwcGx5RXVsZXI6IGZ1bmN0aW9uICgpIHtcblxuXHRcdHZhciBxdWF0ZXJuaW9uID0gbmV3IFF1YXRlcm5pb24oKTtcblxuXHRcdHJldHVybiBmdW5jdGlvbiBhcHBseUV1bGVyKCBldWxlciApIHtcblxuXHRcdFx0aWYgKCAhICggZXVsZXIgJiYgZXVsZXIuaXNFdWxlciApICkge1xuXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5WZWN0b3IzOiAuYXBwbHlFdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuJyApO1xuXG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0aGlzLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbi5zZXRGcm9tRXVsZXIoIGV1bGVyICkgKTtcblxuXHRcdH07XG5cblx0fSgpLFxuXG5cdGFwcGx5QXhpc0FuZ2xlOiBmdW5jdGlvbiAoKSB7XG5cblx0XHR2YXIgcXVhdGVybmlvbiA9IG5ldyBRdWF0ZXJuaW9uKCk7XG5cblx0XHRyZXR1cm4gZnVuY3Rpb24gYXBwbHlBeGlzQW5nbGUoIGF4aXMsIGFuZ2xlICkge1xuXG5cdFx0XHRyZXR1cm4gdGhpcy5hcHBseVF1YXRlcm5pb24oIHF1YXRlcm5pb24uc2V0RnJvbUF4aXNBbmdsZSggYXhpcywgYW5nbGUgKSApO1xuXG5cdFx0fTtcblxuXHR9KCksXG5cblx0YXBwbHlNYXRyaXgzOiBmdW5jdGlvbiAoIG0gKSB7XG5cblx0XHR2YXIgeCA9IHRoaXMueCwgeSA9IHRoaXMueSwgeiA9IHRoaXMuejtcblx0XHR2YXIgZSA9IG0uZWxlbWVudHM7XG5cblx0XHR0aGlzLnggPSBlWyAwIF0gKiB4ICsgZVsgMyBdICogeSArIGVbIDYgXSAqIHo7XG5cdFx0dGhpcy55ID0gZVsgMSBdICogeCArIGVbIDQgXSAqIHkgKyBlWyA3IF0gKiB6O1xuXHRcdHRoaXMueiA9IGVbIDIgXSAqIHggKyBlWyA1IF0gKiB5ICsgZVsgOCBdICogejtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0YXBwbHlNYXRyaXg0OiBmdW5jdGlvbiAoIG0gKSB7XG5cblx0XHR2YXIgeCA9IHRoaXMueCwgeSA9IHRoaXMueSwgeiA9IHRoaXMuejtcblx0XHR2YXIgZSA9IG0uZWxlbWVudHM7XG5cblx0XHR2YXIgdyA9IDEgLyAoIGVbIDMgXSAqIHggKyBlWyA3IF0gKiB5ICsgZVsgMTEgXSAqIHogKyBlWyAxNSBdICk7XG5cblx0XHR0aGlzLnggPSAoIGVbIDAgXSAqIHggKyBlWyA0IF0gKiB5ICsgZVsgOCBdICogeiArIGVbIDEyIF0gKSAqIHc7XG5cdFx0dGhpcy55ID0gKCBlWyAxIF0gKiB4ICsgZVsgNSBdICogeSArIGVbIDkgXSAqIHogKyBlWyAxMyBdICkgKiB3O1xuXHRcdHRoaXMueiA9ICggZVsgMiBdICogeCArIGVbIDYgXSAqIHkgKyBlWyAxMCBdICogeiArIGVbIDE0IF0gKSAqIHc7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdGFwcGx5UXVhdGVybmlvbjogZnVuY3Rpb24gKCBxICkge1xuXG5cdFx0dmFyIHggPSB0aGlzLngsIHkgPSB0aGlzLnksIHogPSB0aGlzLno7XG5cdFx0dmFyIHF4ID0gcS54LCBxeSA9IHEueSwgcXogPSBxLnosIHF3ID0gcS53O1xuXG5cdFx0Ly8gY2FsY3VsYXRlIHF1YXQgKiB2ZWN0b3JcblxuXHRcdHZhciBpeCA9IHF3ICogeCArIHF5ICogeiAtIHF6ICogeTtcblx0XHR2YXIgaXkgPSBxdyAqIHkgKyBxeiAqIHggLSBxeCAqIHo7XG5cdFx0dmFyIGl6ID0gcXcgKiB6ICsgcXggKiB5IC0gcXkgKiB4O1xuXHRcdHZhciBpdyA9IC0gcXggKiB4IC0gcXkgKiB5IC0gcXogKiB6O1xuXG5cdFx0Ly8gY2FsY3VsYXRlIHJlc3VsdCAqIGludmVyc2UgcXVhdFxuXG5cdFx0dGhpcy54ID0gaXggKiBxdyArIGl3ICogLSBxeCArIGl5ICogLSBxeiAtIGl6ICogLSBxeTtcblx0XHR0aGlzLnkgPSBpeSAqIHF3ICsgaXcgKiAtIHF5ICsgaXogKiAtIHF4IC0gaXggKiAtIHF6O1xuXHRcdHRoaXMueiA9IGl6ICogcXcgKyBpdyAqIC0gcXogKyBpeCAqIC0gcXkgLSBpeSAqIC0gcXg7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHByb2plY3Q6IGZ1bmN0aW9uICggY2FtZXJhICkge1xuXG5cdFx0cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KCBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlICkuYXBwbHlNYXRyaXg0KCBjYW1lcmEucHJvamVjdGlvbk1hdHJpeCApO1xuXG5cdH0sXG5cblx0dW5wcm9qZWN0OiBmdW5jdGlvbiAoIGNhbWVyYSApIHtcblxuXHRcdHJldHVybiB0aGlzLmFwcGx5TWF0cml4NCggY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlICkuYXBwbHlNYXRyaXg0KCBjYW1lcmEubWF0cml4V29ybGQgKTtcblxuXHR9LFxuXG5cdHRyYW5zZm9ybURpcmVjdGlvbjogZnVuY3Rpb24gKCBtICkge1xuXG5cdFx0Ly8gaW5wdXQ6IFRIUkVFLk1hdHJpeDQgYWZmaW5lIG1hdHJpeFxuXHRcdC8vIHZlY3RvciBpbnRlcnByZXRlZCBhcyBhIGRpcmVjdGlvblxuXG5cdFx0dmFyIHggPSB0aGlzLngsIHkgPSB0aGlzLnksIHogPSB0aGlzLno7XG5cdFx0dmFyIGUgPSBtLmVsZW1lbnRzO1xuXG5cdFx0dGhpcy54ID0gZVsgMCBdICogeCArIGVbIDQgXSAqIHkgKyBlWyA4IF0gKiB6O1xuXHRcdHRoaXMueSA9IGVbIDEgXSAqIHggKyBlWyA1IF0gKiB5ICsgZVsgOSBdICogejtcblx0XHR0aGlzLnogPSBlWyAyIF0gKiB4ICsgZVsgNiBdICogeSArIGVbIDEwIF0gKiB6O1xuXG5cdFx0cmV0dXJuIHRoaXMubm9ybWFsaXplKCk7XG5cblx0fSxcblxuXHRkaXZpZGU6IGZ1bmN0aW9uICggdiApIHtcblxuXHRcdHRoaXMueCAvPSB2Lng7XG5cdFx0dGhpcy55IC89IHYueTtcblx0XHR0aGlzLnogLz0gdi56O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRkaXZpZGVTY2FsYXI6IGZ1bmN0aW9uICggc2NhbGFyICkge1xuXG5cdFx0cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoIDEgLyBzY2FsYXIgKTtcblxuXHR9LFxuXG5cdG1pbjogZnVuY3Rpb24gKCB2ICkge1xuXG5cdFx0dGhpcy54ID0gTWF0aC5taW4oIHRoaXMueCwgdi54ICk7XG5cdFx0dGhpcy55ID0gTWF0aC5taW4oIHRoaXMueSwgdi55ICk7XG5cdFx0dGhpcy56ID0gTWF0aC5taW4oIHRoaXMueiwgdi56ICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdG1heDogZnVuY3Rpb24gKCB2ICkge1xuXG5cdFx0dGhpcy54ID0gTWF0aC5tYXgoIHRoaXMueCwgdi54ICk7XG5cdFx0dGhpcy55ID0gTWF0aC5tYXgoIHRoaXMueSwgdi55ICk7XG5cdFx0dGhpcy56ID0gTWF0aC5tYXgoIHRoaXMueiwgdi56ICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdGNsYW1wOiBmdW5jdGlvbiAoIG1pbiwgbWF4ICkge1xuXG5cdFx0Ly8gYXNzdW1lcyBtaW4gPCBtYXgsIGNvbXBvbmVudHdpc2VcblxuXHRcdHRoaXMueCA9IE1hdGgubWF4KCBtaW4ueCwgTWF0aC5taW4oIG1heC54LCB0aGlzLnggKSApO1xuXHRcdHRoaXMueSA9IE1hdGgubWF4KCBtaW4ueSwgTWF0aC5taW4oIG1heC55LCB0aGlzLnkgKSApO1xuXHRcdHRoaXMueiA9IE1hdGgubWF4KCBtaW4ueiwgTWF0aC5taW4oIG1heC56LCB0aGlzLnogKSApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRjbGFtcFNjYWxhcjogZnVuY3Rpb24gKCBtaW5WYWwsIG1heFZhbCApIHtcblxuXHRcdHRoaXMueCA9IE1hdGgubWF4KCBtaW5WYWwsIE1hdGgubWluKCBtYXhWYWwsIHRoaXMueCApICk7XG5cdFx0dGhpcy55ID0gTWF0aC5tYXgoIG1pblZhbCwgTWF0aC5taW4oIG1heFZhbCwgdGhpcy55ICkgKTtcblx0XHR0aGlzLnogPSBNYXRoLm1heCggbWluVmFsLCBNYXRoLm1pbiggbWF4VmFsLCB0aGlzLnogKSApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRjbGFtcExlbmd0aDogZnVuY3Rpb24gKCBtaW4sIG1heCApIHtcblxuXHRcdHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCgpO1xuXG5cdFx0cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKCBsZW5ndGggfHwgMSApLm11bHRpcGx5U2NhbGFyKCBNYXRoLm1heCggbWluLCBNYXRoLm1pbiggbWF4LCBsZW5ndGggKSApICk7XG5cblx0fSxcblxuXHRmbG9vcjogZnVuY3Rpb24gKCkge1xuXG5cdFx0dGhpcy54ID0gTWF0aC5mbG9vciggdGhpcy54ICk7XG5cdFx0dGhpcy55ID0gTWF0aC5mbG9vciggdGhpcy55ICk7XG5cdFx0dGhpcy56ID0gTWF0aC5mbG9vciggdGhpcy56ICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdGNlaWw6IGZ1bmN0aW9uICgpIHtcblxuXHRcdHRoaXMueCA9IE1hdGguY2VpbCggdGhpcy54ICk7XG5cdFx0dGhpcy55ID0gTWF0aC5jZWlsKCB0aGlzLnkgKTtcblx0XHR0aGlzLnogPSBNYXRoLmNlaWwoIHRoaXMueiApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRyb3VuZDogZnVuY3Rpb24gKCkge1xuXG5cdFx0dGhpcy54ID0gTWF0aC5yb3VuZCggdGhpcy54ICk7XG5cdFx0dGhpcy55ID0gTWF0aC5yb3VuZCggdGhpcy55ICk7XG5cdFx0dGhpcy56ID0gTWF0aC5yb3VuZCggdGhpcy56ICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHJvdW5kVG9aZXJvOiBmdW5jdGlvbiAoKSB7XG5cblx0XHR0aGlzLnggPSAoIHRoaXMueCA8IDAgKSA/IE1hdGguY2VpbCggdGhpcy54ICkgOiBNYXRoLmZsb29yKCB0aGlzLnggKTtcblx0XHR0aGlzLnkgPSAoIHRoaXMueSA8IDAgKSA/IE1hdGguY2VpbCggdGhpcy55ICkgOiBNYXRoLmZsb29yKCB0aGlzLnkgKTtcblx0XHR0aGlzLnogPSAoIHRoaXMueiA8IDAgKSA/IE1hdGguY2VpbCggdGhpcy56ICkgOiBNYXRoLmZsb29yKCB0aGlzLnogKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0bmVnYXRlOiBmdW5jdGlvbiAoKSB7XG5cblx0XHR0aGlzLnggPSAtIHRoaXMueDtcblx0XHR0aGlzLnkgPSAtIHRoaXMueTtcblx0XHR0aGlzLnogPSAtIHRoaXMuejtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0ZG90OiBmdW5jdGlvbiAoIHYgKSB7XG5cblx0XHRyZXR1cm4gdGhpcy54ICogdi54ICsgdGhpcy55ICogdi55ICsgdGhpcy56ICogdi56O1xuXG5cdH0sXG5cblx0Ly8gVE9ETyBsZW5ndGhTcXVhcmVkP1xuXG5cdGxlbmd0aFNxOiBmdW5jdGlvbiAoKSB7XG5cblx0XHRyZXR1cm4gdGhpcy54ICogdGhpcy54ICsgdGhpcy55ICogdGhpcy55ICsgdGhpcy56ICogdGhpcy56O1xuXG5cdH0sXG5cblx0bGVuZ3RoOiBmdW5jdGlvbiAoKSB7XG5cblx0XHRyZXR1cm4gTWF0aC5zcXJ0KCB0aGlzLnggKiB0aGlzLnggKyB0aGlzLnkgKiB0aGlzLnkgKyB0aGlzLnogKiB0aGlzLnogKTtcblxuXHR9LFxuXG5cdG1hbmhhdHRhbkxlbmd0aDogZnVuY3Rpb24gKCkge1xuXG5cdFx0cmV0dXJuIE1hdGguYWJzKCB0aGlzLnggKSArIE1hdGguYWJzKCB0aGlzLnkgKSArIE1hdGguYWJzKCB0aGlzLnogKTtcblxuXHR9LFxuXG5cdG5vcm1hbGl6ZTogZnVuY3Rpb24gKCkge1xuXG5cdFx0cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKCB0aGlzLmxlbmd0aCgpIHx8IDEgKTtcblxuXHR9LFxuXG5cdHNldExlbmd0aDogZnVuY3Rpb24gKCBsZW5ndGggKSB7XG5cblx0XHRyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhciggbGVuZ3RoICk7XG5cblx0fSxcblxuXHRsZXJwOiBmdW5jdGlvbiAoIHYsIGFscGhhICkge1xuXG5cdFx0dGhpcy54ICs9ICggdi54IC0gdGhpcy54ICkgKiBhbHBoYTtcblx0XHR0aGlzLnkgKz0gKCB2LnkgLSB0aGlzLnkgKSAqIGFscGhhO1xuXHRcdHRoaXMueiArPSAoIHYueiAtIHRoaXMueiApICogYWxwaGE7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdGxlcnBWZWN0b3JzOiBmdW5jdGlvbiAoIHYxLCB2MiwgYWxwaGEgKSB7XG5cblx0XHRyZXR1cm4gdGhpcy5zdWJWZWN0b3JzKCB2MiwgdjEgKS5tdWx0aXBseVNjYWxhciggYWxwaGEgKS5hZGQoIHYxICk7XG5cblx0fSxcblxuXHRjcm9zczogZnVuY3Rpb24gKCB2LCB3ICkge1xuXG5cdFx0aWYgKCB3ICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjM6IC5jcm9zcygpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmNyb3NzVmVjdG9ycyggYSwgYiApIGluc3RlYWQuJyApO1xuXHRcdFx0cmV0dXJuIHRoaXMuY3Jvc3NWZWN0b3JzKCB2LCB3ICk7XG5cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5jcm9zc1ZlY3RvcnMoIHRoaXMsIHYgKTtcblxuXHR9LFxuXG5cdGNyb3NzVmVjdG9yczogZnVuY3Rpb24gKCBhLCBiICkge1xuXG5cdFx0dmFyIGF4ID0gYS54LCBheSA9IGEueSwgYXogPSBhLno7XG5cdFx0dmFyIGJ4ID0gYi54LCBieSA9IGIueSwgYnogPSBiLno7XG5cblx0XHR0aGlzLnggPSBheSAqIGJ6IC0gYXogKiBieTtcblx0XHR0aGlzLnkgPSBheiAqIGJ4IC0gYXggKiBiejtcblx0XHR0aGlzLnogPSBheCAqIGJ5IC0gYXkgKiBieDtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0cHJvamVjdE9uVmVjdG9yOiBmdW5jdGlvbiAoIHZlY3RvciApIHtcblxuXHRcdHZhciBzY2FsYXIgPSB2ZWN0b3IuZG90KCB0aGlzICkgLyB2ZWN0b3IubGVuZ3RoU3EoKTtcblxuXHRcdHJldHVybiB0aGlzLmNvcHkoIHZlY3RvciApLm11bHRpcGx5U2NhbGFyKCBzY2FsYXIgKTtcblxuXHR9LFxuXG5cdHByb2plY3RPblBsYW5lOiBmdW5jdGlvbiAoKSB7XG5cblx0XHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xuXG5cdFx0cmV0dXJuIGZ1bmN0aW9uIHByb2plY3RPblBsYW5lKCBwbGFuZU5vcm1hbCApIHtcblxuXHRcdFx0djEuY29weSggdGhpcyApLnByb2plY3RPblZlY3RvciggcGxhbmVOb3JtYWwgKTtcblxuXHRcdFx0cmV0dXJuIHRoaXMuc3ViKCB2MSApO1xuXG5cdFx0fTtcblxuXHR9KCksXG5cblx0cmVmbGVjdDogZnVuY3Rpb24gKCkge1xuXG5cdFx0Ly8gcmVmbGVjdCBpbmNpZGVudCB2ZWN0b3Igb2ZmIHBsYW5lIG9ydGhvZ29uYWwgdG8gbm9ybWFsXG5cdFx0Ly8gbm9ybWFsIGlzIGFzc3VtZWQgdG8gaGF2ZSB1bml0IGxlbmd0aFxuXG5cdFx0dmFyIHYxID0gbmV3IFZlY3RvcjMoKTtcblxuXHRcdHJldHVybiBmdW5jdGlvbiByZWZsZWN0KCBub3JtYWwgKSB7XG5cblx0XHRcdHJldHVybiB0aGlzLnN1YiggdjEuY29weSggbm9ybWFsICkubXVsdGlwbHlTY2FsYXIoIDIgKiB0aGlzLmRvdCggbm9ybWFsICkgKSApO1xuXG5cdFx0fTtcblxuXHR9KCksXG5cblx0YW5nbGVUbzogZnVuY3Rpb24gKCB2ICkge1xuXG5cdFx0dmFyIHRoZXRhID0gdGhpcy5kb3QoIHYgKSAvICggTWF0aC5zcXJ0KCB0aGlzLmxlbmd0aFNxKCkgKiB2Lmxlbmd0aFNxKCkgKSApO1xuXG5cdFx0Ly8gY2xhbXAsIHRvIGhhbmRsZSBudW1lcmljYWwgcHJvYmxlbXNcblxuXHRcdHJldHVybiBNYXRoLmFjb3MoIF9NYXRoLmNsYW1wKCB0aGV0YSwgLSAxLCAxICkgKTtcblxuXHR9LFxuXG5cdGRpc3RhbmNlVG86IGZ1bmN0aW9uICggdiApIHtcblxuXHRcdHJldHVybiBNYXRoLnNxcnQoIHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQoIHYgKSApO1xuXG5cdH0sXG5cblx0ZGlzdGFuY2VUb1NxdWFyZWQ6IGZ1bmN0aW9uICggdiApIHtcblxuXHRcdHZhciBkeCA9IHRoaXMueCAtIHYueCwgZHkgPSB0aGlzLnkgLSB2LnksIGR6ID0gdGhpcy56IC0gdi56O1xuXG5cdFx0cmV0dXJuIGR4ICogZHggKyBkeSAqIGR5ICsgZHogKiBkejtcblxuXHR9LFxuXG5cdG1hbmhhdHRhbkRpc3RhbmNlVG86IGZ1bmN0aW9uICggdiApIHtcblxuXHRcdHJldHVybiBNYXRoLmFicyggdGhpcy54IC0gdi54ICkgKyBNYXRoLmFicyggdGhpcy55IC0gdi55ICkgKyBNYXRoLmFicyggdGhpcy56IC0gdi56ICk7XG5cblx0fSxcblxuXHRzZXRGcm9tU3BoZXJpY2FsOiBmdW5jdGlvbiAoIHMgKSB7XG5cblx0XHRyZXR1cm4gdGhpcy5zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKCBzLnJhZGl1cywgcy5waGksIHMudGhldGEgKTtcblxuXHR9LFxuXG5cdHNldEZyb21TcGhlcmljYWxDb29yZHM6IGZ1bmN0aW9uICggcmFkaXVzLCBwaGksIHRoZXRhICkge1xuXG5cdFx0dmFyIHNpblBoaVJhZGl1cyA9IE1hdGguc2luKCBwaGkgKSAqIHJhZGl1cztcblxuXHRcdHRoaXMueCA9IHNpblBoaVJhZGl1cyAqIE1hdGguc2luKCB0aGV0YSApO1xuXHRcdHRoaXMueSA9IE1hdGguY29zKCBwaGkgKSAqIHJhZGl1cztcblx0XHR0aGlzLnogPSBzaW5QaGlSYWRpdXMgKiBNYXRoLmNvcyggdGhldGEgKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0RnJvbUN5bGluZHJpY2FsOiBmdW5jdGlvbiAoIGMgKSB7XG5cblx0XHRyZXR1cm4gdGhpcy5zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHMoIGMucmFkaXVzLCBjLnRoZXRhLCBjLnkgKTtcblxuXHR9LFxuXG5cdHNldEZyb21DeWxpbmRyaWNhbENvb3JkczogZnVuY3Rpb24gKCByYWRpdXMsIHRoZXRhLCB5ICkge1xuXG5cdFx0dGhpcy54ID0gcmFkaXVzICogTWF0aC5zaW4oIHRoZXRhICk7XG5cdFx0dGhpcy55ID0geTtcblx0XHR0aGlzLnogPSByYWRpdXMgKiBNYXRoLmNvcyggdGhldGEgKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0RnJvbU1hdHJpeFBvc2l0aW9uOiBmdW5jdGlvbiAoIG0gKSB7XG5cblx0XHR2YXIgZSA9IG0uZWxlbWVudHM7XG5cblx0XHR0aGlzLnggPSBlWyAxMiBdO1xuXHRcdHRoaXMueSA9IGVbIDEzIF07XG5cdFx0dGhpcy56ID0gZVsgMTQgXTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0RnJvbU1hdHJpeFNjYWxlOiBmdW5jdGlvbiAoIG0gKSB7XG5cblx0XHR2YXIgc3ggPSB0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oIG0sIDAgKS5sZW5ndGgoKTtcblx0XHR2YXIgc3kgPSB0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oIG0sIDEgKS5sZW5ndGgoKTtcblx0XHR2YXIgc3ogPSB0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oIG0sIDIgKS5sZW5ndGgoKTtcblxuXHRcdHRoaXMueCA9IHN4O1xuXHRcdHRoaXMueSA9IHN5O1xuXHRcdHRoaXMueiA9IHN6O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRzZXRGcm9tTWF0cml4Q29sdW1uOiBmdW5jdGlvbiAoIG0sIGluZGV4ICkge1xuXG5cdFx0cmV0dXJuIHRoaXMuZnJvbUFycmF5KCBtLmVsZW1lbnRzLCBpbmRleCAqIDQgKTtcblxuXHR9LFxuXG5cdGVxdWFsczogZnVuY3Rpb24gKCB2ICkge1xuXG5cdFx0cmV0dXJuICggKCB2LnggPT09IHRoaXMueCApICYmICggdi55ID09PSB0aGlzLnkgKSAmJiAoIHYueiA9PT0gdGhpcy56ICkgKTtcblxuXHR9LFxuXG5cdGZyb21BcnJheTogZnVuY3Rpb24gKCBhcnJheSwgb2Zmc2V0ICkge1xuXG5cdFx0aWYgKCBvZmZzZXQgPT09IHVuZGVmaW5lZCApIG9mZnNldCA9IDA7XG5cblx0XHR0aGlzLnggPSBhcnJheVsgb2Zmc2V0IF07XG5cdFx0dGhpcy55ID0gYXJyYXlbIG9mZnNldCArIDEgXTtcblx0XHR0aGlzLnogPSBhcnJheVsgb2Zmc2V0ICsgMiBdO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHR0b0FycmF5OiBmdW5jdGlvbiAoIGFycmF5LCBvZmZzZXQgKSB7XG5cblx0XHRpZiAoIGFycmF5ID09PSB1bmRlZmluZWQgKSBhcnJheSA9IFtdO1xuXHRcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xuXG5cdFx0YXJyYXlbIG9mZnNldCBdID0gdGhpcy54O1xuXHRcdGFycmF5WyBvZmZzZXQgKyAxIF0gPSB0aGlzLnk7XG5cdFx0YXJyYXlbIG9mZnNldCArIDIgXSA9IHRoaXMuejtcblxuXHRcdHJldHVybiBhcnJheTtcblxuXHR9LFxuXG5cdGZyb21CdWZmZXJBdHRyaWJ1dGU6IGZ1bmN0aW9uICggYXR0cmlidXRlLCBpbmRleCwgb2Zmc2V0ICkge1xuXG5cdFx0aWYgKCBvZmZzZXQgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVmVjdG9yMzogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLicgKTtcblxuXHRcdH1cblxuXHRcdHRoaXMueCA9IGF0dHJpYnV0ZS5nZXRYKCBpbmRleCApO1xuXHRcdHRoaXMueSA9IGF0dHJpYnV0ZS5nZXRZKCBpbmRleCApO1xuXHRcdHRoaXMueiA9IGF0dHJpYnV0ZS5nZXRaKCBpbmRleCApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fVxuXG59ICk7XG5cblxuZXhwb3J0IHsgVmVjdG9yMyB9OyJdfQ==
457
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3RocmVlL1ZlY3RvcjMuanMiXSwibmFtZXMiOlsiX01hdGgiLCJRdWF0ZXJuaW9uIiwiVmVjdG9yMyIsIngiLCJ5IiwieiIsIk9iamVjdCIsImFzc2lnbiIsInByb3RvdHlwZSIsImlzVmVjdG9yMyIsInNldCIsInNldFNjYWxhciIsInNjYWxhciIsInNldFgiLCJzZXRZIiwic2V0WiIsInNldENvbXBvbmVudCIsImluZGV4IiwidmFsdWUiLCJFcnJvciIsImdldENvbXBvbmVudCIsImNsb25lIiwiY29uc3RydWN0b3IiLCJjb3B5IiwidiIsImFkZCIsInciLCJ1bmRlZmluZWQiLCJjb25zb2xlIiwid2FybiIsImFkZFZlY3RvcnMiLCJhZGRTY2FsYXIiLCJzIiwiYSIsImIiLCJhZGRTY2FsZWRWZWN0b3IiLCJzdWIiLCJzdWJWZWN0b3JzIiwic3ViU2NhbGFyIiwibXVsdGlwbHkiLCJtdWx0aXBseVZlY3RvcnMiLCJtdWx0aXBseVNjYWxhciIsImFwcGx5RXVsZXIiLCJxdWF0ZXJuaW9uIiwiZXVsZXIiLCJpc0V1bGVyIiwiZXJyb3IiLCJhcHBseVF1YXRlcm5pb24iLCJzZXRGcm9tRXVsZXIiLCJhcHBseUF4aXNBbmdsZSIsImF4aXMiLCJhbmdsZSIsInNldEZyb21BeGlzQW5nbGUiLCJhcHBseU1hdHJpeDMiLCJtIiwiZSIsImVsZW1lbnRzIiwiYXBwbHlNYXRyaXg0IiwicSIsInF4IiwicXkiLCJxeiIsInF3IiwiaXgiLCJpeSIsIml6IiwiaXciLCJwcm9qZWN0IiwiY2FtZXJhIiwibWF0cml4V29ybGRJbnZlcnNlIiwicHJvamVjdGlvbk1hdHJpeCIsInVucHJvamVjdCIsInByb2plY3Rpb25NYXRyaXhJbnZlcnNlIiwibWF0cml4V29ybGQiLCJ0cmFuc2Zvcm1EaXJlY3Rpb24iLCJub3JtYWxpemUiLCJkaXZpZGUiLCJkaXZpZGVTY2FsYXIiLCJtaW4iLCJNYXRoIiwibWF4IiwiY2xhbXAiLCJjbGFtcFNjYWxhciIsIm1pblZhbCIsIm1heFZhbCIsImNsYW1wTGVuZ3RoIiwibGVuZ3RoIiwiZmxvb3IiLCJjZWlsIiwicm91bmQiLCJyb3VuZFRvWmVybyIsIm5lZ2F0ZSIsImRvdCIsImxlbmd0aFNxIiwic3FydCIsIm1hbmhhdHRhbkxlbmd0aCIsImFicyIsInNldExlbmd0aCIsImxlcnAiLCJhbHBoYSIsImxlcnBWZWN0b3JzIiwidjEiLCJ2MiIsImNyb3NzIiwiY3Jvc3NWZWN0b3JzIiwiYXgiLCJheSIsImF6IiwiYngiLCJieSIsImJ6IiwicHJvamVjdE9uVmVjdG9yIiwidmVjdG9yIiwicHJvamVjdE9uUGxhbmUiLCJwbGFuZU5vcm1hbCIsInJlZmxlY3QiLCJub3JtYWwiLCJhbmdsZVRvIiwidGhldGEiLCJhY29zIiwiZGlzdGFuY2VUbyIsImRpc3RhbmNlVG9TcXVhcmVkIiwiZHgiLCJkeSIsImR6IiwibWFuaGF0dGFuRGlzdGFuY2VUbyIsInNldEZyb21TcGhlcmljYWwiLCJzZXRGcm9tU3BoZXJpY2FsQ29vcmRzIiwicmFkaXVzIiwicGhpIiwic2luUGhpUmFkaXVzIiwic2luIiwiY29zIiwic2V0RnJvbUN5bGluZHJpY2FsIiwiYyIsInNldEZyb21DeWxpbmRyaWNhbENvb3JkcyIsInNldEZyb21NYXRyaXhQb3NpdGlvbiIsInNldEZyb21NYXRyaXhTY2FsZSIsInN4Iiwic2V0RnJvbU1hdHJpeENvbHVtbiIsInN5Iiwic3oiLCJmcm9tQXJyYXkiLCJlcXVhbHMiLCJhcnJheSIsIm9mZnNldCIsInRvQXJyYXkiLCJmcm9tQnVmZmVyQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiZ2V0WCIsImdldFkiLCJnZXRaIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxLQUFULFFBQXNCLFdBQXRCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixpQkFBM0I7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVNDLE9BQVQsQ0FBa0JDLENBQWxCLEVBQXFCQyxDQUFyQixFQUF3QkMsQ0FB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akNDLEVBQUFBLE9BQU8sRUFBRSxVQUFXRixLQUFYLEVBQWtCQyxNQUFsQixFQUEyQjtBQUVuQyxRQUFLRCxLQUFLLEtBQUtySCxTQUFmLEVBQTJCcUgsS0FBSyxHQUFHLEVBQVI7QUFDM0IsUUFBS0MsTUFBTSxLQUFLdEgsU0FBaEIsRUFBNEJzSCxNQUFNLEdBQUcsQ0FBVDtBQUU1QkQsSUFBQUEsS0FBSyxDQUFFQyxNQUFGLENBQUwsR0FBa0IsS0FBSzlJLENBQXZCO0FBQ0E2SSxJQUFBQSxLQUFLLENBQUVDLE1BQU0sR0FBRyxDQUFYLENBQUwsR0FBc0IsS0FBSzdJLENBQTNCO0FBQ0E0SSxJQUFBQSxLQUFLLENBQUVDLE1BQU0sR0FBRyxDQUFYLENBQUwsR0FBc0IsS0FBSzVJLENBQTNCO0FBRUEsV0FBTzJJLEtBQVA7QUFFQSxHQXZxQmdDO0FBeXFCakNHLEVBQUFBLG1CQUFtQixFQUFFLFVBQVdDLFNBQVgsRUFBc0JuSSxLQUF0QixFQUE2QmdJLE1BQTdCLEVBQXNDO0FBRTFELFFBQUtBLE1BQU0sS0FBS3RILFNBQWhCLEVBQTRCO0FBRTNCQyxNQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYyxxRUFBZDtBQUVBOztBQUVELFNBQUsxQixDQUFMLEdBQVNpSixTQUFTLENBQUNDLElBQVYsQ0FBZ0JwSSxLQUFoQixDQUFUO0FBQ0EsU0FBS2IsQ0FBTCxHQUFTZ0osU0FBUyxDQUFDRSxJQUFWLENBQWdCckksS0FBaEIsQ0FBVDtBQUNBLFNBQUtaLENBQUwsR0FBUytJLFNBQVMsQ0FBQ0csSUFBVixDQUFnQnRJLEtBQWhCLENBQVQ7QUFFQSxXQUFPLElBQVA7QUFFQTtBQXZyQmdDLENBQWxDO0FBNHJCQSxTQUFTZixPQUFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX01hdGggfSBmcm9tICcuL01hdGguanMnO1xuaW1wb3J0IHsgUXVhdGVybmlvbiB9IGZyb20gJy4vUXVhdGVybmlvbi5qcyc7XG5cbi8qKlxuICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cbiAqIEBhdXRob3Iga2lsZSAvIGh0dHA6Ly9raWxlLnN0cmF2YWdhbnphLm9yZy9cbiAqIEBhdXRob3IgcGhpbG9nYiAvIGh0dHA6Ly9ibG9nLnRoZWppdC5vcmcvXG4gKiBAYXV0aG9yIG1pa2FlbCBlbXRpbmdlciAvIGh0dHA6Ly9nb21vLnNlL1xuICogQGF1dGhvciBlZ3JhZXRoZXIgLyBodHRwOi8vZWdyYWV0aGVyLmNvbS9cbiAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxuICovXG5cbmZ1bmN0aW9uIFZlY3RvcjMoIHgsIHksIHogKSB7XG5cblx0dGhpcy54ID0geCB8fCAwO1xuXHR0aGlzLnkgPSB5IHx8IDA7XG5cdHRoaXMueiA9IHogfHwgMDtcblxufVxuXG5PYmplY3QuYXNzaWduKCBWZWN0b3IzLnByb3RvdHlwZSwge1xuXG5cdGlzVmVjdG9yMzogdHJ1ZSxcblxuXHRzZXQ6IGZ1bmN0aW9uICggeCwgeSwgeiApIHtcblxuXHRcdHRoaXMueCA9IHg7XG5cdFx0dGhpcy55ID0geTtcblx0XHR0aGlzLnogPSB6O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRzZXRTY2FsYXI6IGZ1bmN0aW9uICggc2NhbGFyICkge1xuXG5cdFx0dGhpcy54ID0gc2NhbGFyO1xuXHRcdHRoaXMueSA9IHNjYWxhcjtcblx0XHR0aGlzLnogPSBzY2FsYXI7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHNldFg6IGZ1bmN0aW9uICggeCApIHtcblxuXHRcdHRoaXMueCA9IHg7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHNldFk6IGZ1bmN0aW9uICggeSApIHtcblxuXHRcdHRoaXMueSA9IHk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHNldFo6IGZ1bmN0aW9uICggeiApIHtcblxuXHRcdHRoaXMueiA9IHo7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHNldENvbXBvbmVudDogZnVuY3Rpb24gKCBpbmRleCwgdmFsdWUgKSB7XG5cblx0XHRzd2l0Y2ggKCBpbmRleCApIHtcblxuXHRcdFx0Y2FzZSAwOiB0aGlzLnggPSB2YWx1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDE6IHRoaXMueSA9IHZhbHVlOyBicmVhaztcblx0XHRcdGNhc2UgMjogdGhpcy56ID0gdmFsdWU7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCAnaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAnICsgaW5kZXggKTtcblxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0Z2V0Q29tcG9uZW50OiBmdW5jdGlvbiAoIGluZGV4ICkge1xuXG5cdFx0c3dpdGNoICggaW5kZXggKSB7XG5cblx0XHRcdGNhc2UgMDogcmV0dXJuIHRoaXMueDtcblx0XHRcdGNhc2UgMTogcmV0dXJuIHRoaXMueTtcblx0XHRcdGNhc2UgMjogcmV0dXJuIHRoaXMuejtcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvciggJ2luZGV4IGlzIG91dCBvZiByYW5nZTogJyArIGluZGV4ICk7XG5cblx0XHR9XG5cblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24gKCkge1xuXG5cdFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCB0aGlzLngsIHRoaXMueSwgdGhpcy56ICk7XG5cblx0fSxcblxuXHRjb3B5OiBmdW5jdGlvbiAoIHYgKSB7XG5cblx0XHR0aGlzLnggPSB2Lng7XG5cdFx0dGhpcy55ID0gdi55O1xuXHRcdHRoaXMueiA9IHYuejtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0YWRkOiBmdW5jdGlvbiAoIHYsIHcgKSB7XG5cblx0XHRpZiAoIHcgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVmVjdG9yMzogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLicgKTtcblx0XHRcdHJldHVybiB0aGlzLmFkZFZlY3RvcnMoIHYsIHcgKTtcblxuXHRcdH1cblxuXHRcdHRoaXMueCArPSB2Lng7XG5cdFx0dGhpcy55ICs9IHYueTtcblx0XHR0aGlzLnogKz0gdi56O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRhZGRTY2FsYXI6IGZ1bmN0aW9uICggcyApIHtcblxuXHRcdHRoaXMueCArPSBzO1xuXHRcdHRoaXMueSArPSBzO1xuXHRcdHRoaXMueiArPSBzO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRhZGRWZWN0b3JzOiBmdW5jdGlvbiAoIGEsIGIgKSB7XG5cblx0XHR0aGlzLnggPSBhLnggKyBiLng7XG5cdFx0dGhpcy55ID0gYS55ICsgYi55O1xuXHRcdHRoaXMueiA9IGEueiArIGIuejtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0YWRkU2NhbGVkVmVjdG9yOiBmdW5jdGlvbiAoIHYsIHMgKSB7XG5cblx0XHR0aGlzLnggKz0gdi54ICogcztcblx0XHR0aGlzLnkgKz0gdi55ICogcztcblx0XHR0aGlzLnogKz0gdi56ICogcztcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c3ViOiBmdW5jdGlvbiAoIHYsIHcgKSB7XG5cblx0XHRpZiAoIHcgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVmVjdG9yMzogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLicgKTtcblx0XHRcdHJldHVybiB0aGlzLnN1YlZlY3RvcnMoIHYsIHcgKTtcblxuXHRcdH1cblxuXHRcdHRoaXMueCAtPSB2Lng7XG5cdFx0dGhpcy55IC09IHYueTtcblx0XHR0aGlzLnogLT0gdi56O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRzdWJTY2FsYXI6IGZ1bmN0aW9uICggcyApIHtcblxuXHRcdHRoaXMueCAtPSBzO1xuXHRcdHRoaXMueSAtPSBzO1xuXHRcdHRoaXMueiAtPSBzO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRzdWJWZWN0b3JzOiBmdW5jdGlvbiAoIGEsIGIgKSB7XG5cblx0XHR0aGlzLnggPSBhLnggLSBiLng7XG5cdFx0dGhpcy55ID0gYS55IC0gYi55O1xuXHRcdHRoaXMueiA9IGEueiAtIGIuejtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0bXVsdGlwbHk6IGZ1bmN0aW9uICggdiwgdyApIHtcblxuXHRcdGlmICggdyAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IzOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLicgKTtcblx0XHRcdHJldHVybiB0aGlzLm11bHRpcGx5VmVjdG9ycyggdiwgdyApO1xuXG5cdFx0fVxuXG5cdFx0dGhpcy54ICo9IHYueDtcblx0XHR0aGlzLnkgKj0gdi55O1xuXHRcdHRoaXMueiAqPSB2Lno7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdG11bHRpcGx5U2NhbGFyOiBmdW5jdGlvbiAoIHNjYWxhciApIHtcblxuXHRcdHRoaXMueCAqPSBzY2FsYXI7XG5cdFx0dGhpcy55ICo9IHNjYWxhcjtcblx0XHR0aGlzLnogKj0gc2NhbGFyO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRtdWx0aXBseVZlY3RvcnM6IGZ1bmN0aW9uICggYSwgYiApIHtcblxuXHRcdHRoaXMueCA9IGEueCAqIGIueDtcblx0XHR0aGlzLnkgPSBhLnkgKiBiLnk7XG5cdFx0dGhpcy56ID0gYS56ICogYi56O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRhcHBseUV1bGVyOiBmdW5jdGlvbiAoKSB7XG5cblx0XHR2YXIgcXVhdGVybmlvbiA9IG5ldyBRdWF0ZXJuaW9uKCk7XG5cblx0XHRyZXR1cm4gZnVuY3Rpb24gYXBwbHlFdWxlciggZXVsZXIgKSB7XG5cblx0XHRcdGlmICggISAoIGV1bGVyICYmIGV1bGVyLmlzRXVsZXIgKSApIHtcblxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCAnVEhSRUUuVmVjdG9yMzogLmFwcGx5RXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLicgKTtcblxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdGhpcy5hcHBseVF1YXRlcm5pb24oIHF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKCBldWxlciApICk7XG5cblx0XHR9O1xuXG5cdH0oKSxcblxuXHRhcHBseUF4aXNBbmdsZTogZnVuY3Rpb24gKCkge1xuXG5cdFx0dmFyIHF1YXRlcm5pb24gPSBuZXcgUXVhdGVybmlvbigpO1xuXG5cdFx0cmV0dXJuIGZ1bmN0aW9uIGFwcGx5QXhpc0FuZ2xlKCBheGlzLCBhbmdsZSApIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuYXBwbHlRdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUoIGF4aXMsIGFuZ2xlICkgKTtcblxuXHRcdH07XG5cblx0fSgpLFxuXG5cdGFwcGx5TWF0cml4MzogZnVuY3Rpb24gKCBtICkge1xuXG5cdFx0dmFyIHggPSB0aGlzLngsIHkgPSB0aGlzLnksIHogPSB0aGlzLno7XG5cdFx0dmFyIGUgPSBtLmVsZW1lbnRzO1xuXG5cdFx0dGhpcy54ID0gZVsgMCBdICogeCArIGVbIDMgXSAqIHkgKyBlWyA2IF0gKiB6O1xuXHRcdHRoaXMueSA9IGVbIDEgXSAqIHggKyBlWyA0IF0gKiB5ICsgZVsgNyBdICogejtcblx0XHR0aGlzLnogPSBlWyAyIF0gKiB4ICsgZVsgNSBdICogeSArIGVbIDggXSAqIHo7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdGFwcGx5TWF0cml4NDogZnVuY3Rpb24gKCBtICkge1xuXG5cdFx0dmFyIHggPSB0aGlzLngsIHkgPSB0aGlzLnksIHogPSB0aGlzLno7XG5cdFx0dmFyIGUgPSBtLmVsZW1lbnRzO1xuXG5cdFx0dmFyIHcgPSAxIC8gKCBlWyAzIF0gKiB4ICsgZVsgNyBdICogeSArIGVbIDExIF0gKiB6ICsgZVsgMTUgXSApO1xuXG5cdFx0dGhpcy54ID0gKCBlWyAwIF0gKiB4ICsgZVsgNCBdICogeSArIGVbIDggXSAqIHogKyBlWyAxMiBdICkgKiB3O1xuXHRcdHRoaXMueSA9ICggZVsgMSBdICogeCArIGVbIDUgXSAqIHkgKyBlWyA5IF0gKiB6ICsgZVsgMTMgXSApICogdztcblx0XHR0aGlzLnogPSAoIGVbIDIgXSAqIHggKyBlWyA2IF0gKiB5ICsgZVsgMTAgXSAqIHogKyBlWyAxNCBdICkgKiB3O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRhcHBseVF1YXRlcm5pb246IGZ1bmN0aW9uICggcSApIHtcblxuXHRcdHZhciB4ID0gdGhpcy54LCB5ID0gdGhpcy55LCB6ID0gdGhpcy56O1xuXHRcdHZhciBxeCA9IHEueCwgcXkgPSBxLnksIHF6ID0gcS56LCBxdyA9IHEudztcblxuXHRcdC8vIGNhbGN1bGF0ZSBxdWF0ICogdmVjdG9yXG5cblx0XHR2YXIgaXggPSBxdyAqIHggKyBxeSAqIHogLSBxeiAqIHk7XG5cdFx0dmFyIGl5ID0gcXcgKiB5ICsgcXogKiB4IC0gcXggKiB6O1xuXHRcdHZhciBpeiA9IHF3ICogeiArIHF4ICogeSAtIHF5ICogeDtcblx0XHR2YXIgaXcgPSAtIHF4ICogeCAtIHF5ICogeSAtIHF6ICogejtcblxuXHRcdC8vIGNhbGN1bGF0ZSByZXN1bHQgKiBpbnZlcnNlIHF1YXRcblxuXHRcdHRoaXMueCA9IGl4ICogcXcgKyBpdyAqIC0gcXggKyBpeSAqIC0gcXogLSBpeiAqIC0gcXk7XG5cdFx0dGhpcy55ID0gaXkgKiBxdyArIGl3ICogLSBxeSArIGl6ICogLSBxeCAtIGl4ICogLSBxejtcblx0XHR0aGlzLnogPSBpeiAqIHF3ICsgaXcgKiAtIHF6ICsgaXggKiAtIHF5IC0gaXkgKiAtIHF4O1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRwcm9qZWN0OiBmdW5jdGlvbiAoIGNhbWVyYSApIHtcblxuXHRcdHJldHVybiB0aGlzLmFwcGx5TWF0cml4NCggY2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZSApLmFwcGx5TWF0cml4NCggY2FtZXJhLnByb2plY3Rpb25NYXRyaXggKTtcblxuXHR9LFxuXG5cdHVucHJvamVjdDogZnVuY3Rpb24gKCBjYW1lcmEgKSB7XG5cblx0XHRyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQoIGNhbWVyYS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSApLmFwcGx5TWF0cml4NCggY2FtZXJhLm1hdHJpeFdvcmxkICk7XG5cblx0fSxcblxuXHR0cmFuc2Zvcm1EaXJlY3Rpb246IGZ1bmN0aW9uICggbSApIHtcblxuXHRcdC8vIGlucHV0OiBUSFJFRS5NYXRyaXg0IGFmZmluZSBtYXRyaXhcblx0XHQvLyB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3Rpb25cblxuXHRcdHZhciB4ID0gdGhpcy54LCB5ID0gdGhpcy55LCB6ID0gdGhpcy56O1xuXHRcdHZhciBlID0gbS5lbGVtZW50cztcblxuXHRcdHRoaXMueCA9IGVbIDAgXSAqIHggKyBlWyA0IF0gKiB5ICsgZVsgOCBdICogejtcblx0XHR0aGlzLnkgPSBlWyAxIF0gKiB4ICsgZVsgNSBdICogeSArIGVbIDkgXSAqIHo7XG5cdFx0dGhpcy56ID0gZVsgMiBdICogeCArIGVbIDYgXSAqIHkgKyBlWyAxMCBdICogejtcblxuXHRcdHJldHVybiB0aGlzLm5vcm1hbGl6ZSgpO1xuXG5cdH0sXG5cblx0ZGl2aWRlOiBmdW5jdGlvbiAoIHYgKSB7XG5cblx0XHR0aGlzLnggLz0gdi54O1xuXHRcdHRoaXMueSAvPSB2Lnk7XG5cdFx0dGhpcy56IC89IHYuejtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0ZGl2aWRlU2NhbGFyOiBmdW5jdGlvbiAoIHNjYWxhciApIHtcblxuXHRcdHJldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKCAxIC8gc2NhbGFyICk7XG5cblx0fSxcblxuXHRtaW46IGZ1bmN0aW9uICggdiApIHtcblxuXHRcdHRoaXMueCA9IE1hdGgubWluKCB0aGlzLngsIHYueCApO1xuXHRcdHRoaXMueSA9IE1hdGgubWluKCB0aGlzLnksIHYueSApO1xuXHRcdHRoaXMueiA9IE1hdGgubWluKCB0aGlzLnosIHYueiApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRtYXg6IGZ1bmN0aW9uICggdiApIHtcblxuXHRcdHRoaXMueCA9IE1hdGgubWF4KCB0aGlzLngsIHYueCApO1xuXHRcdHRoaXMueSA9IE1hdGgubWF4KCB0aGlzLnksIHYueSApO1xuXHRcdHRoaXMueiA9IE1hdGgubWF4KCB0aGlzLnosIHYueiApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRjbGFtcDogZnVuY3Rpb24gKCBtaW4sIG1heCApIHtcblxuXHRcdC8vIGFzc3VtZXMgbWluIDwgbWF4LCBjb21wb25lbnR3aXNlXG5cblx0XHR0aGlzLnggPSBNYXRoLm1heCggbWluLngsIE1hdGgubWluKCBtYXgueCwgdGhpcy54ICkgKTtcblx0XHR0aGlzLnkgPSBNYXRoLm1heCggbWluLnksIE1hdGgubWluKCBtYXgueSwgdGhpcy55ICkgKTtcblx0XHR0aGlzLnogPSBNYXRoLm1heCggbWluLnosIE1hdGgubWluKCBtYXgueiwgdGhpcy56ICkgKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0Y2xhbXBTY2FsYXI6IGZ1bmN0aW9uICggbWluVmFsLCBtYXhWYWwgKSB7XG5cblx0XHR0aGlzLnggPSBNYXRoLm1heCggbWluVmFsLCBNYXRoLm1pbiggbWF4VmFsLCB0aGlzLnggKSApO1xuXHRcdHRoaXMueSA9IE1hdGgubWF4KCBtaW5WYWwsIE1hdGgubWluKCBtYXhWYWwsIHRoaXMueSApICk7XG5cdFx0dGhpcy56ID0gTWF0aC5tYXgoIG1pblZhbCwgTWF0aC5taW4oIG1heFZhbCwgdGhpcy56ICkgKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0Y2xhbXBMZW5ndGg6IGZ1bmN0aW9uICggbWluLCBtYXggKSB7XG5cblx0XHR2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGgoKTtcblxuXHRcdHJldHVybiB0aGlzLmRpdmlkZVNjYWxhciggbGVuZ3RoIHx8IDEgKS5tdWx0aXBseVNjYWxhciggTWF0aC5tYXgoIG1pbiwgTWF0aC5taW4oIG1heCwgbGVuZ3RoICkgKSApO1xuXG5cdH0sXG5cblx0Zmxvb3I6IGZ1bmN0aW9uICgpIHtcblxuXHRcdHRoaXMueCA9IE1hdGguZmxvb3IoIHRoaXMueCApO1xuXHRcdHRoaXMueSA9IE1hdGguZmxvb3IoIHRoaXMueSApO1xuXHRcdHRoaXMueiA9IE1hdGguZmxvb3IoIHRoaXMueiApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRjZWlsOiBmdW5jdGlvbiAoKSB7XG5cblx0XHR0aGlzLnggPSBNYXRoLmNlaWwoIHRoaXMueCApO1xuXHRcdHRoaXMueSA9IE1hdGguY2VpbCggdGhpcy55ICk7XG5cdFx0dGhpcy56ID0gTWF0aC5jZWlsKCB0aGlzLnogKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0cm91bmQ6IGZ1bmN0aW9uICgpIHtcblxuXHRcdHRoaXMueCA9IE1hdGgucm91bmQoIHRoaXMueCApO1xuXHRcdHRoaXMueSA9IE1hdGgucm91bmQoIHRoaXMueSApO1xuXHRcdHRoaXMueiA9IE1hdGgucm91bmQoIHRoaXMueiApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRyb3VuZFRvWmVybzogZnVuY3Rpb24gKCkge1xuXG5cdFx0dGhpcy54ID0gKCB0aGlzLnggPCAwICkgPyBNYXRoLmNlaWwoIHRoaXMueCApIDogTWF0aC5mbG9vciggdGhpcy54ICk7XG5cdFx0dGhpcy55ID0gKCB0aGlzLnkgPCAwICkgPyBNYXRoLmNlaWwoIHRoaXMueSApIDogTWF0aC5mbG9vciggdGhpcy55ICk7XG5cdFx0dGhpcy56ID0gKCB0aGlzLnogPCAwICkgPyBNYXRoLmNlaWwoIHRoaXMueiApIDogTWF0aC5mbG9vciggdGhpcy56ICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdG5lZ2F0ZTogZnVuY3Rpb24gKCkge1xuXG5cdFx0dGhpcy54ID0gLSB0aGlzLng7XG5cdFx0dGhpcy55ID0gLSB0aGlzLnk7XG5cdFx0dGhpcy56ID0gLSB0aGlzLno7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdGRvdDogZnVuY3Rpb24gKCB2ICkge1xuXG5cdFx0cmV0dXJuIHRoaXMueCAqIHYueCArIHRoaXMueSAqIHYueSArIHRoaXMueiAqIHYuejtcblxuXHR9LFxuXG5cdC8vIFRPRE8gbGVuZ3RoU3F1YXJlZD9cblxuXHRsZW5ndGhTcTogZnVuY3Rpb24gKCkge1xuXG5cdFx0cmV0dXJuIHRoaXMueCAqIHRoaXMueCArIHRoaXMueSAqIHRoaXMueSArIHRoaXMueiAqIHRoaXMuejtcblxuXHR9LFxuXG5cdGxlbmd0aDogZnVuY3Rpb24gKCkge1xuXG5cdFx0cmV0dXJuIE1hdGguc3FydCggdGhpcy54ICogdGhpcy54ICsgdGhpcy55ICogdGhpcy55ICsgdGhpcy56ICogdGhpcy56ICk7XG5cblx0fSxcblxuXHRtYW5oYXR0YW5MZW5ndGg6IGZ1bmN0aW9uICgpIHtcblxuXHRcdHJldHVybiBNYXRoLmFicyggdGhpcy54ICkgKyBNYXRoLmFicyggdGhpcy55ICkgKyBNYXRoLmFicyggdGhpcy56ICk7XG5cblx0fSxcblxuXHRub3JtYWxpemU6IGZ1bmN0aW9uICgpIHtcblxuXHRcdHJldHVybiB0aGlzLmRpdmlkZVNjYWxhciggdGhpcy5sZW5ndGgoKSB8fCAxICk7XG5cblx0fSxcblxuXHRzZXRMZW5ndGg6IGZ1bmN0aW9uICggbGVuZ3RoICkge1xuXG5cdFx0cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIoIGxlbmd0aCApO1xuXG5cdH0sXG5cblx0bGVycDogZnVuY3Rpb24gKCB2LCBhbHBoYSApIHtcblxuXHRcdHRoaXMueCArPSAoIHYueCAtIHRoaXMueCApICogYWxwaGE7XG5cdFx0dGhpcy55ICs9ICggdi55IC0gdGhpcy55ICkgKiBhbHBoYTtcblx0XHR0aGlzLnogKz0gKCB2LnogLSB0aGlzLnogKSAqIGFscGhhO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHRsZXJwVmVjdG9yczogZnVuY3Rpb24gKCB2MSwgdjIsIGFscGhhICkge1xuXG5cdFx0cmV0dXJuIHRoaXMuc3ViVmVjdG9ycyggdjIsIHYxICkubXVsdGlwbHlTY2FsYXIoIGFscGhhICkuYWRkKCB2MSApO1xuXG5cdH0sXG5cblx0Y3Jvc3M6IGZ1bmN0aW9uICggdiwgdyApIHtcblxuXHRcdGlmICggdyAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IzOiAuY3Jvc3MoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5jcm9zc1ZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLicgKTtcblx0XHRcdHJldHVybiB0aGlzLmNyb3NzVmVjdG9ycyggdiwgdyApO1xuXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuY3Jvc3NWZWN0b3JzKCB0aGlzLCB2ICk7XG5cblx0fSxcblxuXHRjcm9zc1ZlY3RvcnM6IGZ1bmN0aW9uICggYSwgYiApIHtcblxuXHRcdHZhciBheCA9IGEueCwgYXkgPSBhLnksIGF6ID0gYS56O1xuXHRcdHZhciBieCA9IGIueCwgYnkgPSBiLnksIGJ6ID0gYi56O1xuXG5cdFx0dGhpcy54ID0gYXkgKiBieiAtIGF6ICogYnk7XG5cdFx0dGhpcy55ID0gYXogKiBieCAtIGF4ICogYno7XG5cdFx0dGhpcy56ID0gYXggKiBieSAtIGF5ICogYng7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHByb2plY3RPblZlY3RvcjogZnVuY3Rpb24gKCB2ZWN0b3IgKSB7XG5cblx0XHR2YXIgc2NhbGFyID0gdmVjdG9yLmRvdCggdGhpcyApIC8gdmVjdG9yLmxlbmd0aFNxKCk7XG5cblx0XHRyZXR1cm4gdGhpcy5jb3B5KCB2ZWN0b3IgKS5tdWx0aXBseVNjYWxhciggc2NhbGFyICk7XG5cblx0fSxcblxuXHRwcm9qZWN0T25QbGFuZTogZnVuY3Rpb24gKCkge1xuXG5cdFx0dmFyIHYxID0gbmV3IFZlY3RvcjMoKTtcblxuXHRcdHJldHVybiBmdW5jdGlvbiBwcm9qZWN0T25QbGFuZSggcGxhbmVOb3JtYWwgKSB7XG5cblx0XHRcdHYxLmNvcHkoIHRoaXMgKS5wcm9qZWN0T25WZWN0b3IoIHBsYW5lTm9ybWFsICk7XG5cblx0XHRcdHJldHVybiB0aGlzLnN1YiggdjEgKTtcblxuXHRcdH07XG5cblx0fSgpLFxuXG5cdHJlZmxlY3Q6IGZ1bmN0aW9uICgpIHtcblxuXHRcdC8vIHJlZmxlY3QgaW5jaWRlbnQgdmVjdG9yIG9mZiBwbGFuZSBvcnRob2dvbmFsIHRvIG5vcm1hbFxuXHRcdC8vIG5vcm1hbCBpcyBhc3N1bWVkIHRvIGhhdmUgdW5pdCBsZW5ndGhcblxuXHRcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XG5cblx0XHRyZXR1cm4gZnVuY3Rpb24gcmVmbGVjdCggbm9ybWFsICkge1xuXG5cdFx0XHRyZXR1cm4gdGhpcy5zdWIoIHYxLmNvcHkoIG5vcm1hbCApLm11bHRpcGx5U2NhbGFyKCAyICogdGhpcy5kb3QoIG5vcm1hbCApICkgKTtcblxuXHRcdH07XG5cblx0fSgpLFxuXG5cdGFuZ2xlVG86IGZ1bmN0aW9uICggdiApIHtcblxuXHRcdHZhciB0aGV0YSA9IHRoaXMuZG90KCB2ICkgLyAoIE1hdGguc3FydCggdGhpcy5sZW5ndGhTcSgpICogdi5sZW5ndGhTcSgpICkgKTtcblxuXHRcdC8vIGNsYW1wLCB0byBoYW5kbGUgbnVtZXJpY2FsIHByb2JsZW1zXG5cblx0XHRyZXR1cm4gTWF0aC5hY29zKCBfTWF0aC5jbGFtcCggdGhldGEsIC0gMSwgMSApICk7XG5cblx0fSxcblxuXHRkaXN0YW5jZVRvOiBmdW5jdGlvbiAoIHYgKSB7XG5cblx0XHRyZXR1cm4gTWF0aC5zcXJ0KCB0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKCB2ICkgKTtcblxuXHR9LFxuXG5cdGRpc3RhbmNlVG9TcXVhcmVkOiBmdW5jdGlvbiAoIHYgKSB7XG5cblx0XHR2YXIgZHggPSB0aGlzLnggLSB2LngsIGR5ID0gdGhpcy55IC0gdi55LCBkeiA9IHRoaXMueiAtIHYuejtcblxuXHRcdHJldHVybiBkeCAqIGR4ICsgZHkgKiBkeSArIGR6ICogZHo7XG5cblx0fSxcblxuXHRtYW5oYXR0YW5EaXN0YW5jZVRvOiBmdW5jdGlvbiAoIHYgKSB7XG5cblx0XHRyZXR1cm4gTWF0aC5hYnMoIHRoaXMueCAtIHYueCApICsgTWF0aC5hYnMoIHRoaXMueSAtIHYueSApICsgTWF0aC5hYnMoIHRoaXMueiAtIHYueiApO1xuXG5cdH0sXG5cblx0c2V0RnJvbVNwaGVyaWNhbDogZnVuY3Rpb24gKCBzICkge1xuXG5cdFx0cmV0dXJuIHRoaXMuc2V0RnJvbVNwaGVyaWNhbENvb3Jkcyggcy5yYWRpdXMsIHMucGhpLCBzLnRoZXRhICk7XG5cblx0fSxcblxuXHRzZXRGcm9tU3BoZXJpY2FsQ29vcmRzOiBmdW5jdGlvbiAoIHJhZGl1cywgcGhpLCB0aGV0YSApIHtcblxuXHRcdHZhciBzaW5QaGlSYWRpdXMgPSBNYXRoLnNpbiggcGhpICkgKiByYWRpdXM7XG5cblx0XHR0aGlzLnggPSBzaW5QaGlSYWRpdXMgKiBNYXRoLnNpbiggdGhldGEgKTtcblx0XHR0aGlzLnkgPSBNYXRoLmNvcyggcGhpICkgKiByYWRpdXM7XG5cdFx0dGhpcy56ID0gc2luUGhpUmFkaXVzICogTWF0aC5jb3MoIHRoZXRhICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHNldEZyb21DeWxpbmRyaWNhbDogZnVuY3Rpb24gKCBjICkge1xuXG5cdFx0cmV0dXJuIHRoaXMuc2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKCBjLnJhZGl1cywgYy50aGV0YSwgYy55ICk7XG5cblx0fSxcblxuXHRzZXRGcm9tQ3lsaW5kcmljYWxDb29yZHM6IGZ1bmN0aW9uICggcmFkaXVzLCB0aGV0YSwgeSApIHtcblxuXHRcdHRoaXMueCA9IHJhZGl1cyAqIE1hdGguc2luKCB0aGV0YSApO1xuXHRcdHRoaXMueSA9IHk7XG5cdFx0dGhpcy56ID0gcmFkaXVzICogTWF0aC5jb3MoIHRoZXRhICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHNldEZyb21NYXRyaXhQb3NpdGlvbjogZnVuY3Rpb24gKCBtICkge1xuXG5cdFx0dmFyIGUgPSBtLmVsZW1lbnRzO1xuXG5cdFx0dGhpcy54ID0gZVsgMTIgXTtcblx0XHR0aGlzLnkgPSBlWyAxMyBdO1xuXHRcdHRoaXMueiA9IGVbIDE0IF07XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9LFxuXG5cdHNldEZyb21NYXRyaXhTY2FsZTogZnVuY3Rpb24gKCBtICkge1xuXG5cdFx0dmFyIHN4ID0gdGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKCBtLCAwICkubGVuZ3RoKCk7XG5cdFx0dmFyIHN5ID0gdGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKCBtLCAxICkubGVuZ3RoKCk7XG5cdFx0dmFyIHN6ID0gdGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKCBtLCAyICkubGVuZ3RoKCk7XG5cblx0XHR0aGlzLnggPSBzeDtcblx0XHR0aGlzLnkgPSBzeTtcblx0XHR0aGlzLnogPSBzejtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0RnJvbU1hdHJpeENvbHVtbjogZnVuY3Rpb24gKCBtLCBpbmRleCApIHtcblxuXHRcdHJldHVybiB0aGlzLmZyb21BcnJheSggbS5lbGVtZW50cywgaW5kZXggKiA0ICk7XG5cblx0fSxcblxuXHRlcXVhbHM6IGZ1bmN0aW9uICggdiApIHtcblxuXHRcdHJldHVybiAoICggdi54ID09PSB0aGlzLnggKSAmJiAoIHYueSA9PT0gdGhpcy55ICkgJiYgKCB2LnogPT09IHRoaXMueiApICk7XG5cblx0fSxcblxuXHRmcm9tQXJyYXk6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcblxuXHRcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xuXG5cdFx0dGhpcy54ID0gYXJyYXlbIG9mZnNldCBdO1xuXHRcdHRoaXMueSA9IGFycmF5WyBvZmZzZXQgKyAxIF07XG5cdFx0dGhpcy56ID0gYXJyYXlbIG9mZnNldCArIDIgXTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0dG9BcnJheTogZnVuY3Rpb24gKCBhcnJheSwgb2Zmc2V0ICkge1xuXG5cdFx0aWYgKCBhcnJheSA9PT0gdW5kZWZpbmVkICkgYXJyYXkgPSBbXTtcblx0XHRpZiAoIG9mZnNldCA9PT0gdW5kZWZpbmVkICkgb2Zmc2V0ID0gMDtcblxuXHRcdGFycmF5WyBvZmZzZXQgXSA9IHRoaXMueDtcblx0XHRhcnJheVsgb2Zmc2V0ICsgMSBdID0gdGhpcy55O1xuXHRcdGFycmF5WyBvZmZzZXQgKyAyIF0gPSB0aGlzLno7XG5cblx0XHRyZXR1cm4gYXJyYXk7XG5cblx0fSxcblxuXHRmcm9tQnVmZmVyQXR0cmlidXRlOiBmdW5jdGlvbiAoIGF0dHJpYnV0ZSwgaW5kZXgsIG9mZnNldCApIHtcblxuXHRcdGlmICggb2Zmc2V0ICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjM6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4nICk7XG5cblx0XHR9XG5cblx0XHR0aGlzLnggPSBhdHRyaWJ1dGUuZ2V0WCggaW5kZXggKTtcblx0XHR0aGlzLnkgPSBhdHRyaWJ1dGUuZ2V0WSggaW5kZXggKTtcblx0XHR0aGlzLnogPSBhdHRyaWJ1dGUuZ2V0WiggaW5kZXggKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH1cblxufSApO1xuXG5cbmV4cG9ydCB7IFZlY3RvcjMgfTsiXX0=
@@ -192,4 +192,4 @@ export default {
192
192
  };
193
193
  }()
194
194
  };
195
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy9EZWJ1Zy5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX1BPU0lUSU9OIiwiREVGQVVMVF9TSVpFIiwic2l6ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJzeXN0ZW0iLCJvblN5c3RlbVVwZGF0ZWQiLCJldmVudERpc3BhdGNoZXIiLCJkcmF3Wm9uZSIsIlRIUkVFIiwiY29udGFpbmVyIiwiem9uZSIsImNvbG9yIiwid2lyZWZyYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJkZXB0aCIsInJhZGl1cyIsIngiLCJ5IiwieiIsImdlb21ldHJ5IiwiaXNQb2ludFpvbmUiLCJTcGhlcmVHZW9tZXRyeSIsImlzTGluZVpvbmUiLCJpc0JveFpvbmUiLCJCb3hHZW9tZXRyeSIsImlzU3BoZXJlWm9uZSIsImlzTWVzaFpvbmUiLCJjbG9uZSIsIm1hdGVyaWFsIiwiTWVzaEJhc2ljTWF0ZXJpYWwiLCJtZXNoIiwiTWVzaCIsImFkZCIsInBvc2l0aW9uIiwic2V0IiwiZHJhd0VtaXR0ZXIiLCJlbWl0dGVyIiwiT2N0YWhlZHJvbkdlb21ldHJ5IiwiY29weSIsInJvdGF0aW9uIiwicmVuZGVySW5mbyIsImdldENyZWF0ZWROdW1iZXIiLCJ0eXBlIiwicG9vbCIsInJlbmRlcmVyIiwicmVuZGVyZXJzIiwiY0lEIiwiZ2V0RW1pdHRlclBvcyIsImUiLCJlbWl0dGVycyIsIk1hdGgiLCJyb3VuZCIsInAiLCJzdHlsZSIsImFkZEluZm8iLCJzdHIiLCJfaW5mb1R5cGUiLCJsZW5ndGgiLCJuYW1lIiwiZ2V0Q291bnQiLCJfaW5mb0NvbiIsImlubmVySFRNTCIsInNlbGYiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjc3NUZXh0Iiwiam9pbiIsImJnIiwicGFyZW50Tm9kZSIsImJvZHkiLCJhcHBlbmRDaGlsZCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQVQsRUFBMkJDLFlBQVksSUFBSUMsSUFBM0MsUUFBdUQsYUFBdkQ7QUFFQTs7Ozs7QUFJQSxlQUFlO0FBQ2I7Ozs7Ozs7QUFPQUMsRUFBQUEsZ0JBQWdCLEVBQUUsVUFBU0MsTUFBVCxFQUFpQkMsZUFBakIsRUFBa0M7QUFDbERELElBQUFBLE1BQU0sQ0FBQ0UsZUFBUCxDQUF1QkgsZ0JBQXZCLENBQXdDLGVBQXhDLEVBQXlERSxlQUF6RDtBQUVBLFdBQU8sSUFBUDtBQUNELEdBWlk7O0FBY2I7Ozs7Ozs7O0FBUUFFLEVBQUFBLFFBQVEsRUFBRSxVQUFTQyxLQUFULEVBQWdCSixNQUFoQixFQUF3QkssU0FBeEIsRUFBbUNDLElBQUksR0FBRyxFQUExQyxFQUE4QztBQUN0RCxVQUFNQyxLQUFLLEdBQUcsU0FBZDtBQUNBLFVBQU1DLFNBQVMsR0FBRyxJQUFsQjtBQUNBLFVBQU07QUFDSkMsTUFBQUEsS0FBSyxHQUFHWCxJQURKO0FBRUpZLE1BQUFBLE1BQU0sR0FBR1osSUFGTDtBQUdKYSxNQUFBQSxLQUFLLEdBQUdiLElBSEo7QUFJSmMsTUFBQUEsTUFBTSxHQUFHZCxJQUpMO0FBS0plLE1BQUFBLENBQUMsR0FBR2pCLGdCQUxBO0FBTUprQixNQUFBQSxDQUFDLEdBQUdsQixnQkFOQTtBQU9KbUIsTUFBQUEsQ0FBQyxHQUFHbkI7QUFQQSxRQVFGVSxJQVJKO0FBU0EsUUFBSVUsUUFBSjs7QUFFQSxRQUFJVixJQUFJLENBQUNXLFdBQUwsRUFBSixFQUF3QjtBQUN0QkQsTUFBQUEsUUFBUSxHQUFHLElBQUlaLEtBQUssQ0FBQ2MsY0FBVixDQUF5QixFQUF6QixDQUFYO0FBQ0Q7O0FBRUQsUUFBSVosSUFBSSxDQUFDYSxVQUFMLEVBQUosRUFBdUIsQ0FDckI7QUFDRDs7QUFFRCxRQUFJYixJQUFJLENBQUNjLFNBQUwsRUFBSixFQUFzQjtBQUNwQkosTUFBQUEsUUFBUSxHQUFHLElBQUlaLEtBQUssQ0FBQ2lCLFdBQVYsQ0FBc0JaLEtBQXRCLEVBQTZCQyxNQUE3QixFQUFxQ0MsS0FBckMsQ0FBWDtBQUNEOztBQUVELFFBQUlMLElBQUksQ0FBQ2dCLFlBQUwsRUFBSixFQUF5QjtBQUN2Qk4sTUFBQUEsUUFBUSxHQUFHLElBQUlaLEtBQUssQ0FBQ2MsY0FBVixDQUF5Qk4sTUFBekIsRUFBaUNkLElBQWpDLEVBQXVDQSxJQUF2QyxDQUFYO0FBQ0Q7O0FBRUQsUUFBSVEsSUFBSSxDQUFDaUIsVUFBTCxFQUFKLEVBQXVCO0FBQ3JCUCxNQUFBQSxRQUFRLEdBQUdWLElBQUksQ0FBQ1UsUUFBTCxDQUFjQSxRQUFkLEdBQ1BWLElBQUksQ0FBQ1UsUUFBTCxDQUFjQSxRQUFkLENBQXVCUSxLQUF2QixFQURPLEdBRVBsQixJQUFJLENBQUNVLFFBQUwsQ0FBY1EsS0FBZCxFQUZKO0FBR0Q7O0FBRUQsUUFBSSxDQUFDUixRQUFMLEVBQWU7QUFDYkEsTUFBQUEsUUFBUSxHQUFHLElBQUlaLEtBQUssQ0FBQ2lCLFdBQVYsQ0FBc0JaLEtBQXRCLEVBQTZCQyxNQUE3QixFQUFxQ0MsS0FBckMsQ0FBWDtBQUNEOztBQUVELFVBQU1jLFFBQVEsR0FBRyxJQUFJckIsS0FBSyxDQUFDc0IsaUJBQVYsQ0FBNEI7QUFBRW5CLE1BQUFBLEtBQUY7QUFBU0MsTUFBQUE7QUFBVCxLQUE1QixDQUFqQixDQXhDc0QsQ0F5Q3REO0FBQ0E7O0FBQ0EsVUFBTW1CLElBQUksR0FBRyxJQUFJdkIsS0FBSyxDQUFDd0IsSUFBVixDQUFlWixRQUFRLENBQUNRLEtBQVQsRUFBZixFQUFpQ0MsUUFBakMsQ0FBYjtBQUVBcEIsSUFBQUEsU0FBUyxDQUFDd0IsR0FBVixDQUFjRixJQUFkO0FBRUEsU0FBSzVCLGdCQUFMLENBQXNCQyxNQUF0QixFQUE4QixZQUFXO0FBQ3ZDMkIsTUFBQUEsSUFBSSxDQUFDRyxRQUFMLENBQWNDLEdBQWQsQ0FBa0JsQixDQUFsQixFQUFxQkMsQ0FBckIsRUFBd0JDLENBQXhCO0FBQ0QsS0FGRDtBQUdELEdBeEVZOztBQTBFYjs7Ozs7Ozs7O0FBU0FpQixFQUFBQSxXQUFXLEVBQUUsVUFBUzVCLEtBQVQsRUFBZ0JKLE1BQWhCLEVBQXdCSyxTQUF4QixFQUFtQzRCLE9BQW5DLEVBQTRDMUIsS0FBNUMsRUFBbUQ7QUFDOUQsVUFBTVMsUUFBUSxHQUFHLElBQUlaLEtBQUssQ0FBQzhCLGtCQUFWLENBQTZCcEMsSUFBN0IsQ0FBakI7QUFDQSxVQUFNMkIsUUFBUSxHQUFHLElBQUlyQixLQUFLLENBQUNzQixpQkFBVixDQUE0QjtBQUMzQ25CLE1BQUFBLEtBQUssRUFBRUEsS0FBSyxJQUFJLE1BRDJCO0FBRTNDQyxNQUFBQSxTQUFTLEVBQUU7QUFGZ0MsS0FBNUIsQ0FBakIsQ0FGOEQsQ0FNOUQ7QUFDQTs7QUFDQSxVQUFNbUIsSUFBSSxHQUFHLElBQUl2QixLQUFLLENBQUN3QixJQUFWLENBQWVaLFFBQVEsQ0FBQ1EsS0FBVCxFQUFmLEVBQWlDQyxRQUFqQyxDQUFiO0FBRUFwQixJQUFBQSxTQUFTLENBQUN3QixHQUFWLENBQWNGLElBQWQ7QUFFQSxTQUFLNUIsZ0JBQUwsQ0FBc0JDLE1BQXRCLEVBQThCLFlBQVc7QUFDdkMyQixNQUFBQSxJQUFJLENBQUNHLFFBQUwsQ0FBY0ssSUFBZCxDQUFtQkYsT0FBTyxDQUFDSCxRQUEzQjtBQUNBSCxNQUFBQSxJQUFJLENBQUNTLFFBQUwsQ0FBY0wsR0FBZCxDQUNFRSxPQUFPLENBQUNHLFFBQVIsQ0FBaUJ2QixDQURuQixFQUVFb0IsT0FBTyxDQUFDRyxRQUFSLENBQWlCdEIsQ0FGbkIsRUFHRW1CLE9BQU8sQ0FBQ0csUUFBUixDQUFpQnJCLENBSG5CO0FBS0QsS0FQRDtBQVFELEdBdkdZOztBQXlHYjs7Ozs7OztBQU9Bc0IsRUFBQUEsVUFBVSxFQUFHLFlBQVc7QUFDdEIsYUFBU0MsZ0JBQVQsQ0FBMEJDLElBQTFCLEVBQWdDdkMsTUFBaEMsRUFBd0M7QUFDdEMsVUFBSXdDLElBQUksR0FBR0QsSUFBSSxJQUFJLFVBQVIsR0FBcUIsZUFBckIsR0FBdUMsYUFBbEQ7QUFDQSxVQUFJRSxRQUFRLEdBQUd6QyxNQUFNLENBQUMwQyxTQUFQLENBQWlCLENBQWpCLENBQWY7QUFFQSxhQUFPRCxRQUFRLENBQUNELElBQUQsQ0FBUixDQUFlRyxHQUF0QjtBQUNEOztBQUVELGFBQVNDLGFBQVQsQ0FBdUI1QyxNQUF2QixFQUErQjtBQUM3QixVQUFJNkMsQ0FBQyxHQUFHN0MsTUFBTSxDQUFDOEMsUUFBUCxDQUFnQixDQUFoQixDQUFSO0FBRUEsYUFDRUMsSUFBSSxDQUFDQyxLQUFMLENBQVdILENBQUMsQ0FBQ0ksQ0FBRixDQUFJcEMsQ0FBZixJQUFvQixHQUFwQixHQUEwQmtDLElBQUksQ0FBQ0MsS0FBTCxDQUFXSCxDQUFDLENBQUNJLENBQUYsQ0FBSW5DLENBQWYsQ0FBMUIsR0FBOEMsR0FBOUMsR0FBb0RpQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0gsQ0FBQyxDQUFDSSxDQUFGLENBQUlsQyxDQUFmLENBRHREO0FBR0Q7O0FBRUQsV0FBTyxVQUFTZixNQUFULEVBQWlCa0QsS0FBakIsRUFBd0I7QUFDN0IsV0FBS0MsT0FBTCxDQUFhRCxLQUFiO0FBQ0EsVUFBSUUsR0FBRyxHQUFHLEVBQVY7O0FBRUEsY0FBUSxLQUFLQyxTQUFiO0FBQ0UsYUFBSyxDQUFMO0FBQ0VELFVBQUFBLEdBQUcsSUFBSSxhQUFhcEQsTUFBTSxDQUFDOEMsUUFBUCxDQUFnQlEsTUFBN0IsR0FBc0MsTUFBN0M7QUFDQUYsVUFBQUEsR0FBRyxJQUFJLGNBQWNwRCxNQUFNLENBQUM4QyxRQUFQLENBQWdCLENBQWhCLEVBQW1CSCxHQUFqQyxHQUF1QyxNQUE5QztBQUNBUyxVQUFBQSxHQUFHLElBQUksU0FBU1IsYUFBYSxDQUFDNUMsTUFBRCxDQUE3QjtBQUNBOztBQUVGLGFBQUssQ0FBTDtBQUNFb0QsVUFBQUEsR0FBRyxJQUFJcEQsTUFBTSxDQUFDMEMsU0FBUCxDQUFpQixDQUFqQixFQUFvQmEsSUFBcEIsR0FBMkIsTUFBbEM7QUFDQUgsVUFBQUEsR0FBRyxJQUFJLFlBQVlkLGdCQUFnQixDQUFDLFFBQUQsQ0FBNUIsR0FBeUMsTUFBaEQ7QUFDQWMsVUFBQUEsR0FBRyxJQUFJLGNBQWNkLGdCQUFnQixDQUFDLFVBQUQsQ0FBckM7QUFDQTs7QUFFRjtBQUNFYyxVQUFBQSxHQUFHLElBQUksZUFBZXBELE1BQU0sQ0FBQ3dELFFBQVAsRUFBZixHQUFtQyxNQUExQztBQUNBSixVQUFBQSxHQUFHLElBQUksVUFBVXBELE1BQU0sQ0FBQ3dDLElBQVAsQ0FBWWdCLFFBQVosRUFBVixHQUFtQyxNQUExQztBQUNBSixVQUFBQSxHQUFHLElBQUksWUFBWXBELE1BQU0sQ0FBQ3dELFFBQVAsS0FBb0J4RCxNQUFNLENBQUN3QyxJQUFQLENBQVlnQixRQUFaLEVBQWhDLENBQVA7QUFoQko7O0FBa0JBLFdBQUtDLFFBQUwsQ0FBY0MsU0FBZCxHQUEwQk4sR0FBMUI7QUFDRCxLQXZCRDtBQXdCRCxHQXhDVyxFQWhIQzs7QUEwSmI7Ozs7OztBQU1BRCxFQUFBQSxPQUFPLEVBQUcsWUFBVztBQUNuQixXQUFPLFVBQVNELEtBQVQsRUFBZ0I7QUFDckIsVUFBSVMsSUFBSSxHQUFHLElBQVg7O0FBRUEsVUFBSSxDQUFDLEtBQUtGLFFBQVYsRUFBb0I7QUFDbEIsYUFBS0EsUUFBTCxHQUFnQkcsUUFBUSxDQUFDQyxhQUFULENBQXVCLEtBQXZCLENBQWhCO0FBQ0EsYUFBS0osUUFBTCxDQUFjUCxLQUFkLENBQW9CWSxPQUFwQixHQUE4QixDQUM1QixrREFENEIsRUFFNUIsd0RBRjRCLEVBRzVCLDJEQUg0QixFQUk1QkMsSUFKNEIsQ0FJdkIsRUFKdUIsQ0FBOUI7QUFNQSxhQUFLVixTQUFMLEdBQWlCLENBQWpCOztBQUNBLGFBQUtJLFFBQUwsQ0FBYzFELGdCQUFkLENBQ0UsT0FERixFQUVFLFlBQVc7QUFDVDRELFVBQUFBLElBQUksQ0FBQ04sU0FBTDtBQUNBLGNBQUlNLElBQUksQ0FBQ04sU0FBTCxHQUFpQixDQUFyQixFQUF3Qk0sSUFBSSxDQUFDTixTQUFMLEdBQWlCLENBQWpCO0FBQ3pCLFNBTEgsRUFNRSxLQU5GOztBQVNBLFlBQUlXLEVBQUosRUFBUXpELEtBQVI7O0FBRUEsZ0JBQVEyQyxLQUFSO0FBQ0UsZUFBSyxDQUFMO0FBQ0VjLFlBQUFBLEVBQUUsR0FBRyxNQUFMO0FBQ0F6RCxZQUFBQSxLQUFLLEdBQUcsTUFBUjtBQUNBOztBQUVGLGVBQUssQ0FBTDtBQUNFeUQsWUFBQUEsRUFBRSxHQUFHLE1BQUw7QUFDQXpELFlBQUFBLEtBQUssR0FBRyxNQUFSO0FBQ0E7O0FBRUY7QUFDRXlELFlBQUFBLEVBQUUsR0FBRyxNQUFMO0FBQ0F6RCxZQUFBQSxLQUFLLEdBQUcsTUFBUjtBQWJKOztBQWdCQSxhQUFLa0QsUUFBTCxDQUFjUCxLQUFkLENBQW9CLGtCQUFwQixJQUEwQ2MsRUFBMUM7QUFDQSxhQUFLUCxRQUFMLENBQWNQLEtBQWQsQ0FBb0IsT0FBcEIsSUFBK0IzQyxLQUEvQjtBQUNEOztBQUVELFVBQUksQ0FBQyxLQUFLa0QsUUFBTCxDQUFjUSxVQUFuQixFQUErQkwsUUFBUSxDQUFDTSxJQUFULENBQWNDLFdBQWQsQ0FBMEIsS0FBS1YsUUFBL0I7QUFDaEMsS0E1Q0Q7QUE2Q0QsR0E5Q1E7QUFoS0ksQ0FBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFRkFVTFRfUE9TSVRJT04sIERFRkFVTFRfU0laRSBhcyBzaXplIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEBleHBvcnRzIERlYnVnIC0gbWV0aG9kcyBhbmQgaGVscGVycyBmb3IgZGVidWdnaW5nIFN5c3RlbSBlbWl0dGVycywgem9uZXMgYW5kIHBhcnRpY2xlcy5cbiAqIEByZXF1aXJlcyBUSFJFRSAtIHsgU3BoZXJlR2VvbWV0cnksIEJveEdlb21ldHJ5LCBNZXNoQmFzaWNNYXRlcmlhbCwgT2N0YWhlZHJvbkdlb21ldHJ5LCBNZXNoIH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuICAvKipcbiAgICogQWRkcyBhbiBldmVudCBsaXN0ZW5lciB0byB0aGUgc3lzdGVtIGluc3RhbmNlJ3MgU1lTVEVNX1VQREFURSBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtTeXN0ZW19IHN5c3RlbSAtIHRoZSBzeXN0ZW0gaW5zdGFuY2VcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25TeXN0ZW1VcGRhdGVkIC0gdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBzeXN0ZW0gaGFzIGJlZW4gdXBkYXRlZFxuICAgKiBAcmV0dXJuIHtEZWJ1Z31cbiAgICovXG4gIGFkZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKHN5c3RlbSwgb25TeXN0ZW1VcGRhdGVkKSB7XG4gICAgc3lzdGVtLmV2ZW50RGlzcGF0Y2hlci5hZGRFdmVudExpc3RlbmVyKCdTWVNURU1fVVBEQVRFJywgb25TeXN0ZW1VcGRhdGVkKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEcmF3cyBhIHdpcmVmcmFtZSBtZXNoIGFyb3VuZCB0aGUgem9uZSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge1N5c3RlbX0gc3lzdGVtIC0gdGhlIHN5c3RlbSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGFpbmVyIC0gYSB0aHJlZSBPYmplY3QzRCAodXN1YWxseSB0aGUgc2NlbmUpXG4gICAqIEBwYXJhbSB7Wm9uZX0gem9uZSAtIGEgWm9uZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRyYXdab25lOiBmdW5jdGlvbihUSFJFRSwgc3lzdGVtLCBjb250YWluZXIsIHpvbmUgPSB7fSkge1xuICAgIGNvbnN0IGNvbG9yID0gJyMyMTk0Y2UnO1xuICAgIGNvbnN0IHdpcmVmcmFtZSA9IHRydWU7XG4gICAgY29uc3Qge1xuICAgICAgd2lkdGggPSBzaXplLFxuICAgICAgaGVpZ2h0ID0gc2l6ZSxcbiAgICAgIGRlcHRoID0gc2l6ZSxcbiAgICAgIHJhZGl1cyA9IHNpemUsXG4gICAgICB4ID0gREVGQVVMVF9QT1NJVElPTixcbiAgICAgIHkgPSBERUZBVUxUX1BPU0lUSU9OLFxuICAgICAgeiA9IERFRkFVTFRfUE9TSVRJT04sXG4gICAgfSA9IHpvbmU7XG4gICAgbGV0IGdlb21ldHJ5O1xuXG4gICAgaWYgKHpvbmUuaXNQb2ludFpvbmUoKSkge1xuICAgICAgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuU3BoZXJlR2VvbWV0cnkoMTUpO1xuICAgIH1cblxuICAgIGlmICh6b25lLmlzTGluZVpvbmUoKSkge1xuICAgICAgLy8gVE9ET1xuICAgIH1cblxuICAgIGlmICh6b25lLmlzQm94Wm9uZSgpKSB7XG4gICAgICBnZW9tZXRyeSA9IG5ldyBUSFJFRS5Cb3hHZW9tZXRyeSh3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7XG4gICAgfVxuXG4gICAgaWYgKHpvbmUuaXNTcGhlcmVab25lKCkpIHtcbiAgICAgIGdlb21ldHJ5ID0gbmV3IFRIUkVFLlNwaGVyZUdlb21ldHJ5KHJhZGl1cywgc2l6ZSwgc2l6ZSk7XG4gICAgfVxuXG4gICAgaWYgKHpvbmUuaXNNZXNoWm9uZSgpKSB7XG4gICAgICBnZW9tZXRyeSA9IHpvbmUuZ2VvbWV0cnkuZ2VvbWV0cnlcbiAgICAgICAgPyB6b25lLmdlb21ldHJ5Lmdlb21ldHJ5LmNsb25lKClcbiAgICAgICAgOiB6b25lLmdlb21ldHJ5LmNsb25lKCk7XG4gICAgfVxuXG4gICAgaWYgKCFnZW9tZXRyeSkge1xuICAgICAgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuQm94R2VvbWV0cnkod2lkdGgsIGhlaWdodCwgZGVwdGgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHsgY29sb3IsIHdpcmVmcmFtZSB9KTtcbiAgICAvLyBOT1RFISBnZW9tZXRyeS5jbG9uZSBpcyByZXF1aXJlZCBmb3IgVU5LTk9XTiByZWFzb25zLFxuICAgIC8vIHRocmVlIGRvZXMgbm90IHJlbmRlciB0aGUgbWVzaCBjb3JyZWN0bHkgd2l0aG91dCBkb2luZyB0aGlzIHNpbmNlIHI4OFxuICAgIGNvbnN0IG1lc2ggPSBuZXcgVEhSRUUuTWVzaChnZW9tZXRyeS5jbG9uZSgpLCBtYXRlcmlhbCk7XG5cbiAgICBjb250YWluZXIuYWRkKG1lc2gpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHN5c3RlbSwgZnVuY3Rpb24oKSB7XG4gICAgICBtZXNoLnBvc2l0aW9uLnNldCh4LCB5LCB6KTtcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogRHJhd3MgYSBtZXNoIGZvciBlYWNoIHBhcnRpY2xlIGVtaXR0ZWQgaW4gb3JkZXIgdG8gaGVscCBkZWJ1ZyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzeXN0ZW0gLSB0aGUgc3lzdGVtIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250YWluZXIgLSBhIHRocmVlIE9iamVjdDNEICh1c3VhbGx5IHRoZSBzY2VuZSlcbiAgICogQHBhcmFtIHtvYmplY3R9IGVtaXR0ZXIgLSB0aGUgZW1pdHRlciB0byBkZWJ1Z1xuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sb3IgLSB0aGUgY29sb3IgZm9yIHRoZSBkZWJ1ZyBtZXNoIG1hdGVyaWFsXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgZHJhd0VtaXR0ZXI6IGZ1bmN0aW9uKFRIUkVFLCBzeXN0ZW0sIGNvbnRhaW5lciwgZW1pdHRlciwgY29sb3IpIHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBUSFJFRS5PY3RhaGVkcm9uR2VvbWV0cnkoc2l6ZSk7XG4gICAgY29uc3QgbWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoe1xuICAgICAgY29sb3I6IGNvbG9yIHx8ICcjYWFhJyxcbiAgICAgIHdpcmVmcmFtZTogdHJ1ZSxcbiAgICB9KTtcbiAgICAvLyBOT1RFISBnZW9tZXRyeS5jbG9uZSBpcyByZXF1aXJlZCBmb3IgVU5LTk9XTiByZWFzb25zLFxuICAgIC8vIHRocmVlIGRvZXMgbm90IHJlbmRlciB0aGUgbWVzaCBjb3JyZWN0bHkgd2l0aG91dCBkb2luZyB0aGlzIHNpbmNlIHI4OFxuICAgIGNvbnN0IG1lc2ggPSBuZXcgVEhSRUUuTWVzaChnZW9tZXRyeS5jbG9uZSgpLCBtYXRlcmlhbCk7XG5cbiAgICBjb250YWluZXIuYWRkKG1lc2gpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHN5c3RlbSwgZnVuY3Rpb24oKSB7XG4gICAgICBtZXNoLnBvc2l0aW9uLmNvcHkoZW1pdHRlci5wb3NpdGlvbik7XG4gICAgICBtZXNoLnJvdGF0aW9uLnNldChcbiAgICAgICAgZW1pdHRlci5yb3RhdGlvbi54LFxuICAgICAgICBlbWl0dGVyLnJvdGF0aW9uLnksXG4gICAgICAgIGVtaXR0ZXIucm90YXRpb24uelxuICAgICAgKTtcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVuZGVycyBlbWl0dGVyIC8gcGFydGljbGUgaW5mb3JtYXRpb24gaW50byB0aGUgaW5mbyBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3lzdGVtIC0gdGhlIHN5c3RlbSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge2ludGVnZXJ9IHN0eWxlIC0gc3R5bGUgdG8gYXBwbHkgKHNlZSB0aGUgYWRkSW5mbyBtZXRob2QncyBzd2l0Y2ggc3RhdGVtZW50KVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHJlbmRlckluZm86IChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBnZXRDcmVhdGVkTnVtYmVyKHR5cGUsIHN5c3RlbSkge1xuICAgICAgdmFyIHBvb2wgPSB0eXBlID09ICdtYXRlcmlhbCcgPyAnX21hdGVyaWFsUG9vbCcgOiAnX3RhcmdldFBvb2wnO1xuICAgICAgdmFyIHJlbmRlcmVyID0gc3lzdGVtLnJlbmRlcmVyc1swXTtcblxuICAgICAgcmV0dXJuIHJlbmRlcmVyW3Bvb2xdLmNJRDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFbWl0dGVyUG9zKHN5c3RlbSkge1xuICAgICAgdmFyIGUgPSBzeXN0ZW0uZW1pdHRlcnNbMF07XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIE1hdGgucm91bmQoZS5wLngpICsgJywnICsgTWF0aC5yb3VuZChlLnAueSkgKyAnLCcgKyBNYXRoLnJvdW5kKGUucC56KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24oc3lzdGVtLCBzdHlsZSkge1xuICAgICAgdGhpcy5hZGRJbmZvKHN0eWxlKTtcbiAgICAgIHZhciBzdHIgPSAnJztcblxuICAgICAgc3dpdGNoICh0aGlzLl9pbmZvVHlwZSkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc3RyICs9ICdlbWl0dGVyOicgKyBzeXN0ZW0uZW1pdHRlcnMubGVuZ3RoICsgJzxicj4nO1xuICAgICAgICAgIHN0ciArPSAnZW0gc3BlZWQ6JyArIHN5c3RlbS5lbWl0dGVyc1swXS5jSUQgKyAnPGJyPic7XG4gICAgICAgICAgc3RyICs9ICdwb3M6JyArIGdldEVtaXR0ZXJQb3Moc3lzdGVtKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgc3RyICs9IHN5c3RlbS5yZW5kZXJlcnNbMF0ubmFtZSArICc8YnI+JztcbiAgICAgICAgICBzdHIgKz0gJ3RhcmdldDonICsgZ2V0Q3JlYXRlZE51bWJlcigndGFyZ2V0JykgKyAnPGJyPic7XG4gICAgICAgICAgc3RyICs9ICdtYXRlcmlhbDonICsgZ2V0Q3JlYXRlZE51bWJlcignbWF0ZXJpYWwnKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHN0ciArPSAncGFydGljbGVzOicgKyBzeXN0ZW0uZ2V0Q291bnQoKSArICc8YnI+JztcbiAgICAgICAgICBzdHIgKz0gJ3Bvb2w6JyArIHN5c3RlbS5wb29sLmdldENvdW50KCkgKyAnPGJyPic7XG4gICAgICAgICAgc3RyICs9ICd0b3RhbDonICsgKHN5c3RlbS5nZXRDb3VudCgpICsgc3lzdGVtLnBvb2wuZ2V0Q291bnQoKSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9pbmZvQ29uLmlubmVySFRNTCA9IHN0cjtcbiAgICB9O1xuICB9KSgpLFxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBpbmZvIGVsZW1lbnQgaW50byB0aGUgZG9tLlxuICAgKlxuICAgKiBAcGFyYW0ge2ludGVnZXJ9IHN0eWxlIC0gdGhlIHN0eWxlIHR5cGUgdG8gYXBwbHlcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBhZGRJbmZvOiAoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHN0eWxlKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5faW5mb0Nvbikge1xuICAgICAgICB0aGlzLl9pbmZvQ29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMuX2luZm9Db24uc3R5bGUuY3NzVGV4dCA9IFtcbiAgICAgICAgICAncG9zaXRpb246Zml4ZWQ7Ym90dG9tOjBweDtsZWZ0OjA7Y3Vyc29yOnBvaW50ZXI7JyxcbiAgICAgICAgICAnb3BhY2l0eTowLjk7ei1pbmRleDoxMDAwMDtwYWRkaW5nOjEwcHg7Zm9udC1zaXplOjEycHg7JyxcbiAgICAgICAgICAnd2lkdGg6MTIwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjojMDAyO2NvbG9yOiMwZmY7JyxcbiAgICAgICAgXS5qb2luKCcnKTtcblxuICAgICAgICB0aGlzLl9pbmZvVHlwZSA9IDE7XG4gICAgICAgIHRoaXMuX2luZm9Db24uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAnY2xpY2snLFxuICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgc2VsZi5faW5mb1R5cGUrKztcbiAgICAgICAgICAgIGlmIChzZWxmLl9pbmZvVHlwZSA+IDMpIHNlbGYuX2luZm9UeXBlID0gMTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG5cbiAgICAgICAgdmFyIGJnLCBjb2xvcjtcblxuICAgICAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgYmcgPSAnIzIwMSc7XG4gICAgICAgICAgICBjb2xvciA9ICcjZjA4JztcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgYmcgPSAnIzAyMCc7XG4gICAgICAgICAgICBjb2xvciA9ICcjMGYwJztcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJnID0gJyMwMDInO1xuICAgICAgICAgICAgY29sb3IgPSAnIzBmZic7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pbmZvQ29uLnN0eWxlWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSBiZztcbiAgICAgICAgdGhpcy5faW5mb0Nvbi5zdHlsZVsnY29sb3InXSA9IGNvbG9yO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX2luZm9Db24ucGFyZW50Tm9kZSkgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9pbmZvQ29uKTtcbiAgICB9O1xuICB9KSgpLFxufTtcbiJdfQ==
195
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy9EZWJ1Zy5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX1BPU0lUSU9OIiwiREVGQVVMVF9TSVpFIiwic2l6ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJzeXN0ZW0iLCJvblN5c3RlbVVwZGF0ZWQiLCJldmVudERpc3BhdGNoZXIiLCJkcmF3Wm9uZSIsIlRIUkVFIiwiY29udGFpbmVyIiwiem9uZSIsImNvbG9yIiwid2lyZWZyYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJkZXB0aCIsInJhZGl1cyIsIngiLCJ5IiwieiIsImdlb21ldHJ5IiwiaXNQb2ludFpvbmUiLCJTcGhlcmVHZW9tZXRyeSIsImlzTGluZVpvbmUiLCJpc0JveFpvbmUiLCJCb3hHZW9tZXRyeSIsImlzU3BoZXJlWm9uZSIsImlzTWVzaFpvbmUiLCJjbG9uZSIsIm1hdGVyaWFsIiwiTWVzaEJhc2ljTWF0ZXJpYWwiLCJtZXNoIiwiTWVzaCIsImFkZCIsInBvc2l0aW9uIiwic2V0IiwiZHJhd0VtaXR0ZXIiLCJlbWl0dGVyIiwiT2N0YWhlZHJvbkdlb21ldHJ5IiwiY29weSIsInJvdGF0aW9uIiwicmVuZGVySW5mbyIsImdldENyZWF0ZWROdW1iZXIiLCJ0eXBlIiwicG9vbCIsInJlbmRlcmVyIiwicmVuZGVyZXJzIiwiY0lEIiwiZ2V0RW1pdHRlclBvcyIsImUiLCJlbWl0dGVycyIsIk1hdGgiLCJyb3VuZCIsInAiLCJzdHlsZSIsImFkZEluZm8iLCJzdHIiLCJfaW5mb1R5cGUiLCJsZW5ndGgiLCJuYW1lIiwiZ2V0Q291bnQiLCJfaW5mb0NvbiIsImlubmVySFRNTCIsInNlbGYiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjc3NUZXh0Iiwiam9pbiIsImJnIiwicGFyZW50Tm9kZSIsImJvZHkiLCJhcHBlbmRDaGlsZCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQVQsRUFBMkJDLFlBQVksSUFBSUMsSUFBM0MsUUFBdUQsYUFBdkQ7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxlQUFlO0FBQ2I7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRUMsRUFBQUEsZ0JBQWdCLEVBQUUsVUFBU0MsTUFBVCxFQUFpQkMsZUFBakIsRUFBa0M7QUFDbERELElBQUFBLE1BQU0sQ0FBQ0UsZUFBUCxDQUF1QkgsZ0JBQXZCLENBQXdDLGVBQXhDLEVBQXlERSxlQUF6RDtBQUVBLFdBQU8sSUFBUDtBQUNELEdBWlk7O0FBY2I7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFRSxFQUFBQSxRQUFRLEVBQUUsVUFBU0MsS0FBVCxFQUFnQkosTUFBaEIsRUFBd0JLLFNBQXhCLEVBQW1DQyxJQUFJLEdBQUcsRUFBMUMsRUFBOEM7QUFDdEQsVUFBTUMsS0FBSyxHQUFHLFNBQWQ7QUFDQSxVQUFNQyxTQUFTLEdBQUcsSUFBbEI7QUFDQSxVQUFNO0FBQ0pDLE1BQUFBLEtBQUssR0FBR1gsSUFESjtBQUVKWSxNQUFBQSxNQUFNLEdBQUdaLElBRkw7QUFHSmEsTUFBQUEsS0FBSyxHQUFHYixJQUhKO0FBSUpjLE1BQUFBLE1BQU0sR0FBR2QsSUFKTDtBQUtKZSxNQUFBQSxDQUFDLEdBQUdqQixnQkFMQTtBQU1Ka0IsTUFBQUEsQ0FBQyxHQUFHbEIsZ0JBTkE7QUFPSm1CLE1BQUFBLENBQUMsR0FBR25CO0FBUEEsUUFRRlUsSUFSSjtBQVVBLFFBQUlVLFFBQUo7O0FBRUEsUUFBSVYsSUFBSSxDQUFDVyxXQUFMLEVBQUosRUFBd0I7QUFDdEJELE1BQUFBLFFBQVEsR0FBRyxJQUFJWixLQUFLLENBQUNjLGNBQVYsQ0FBeUIsRUFBekIsQ0FBWDtBQUNEOztBQUVELFFBQUlaLElBQUksQ0FBQ2EsVUFBTCxFQUFKLEVBQXVCLENBQ3JCO0FBQ0Q7O0FBRUQsUUFBSWIsSUFBSSxDQUFDYyxTQUFMLEVBQUosRUFBc0I7QUFDcEJKLE1BQUFBLFFBQVEsR0FBRyxJQUFJWixLQUFLLENBQUNpQixXQUFWLENBQXNCWixLQUF0QixFQUE2QkMsTUFBN0IsRUFBcUNDLEtBQXJDLENBQVg7QUFDRDs7QUFFRCxRQUFJTCxJQUFJLENBQUNnQixZQUFMLEVBQUosRUFBeUI7QUFDdkJOLE1BQUFBLFFBQVEsR0FBRyxJQUFJWixLQUFLLENBQUNjLGNBQVYsQ0FBeUJOLE1BQXpCLEVBQWlDZCxJQUFqQyxFQUF1Q0EsSUFBdkMsQ0FBWDtBQUNEOztBQUVELFFBQUlRLElBQUksQ0FBQ2lCLFVBQUwsRUFBSixFQUF1QjtBQUNyQlAsTUFBQUEsUUFBUSxHQUFHVixJQUFJLENBQUNVLFFBQUwsQ0FBY0EsUUFBZCxHQUNQVixJQUFJLENBQUNVLFFBQUwsQ0FBY0EsUUFBZCxDQUF1QlEsS0FBdkIsRUFETyxHQUVQbEIsSUFBSSxDQUFDVSxRQUFMLENBQWNRLEtBQWQsRUFGSjtBQUdEOztBQUVELFFBQUksQ0FBQ1IsUUFBTCxFQUFlO0FBQ2JBLE1BQUFBLFFBQVEsR0FBRyxJQUFJWixLQUFLLENBQUNpQixXQUFWLENBQXNCWixLQUF0QixFQUE2QkMsTUFBN0IsRUFBcUNDLEtBQXJDLENBQVg7QUFDRDs7QUFFRCxVQUFNYyxRQUFRLEdBQUcsSUFBSXJCLEtBQUssQ0FBQ3NCLGlCQUFWLENBQTRCO0FBQUVuQixNQUFBQSxLQUFGO0FBQVNDLE1BQUFBO0FBQVQsS0FBNUIsQ0FBakIsQ0F6Q3NELENBMEN0RDtBQUNBOztBQUNBLFVBQU1tQixJQUFJLEdBQUcsSUFBSXZCLEtBQUssQ0FBQ3dCLElBQVYsQ0FBZVosUUFBUSxDQUFDUSxLQUFULEVBQWYsRUFBaUNDLFFBQWpDLENBQWI7QUFFQXBCLElBQUFBLFNBQVMsQ0FBQ3dCLEdBQVYsQ0FBY0YsSUFBZDtBQUVBLFNBQUs1QixnQkFBTCxDQUFzQkMsTUFBdEIsRUFBOEIsWUFBVztBQUN2QzJCLE1BQUFBLElBQUksQ0FBQ0csUUFBTCxDQUFjQyxHQUFkLENBQWtCbEIsQ0FBbEIsRUFBcUJDLENBQXJCLEVBQXdCQyxDQUF4QjtBQUNELEtBRkQ7QUFHRCxHQXpFWTs7QUEyRWI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VpQixFQUFBQSxXQUFXLEVBQUUsVUFBUzVCLEtBQVQsRUFBZ0JKLE1BQWhCLEVBQXdCSyxTQUF4QixFQUFtQzRCLE9BQW5DLEVBQTRDMUIsS0FBNUMsRUFBbUQ7QUFDOUQsVUFBTVMsUUFBUSxHQUFHLElBQUlaLEtBQUssQ0FBQzhCLGtCQUFWLENBQTZCcEMsSUFBN0IsQ0FBakI7QUFDQSxVQUFNMkIsUUFBUSxHQUFHLElBQUlyQixLQUFLLENBQUNzQixpQkFBVixDQUE0QjtBQUMzQ25CLE1BQUFBLEtBQUssRUFBRUEsS0FBSyxJQUFJLE1BRDJCO0FBRTNDQyxNQUFBQSxTQUFTLEVBQUU7QUFGZ0MsS0FBNUIsQ0FBakIsQ0FGOEQsQ0FNOUQ7QUFDQTs7QUFDQSxVQUFNbUIsSUFBSSxHQUFHLElBQUl2QixLQUFLLENBQUN3QixJQUFWLENBQWVaLFFBQVEsQ0FBQ1EsS0FBVCxFQUFmLEVBQWlDQyxRQUFqQyxDQUFiO0FBRUFwQixJQUFBQSxTQUFTLENBQUN3QixHQUFWLENBQWNGLElBQWQ7QUFFQSxTQUFLNUIsZ0JBQUwsQ0FBc0JDLE1BQXRCLEVBQThCLFlBQVc7QUFDdkMyQixNQUFBQSxJQUFJLENBQUNHLFFBQUwsQ0FBY0ssSUFBZCxDQUFtQkYsT0FBTyxDQUFDSCxRQUEzQjtBQUNBSCxNQUFBQSxJQUFJLENBQUNTLFFBQUwsQ0FBY0wsR0FBZCxDQUNFRSxPQUFPLENBQUNHLFFBQVIsQ0FBaUJ2QixDQURuQixFQUVFb0IsT0FBTyxDQUFDRyxRQUFSLENBQWlCdEIsQ0FGbkIsRUFHRW1CLE9BQU8sQ0FBQ0csUUFBUixDQUFpQnJCLENBSG5CO0FBS0QsS0FQRDtBQVFELEdBeEdZOztBQTBHYjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFc0IsRUFBQUEsVUFBVSxFQUFHLFlBQVc7QUFDdEIsYUFBU0MsZ0JBQVQsQ0FBMEJDLElBQTFCLEVBQWdDdkMsTUFBaEMsRUFBd0M7QUFDdEMsVUFBSXdDLElBQUksR0FBR0QsSUFBSSxJQUFJLFVBQVIsR0FBcUIsZUFBckIsR0FBdUMsYUFBbEQ7QUFDQSxVQUFJRSxRQUFRLEdBQUd6QyxNQUFNLENBQUMwQyxTQUFQLENBQWlCLENBQWpCLENBQWY7QUFFQSxhQUFPRCxRQUFRLENBQUNELElBQUQsQ0FBUixDQUFlRyxHQUF0QjtBQUNEOztBQUVELGFBQVNDLGFBQVQsQ0FBdUI1QyxNQUF2QixFQUErQjtBQUM3QixVQUFJNkMsQ0FBQyxHQUFHN0MsTUFBTSxDQUFDOEMsUUFBUCxDQUFnQixDQUFoQixDQUFSO0FBRUEsYUFDRUMsSUFBSSxDQUFDQyxLQUFMLENBQVdILENBQUMsQ0FBQ0ksQ0FBRixDQUFJcEMsQ0FBZixJQUFvQixHQUFwQixHQUEwQmtDLElBQUksQ0FBQ0MsS0FBTCxDQUFXSCxDQUFDLENBQUNJLENBQUYsQ0FBSW5DLENBQWYsQ0FBMUIsR0FBOEMsR0FBOUMsR0FBb0RpQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0gsQ0FBQyxDQUFDSSxDQUFGLENBQUlsQyxDQUFmLENBRHREO0FBR0Q7O0FBRUQsV0FBTyxVQUFTZixNQUFULEVBQWlCa0QsS0FBakIsRUFBd0I7QUFDN0IsV0FBS0MsT0FBTCxDQUFhRCxLQUFiO0FBQ0EsVUFBSUUsR0FBRyxHQUFHLEVBQVY7O0FBRUEsY0FBUSxLQUFLQyxTQUFiO0FBQ0UsYUFBSyxDQUFMO0FBQ0VELFVBQUFBLEdBQUcsSUFBSSxhQUFhcEQsTUFBTSxDQUFDOEMsUUFBUCxDQUFnQlEsTUFBN0IsR0FBc0MsTUFBN0M7QUFDQUYsVUFBQUEsR0FBRyxJQUFJLGNBQWNwRCxNQUFNLENBQUM4QyxRQUFQLENBQWdCLENBQWhCLEVBQW1CSCxHQUFqQyxHQUF1QyxNQUE5QztBQUNBUyxVQUFBQSxHQUFHLElBQUksU0FBU1IsYUFBYSxDQUFDNUMsTUFBRCxDQUE3QjtBQUNBOztBQUVGLGFBQUssQ0FBTDtBQUNFb0QsVUFBQUEsR0FBRyxJQUFJcEQsTUFBTSxDQUFDMEMsU0FBUCxDQUFpQixDQUFqQixFQUFvQmEsSUFBcEIsR0FBMkIsTUFBbEM7QUFDQUgsVUFBQUEsR0FBRyxJQUFJLFlBQVlkLGdCQUFnQixDQUFDLFFBQUQsQ0FBNUIsR0FBeUMsTUFBaEQ7QUFDQWMsVUFBQUEsR0FBRyxJQUFJLGNBQWNkLGdCQUFnQixDQUFDLFVBQUQsQ0FBckM7QUFDQTs7QUFFRjtBQUNFYyxVQUFBQSxHQUFHLElBQUksZUFBZXBELE1BQU0sQ0FBQ3dELFFBQVAsRUFBZixHQUFtQyxNQUExQztBQUNBSixVQUFBQSxHQUFHLElBQUksVUFBVXBELE1BQU0sQ0FBQ3dDLElBQVAsQ0FBWWdCLFFBQVosRUFBVixHQUFtQyxNQUExQztBQUNBSixVQUFBQSxHQUFHLElBQUksWUFBWXBELE1BQU0sQ0FBQ3dELFFBQVAsS0FBb0J4RCxNQUFNLENBQUN3QyxJQUFQLENBQVlnQixRQUFaLEVBQWhDLENBQVA7QUFoQko7O0FBa0JBLFdBQUtDLFFBQUwsQ0FBY0MsU0FBZCxHQUEwQk4sR0FBMUI7QUFDRCxLQXZCRDtBQXdCRCxHQXhDVyxFQWpIQzs7QUEySmI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VELEVBQUFBLE9BQU8sRUFBRyxZQUFXO0FBQ25CLFdBQU8sVUFBU0QsS0FBVCxFQUFnQjtBQUNyQixVQUFJUyxJQUFJLEdBQUcsSUFBWDs7QUFFQSxVQUFJLENBQUMsS0FBS0YsUUFBVixFQUFvQjtBQUNsQixhQUFLQSxRQUFMLEdBQWdCRyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBaEI7QUFDQSxhQUFLSixRQUFMLENBQWNQLEtBQWQsQ0FBb0JZLE9BQXBCLEdBQThCLENBQzVCLGtEQUQ0QixFQUU1Qix3REFGNEIsRUFHNUIsMkRBSDRCLEVBSTVCQyxJQUo0QixDQUl2QixFQUp1QixDQUE5QjtBQU1BLGFBQUtWLFNBQUwsR0FBaUIsQ0FBakI7O0FBQ0EsYUFBS0ksUUFBTCxDQUFjMUQsZ0JBQWQsQ0FDRSxPQURGLEVBRUUsWUFBVztBQUNUNEQsVUFBQUEsSUFBSSxDQUFDTixTQUFMO0FBQ0EsY0FBSU0sSUFBSSxDQUFDTixTQUFMLEdBQWlCLENBQXJCLEVBQXdCTSxJQUFJLENBQUNOLFNBQUwsR0FBaUIsQ0FBakI7QUFDekIsU0FMSCxFQU1FLEtBTkY7O0FBU0EsWUFBSVcsRUFBSixFQUFRekQsS0FBUjs7QUFFQSxnQkFBUTJDLEtBQVI7QUFDRSxlQUFLLENBQUw7QUFDRWMsWUFBQUEsRUFBRSxHQUFHLE1BQUw7QUFDQXpELFlBQUFBLEtBQUssR0FBRyxNQUFSO0FBQ0E7O0FBRUYsZUFBSyxDQUFMO0FBQ0V5RCxZQUFBQSxFQUFFLEdBQUcsTUFBTDtBQUNBekQsWUFBQUEsS0FBSyxHQUFHLE1BQVI7QUFDQTs7QUFFRjtBQUNFeUQsWUFBQUEsRUFBRSxHQUFHLE1BQUw7QUFDQXpELFlBQUFBLEtBQUssR0FBRyxNQUFSO0FBYko7O0FBZ0JBLGFBQUtrRCxRQUFMLENBQWNQLEtBQWQsQ0FBb0Isa0JBQXBCLElBQTBDYyxFQUExQztBQUNBLGFBQUtQLFFBQUwsQ0FBY1AsS0FBZCxDQUFvQixPQUFwQixJQUErQjNDLEtBQS9CO0FBQ0Q7O0FBRUQsVUFBSSxDQUFDLEtBQUtrRCxRQUFMLENBQWNRLFVBQW5CLEVBQStCTCxRQUFRLENBQUNNLElBQVQsQ0FBY0MsV0FBZCxDQUEwQixLQUFLVixRQUEvQjtBQUNoQyxLQTVDRDtBQTZDRCxHQTlDUTtBQWpLSSxDQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVGQVVMVF9QT1NJVElPTiwgREVGQVVMVF9TSVpFIGFzIHNpemUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogQGV4cG9ydHMgRGVidWcgLSBtZXRob2RzIGFuZCBoZWxwZXJzIGZvciBkZWJ1Z2dpbmcgU3lzdGVtIGVtaXR0ZXJzLCB6b25lcyBhbmQgcGFydGljbGVzLlxuICogQHJlcXVpcmVzIFRIUkVFIC0geyBTcGhlcmVHZW9tZXRyeSwgQm94R2VvbWV0cnksIE1lc2hCYXNpY01hdGVyaWFsLCBPY3RhaGVkcm9uR2VvbWV0cnksIE1lc2ggfVxuICovXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8qKlxuICAgKiBBZGRzIGFuIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBzeXN0ZW0gaW5zdGFuY2UncyBTWVNURU1fVVBEQVRFIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1N5c3RlbX0gc3lzdGVtIC0gdGhlIHN5c3RlbSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvblN5c3RlbVVwZGF0ZWQgLSB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHN5c3RlbSBoYXMgYmVlbiB1cGRhdGVkXG4gICAqIEByZXR1cm4ge0RlYnVnfVxuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oc3lzdGVtLCBvblN5c3RlbVVwZGF0ZWQpIHtcbiAgICBzeXN0ZW0uZXZlbnREaXNwYXRjaGVyLmFkZEV2ZW50TGlzdGVuZXIoJ1NZU1RFTV9VUERBVEUnLCBvblN5c3RlbVVwZGF0ZWQpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERyYXdzIGEgd2lyZWZyYW1lIG1lc2ggYXJvdW5kIHRoZSB6b25lIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7U3lzdGVtfSBzeXN0ZW0gLSB0aGUgc3lzdGVtIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250YWluZXIgLSBhIHRocmVlIE9iamVjdDNEICh1c3VhbGx5IHRoZSBzY2VuZSlcbiAgICogQHBhcmFtIHtab25lfSB6b25lIC0gYSBab25lIGluc3RhbmNlXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgZHJhd1pvbmU6IGZ1bmN0aW9uKFRIUkVFLCBzeXN0ZW0sIGNvbnRhaW5lciwgem9uZSA9IHt9KSB7XG4gICAgY29uc3QgY29sb3IgPSAnIzIxOTRjZSc7XG4gICAgY29uc3Qgd2lyZWZyYW1lID0gdHJ1ZTtcbiAgICBjb25zdCB7XG4gICAgICB3aWR0aCA9IHNpemUsXG4gICAgICBoZWlnaHQgPSBzaXplLFxuICAgICAgZGVwdGggPSBzaXplLFxuICAgICAgcmFkaXVzID0gc2l6ZSxcbiAgICAgIHggPSBERUZBVUxUX1BPU0lUSU9OLFxuICAgICAgeSA9IERFRkFVTFRfUE9TSVRJT04sXG4gICAgICB6ID0gREVGQVVMVF9QT1NJVElPTixcbiAgICB9ID0gem9uZTtcblxuICAgIGxldCBnZW9tZXRyeTtcblxuICAgIGlmICh6b25lLmlzUG9pbnRab25lKCkpIHtcbiAgICAgIGdlb21ldHJ5ID0gbmV3IFRIUkVFLlNwaGVyZUdlb21ldHJ5KDE1KTtcbiAgICB9XG5cbiAgICBpZiAoem9uZS5pc0xpbmVab25lKCkpIHtcbiAgICAgIC8vIFRPRE9cbiAgICB9XG5cbiAgICBpZiAoem9uZS5pc0JveFpvbmUoKSkge1xuICAgICAgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuQm94R2VvbWV0cnkod2lkdGgsIGhlaWdodCwgZGVwdGgpO1xuICAgIH1cblxuICAgIGlmICh6b25lLmlzU3BoZXJlWm9uZSgpKSB7XG4gICAgICBnZW9tZXRyeSA9IG5ldyBUSFJFRS5TcGhlcmVHZW9tZXRyeShyYWRpdXMsIHNpemUsIHNpemUpO1xuICAgIH1cblxuICAgIGlmICh6b25lLmlzTWVzaFpvbmUoKSkge1xuICAgICAgZ2VvbWV0cnkgPSB6b25lLmdlb21ldHJ5Lmdlb21ldHJ5XG4gICAgICAgID8gem9uZS5nZW9tZXRyeS5nZW9tZXRyeS5jbG9uZSgpXG4gICAgICAgIDogem9uZS5nZW9tZXRyeS5jbG9uZSgpO1xuICAgIH1cblxuICAgIGlmICghZ2VvbWV0cnkpIHtcbiAgICAgIGdlb21ldHJ5ID0gbmV3IFRIUkVFLkJveEdlb21ldHJ5KHdpZHRoLCBoZWlnaHQsIGRlcHRoKTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7IGNvbG9yLCB3aXJlZnJhbWUgfSk7XG4gICAgLy8gTk9URSEgZ2VvbWV0cnkuY2xvbmUgaXMgcmVxdWlyZWQgZm9yIFVOS05PV04gcmVhc29ucyxcbiAgICAvLyB0aHJlZSBkb2VzIG5vdCByZW5kZXIgdGhlIG1lc2ggY29ycmVjdGx5IHdpdGhvdXQgZG9pbmcgdGhpcyBzaW5jZSByODhcbiAgICBjb25zdCBtZXNoID0gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnkuY2xvbmUoKSwgbWF0ZXJpYWwpO1xuXG4gICAgY29udGFpbmVyLmFkZChtZXNoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzeXN0ZW0sIGZ1bmN0aW9uKCkge1xuICAgICAgbWVzaC5wb3NpdGlvbi5zZXQoeCwgeSwgeik7XG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERyYXdzIGEgbWVzaCBmb3IgZWFjaCBwYXJ0aWNsZSBlbWl0dGVkIGluIG9yZGVyIHRvIGhlbHAgZGVidWcgcGFydGljbGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3lzdGVtIC0gdGhlIHN5c3RlbSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGFpbmVyIC0gYSB0aHJlZSBPYmplY3QzRCAodXN1YWxseSB0aGUgc2NlbmUpXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBlbWl0dGVyIC0gdGhlIGVtaXR0ZXIgdG8gZGVidWdcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yIC0gdGhlIGNvbG9yIGZvciB0aGUgZGVidWcgbWVzaCBtYXRlcmlhbFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRyYXdFbWl0dGVyOiBmdW5jdGlvbihUSFJFRSwgc3lzdGVtLCBjb250YWluZXIsIGVtaXR0ZXIsIGNvbG9yKSB7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuT2N0YWhlZHJvbkdlb21ldHJ5KHNpemUpO1xuICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHtcbiAgICAgIGNvbG9yOiBjb2xvciB8fCAnI2FhYScsXG4gICAgICB3aXJlZnJhbWU6IHRydWUsXG4gICAgfSk7XG4gICAgLy8gTk9URSEgZ2VvbWV0cnkuY2xvbmUgaXMgcmVxdWlyZWQgZm9yIFVOS05PV04gcmVhc29ucyxcbiAgICAvLyB0aHJlZSBkb2VzIG5vdCByZW5kZXIgdGhlIG1lc2ggY29ycmVjdGx5IHdpdGhvdXQgZG9pbmcgdGhpcyBzaW5jZSByODhcbiAgICBjb25zdCBtZXNoID0gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnkuY2xvbmUoKSwgbWF0ZXJpYWwpO1xuXG4gICAgY29udGFpbmVyLmFkZChtZXNoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzeXN0ZW0sIGZ1bmN0aW9uKCkge1xuICAgICAgbWVzaC5wb3NpdGlvbi5jb3B5KGVtaXR0ZXIucG9zaXRpb24pO1xuICAgICAgbWVzaC5yb3RhdGlvbi5zZXQoXG4gICAgICAgIGVtaXR0ZXIucm90YXRpb24ueCxcbiAgICAgICAgZW1pdHRlci5yb3RhdGlvbi55LFxuICAgICAgICBlbWl0dGVyLnJvdGF0aW9uLnpcbiAgICAgICk7XG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgZW1pdHRlciAvIHBhcnRpY2xlIGluZm9ybWF0aW9uIGludG8gdGhlIGluZm8gZWxlbWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHN5c3RlbSAtIHRoZSBzeXN0ZW0gaW5zdGFuY2VcbiAgICogQHBhcmFtIHtpbnRlZ2VyfSBzdHlsZSAtIHN0eWxlIHRvIGFwcGx5IChzZWUgdGhlIGFkZEluZm8gbWV0aG9kJ3Mgc3dpdGNoIHN0YXRlbWVudClcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICByZW5kZXJJbmZvOiAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZ2V0Q3JlYXRlZE51bWJlcih0eXBlLCBzeXN0ZW0pIHtcbiAgICAgIHZhciBwb29sID0gdHlwZSA9PSAnbWF0ZXJpYWwnID8gJ19tYXRlcmlhbFBvb2wnIDogJ190YXJnZXRQb29sJztcbiAgICAgIHZhciByZW5kZXJlciA9IHN5c3RlbS5yZW5kZXJlcnNbMF07XG5cbiAgICAgIHJldHVybiByZW5kZXJlcltwb29sXS5jSUQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RW1pdHRlclBvcyhzeXN0ZW0pIHtcbiAgICAgIHZhciBlID0gc3lzdGVtLmVtaXR0ZXJzWzBdO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICBNYXRoLnJvdW5kKGUucC54KSArICcsJyArIE1hdGgucm91bmQoZS5wLnkpICsgJywnICsgTWF0aC5yb3VuZChlLnAueilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHN5c3RlbSwgc3R5bGUpIHtcbiAgICAgIHRoaXMuYWRkSW5mbyhzdHlsZSk7XG4gICAgICB2YXIgc3RyID0gJyc7XG5cbiAgICAgIHN3aXRjaCAodGhpcy5faW5mb1R5cGUpIHtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHN0ciArPSAnZW1pdHRlcjonICsgc3lzdGVtLmVtaXR0ZXJzLmxlbmd0aCArICc8YnI+JztcbiAgICAgICAgICBzdHIgKz0gJ2VtIHNwZWVkOicgKyBzeXN0ZW0uZW1pdHRlcnNbMF0uY0lEICsgJzxicj4nO1xuICAgICAgICAgIHN0ciArPSAncG9zOicgKyBnZXRFbWl0dGVyUG9zKHN5c3RlbSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHN0ciArPSBzeXN0ZW0ucmVuZGVyZXJzWzBdLm5hbWUgKyAnPGJyPic7XG4gICAgICAgICAgc3RyICs9ICd0YXJnZXQ6JyArIGdldENyZWF0ZWROdW1iZXIoJ3RhcmdldCcpICsgJzxicj4nO1xuICAgICAgICAgIHN0ciArPSAnbWF0ZXJpYWw6JyArIGdldENyZWF0ZWROdW1iZXIoJ21hdGVyaWFsJyk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBzdHIgKz0gJ3BhcnRpY2xlczonICsgc3lzdGVtLmdldENvdW50KCkgKyAnPGJyPic7XG4gICAgICAgICAgc3RyICs9ICdwb29sOicgKyBzeXN0ZW0ucG9vbC5nZXRDb3VudCgpICsgJzxicj4nO1xuICAgICAgICAgIHN0ciArPSAndG90YWw6JyArIChzeXN0ZW0uZ2V0Q291bnQoKSArIHN5c3RlbS5wb29sLmdldENvdW50KCkpO1xuICAgICAgfVxuICAgICAgdGhpcy5faW5mb0Nvbi5pbm5lckhUTUwgPSBzdHI7XG4gICAgfTtcbiAgfSkoKSxcblxuICAvKipcbiAgICogQXBwZW5kcyB0aGUgaW5mbyBlbGVtZW50IGludG8gdGhlIGRvbS5cbiAgICpcbiAgICogQHBhcmFtIHtpbnRlZ2VyfSBzdHlsZSAtIHRoZSBzdHlsZSB0eXBlIHRvIGFwcGx5XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgYWRkSW5mbzogKGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBmdW5jdGlvbihzdHlsZSkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMuX2luZm9Db24pIHtcbiAgICAgICAgdGhpcy5faW5mb0NvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLl9pbmZvQ29uLnN0eWxlLmNzc1RleHQgPSBbXG4gICAgICAgICAgJ3Bvc2l0aW9uOmZpeGVkO2JvdHRvbTowcHg7bGVmdDowO2N1cnNvcjpwb2ludGVyOycsXG4gICAgICAgICAgJ29wYWNpdHk6MC45O3otaW5kZXg6MTAwMDA7cGFkZGluZzoxMHB4O2ZvbnQtc2l6ZToxMnB4OycsXG4gICAgICAgICAgJ3dpZHRoOjEyMHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6IzAwMjtjb2xvcjojMGZmOycsXG4gICAgICAgIF0uam9pbignJyk7XG5cbiAgICAgICAgdGhpcy5faW5mb1R5cGUgPSAxO1xuICAgICAgICB0aGlzLl9pbmZvQ29uLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHNlbGYuX2luZm9UeXBlKys7XG4gICAgICAgICAgICBpZiAoc2VsZi5faW5mb1R5cGUgPiAzKSBzZWxmLl9pbmZvVHlwZSA9IDE7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuXG4gICAgICAgIHZhciBiZywgY29sb3I7XG5cbiAgICAgICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGJnID0gJyMyMDEnO1xuICAgICAgICAgICAgY29sb3IgPSAnI2YwOCc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGJnID0gJyMwMjAnO1xuICAgICAgICAgICAgY29sb3IgPSAnIzBmMCc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBiZyA9ICcjMDAyJztcbiAgICAgICAgICAgIGNvbG9yID0gJyMwZmYnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5mb0Nvbi5zdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gYmc7XG4gICAgICAgIHRoaXMuX2luZm9Db24uc3R5bGVbJ2NvbG9yJ10gPSBjb2xvcjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9pbmZvQ29uLnBhcmVudE5vZGUpIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5faW5mb0Nvbik7XG4gICAgfTtcbiAgfSkoKSxcbn07XG4iXX0=
@@ -28,4 +28,4 @@ export default function () {
28
28
  }
29
29
  }
30
30
  }
31
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy9sb2cuanMiXSwibmFtZXMiOlsib25jZSIsIndpbmRvdyIsImNvbnNvbGUiLCJ0cmFjZSIsImFyZyIsIkFycmF5IiwicHJvdG90eXBlIiwic2xpY2UiLCJjYWxsIiwiYXJndW1lbnRzIiwiczEiLCJpbmRleE9mIiwibiIsInBhcnNlSW50Iiwic2hpZnQiLCJhcHBseSIsInVuc2hpZnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7QUFTQSxlQUFlLFlBQVc7QUFDeEIsTUFBSUEsSUFBSSxHQUFHLENBQVg7O0FBRUEsTUFBSUMsTUFBTSxDQUFDQyxPQUFQLElBQWtCRCxNQUFNLENBQUNDLE9BQVAsQ0FBZUMsS0FBckMsRUFBNEM7QUFDMUMsUUFBSUMsR0FBRyxHQUFHQyxLQUFLLENBQUNDLFNBQU4sQ0FBZ0JDLEtBQWhCLENBQXNCQyxJQUF0QixDQUEyQkMsU0FBM0IsQ0FBVjtBQUNBLFFBQUlDLEVBQUUsR0FBR0QsU0FBUyxDQUFDLENBQUQsQ0FBVCxHQUFlLEVBQXhCOztBQUVBLFFBQUlDLEVBQUUsQ0FBQ0MsT0FBSCxDQUFXLEdBQVgsS0FBbUIsQ0FBdkIsRUFBMEI7QUFDeEIsVUFBSUMsQ0FBQyxHQUFHQyxRQUFRLENBQUNKLFNBQVMsQ0FBQyxDQUFELENBQVYsQ0FBaEI7O0FBRUEsVUFBSVQsSUFBSSxHQUFHWSxDQUFYLEVBQWM7QUFDWlIsUUFBQUEsR0FBRyxDQUFDVSxLQUFKO0FBQ0FaLFFBQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUFjWSxLQUFkLENBQW9CYixPQUFwQixFQUE2QkUsR0FBN0I7QUFDQUosUUFBQUEsSUFBSTtBQUNMO0FBQ0YsS0FSRCxNQVFPO0FBQ0xJLE1BQUFBLEdBQUcsQ0FBQ1ksT0FBSixDQUFZLEtBQVo7QUFDQSxXQUFLRCxLQUFMLENBQVdiLE9BQVgsRUFBb0JFLEdBQXBCO0FBQ0Q7QUFDRjtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBZb3UgY2FuIHVzZSB0aGlzIGVtaXQgcGFydGljbGVzLlxuICpcbiAqIFRoaXMgbWV0aG9kIHdpbGwgY29uc29sZS5sb2cgdGhlIGZpeGVkIG51bWJlciBvZiB5b3VyIGluZm8gIGluIHVwZGF0YSBvciByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAqXG4gKiB1c2UgbGlrZSB0aGlzIGxvZygnKzEyJyxtYyk7IGxvZyAxMiB0aW1lc1xuICpcbiAqIEByZXR1cm4gdm9pZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgbGV0IG9uY2UgPSAwO1xuXG4gIGlmICh3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS50cmFjZSkge1xuICAgIHZhciBhcmcgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIHZhciBzMSA9IGFyZ3VtZW50c1swXSArICcnO1xuXG4gICAgaWYgKHMxLmluZGV4T2YoJysnKSA9PSAwKSB7XG4gICAgICB2YXIgbiA9IHBhcnNlSW50KGFyZ3VtZW50c1swXSk7XG5cbiAgICAgIGlmIChvbmNlIDwgbikge1xuICAgICAgICBhcmcuc2hpZnQoKTtcbiAgICAgICAgY29uc29sZS50cmFjZS5hcHBseShjb25zb2xlLCBhcmcpO1xuICAgICAgICBvbmNlKys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZy51bnNoaWZ0KCcrMTUnKTtcbiAgICAgIHRoaXMuYXBwbHkoY29uc29sZSwgYXJnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy9sb2cuanMiXSwibmFtZXMiOlsib25jZSIsIndpbmRvdyIsImNvbnNvbGUiLCJ0cmFjZSIsImFyZyIsIkFycmF5IiwicHJvdG90eXBlIiwic2xpY2UiLCJjYWxsIiwiYXJndW1lbnRzIiwiczEiLCJpbmRleE9mIiwibiIsInBhcnNlSW50Iiwic2hpZnQiLCJhcHBseSIsInVuc2hpZnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsWUFBVztBQUN4QixNQUFJQSxJQUFJLEdBQUcsQ0FBWDs7QUFFQSxNQUFJQyxNQUFNLENBQUNDLE9BQVAsSUFBa0JELE1BQU0sQ0FBQ0MsT0FBUCxDQUFlQyxLQUFyQyxFQUE0QztBQUMxQyxRQUFJQyxHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQkMsS0FBaEIsQ0FBc0JDLElBQXRCLENBQTJCQyxTQUEzQixDQUFWO0FBQ0EsUUFBSUMsRUFBRSxHQUFHRCxTQUFTLENBQUMsQ0FBRCxDQUFULEdBQWUsRUFBeEI7O0FBRUEsUUFBSUMsRUFBRSxDQUFDQyxPQUFILENBQVcsR0FBWCxLQUFtQixDQUF2QixFQUEwQjtBQUN4QixVQUFJQyxDQUFDLEdBQUdDLFFBQVEsQ0FBQ0osU0FBUyxDQUFDLENBQUQsQ0FBVixDQUFoQjs7QUFFQSxVQUFJVCxJQUFJLEdBQUdZLENBQVgsRUFBYztBQUNaUixRQUFBQSxHQUFHLENBQUNVLEtBQUo7QUFDQVosUUFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQWNZLEtBQWQsQ0FBb0JiLE9BQXBCLEVBQTZCRSxHQUE3QjtBQUNBSixRQUFBQSxJQUFJO0FBQ0w7QUFDRixLQVJELE1BUU87QUFDTEksTUFBQUEsR0FBRyxDQUFDWSxPQUFKLENBQVksS0FBWjtBQUNBLFdBQUtELEtBQUwsQ0FBV2IsT0FBWCxFQUFvQkUsR0FBcEI7QUFDRDtBQUNGO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFlvdSBjYW4gdXNlIHRoaXMgZW1pdCBwYXJ0aWNsZXMuXG4gKlxuICogVGhpcyBtZXRob2Qgd2lsbCBjb25zb2xlLmxvZyB0aGUgZml4ZWQgbnVtYmVyIG9mIHlvdXIgaW5mbyAgaW4gdXBkYXRhIG9yIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuICpcbiAqIHVzZSBsaWtlIHRoaXMgbG9nKCcrMTInLG1jKTsgbG9nIDEyIHRpbWVzXG4gKlxuICogQHJldHVybiB2b2lkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICBsZXQgb25jZSA9IDA7XG5cbiAgaWYgKHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLnRyYWNlKSB7XG4gICAgdmFyIGFyZyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgdmFyIHMxID0gYXJndW1lbnRzWzBdICsgJyc7XG5cbiAgICBpZiAoczEuaW5kZXhPZignKycpID09IDApIHtcbiAgICAgIHZhciBuID0gcGFyc2VJbnQoYXJndW1lbnRzWzBdKTtcblxuICAgICAgaWYgKG9uY2UgPCBuKSB7XG4gICAgICAgIGFyZy5zaGlmdCgpO1xuICAgICAgICBjb25zb2xlLnRyYWNlLmFwcGx5KGNvbnNvbGUsIGFyZyk7XG4gICAgICAgIG9uY2UrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYXJnLnVuc2hpZnQoJysxNScpO1xuICAgICAgdGhpcy5hcHBseShjb25zb2xlLCBhcmcpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -110,4 +110,4 @@ export const setEasingByName = easeName => {
110
110
  if (ease[easeName]) return ease[easeName];else return ease.easeLinear;
111
111
  };
112
112
  export const getEasingByName = name => ease[name] ? ease[name] : ease.easeLinear;
113
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lYXNlL2luZGV4LmpzIl0sIm5hbWVzIjpbIlBJIiwiZWFzZSIsImVhc2VMaW5lYXIiLCJ2YWx1ZSIsImVhc2VJblF1YWQiLCJNYXRoIiwicG93IiwiZWFzZU91dFF1YWQiLCJlYXNlSW5PdXRRdWFkIiwiZWFzZUluQ3ViaWMiLCJlYXNlT3V0Q3ViaWMiLCJlYXNlSW5PdXRDdWJpYyIsImVhc2VJblF1YXJ0IiwiZWFzZU91dFF1YXJ0IiwiZWFzZUluT3V0UXVhcnQiLCJlYXNlSW5TaW5lIiwiY29zIiwiZWFzZU91dFNpbmUiLCJzaW4iLCJlYXNlSW5PdXRTaW5lIiwiZWFzZUluRXhwbyIsImVhc2VPdXRFeHBvIiwiZWFzZUluT3V0RXhwbyIsImVhc2VJbkNpcmMiLCJzcXJ0IiwiZWFzZU91dENpcmMiLCJlYXNlSW5PdXRDaXJjIiwiZWFzZUluQmFjayIsInMiLCJlYXNlT3V0QmFjayIsImVhc2VJbk91dEJhY2siLCJzZXRFYXNpbmdCeU5hbWUiLCJlYXNlTmFtZSIsImdldEVhc2luZ0J5TmFtZSIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEVBQVQsUUFBbUIsY0FBbkI7QUFFQTs7OztBQUdBLE9BQU8sTUFBTUMsSUFBSSxHQUFHO0FBQ2xCQyxFQUFBQSxVQUFVLEVBQUUsVUFBU0MsS0FBVCxFQUFnQjtBQUMxQixXQUFPQSxLQUFQO0FBQ0QsR0FIaUI7QUFLbEJDLEVBQUFBLFVBQVUsRUFBRSxVQUFTRCxLQUFULEVBQWdCO0FBQzFCLFdBQU9FLElBQUksQ0FBQ0MsR0FBTCxDQUFTSCxLQUFULEVBQWdCLENBQWhCLENBQVA7QUFDRCxHQVBpQjtBQVNsQkksRUFBQUEsV0FBVyxFQUFFLFVBQVNKLEtBQVQsRUFBZ0I7QUFDM0IsV0FBTyxFQUFFRSxJQUFJLENBQUNDLEdBQUwsQ0FBU0gsS0FBSyxHQUFHLENBQWpCLEVBQW9CLENBQXBCLElBQXlCLENBQTNCLENBQVA7QUFDRCxHQVhpQjtBQWFsQkssRUFBQUEsYUFBYSxFQUFF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QixDQUFyRCxJQUEwRCxDQUFqRSxDQUFQO0FBQ0Q7QUE1R2lCLENBQWI7QUErR1AsT0FBTyxNQUFNO0FBQ1gxQixFQUFBQSxVQURXO0FBRVhFLEVBQUFBLFVBRlc7QUFHWEcsRUFBQUEsV0FIVztBQUlYQyxFQUFBQSxhQUpXO0FBS1hDLEVBQUFBLFdBTFc7QUFNWEMsRUFBQUEsWUFOVztBQU9YQyxFQUFBQSxjQVBXO0FBUVhDLEVBQUFBLFdBUlc7QUFTWEMsRUFBQUEsWUFUVztBQVVYQyxFQUFBQSxjQVZXO0FBV1hDLEVBQUFBLFVBWFc7QUFZWEUsRUFBQUEsV0FaVztBQWFYRSxFQUFBQSxhQWJXO0FBY1hDLEVBQUFBLFVBZFc7QUFlWEMsRUFBQUEsV0FmVztBQWdCWEMsRUFBQUEsYUFoQlc7QUFpQlhDLEVBQUFBLFVBakJXO0FBa0JYRSxFQUFBQSxXQWxCVztBQW1CWEMsRUFBQUEsYUFuQlc7QUFvQlhDLEVBQUFBLFVBcEJXO0FBcUJYRSxFQUFBQSxXQXJCVztBQXNCWEMsRUFBQUE7QUF0QlcsSUF1QlQ3QixJQXZCRztBQXlCUCxPQUFPLE1BQU04QixlQUFlLEdBQUdDLFFBQVEsSUFBSTtBQUN6QyxNQUFJL0IsSUFBSSxDQUFDK0IsUUFBRCxDQUFSLEVBQW9CLE9BQU8vQixJQUFJLENBQUMrQixRQUFELENBQVgsQ0FBcEIsS0FDSyxPQUFPL0IsSUFBSSxDQUFDQyxVQUFaO0FBQ04sQ0FITTtBQUtQLE9BQU8sTUFBTStCLGVBQWUsR0FBR0MsSUFBSSxJQUNqQ2pDLElBQUksQ0FBQ2lDLElBQUQsQ0FBSixHQUFhakMsSUFBSSxDQUFDaUMsSUFBRCxDQUFqQixHQUEwQmpDLElBQUksQ0FBQ0MsVUFEMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQSSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbi8qKlxuICogVGhlIEVhc2UgY2xhc3MgcHJvdmlkZXMgYSBjb2xsZWN0aW9uIG9mIGVhc2luZyBmdW5jdGlvbnMgZm9yIHVzZSB3aXRoIFN5c3RlbVxuICovXG5leHBvcnQgY29uc3QgZWFzZSA9IHtcbiAgZWFzZUxpbmVhcjogZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgZWFzZUluUXVhZDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5wb3codmFsdWUsIDIpO1xuICB9LFxuXG4gIGVhc2VPdXRRdWFkOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiAtKE1hdGgucG93KHZhbHVlIC0gMSwgMikgLSAxKTtcbiAgfSxcblxuICBlYXNlSW5PdXRRdWFkOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiBNYXRoLnBvdyh2YWx1ZSwgMik7XG5cbiAgICByZXR1cm4gLTAuNSAqICgodmFsdWUgLT0gMikgKiB2YWx1ZSAtIDIpO1xuICB9LFxuXG4gIGVhc2VJbkN1YmljOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnBvdyh2YWx1ZSwgMyk7XG4gIH0sXG5cbiAgZWFzZU91dEN1YmljOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnBvdyh2YWx1ZSAtIDEsIDMpICsgMTtcbiAgfSxcblxuICBlYXNlSW5PdXRDdWJpYzogZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gMC41ICogTWF0aC5wb3codmFsdWUsIDMpO1xuXG4gICAgcmV0dXJuIDAuNSAqIChNYXRoLnBvdyh2YWx1ZSAtIDIsIDMpICsgMik7XG4gIH0sXG5cbiAgZWFzZUluUXVhcnQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHZhbHVlLCA0KTtcbiAgfSxcblxuICBlYXNlT3V0UXVhcnQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIC0oTWF0aC5wb3codmFsdWUgLSAxLCA0KSAtIDEpO1xuICB9LFxuXG4gIGVhc2VJbk91dFF1YXJ0OiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiBNYXRoLnBvdyh2YWx1ZSwgNCk7XG5cbiAgICByZXR1cm4gLTAuNSAqICgodmFsdWUgLT0gMikgKiBNYXRoLnBvdyh2YWx1ZSwgMykgLSAyKTtcbiAgfSxcblxuICBlYXNlSW5TaW5lOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiAtTWF0aC5jb3ModmFsdWUgKiAoUEkgLyAyKSkgKyAxO1xuICB9LFxuXG4gIGVhc2VPdXRTaW5lOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnNpbih2YWx1ZSAqIChQSSAvIDIpKTtcbiAgfSxcblxuICBlYXNlSW5PdXRTaW5lOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiAtMC41ICogKE1hdGguY29zKFBJICogdmFsdWUpIC0gMSk7XG4gIH0sXG5cbiAgZWFzZUluRXhwbzogZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyAwIDogTWF0aC5wb3coMiwgMTAgKiAodmFsdWUgLSAxKSk7XG4gIH0sXG5cbiAgZWFzZU91dEV4cG86IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAxID8gMSA6IC1NYXRoLnBvdygyLCAtMTAgKiB2YWx1ZSkgKyAxO1xuICB9LFxuXG4gIGVhc2VJbk91dEV4cG86IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSAwKSByZXR1cm4gMDtcbiAgICBpZiAodmFsdWUgPT09IDEpIHJldHVybiAxO1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiBNYXRoLnBvdygyLCAxMCAqICh2YWx1ZSAtIDEpKTtcblxuICAgIHJldHVybiAwLjUgKiAoLU1hdGgucG93KDIsIC0xMCAqIC0tdmFsdWUpICsgMik7XG4gIH0sXG5cbiAgZWFzZUluQ2lyYzogZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gLShNYXRoLnNxcnQoMSAtIHZhbHVlICogdmFsdWUpIC0gMSk7XG4gIH0sXG5cbiAgZWFzZU91dENpcmM6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCgxIC0gTWF0aC5wb3codmFsdWUgLSAxLCAyKSk7XG4gIH0sXG5cbiAgZWFzZUluT3V0Q2lyYzogZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gLTAuNSAqIChNYXRoLnNxcnQoMSAtIHZhbHVlICogdmFsdWUpIC0gMSk7XG5cbiAgICByZXR1cm4gMC41ICogKE1hdGguc3FydCgxIC0gKHZhbHVlIC09IDIpICogdmFsdWUpICsgMSk7XG4gIH0sXG5cbiAgZWFzZUluQmFjazogZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcyA9IDEuNzAxNTg7XG5cbiAgICByZXR1cm4gdmFsdWUgKiB2YWx1ZSAqICgocyArIDEpICogdmFsdWUgLSBzKTtcbiAgfSxcblxuICBlYXNlT3V0QmFjazogZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcyA9IDEuNzAxNTg7XG5cbiAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUgLSAxKSAqIHZhbHVlICogKChzICsgMSkgKiB2YWx1ZSArIHMpICsgMTtcbiAgfSxcblxuICBlYXNlSW5PdXRCYWNrOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciBzID0gMS43MDE1ODtcblxuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpXG4gICAgICByZXR1cm4gMC41ICogKHZhbHVlICogdmFsdWUgKiAoKChzICo9IDEuNTI1KSArIDEpICogdmFsdWUgLSBzKSk7XG5cbiAgICByZXR1cm4gMC41ICogKCh2YWx1ZSAtPSAyKSAqIHZhbHVlICogKCgocyAqPSAxLjUyNSkgKyAxKSAqIHZhbHVlICsgcykgKyAyKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHtcbiAgZWFzZUxpbmVhcixcbiAgZWFzZUluUXVhZCxcbiAgZWFzZU91dFF1YWQsXG4gIGVhc2VJbk91dFF1YWQsXG4gIGVhc2VJbkN1YmljLFxuICBlYXNlT3V0Q3ViaWMsXG4gIGVhc2VJbk91dEN1YmljLFxuICBlYXNlSW5RdWFydCxcbiAgZWFzZU91dFF1YXJ0LFxuICBlYXNlSW5PdXRRdWFydCxcbiAgZWFzZUluU2luZSxcbiAgZWFzZU91dFNpbmUsXG4gIGVhc2VJbk91dFNpbmUsXG4gIGVhc2VJbkV4cG8sXG4gIGVhc2VPdXRFeHBvLFxuICBlYXNlSW5PdXRFeHBvLFxuICBlYXNlSW5DaXJjLFxuICBlYXNlT3V0Q2lyYyxcbiAgZWFzZUluT3V0Q2lyYyxcbiAgZWFzZUluQmFjayxcbiAgZWFzZU91dEJhY2ssXG4gIGVhc2VJbk91dEJhY2tcbn0gPSBlYXNlO1xuXG5leHBvcnQgY29uc3Qgc2V0RWFzaW5nQnlOYW1lID0gZWFzZU5hbWUgPT4ge1xuICBpZiAoZWFzZVtlYXNlTmFtZV0pIHJldHVybiBlYXNlW2Vhc2VOYW1lXTtcbiAgZWxzZSByZXR1cm4gZWFzZS5lYXNlTGluZWFyO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVhc2luZ0J5TmFtZSA9IG5hbWUgPT5cbiAgZWFzZVtuYW1lXSA/IGVhc2VbbmFtZV0gOiBlYXNlLmVhc2VMaW5lYXI7XG4iXX0=
113
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lYXNlL2luZGV4LmpzIl0sIm5hbWVzIjpbIlBJIiwiZWFzZSIsImVhc2VMaW5lYXIiLCJ2YWx1ZSIsImVhc2VJblF1YWQiLCJNYXRoIiwicG93IiwiZWFzZU91dFF1YWQiLCJlYXNlSW5PdXRRdWFkIiwiZWFzZUluQ3ViaWMiLCJlYXNlT3V0Q3ViaWMiLCJlYXNlSW5PdXRDdWJpYyIsImVhc2VJblF1YXJ0IiwiZWFzZU91dFF1YXJ0IiwiZWFzZUluT3V0UXVhcnQiLCJlYXNlSW5TaW5lIiwiY29zIiwiZWFzZU91dFNpbmUiLCJzaW4iLCJlYXNlSW5PdXRTaW5lIiwiZWFzZUluRXhwbyIsImVhc2VPdXRFeHBvIiwiZWFzZUluT3V0RXhwbyIsImVhc2VJbkNpcmMiLCJzcXJ0IiwiZWFzZU91dENpcmMiLCJlYXNlSW5PdXRDaXJjIiwiZWFzZUluQmFjayIsInMiLCJlYXNlT3V0QmFjayIsImVhc2VJbk91dEJhY2siLCJzZXRFYXNpbmdCeU5hbWUiLCJlYXNlTmFtZSIsImdldEVhc2luZ0J5TmFtZSIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEVBQVQsUUFBbUIsY0FBbkI7QUFFQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxJQUFJLEdBQUc7QUFDbEJDLEVBQUFBLFVBQVUsRUFBRSxVQUFTQyxLQUFULEVBQWdCO0FBQzFCLFdBQU9BLEtBQVA7QUFDRCxHQUhpQjtBQUtsQkMsRUFBQUEsVUFBVSxFQUFFLFVBQVNELEtBQVQsRUFBZ0I7QUFDMUIsV0FBT0UsSUFBSSxDQUFDQyxHQUFMLENBQVNILEtBQVQsRUFBZ0IsQ0FBaEIsQ0FBUDtBQUNELEdBUGlCO0FBU2xCSSxFQUFBQSxXQUFXLEVBQUUsVUFBU0osS0FBVCxFQUFnQjtBQUMzQixXQUFPLEVBQUVFLElBQUksQ0FBQ0MsR0FBTCxDQUFTSCxLQUFLLEdBQUcsQ0FBakIsRUFBb0IsQ0FBcEIsSUFBeUIsQ0FBM0IsQ0FBUDtBQUNELEdBWGlCO0FBYWxCSyxFQUFBQSxhQUFhLEVBQUUsVUFBU0wsS0FBVCxFQUFnQjtBQUM3QixRQUFJLENBQUNBLEtBQUssSUFBSSxHQUFWLElBQWlCLENBQXJCLEVBQXdCLE9BQU8sTUFBTUUsSUFBSSxDQUFDQyxHQUFMLENBQVNILEtBQVQsRUFBZ0IsQ0FBaEIsQ0FBYjtBQUV4QixXQUFPLENBQUMsR0FBRCxJQUFRLENBQUNBLEtBQUssSUFBSSxDQUFWLElBQWVBLEtBQWYsR0FBdUIsQ0FBL0IsQ0FBUDtBQUNELEdBakJpQjtBQW1CbEJNLEVBQUFBLFdBQVcsRUFBRSxVQUFTTixLQUFULEVBQWdCO0FBQzNCLFdBQU9FLElBQUksQ0FBQ0MsR0FBTCxDQUFTSCxLQUFULEVBQWdCLENBQWhCLENBQVA7QUFDRCxHQXJCaUI7QUF1QmxCTyxFQUFBQSxZQUFZLEVBQUUsVUFBU1AsS0FBVCxFQUFnQjtBQUM1QixXQUFPRSxJQUFJLENBQUNDLEdBQUwsQ0FBU0gsS0FBSyxHQUFHLENBQWpCLEVBQW9CLENBQXBCLElBQXlCLENBQWhDO0FBQ0QsR0F6QmlCO0FBMkJsQlEsRUFBQUEsY0FBYyxFQUFFLFVBQVNSLEtBQVQsRUFBZ0I7QUFDOUIsUUFBSSxDQUFDQSxLQUFLLElBQUksR0FBVixJQUFpQixDQUFyQixFQUF3QixPQUFPLE1BQU1FLElBQUksQ0FBQ0MsR0FBTCxDQUFTSCxLQUFULEVBQWdCLENBQWhCLENBQWI7QUFFeEIsV0FBTyxPQUFPRSxJQUFJLENBQUNDLEdBQUwsQ0FBU0gsS0FBSyxHQUFHLENBQWpCLEVBQW9CLENBQXBCLElBQXlCLENBQWhDLENBQVA7QUFDRCxHQS9CaUI7QUFpQ2xCUyxFQUFBQSxXQUFXLEVBQUUsVUFBU1QsS0FBVCxFQUFnQjtBQUMzQixXQUFPRSxJQUFJLENBQUNDLEdBQUwsQ0FBU0gsS0FBVCxFQUFnQixDQUFoQixDQUFQO0FBQ0QsR0FuQ2lCO0FBcUNsQlUsRUFBQUEsWUFBWSxFQUFFLFVBQVNWLEtBQVQsRUFBZ0I7QUFDNUIsV0FBTyxFQUFFRSxJQUFJLENBQUNDLEdBQUwsQ0FBU0gsS0FBSyxHQUFHLENBQWpCLEVBQW9CLENBQXBCLElBQXlCLENBQTNCLENBQVA7QUFDRCxHQXZDaUI7QUF5Q2xCVyxFQUFBQSxjQUFjLEVBQUUsVUFBU1gsS0FBVCxFQUFnQjtBQUM5QixRQUFJLENBQUNBLEtBQUssSUFBSSxHQUFWLElBQWlCLENBQXJCLEVBQXdCLE9BQU8sTUFBTUUsSUFBSSxDQUFDQyxHQUFMLENBQVNILEtBQVQsRUFBZ0IsQ0FBaEIsQ0FBYjtBQUV4QixXQUFPLENBQUMsR0FBRCxJQUFRLENBQUNBLEtBQUssSUFBSSxDQUFWLElBQWVFLElBQUksQ0FBQ0MsR0FBTCxDQUFTSCxLQUFULEVBQWdCLENBQWhCLENBQWYsR0FBb0MsQ0FBNUMsQ0FBUDtBQUNELEdBN0NpQjtBQStDbEJZLEVBQUFBLFVBQVUsRUFBRSxVQUFTWixLQUFULEVBQWdCO0FBQzFCLFdBQU8sQ0FBQ0UsSUFBSSxDQUFDVyxHQUFMLENBQVNiLEtBQUssSUFBSUgsRUFBRSxHQUFHLENBQVQsQ0FBZCxDQUFELEdBQThCLENBQXJDO0FBQ0QsR0FqRGlCO0FBbURsQmlCLEVBQUFBLFdBQVcsRUFBRSxVQUFTZCxLQUFULEVBQWdCO0FBQzNCLFdBQU9FLElBQUksQ0FBQ2EsR0FBTCxDQUFTZixLQUFLLElBQUlILEVBQUUsR0FBRyxDQUFULENBQWQsQ0FBUDtBQUNELEdBckRpQjtBQXVEbEJtQixFQUFBQSxhQUFhLEVBQUUsVUFBU2hCLEtBQVQsRUFBZ0I7QUFDN0IsV0FBTyxDQUFDLEdBQUQsSUFBUUUsSUFBSSxDQUFDVyxHQUFMLENBQVNoQixFQUFFLEdBQUdHLEtBQWQsSUFBdUIsQ0FBL0IsQ0FBUDtBQUNELEdBekRpQjtBQTJEbEJpQixFQUFBQSxVQUFVLEVBQUUsVUFBU2pCLEtBQVQsRUFBZ0I7QUFDMUIsV0FBT0EsS0FBSyxLQUFLLENBQVYsR0FBYyxDQUFkLEdBQWtCRSxJQUFJLENBQUNDLEdBQUwsQ0FBUyxDQUFULEVBQVksTUFBTUgsS0FBSyxHQUFHLENBQWQsQ0FBWixDQUF6QjtBQUNELEdBN0RpQjtBQStEbEJrQixFQUFBQSxXQUFXLEVBQUUsVUFBU2xCLEtBQVQsRUFBZ0I7QUFDM0IsV0FBT0EsS0FBSyxLQUFLLENBQVYsR0FBYyxDQUFkLEdBQWtCLENBQUNFLElBQUksQ0FBQ0MsR0FBTCxDQUFTLENBQVQsRUFBWSxDQUFDLEVBQUQsR0FBTUgsS0FBbEIsQ0FBRCxHQUE0QixDQUFyRDtBQUNELEdBakVpQjtBQW1FbEJtQixFQUFBQSxhQUFhLEVBQUUsVUFBU25CLEtBQVQsRUFBZ0I7QUFDN0IsUUFBSUEsS0FBSyxLQUFLLENBQWQsRUFBaUIsT0FBTyxDQUFQO0FBQ2pCLFFBQUlBLEtBQUssS0FBSyxDQUFkLEVBQWlCLE9BQU8sQ0FBUDtBQUNqQixRQUFJLENBQUNBLEtBQUssSUFBSSxHQUFWLElBQWlCLENBQXJCLEVBQXdCLE9BQU8sTUFBTUUsSUFBSSxDQUFDQyxHQUFMLENBQVMsQ0FBVCxFQUFZLE1BQU1ILEtBQUssR0FBRyxDQUFkLENBQVosQ0FBYjtBQUV4QixXQUFPLE9BQU8sQ0FBQ0UsSUFBSSxDQUFDQyxHQUFMLENBQVMsQ0FBVCxFQUFZLENBQUMsRUFBRCxHQUFNLEVBQUVILEtBQXBCLENBQUQsR0FBOEIsQ0FBckMsQ0FBUDtBQUNELEdBekVpQjtBQTJFbEJvQixFQUFBQSxVQUFVLEVBQUUsVUFBU3BCLEtBQVQsRUFBZ0I7QUFDMUIsV0FBTyxFQUFFRSxJQUFJLENBQUNtQixJQUFMLENBQVUsSUFBSXJCLEtBQUssR0FBR0EsS0FBdEIsSUFBK0IsQ0FBakMsQ0FBUDtBQUNELEdBN0VpQjtBQStFbEJzQixFQUFBQSxXQUFXLEVBQUUsVUFBU3RCLEtBQVQsRUFBZ0I7QUFDM0IsV0FBT0UsSUFBSSxDQUFDbUIsSUFBTCxDQUFVLElBQUluQixJQUFJLENBQUNDLEdBQUwsQ0FBU0gsS0FBSyxHQUFHLENBQWpCLEVBQW9CLENBQXBCLENBQWQsQ0FBUDtBQUNELEdBakZpQjtBQW1GbEJ1QixFQUFBQSxhQUFhLEVBQUUsVUFBU3ZCLEtBQVQsRUFBZ0I7QUFDN0IsUUFBSSxDQUFDQSxLQUFLLElBQUksR0FBVixJQUFpQixDQUFyQixFQUF3QixPQUFPLENBQUMsR0FBRCxJQUFRRSxJQUFJLENBQUNtQixJQUFMLENBQVUsSUFBSXJCLEtBQUssR0FBR0EsS0FBdEIsSUFBK0IsQ0FBdkMsQ0FBUDtBQUV4QixXQUFPLE9BQU9FLElBQUksQ0FBQ21CLElBQUwsQ0FBVSxJQUFJLENBQUNyQixLQUFLLElBQUksQ0FBVixJQUFlQSxLQUE3QixJQUFzQyxDQUE3QyxDQUFQO0FBQ0QsR0F2RmlCO0FBeUZsQndCLEVBQUFBLFVBQVUsRUFBRSxVQUFTeEIsS0FBVCxFQUFnQjtBQUMxQixRQUFJeUIsQ0FBQyxHQUFHLE9BQVI7QUFFQSxXQUFPekIsS0FBSyxHQUFHQSxLQUFSLElBQWlCLENBQUN5QixDQUFDLEdBQUcsQ0FBTCxJQUFVekIsS0FBVixHQUFrQnlCLENBQW5DLENBQVA7QUFDRCxHQTdGaUI7QUErRmxCQyxFQUFBQSxXQUFXLEVBQUUsVUFBUzFCLEtBQVQsRUFBZ0I7QUFDM0IsUUFBSXlCLENBQUMsR0FBRyxPQUFSO0FBRUEsV0FBTyxDQUFDekIsS0FBSyxHQUFHQSxLQUFLLEdBQUcsQ0FBakIsSUFBc0JBLEtBQXRCLElBQStCLENBQUN5QixDQUFDLEdBQUcsQ0FBTCxJQUFVekIsS0FBVixHQUFrQnlCLENBQWpELElBQXNELENBQTdEO0FBQ0QsR0FuR2lCO0FBcUdsQkUsRUFBQUEsYUFBYSxFQUFFLFVBQVMzQixLQUFULEVBQWdCO0FBQzdCLFFBQUl5QixDQUFDLEdBQUcsT0FBUjtBQUVBLFFBQUksQ0FBQ3pCLEtBQUssSUFBSSxHQUFWLElBQWlCLENBQXJCLEVBQ0UsT0FBTyxPQUFPQSxLQUFLLEdBQUdBLEtBQVIsSUFBaUIsQ0FBQyxDQUFDeUIsQ0FBQyxJQUFJLEtBQU4sSUFBZSxDQUFoQixJQUFxQnpCLEtBQXJCLEdBQTZCeUIsQ0FBOUMsQ0FBUCxDQUFQO0FBRUYsV0FBTyxPQUFPLENBQUN6QixLQUFLLElBQUksQ0FBVixJQUFlQSxLQUFmLElBQXdCLENBQUMsQ0FBQ3lCLENBQUMsSUFBSSxLQUFOLElBQWUsQ0FBaEIsSUFBcUJ6QixLQUFyQixHQUE2QnlCLENBQXJELElBQTBELENBQWpFLENBQVA7QUFDRDtBQTVHaUIsQ0FBYjtBQStHUCxPQUFPLE1BQU07QUFDWDFCLEVBQUFBLFVBRFc7QUFFWEUsRUFBQUEsVUFGVztBQUdYRyxFQUFBQSxXQUhXO0FBSVhDLEVBQUFBLGFBSlc7QUFLWEMsRUFBQUEsV0FMVztBQU1YQyxFQUFBQSxZQU5XO0FBT1hDLEVBQUFBLGNBUFc7QUFRWEMsRUFBQUEsV0FSVztBQVNYQyxFQUFBQSxZQVRXO0FBVVhDLEVBQUFBLGNBVlc7QUFXWEMsRUFBQUEsVUFYVztBQVlYRSxFQUFBQSxXQVpXO0FBYVhFLEVBQUFBLGFBYlc7QUFjWEMsRUFBQUEsVUFkVztBQWVYQyxFQUFBQSxXQWZXO0FBZ0JYQyxFQUFBQSxhQWhCVztBQWlCWEMsRUFBQUEsVUFqQlc7QUFrQlhFLEVBQUFBLFdBbEJXO0FBbUJYQyxFQUFBQSxhQW5CVztBQW9CWEMsRUFBQUEsVUFwQlc7QUFxQlhFLEVBQUFBLFdBckJXO0FBc0JYQyxFQUFBQTtBQXRCVyxJQXVCVDdCLElBdkJHO0FBeUJQLE9BQU8sTUFBTThCLGVBQWUsR0FBR0MsUUFBUSxJQUFJO0FBQ3pDLE1BQUkvQixJQUFJLENBQUMrQixRQUFELENBQVIsRUFBb0IsT0FBTy9CLElBQUksQ0FBQytCLFFBQUQsQ0FBWCxDQUFwQixLQUNLLE9BQU8vQixJQUFJLENBQUNDLFVBQVo7QUFDTixDQUhNO0FBS1AsT0FBTyxNQUFNK0IsZUFBZSxHQUFHQyxJQUFJLElBQ2pDakMsSUFBSSxDQUFDaUMsSUFBRCxDQUFKLEdBQWFqQyxJQUFJLENBQUNpQyxJQUFELENBQWpCLEdBQTBCakMsSUFBSSxDQUFDQyxVQUQxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBJIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBUaGUgRWFzZSBjbGFzcyBwcm92aWRlcyBhIGNvbGxlY3Rpb24gb2YgZWFzaW5nIGZ1bmN0aW9ucyBmb3IgdXNlIHdpdGggU3lzdGVtXG4gKi9cbmV4cG9ydCBjb25zdCBlYXNlID0ge1xuICBlYXNlTGluZWFyOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcblxuICBlYXNlSW5RdWFkOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnBvdyh2YWx1ZSwgMik7XG4gIH0sXG5cbiAgZWFzZU91dFF1YWQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIC0oTWF0aC5wb3codmFsdWUgLSAxLCAyKSAtIDEpO1xuICB9LFxuXG4gIGVhc2VJbk91dFF1YWQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KHZhbHVlLCAyKTtcblxuICAgIHJldHVybiAtMC41ICogKCh2YWx1ZSAtPSAyKSAqIHZhbHVlIC0gMik7XG4gIH0sXG5cbiAgZWFzZUluQ3ViaWM6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHZhbHVlLCAzKTtcbiAgfSxcblxuICBlYXNlT3V0Q3ViaWM6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHZhbHVlIC0gMSwgMykgKyAxO1xuICB9LFxuXG4gIGVhc2VJbk91dEN1YmljOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiBNYXRoLnBvdyh2YWx1ZSwgMyk7XG5cbiAgICByZXR1cm4gMC41ICogKE1hdGgucG93KHZhbHVlIC0gMiwgMykgKyAyKTtcbiAgfSxcblxuICBlYXNlSW5RdWFydDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5wb3codmFsdWUsIDQpO1xuICB9LFxuXG4gIGVhc2VPdXRRdWFydDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gLShNYXRoLnBvdyh2YWx1ZSAtIDEsIDQpIC0gMSk7XG4gIH0sXG5cbiAgZWFzZUluT3V0UXVhcnQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KHZhbHVlLCA0KTtcblxuICAgIHJldHVybiAtMC41ICogKCh2YWx1ZSAtPSAyKSAqIE1hdGgucG93KHZhbHVlLCAzKSAtIDIpO1xuICB9LFxuXG4gIGVhc2VJblNpbmU6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIC1NYXRoLmNvcyh2YWx1ZSAqIChQSSAvIDIpKSArIDE7XG4gIH0sXG5cbiAgZWFzZU91dFNpbmU6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGguc2luKHZhbHVlICogKFBJIC8gMikpO1xuICB9LFxuXG4gIGVhc2VJbk91dFNpbmU6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIC0wLjUgKiAoTWF0aC5jb3MoUEkgKiB2YWx1ZSkgLSAxKTtcbiAgfSxcblxuICBlYXNlSW5FeHBvOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IDAgOiBNYXRoLnBvdygyLCAxMCAqICh2YWx1ZSAtIDEpKTtcbiAgfSxcblxuICBlYXNlT3V0RXhwbzogZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDEgPyAxIDogLU1hdGgucG93KDIsIC0xMCAqIHZhbHVlKSArIDE7XG4gIH0sXG5cbiAgZWFzZUluT3V0RXhwbzogZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IDApIHJldHVybiAwO1xuICAgIGlmICh2YWx1ZSA9PT0gMSkgcmV0dXJuIDE7XG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KDIsIDEwICogKHZhbHVlIC0gMSkpO1xuXG4gICAgcmV0dXJuIDAuNSAqICgtTWF0aC5wb3coMiwgLTEwICogLS12YWx1ZSkgKyAyKTtcbiAgfSxcblxuICBlYXNlSW5DaXJjOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiAtKE1hdGguc3FydCgxIC0gdmFsdWUgKiB2YWx1ZSkgLSAxKTtcbiAgfSxcblxuICBlYXNlT3V0Q2lyYzogZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KDEgLSBNYXRoLnBvdyh2YWx1ZSAtIDEsIDIpKTtcbiAgfSxcblxuICBlYXNlSW5PdXRDaXJjOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAtMC41ICogKE1hdGguc3FydCgxIC0gdmFsdWUgKiB2YWx1ZSkgLSAxKTtcblxuICAgIHJldHVybiAwLjUgKiAoTWF0aC5zcXJ0KDEgLSAodmFsdWUgLT0gMikgKiB2YWx1ZSkgKyAxKTtcbiAgfSxcblxuICBlYXNlSW5CYWNrOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciBzID0gMS43MDE1ODtcblxuICAgIHJldHVybiB2YWx1ZSAqIHZhbHVlICogKChzICsgMSkgKiB2YWx1ZSAtIHMpO1xuICB9LFxuXG4gIGVhc2VPdXRCYWNrOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciBzID0gMS43MDE1ODtcblxuICAgIHJldHVybiAodmFsdWUgPSB2YWx1ZSAtIDEpICogdmFsdWUgKiAoKHMgKyAxKSAqIHZhbHVlICsgcykgKyAxO1xuICB9LFxuXG4gIGVhc2VJbk91dEJhY2s6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHMgPSAxLjcwMTU4O1xuXG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSlcbiAgICAgIHJldHVybiAwLjUgKiAodmFsdWUgKiB2YWx1ZSAqICgoKHMgKj0gMS41MjUpICsgMSkgKiB2YWx1ZSAtIHMpKTtcblxuICAgIHJldHVybiAwLjUgKiAoKHZhbHVlIC09IDIpICogdmFsdWUgKiAoKChzICo9IDEuNTI1KSArIDEpICogdmFsdWUgKyBzKSArIDIpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qge1xuICBlYXNlTGluZWFyLFxuICBlYXNlSW5RdWFkLFxuICBlYXNlT3V0UXVhZCxcbiAgZWFzZUluT3V0UXVhZCxcbiAgZWFzZUluQ3ViaWMsXG4gIGVhc2VPdXRDdWJpYyxcbiAgZWFzZUluT3V0Q3ViaWMsXG4gIGVhc2VJblF1YXJ0LFxuICBlYXNlT3V0UXVhcnQsXG4gIGVhc2VJbk91dFF1YXJ0LFxuICBlYXNlSW5TaW5lLFxuICBlYXNlT3V0U2luZSxcbiAgZWFzZUluT3V0U2luZSxcbiAgZWFzZUluRXhwbyxcbiAgZWFzZU91dEV4cG8sXG4gIGVhc2VJbk91dEV4cG8sXG4gIGVhc2VJbkNpcmMsXG4gIGVhc2VPdXRDaXJjLFxuICBlYXNlSW5PdXRDaXJjLFxuICBlYXNlSW5CYWNrLFxuICBlYXNlT3V0QmFjayxcbiAgZWFzZUluT3V0QmFja1xufSA9IGVhc2U7XG5cbmV4cG9ydCBjb25zdCBzZXRFYXNpbmdCeU5hbWUgPSBlYXNlTmFtZSA9PiB7XG4gIGlmIChlYXNlW2Vhc2VOYW1lXSkgcmV0dXJuIGVhc2VbZWFzZU5hbWVdO1xuICBlbHNlIHJldHVybiBlYXNlLmVhc2VMaW5lYXI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWFzaW5nQnlOYW1lID0gbmFtZSA9PlxuICBlYXNlW25hbWVdID8gZWFzZVtuYW1lXSA6IGVhc2UuZWFzZUxpbmVhcjtcbiJdfQ==
@@ -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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O0FBQ0EsU0FBSzRDLE1BQUwsR0FBYyxDQUFkO0FBQ0EsU0FBS2pGLGNBQUwsR0FBc0IsQ0FBQyxDQUF2Qjs7QUFFQSxRQUFJLEtBQUtMLFNBQUwsQ0FBZXlDLE1BQWYsSUFBeUIsQ0FBN0IsRUFBZ0M7QUFDOUIsV0FBSy9CLFVBQUwsR0FBa0IsS0FBbEI7QUFDQSxXQUFLeUMscUJBQUw7QUFDQSxXQUFLTyxtQkFBTDtBQUNBLFdBQUsxQyxRQUFMLENBQWUsR0FBRSxLQUFLTCxFQUFHLElBQUczQixZQUFhLEVBQXpDO0FBRUEsV0FBS3NGLE1BQUwsSUFBZSxLQUFLQSxNQUFMLENBQVlpQixhQUFaLENBQTBCLElBQTFCLENBQWY7QUFDRDtBQUNGOztBQXpwQjJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9CSU5EX0VNSVRURVIsXG4gIERFRkFVTFRfQklORF9FTUlUVEVSX0VWRU5ULFxuICBERUZBVUxUX0RBTVBJTkcsXG4gIERFRkFVTFRfRU1JVFRFUl9JTkRFWCxcbiAgREVGQVVMVF9FTUlUVEVSX1JBVEUsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBFdmVudERpc3BhdGNoZXIsIHtcbiAgRU1JVFRFUl9ERUFELFxuICBQQVJUSUNMRV9DUkVBVEVELFxuICBQQVJUSUNMRV9ERUFELFxuICBQQVJUSUNMRV9VUERBVEUsXG59IGZyb20gJy4uL2V2ZW50cyc7XG5pbXBvcnQgeyBJTlRFR1JBVElPTl9UWVBFX0VVTEVSLCBpbnRlZ3JhdGUgfSBmcm9tICcuLi9tYXRoJztcbmltcG9ydCB7IFV0aWwsIHVpZCB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHsgSW5pdGlhbGl6ZXJVdGlsIH0gZnJvbSAnLi4vaW5pdGlhbGl6ZXInO1xuaW1wb3J0IFBhcnRpY2xlIGZyb20gJy4uL2NvcmUvUGFydGljbGUnO1xuaW1wb3J0IGlzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5pbXBvcnQgeyBFTUlUVEVSX1RZUEVfRU1JVFRFUiBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRW1pdHRlcnMgYXJlIHRoZSBTeXN0ZW0gZW5naW5lJ3MgcGFydGljbGUgZmFjdG9yaWVzLiBUaGV5IGNhdXNlIHBhcnRpY2xlcyB0b1xuICogYmUgcmVuZGVyZWQgYnkgZW1pdHRpbmcgdGhlbSwgYW5kIHN0b3JlIGFsbCBwYXJ0aWNsZSBpbml0aWFsaXplcnMgYW5kIGJlaGF2aW91cnMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbWl0dGVyIGV4dGVuZHMgUGFydGljbGUge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBFbWl0dGVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcGVydGllcyAtIFRoZSBwcm9wZXJ0aWVzIHRvIGluc3RhbnRpYXRlIHRoZSBlbWl0dGVyIHdpdGhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzKSB7XG4gICAgc3VwZXIocHJvcGVydGllcyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnRpY2xlcyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGluaXRpYWxpemVycyBmb3IgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLmluaXRpYWxpemVycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGJlaGF2aW91cnMgZm9yIHBhcnRpY2xlcyBlbWl0dGVkIGJ5IHRoaXMgZW1pdHRlci5cbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5iZWhhdmlvdXJzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgYmVoYXZpb3VycyBmb3IgdGhlIGVtaXR0ZXIuXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqL1xuICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjdXJyZW50IGVtaXQgaXRlcmF0aW9uLlxuICAgICAqIEB0eXBlIHtpbnRlZ2VyfVxuICAgICAqL1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSB0b3RhbCBudW1iZXIgb2YgdGltZXMgdGhlIGVtaXR0ZXIgc2hvdWxkIGVtaXQgcGFydGljbGVzLlxuICAgICAqIEB0eXBlIHtpbnRlZ2VyfVxuICAgICAqL1xuICAgIHRoaXMudG90YWxFbWl0VGltZXMgPSAtMTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBmcmljdGlvbiBjb2VmZmljaWVudCBmb3IgYWxsIHBhcnRpY2xlIHRvIGVtaXQgYnkuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmRhbXBpbmcgPSBERUZBVUxUX0RBTVBJTkc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBFbnN1cmVzIHRoYXQgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyIGFyZSBwb3NpdGlvbmVkXG4gICAgICogYWNjb3JkaW5nIHRvIHRoZSBlbWl0dGVyJ3MgcHJvcGVydGllcy5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmJpbmRFbWl0dGVyID0gREVGQVVMVF9CSU5EX0VNSVRURVI7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBlbWl0dGVyIHdpbGwgZGlzcGF0Y2ggaW50ZXJuYWwgZXZlbnRzLiBEZWZhdWx0c1xuICAgICAqIHRvIGZhbHNlXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5iaW5kRW1pdHRlckV2ZW50ID0gREVGQVVMVF9CSU5EX0VNSVRURVJfRVZFTlQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBlbWl0IHBlciBzZWNvbmQgKGEgW3BhcnRpY2xlXS9iIFtzXSlcbiAgICAgKiBAdHlwZSB7UmF0ZX1cbiAgICAgKi9cbiAgICB0aGlzLnJhdGUgPSBERUZBVUxUX0VNSVRURVJfUkFURTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIERldGVybWluZXMgaWYgdGhlIGVtaXR0ZXIgaXMgZW1pdHRpbmcgcGFydGljbGVzIG9yIG5vdC5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBlbWl0dGVyJ3MgaWQuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLmlkID0gYGVtaXR0ZXItJHt1aWQoKX1gO1xuICAgIHRoaXMuY0lEID0gMDtcbiAgICB0aGlzLm5hbWUgPSAnRW1pdHRlcic7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgaW5kZXggb2YgdGhlIGVtaXR0ZXIgYXMgaXQgaXMgYWRkZWQgdG8gdGhlIHN5c3RlbS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfHVuZGVmaW5lZH1cbiAgICAgKi9cbiAgICB0aGlzLmluZGV4ID0gREVGQVVMVF9FTUlUVEVSX0lOREVYO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGVtaXR0ZXIncyBpbnRlcm5hbCBldmVudCBkaXNwYXRjaGVyLlxuICAgICAqIEB0eXBlIHtFdmVudERpc3BhdGNoZXJ9XG4gICAgICovXG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIgPSBuZXcgRXZlbnREaXNwYXRjaGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJveHkgbWV0aG9kIGZvciB0aGUgaW50ZXJuYWwgZXZlbnQgZGlzcGF0Y2hlcidzIGRpc3BhdGNoRXZlbnQgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgLSBUaGUgZXZlbnQgdG8gZGlzcGF0Y2hcbiAgICogQHBhcmFtIHtvYmplY3Q8UGFydGljbGU+fSBbdGFyZ2V0PXRoaXNdIC0gVGhlIGV2ZW50IHRhcmdldFxuICAgKi9cbiAgZGlzcGF0Y2goZXZlbnQsIHRhcmdldCA9IHRoaXMpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIgcmF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSYXRlfSByYXRlIC0gYSByYXRlIGluaXRpYWxpemVyIG9iamVjdFxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0UmF0ZShyYXRlKSB7XG4gICAgdGhpcy5yYXRlID0gcmF0ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3UG9zaXRpb24gLSBhbiBvYmplY3QgdGhlIG5ldyB4LCB5IGFuZCB6IHByb3BzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRQb3NpdGlvbihuZXdQb3NpdGlvbiA9IHt9KSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gdGhpcztcbiAgICBjb25zdCB7IHggPSBwb3NpdGlvbi54LCB5ID0gcG9zaXRpb24ueSwgeiA9IHBvc2l0aW9uLnogfSA9IG5ld1Bvc2l0aW9uO1xuXG4gICAgdGhpcy5wb3NpdGlvbi5zZXQoeCwgeSwgeik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByb3RhdGlvbiBvZiB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1JvdGF0aW9uIC0gYW4gb2JqZWN0IHRoZSBuZXcgeCwgeSBhbmQgeiBwcm9wc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0Um90YXRpb24obmV3Um90YXRpb24gPSB7fSkge1xuICAgIGNvbnN0IHsgcm90YXRpb24gfSA9IHRoaXM7XG4gICAgY29uc3QgeyB4ID0gcm90YXRpb24ueCwgeSA9IHJvdGF0aW9uLnksIHogPSByb3RhdGlvbi56IH0gPSBuZXdSb3RhdGlvbjtcblxuICAgIHRoaXMucm90YXRpb24uc2V0KHgsIHksIHopO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRoZSBlbWl0dGVyIHNob3VsZCBlbWl0IHBhcnRpY2xlcyBhcyB3ZWxsIGFzXG4gICAqIHRoZSBlbWl0dGVyJ3MgbGlmZS4gQWxzbyBpbnRpYWxpemVzIHRoZSBlbWl0dGVyIHJhdGUuXG4gICAqIFRoaXMgZW5hYmxlcyB0aGUgZW1pdHRlciB0byBlbWl0IHBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0b3RhbEVtaXRUaW1lcz1JbmZpbml0eV0gLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSB0aGUgbGlmZSBvZiB0aGlzIGVtaXR0ZXIgaW4gbWlsbGlzZWNvbmRzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBlbWl0KHRvdGFsRW1pdFRpbWVzID0gSW5maW5pdHksIGxpZmUgPSBJbmZpbml0eSkge1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcbiAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gaXNOdW1iZXIodG90YWxFbWl0VGltZXMpID8gdG90YWxFbWl0VGltZXMgOiBJbmZpbml0eTtcblxuICAgIGlmICh0b3RhbEVtaXRUaW1lcyA9PT0gMSkge1xuICAgICAgdGhpcy5saWZlID0gdG90YWxFbWl0VGltZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlmZSA9IGlzTnVtYmVyKGxpZmUpID8gbGlmZSA6IEluZmluaXR5O1xuICAgIH1cblxuICAgIHRoaXMucmF0ZS5pbml0KCk7XG4gICAgdGhpcy5pc0VtaXR0aW5nID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCBlbWl0IG1ldGhvZCB0aGF0IGlzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBTeXN0ZW0uZW1pdCBtZXRob2QuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBleHBlcmltZW50YWxfZW1pdCgpIHtcbiAgICBjb25zdCB7IGlzRW1pdHRpbmcsIHRvdGFsRW1pdFRpbWVzLCBsaWZlIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFpc0VtaXR0aW5nKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFbWl0VGltZSA9IDA7XG5cbiAgICAgIGlmICghdG90YWxFbWl0VGltZXMpIHtcbiAgICAgICAgdGhpcy5zZXRUb3RhbEVtaXRUaW1lcyhJbmZpbml0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghbGlmZSkge1xuICAgICAgICB0aGlzLnNldExpZmUoSW5maW5pdHkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJhdGUuaW5pdCgpO1xuICAgICAgdGhpcy5pc0VtaXR0aW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0b3RhbCBlbWl0IHRpbWVzIGZvciB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0b3RhbEVtaXRUaW1lcz1JbmZpbml0eV0gLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRUb3RhbEVtaXRUaW1lcyh0b3RhbEVtaXRUaW1lcyA9IEluZmluaXR5KSB7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IGlzTnVtYmVyKHRvdGFsRW1pdFRpbWVzKSA/IHRvdGFsRW1pdFRpbWVzIDogSW5maW5pdHk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsaWZlIG9mIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmU9SW5maW5pdHldIC0gdGhlIGxpZmUgb2YgdGhpcyBlbWl0dGVyIGluIG1pbGxpc2Vjb25kc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0TGlmZShsaWZlID0gSW5maW5pdHkpIHtcbiAgICBpZiAodGhpcy50b3RhbEVtaXRUaW1lcyA9PT0gMSkge1xuICAgICAgdGhpcy5saWZlID0gdGhpcy50b3RhbEVtaXRUaW1lcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saWZlID0gaXNOdW1iZXIobGlmZSkgPyBsaWZlIDogSW5maW5pdHk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgdGhlIGVtaXR0ZXIgZnJvbSBlbWl0dGluZyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgc3RvcEVtaXQoKSB7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IC0xO1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcbiAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLaWxscyBhbGwgb2YgdGhlIGVtaXR0ZXIncyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVtb3ZlQWxsUGFydGljbGVzKCkge1xuICAgIGxldCBpID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5wYXJ0aWNsZXNbaV0uZGVhZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwYXJ0aWNsZSBpbml0aWFsaXplciB0byB0aGUgZW1pdHRlci5cbiAgICogRWFjaCBpbml0aWFsaXplciBpcyBydW4gb24gZWFjaCBwYXJ0aWNsZSB3aGVuIHRoZXkgYXJlIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7SW5pdGlhbGl6ZXJ9IGluaXRpYWxpemVyIC0gVGhlIGluaXRpYWxpemVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkSW5pdGlhbGl6ZXIoaW5pdGlhbGl6ZXIpIHtcbiAgICB0aGlzLmluaXRpYWxpemVycy5wdXNoKGluaXRpYWxpemVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgcGFydGljbGUgaW5pdGlhbGl6ZXJzIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEluaXRpYWxpemVyPn0gaW5pdGlhbGl6ZXJzIC0gYW4gYXJyYXkgb2YgcGFydGljbGUgaW5pdGlhbGl6ZXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRJbml0aWFsaXplcnMoaW5pdGlhbGl6ZXJzKSB7XG4gICAgbGV0IGkgPSBpbml0aWFsaXplcnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5hZGRJbml0aWFsaXplcihpbml0aWFsaXplcnNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIncyBwYXJ0aWNsZSBpbml0aWFsaXplcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8SW5pdGlhbGl6ZXI+fSBpbml0aWFsaXplcnMgLSBhbiBhcnJheSBvZiBwYXJ0aWNsZSBpbml0aWFsaXplcnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldEluaXRpYWxpemVycyhpbml0aWFsaXplcnMpIHtcbiAgICB0aGlzLmluaXRpYWxpemVycyA9IGluaXRpYWxpemVycztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gaW5pdGlhbGl6ZXIgZnJvbSB0aGUgZW1pdHRlcidzIGluaXRpYWxpemVycyBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtJbml0aWFsaXplcn0gaW5pdGlhbGl6ZXIgLSBUaGUgaW5pdGlhbGl6ZXIgdG8gcmVtb3ZlXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVJbml0aWFsaXplcihpbml0aWFsaXplcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0aWFsaXplcnMuaW5kZXhPZihpbml0aWFsaXplcik7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBpbml0aWFsaXplcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxJbml0aWFsaXplcnMoKSB7XG4gICAgVXRpbC5kZXN0cm95QXJyYXkodGhpcy5pbml0aWFsaXplcnMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGJlaGF2aW91ciB0byB0aGUgZW1pdHRlci4gQWxsIGVtaXR0ZXIgYmVoYXZpb3VycyBhcmUgYWRkZWQgdG8gZWFjaCBwYXJ0aWNsZSB3aGVuXG4gICAqIHRoZXkgYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIGFkZCB0byB0aGUgZW1pdHRlclxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIHRoaXMuYmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIGJlaGF2aW91cnMgdG8gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8QmVoYXZpb3VyPn0gYmVoYXZpb3VycyAtIGFuIGFycmF5IG9mIGVtaXR0ZXIgYmVoYXZpb3Vyc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgbGV0IGkgPSBiZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMuYWRkQmVoYXZpb3VyKGJlaGF2aW91cnNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIncyBiZWhhdmlvdXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEJlaGF2aW91cj59IGJlaGF2aW91cnMgLSBhbiBhcnJheSBvZiBlbWl0dGVyIGJlaGF2aW91cnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldEJlaGF2aW91cnMoYmVoYXZpb3Vycykge1xuICAgIHRoaXMuYmVoYXZpb3VycyA9IGJlaGF2aW91cnM7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5iZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZGVzdHJveUFycmF5KHRoaXMuYmVoYXZpb3Vycyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGVtaXR0ZXIgYmVoYXZpb3VyIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIC0gVGhlIGJlaGF2aW91ciB0byBhZGQgdG8gdGhlIGVtaXR0ZXJcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZEVtaXR0ZXJCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICBiZWhhdmlvdXIuaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgYmVoYXZpb3VycyB0byB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRFbWl0dGVyQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgbGV0IGkgPSBiZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMuYWRkRW1pdHRlckJlaGF2aW91cihiZWhhdmlvdXJzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBlbWl0dGVyJ3MgYmVoYXZpb3Vycy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRFbWl0dGVyQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYmVoYXZpb3Vycy5sZW5ndGg7XG5cbiAgICB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzID0gYmVoYXZpb3VycztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnNbaV0uaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlRW1pdHRlckJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZW1pdHRlckJlaGF2aW91cnMuaW5kZXhPZihiZWhhdmlvdXIpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxFbWl0dGVyQmVoYXZpb3VycygpIHtcbiAgICBVdGlsLmRlc3Ryb3lBcnJheSh0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGV2ZW50IGxpc3RlbmVyIGZvciB0aGUgRU1JVFRFUl9ERUFEIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29uRW1pdHRlckRlYWR9IC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgRU1JVFRFUl9ERUFEIGlzIGRpc3BhdGNoZWQuXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lcihvbkVtaXR0ZXJEZWFkKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihgJHt0aGlzLmlkfV8ke0VNSVRURVJfREVBRH1gLCAoKSA9PlxuICAgICAgb25FbWl0dGVyRGVhZCgpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYXJ0aWNsZSBieSByZXRyZWl2aW5nIG9uZSBmcm9tIHRoZSBwb29sIGFuZCBzZXR0aW5nIGl0IHVwIHdpdGhcbiAgICogdGhlIHN1cHBsaWVkIGluaXRpYWxpemVyIGFuZCBiZWhhdmlvdXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBjcmVhdGVQYXJ0aWNsZSgpIHtcbiAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFyZW50LnBvb2wuZ2V0KFBhcnRpY2xlKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHRoaXMuc2V0dXBQYXJ0aWNsZShwYXJ0aWNsZSwgaW5kZXgpO1xuICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoKFBBUlRJQ0xFX0NSRUFURUQsIHBhcnRpY2xlKTtcbiAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9DUkVBVEVELCBwYXJ0aWNsZSk7XG5cbiAgICByZXR1cm4gcGFydGljbGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBhIHBhcnRpY2xlIGJ5IHJ1bm5pbmcgYWxsIGluaXRpYWxpemVycyBvbiBpdCBhbmQgc2V0dGluZyBpdHMgYmVoYXZpb3Vycy5cbiAgICogQWxzbyBhZGRzIHRoZSBwYXJ0aWNsZSB0byB0aGlzLnBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gc2V0dXBcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBzZXR1cFBhcnRpY2xlKHBhcnRpY2xlLCBpbmRleCkge1xuICAgIGNvbnN0IHsgaW5pdGlhbGl6ZXJzLCBiZWhhdmlvdXJzIH0gPSB0aGlzO1xuXG4gICAgSW5pdGlhbGl6ZXJVdGlsLmluaXRpYWxpemUodGhpcywgcGFydGljbGUsIGluaXRpYWxpemVycyk7XG5cbiAgICBwYXJ0aWNsZS5hZGRCZWhhdmlvdXJzKGJlaGF2aW91cnMpO1xuICAgIHBhcnRpY2xlLnBhcmVudCA9IHRoaXM7XG4gICAgcGFydGljbGUuaW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMucGFydGljbGVzLnB1c2gocGFydGljbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGVtaXR0ZXIgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIHBhc3NlZCBieSBjYWxsaW5nIHRoZSBnZW5lcmF0ZVxuICAgKiBhbmQgaW50ZWdyYXRlIG1ldGhvZHMuIFRoZSBnZW5lcmF0ZSBtZXRob2QgY3JlYXRlcyBwYXJ0aWNsZXMsIHRoZSBpbnRlZ3JhdGVcbiAgICogbWV0aG9kIHVwZGF0ZXMgZXhpc3RpbmcgcGFydGljbGVzLlxuICAgKlxuICAgKiBJZiB0aGUgZW1pdHRlciBhZ2UgaXMgZ3JlYXRlciB0aGFuIHRpbWUsIHRoZSBlbWl0dGVyIGlzIGtpbGxlZC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgYWxzbyBpbmRleGVzL2RlaW5kZXhlcyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgdXBkYXRlKHRpbWUpIHtcbiAgICBpZiAoIXRoaXMuaXNFbWl0dGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWdlICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5kZWFkIHx8IHRoaXMuYWdlID49IHRoaXMubGlmZSkge1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy5nZW5lcmF0ZSh0aW1lKTtcbiAgICB0aGlzLmludGVncmF0ZSh0aW1lKTtcblxuICAgIGxldCBpID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY29uc3QgcGFydGljbGUgPSB0aGlzLnBhcnRpY2xlc1tpXTtcblxuICAgICAgaWYgKHBhcnRpY2xlLmRlYWQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuZGlzcGF0Y2goUEFSVElDTEVfREVBRCwgcGFydGljbGUpO1xuICAgICAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9ERUFELCBwYXJ0aWNsZSk7XG4gICAgICAgIHRoaXMucGFyZW50LnBvb2wuZXhwaXJlKHBhcnRpY2xlLnJlc2V0KCkpO1xuICAgICAgICB0aGlzLnBhcnRpY2xlcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVFbWl0dGVyQmVoYXZpb3Vycyh0aW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBlbWl0dGVyJ3MgZW1pdHRlciBiZWhhdmlvdXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHVwZGF0ZUVtaXR0ZXJCZWhhdmlvdXJzKHRpbWUpIHtcbiAgICBpZiAodGhpcy5zbGVlcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZW1pdHRlckJlaGF2aW91cnMubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vyc1tpXS5hcHBseUJlaGF2aW91cih0aGlzLCB0aW1lLCBpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyB0aGUgaW50ZWdyYXRpb24gYWxnb3JpdGhtIG9uIHRoZSBlbWl0dGVyIGFuZCBhbGwgcGFydGljbGVzLlxuICAgKiBVcGRhdGVzIHRoZSBwYXJ0aWNsZXMgd2l0aCB0aGUgdGltc3RhbXAgcGFzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGludGVncmF0ZSh0aW1lKSB7XG4gICAgY29uc3QgaW50ZWdyYXRpb25UeXBlID0gdGhpcy5wYXJlbnRcbiAgICAgID8gdGhpcy5wYXJlbnQuaW50ZWdyYXRpb25UeXBlXG4gICAgICA6IElOVEVHUkFUSU9OX1RZUEVfRVVMRVI7XG4gICAgY29uc3QgZGFtcGluZyA9IDEgLSB0aGlzLmRhbXBpbmc7XG5cbiAgICBpbnRlZ3JhdGUodGhpcywgdGltZSwgZGFtcGluZywgaW50ZWdyYXRpb25UeXBlKTtcblxuICAgIGxldCBpbmRleCA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFydGljbGVzW2luZGV4XTtcblxuICAgICAgcGFydGljbGUudXBkYXRlKHRpbWUsIGluZGV4KTtcbiAgICAgIGludGVncmF0ZShwYXJ0aWNsZSwgdGltZSwgZGFtcGluZywgaW50ZWdyYXRpb25UeXBlKTtcblxuICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuZGlzcGF0Y2goUEFSVElDTEVfVVBEQVRFLCBwYXJ0aWNsZSk7XG4gICAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9VUERBVEUsIHBhcnRpY2xlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIG5ldyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgZ2VuZXJhdGUodGltZSkge1xuICAgIGlmICh0aGlzLnRvdGFsRW1pdFRpbWVzID09PSAxKSB7XG4gICAgICBsZXQgaSA9IHRoaXMucmF0ZS5nZXRWYWx1ZSg5OTk5OSk7XG5cbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB0aGlzLmNJRCA9IGk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gMDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RW1pdFRpbWUgPCB0aGlzLnRvdGFsRW1pdFRpbWVzKSB7XG4gICAgICBsZXQgaSA9IHRoaXMucmF0ZS5nZXRWYWx1ZSh0aW1lKTtcblxuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHRoaXMuY0lEID0gaTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEtpbGxzIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICB0aGlzLmVuZXJneSA9IDA7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IC0xO1xuXG4gICAgaWYgKHRoaXMucGFydGljbGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVtb3ZlQWxsSW5pdGlhbGl6ZXJzKCk7XG4gICAgICB0aGlzLnJlbW92ZUFsbEJlaGF2aW91cnMoKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goYCR7dGhpcy5pZH1fJHtFTUlUVEVSX0RFQUR9YCk7XG5cbiAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LnJlbW92ZUVtaXR0ZXIodGhpcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
708
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbWl0dGVyL0VtaXR0ZXIuanMiXSwibmFtZXMiOlsiREVGQVVMVF9CSU5EX0VNSVRURVIiLCJERUZBVUxUX0JJTkRfRU1JVFRFUl9FVkVOVCIsIkRFRkFVTFRfREFNUElORyIsIkRFRkFVTFRfRU1JVFRFUl9JTkRFWCIsIkRFRkFVTFRfRU1JVFRFUl9SQVRFIiwiRXZlbnREaXNwYXRjaGVyIiwiRU1JVFRFUl9ERUFEIiwiUEFSVElDTEVfQ1JFQVRFRCIsIlBBUlRJQ0xFX0RFQUQiLCJQQVJUSUNMRV9VUERBVEUiLCJTWVNURU1fVVBEQVRFIiwiSU5URUdSQVRJT05fVFlQRV9FVUxFUiIsImludGVncmF0ZSIsIlV0aWwiLCJ1aWQiLCJJbml0aWFsaXplclV0aWwiLCJQYXJ0aWNsZSIsImlzTnVtYmVyIiwiRU1JVFRFUl9UWVBFX0VNSVRURVIiLCJ0eXBlIiwiRW1pdHRlciIsImNvbnN0cnVjdG9yIiwicHJvcGVydGllcyIsInBhcnRpY2xlcyIsImluaXRpYWxpemVycyIsImJlaGF2aW91cnMiLCJlbWl0dGVyQmVoYXZpb3VycyIsImN1cnJlbnRFbWl0VGltZSIsInRvdGFsRW1pdFRpbWVzIiwiZGFtcGluZyIsImJpbmRFbWl0dGVyIiwiYmluZEVtaXR0ZXJFdmVudCIsInJhdGUiLCJpc0VtaXR0aW5nIiwiaWQiLCJjSUQiLCJuYW1lIiwiaW5kZXgiLCJldmVudERpc3BhdGNoZXIiLCJkaXNwYXRjaCIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGF0Y2hFdmVudCIsInNldFJhdGUiLCJzZXRQb3NpdGlvbiIsIm5ld1Bvc2l0aW9uIiwicG9zaXRpb24iLCJ4IiwieSIsInoiLCJzZXQiLCJzZXRSb3RhdGlvbiIsIm5ld1JvdGF0aW9uIiwicm90YXRpb24iLCJlbWl0IiwiSW5maW5pdHkiLCJsaWZlIiwiaW5pdCIsImV4cGVyaW1lbnRhbF9lbWl0Iiwic2V0VG90YWxFbWl0VGltZXMiLCJzZXRMaWZlIiwic3RvcEVtaXQiLCJyZW1vdmVBbGxQYXJ0aWNsZXMiLCJpIiwibGVuZ3RoIiwiZGVhZCIsImFkZEluaXRpYWxpemVyIiwiaW5pdGlhbGl6ZXIiLCJwdXNoIiwiYWRkSW5pdGlhbGl6ZXJzIiwic2V0SW5pdGlhbGl6ZXJzIiwicmVtb3ZlSW5pdGlhbGl6ZXIiLCJpbmRleE9mIiwic3BsaWNlIiwicmVtb3ZlQWxsSW5pdGlhbGl6ZXJzIiwiZGVzdHJveUFycmF5IiwiYWRkQmVoYXZpb3VyIiwiYmVoYXZpb3VyIiwiYWRkQmVoYXZpb3VycyIsInNldEJlaGF2aW91cnMiLCJyZW1vdmVCZWhhdmlvdXIiLCJyZW1vdmVBbGxCZWhhdmlvdXJzIiwiYWRkRW1pdHRlckJlaGF2aW91ciIsImluaXRpYWxpemUiLCJhZGRFbWl0dGVyQmVoYXZpb3VycyIsInNldEVtaXR0ZXJCZWhhdmlvdXJzIiwicmVtb3ZlRW1pdHRlckJlaGF2aW91ciIsInJlbW92ZUFsbEVtaXR0ZXJCZWhhdmlvdXJzIiwiYWRkT25FbWl0dGVyRGVhZEV2ZW50TGlzdGVuZXIiLCJvbkVtaXR0ZXJEZWFkIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNyZWF0ZVBhcnRpY2xlIiwicGFydGljbGUiLCJwYXJlbnQiLCJwb29sIiwiZ2V0Iiwic2V0dXBQYXJ0aWNsZSIsInVwZGF0ZSIsInRpbWUiLCJhZ2UiLCJkZXN0cm95IiwiZ2VuZXJhdGUiLCJleHBpcmUiLCJyZXNldCIsInVwZGF0ZUVtaXR0ZXJCZWhhdmlvdXJzIiwic2xlZXAiLCJhcHBseUJlaGF2aW91ciIsImludGVncmF0aW9uVHlwZSIsImdldFZhbHVlIiwiZW5lcmd5IiwicmVtb3ZlRW1pdHRlciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsb0JBREYsRUFFRUMsMEJBRkYsRUFHRUMsZUFIRixFQUlFQyxxQkFKRixFQUtFQyxvQkFMRixRQU1PLGFBTlA7QUFPQSxPQUFPQyxlQUFQLElBQ0VDLFlBREYsRUFFRUMsZ0JBRkYsRUFHRUMsYUFIRixFQUlFQyxlQUpGLEVBS0VDLGFBTEYsUUFNTyxXQU5QO0FBT0EsU0FBU0Msc0JBQVQs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Q0FBVTRFLFFBQVYsQ0FBbUJWLElBQW5CLENBQVI7O0FBRUEsVUFBSW5DLENBQUMsR0FBRyxDQUFSLEVBQVc7QUFDVCxhQUFLNUIsR0FBTCxHQUFXNEIsQ0FBWDtBQUNEOztBQUVELGFBQU9BLENBQUMsRUFBUixFQUFZO0FBQ1YsYUFBSzRCLGNBQUw7QUFDRDtBQUNGO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRVMsRUFBQUEsT0FBTyxHQUFHO0FBQ1IsU0FBS25DLElBQUwsR0FBWSxJQUFaO0FBQ0EsU0FBSzRDLE1BQUwsR0FBYyxDQUFkO0FBQ0EsU0FBS2pGLGNBQUwsR0FBc0IsQ0FBQyxDQUF2Qjs7QUFFQSxRQUFJLEtBQUtMLFNBQUwsQ0FBZXlDLE1BQWYsSUFBeUIsQ0FBN0IsRUFBZ0M7QUFDOUIsV0FBSy9CLFVBQUwsR0FBa0IsS0FBbEI7QUFDQSxXQUFLeUMscUJBQUw7QUFDQSxXQUFLTyxtQkFBTDtBQUNBLFdBQUsxQyxRQUFMLENBQWUsR0FBRSxLQUFLTCxFQUFHLElBQUc1QixZQUFhLEVBQXpDO0FBRUEsV0FBS3VGLE1BQUwsSUFBZSxLQUFLQSxNQUFMLENBQVlpQixhQUFaLENBQTBCLElBQTFCLENBQWY7QUFDRDtBQUNGOztBQWpxQjJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9CSU5EX0VNSVRURVIsXG4gIERFRkFVTFRfQklORF9FTUlUVEVSX0VWRU5ULFxuICBERUZBVUxUX0RBTVBJTkcsXG4gIERFRkFVTFRfRU1JVFRFUl9JTkRFWCxcbiAgREVGQVVMVF9FTUlUVEVSX1JBVEUsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBFdmVudERpc3BhdGNoZXIsIHtcbiAgRU1JVFRFUl9ERUFELFxuICBQQVJUSUNMRV9DUkVBVEVELFxuICBQQVJUSUNMRV9ERUFELFxuICBQQVJUSUNMRV9VUERBVEUsXG4gIFNZU1RFTV9VUERBVEUsXG59IGZyb20gJy4uL2V2ZW50cyc7XG5pbXBvcnQgeyBJTlRFR1JBVElPTl9UWVBFX0VVTEVSLCBpbnRlZ3JhdGUgfSBmcm9tICcuLi9tYXRoJztcbmltcG9ydCB7IFV0aWwsIHVpZCB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHsgSW5pdGlhbGl6ZXJVdGlsIH0gZnJvbSAnLi4vaW5pdGlhbGl6ZXInO1xuaW1wb3J0IFBhcnRpY2xlIGZyb20gJy4uL2NvcmUvUGFydGljbGUnO1xuaW1wb3J0IGlzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5pbXBvcnQgeyBFTUlUVEVSX1RZUEVfRU1JVFRFUiBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRW1pdHRlcnMgYXJlIHRoZSBTeXN0ZW0gZW5naW5lJ3MgcGFydGljbGUgZmFjdG9yaWVzLiBUaGV5IGNhdXNlIHBhcnRpY2xlcyB0b1xuICogYmUgcmVuZGVyZWQgYnkgZW1pdHRpbmcgdGhlbSwgYW5kIHN0b3JlIGFsbCBwYXJ0aWNsZSBpbml0aWFsaXplcnMgYW5kIGJlaGF2aW91cnMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbWl0dGVyIGV4dGVuZHMgUGFydGljbGUge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBFbWl0dGVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcGVydGllcyAtIFRoZSBwcm9wZXJ0aWVzIHRvIGluc3RhbnRpYXRlIHRoZSBlbWl0dGVyIHdpdGhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzKSB7XG4gICAgc3VwZXIocHJvcGVydGllcyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnRpY2xlcyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGluaXRpYWxpemVycyBmb3IgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyLlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLmluaXRpYWxpemVycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGJlaGF2aW91cnMgZm9yIHBhcnRpY2xlcyBlbWl0dGVkIGJ5IHRoaXMgZW1pdHRlci5cbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5iZWhhdmlvdXJzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgYmVoYXZpb3VycyBmb3IgdGhlIGVtaXR0ZXIuXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqL1xuICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjdXJyZW50IGVtaXQgaXRlcmF0aW9uLlxuICAgICAqIEB0eXBlIHtpbnRlZ2VyfVxuICAgICAqL1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSB0b3RhbCBudW1iZXIgb2YgdGltZXMgdGhlIGVtaXR0ZXIgc2hvdWxkIGVtaXQgcGFydGljbGVzLlxuICAgICAqIEB0eXBlIHtpbnRlZ2VyfVxuICAgICAqL1xuICAgIHRoaXMudG90YWxFbWl0VGltZXMgPSAtMTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBmcmljdGlvbiBjb2VmZmljaWVudCBmb3IgYWxsIHBhcnRpY2xlIHRvIGVtaXQgYnkuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmRhbXBpbmcgPSBERUZBVUxUX0RBTVBJTkc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBFbnN1cmVzIHRoYXQgcGFydGljbGVzIGVtaXR0ZWQgYnkgdGhpcyBlbWl0dGVyIGFyZSBwb3NpdGlvbmVkXG4gICAgICogYWNjb3JkaW5nIHRvIHRoZSBlbWl0dGVyJ3MgcHJvcGVydGllcy5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmJpbmRFbWl0dGVyID0gREVGQVVMVF9CSU5EX0VNSVRURVI7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBlbWl0dGVyIHdpbGwgZGlzcGF0Y2ggaW50ZXJuYWwgZXZlbnRzLiBEZWZhdWx0c1xuICAgICAqIHRvIGZhbHNlXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5iaW5kRW1pdHRlckV2ZW50ID0gREVGQVVMVF9CSU5EX0VNSVRURVJfRVZFTlQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBlbWl0IHBlciBzZWNvbmQgKGEgW3BhcnRpY2xlXS9iIFtzXSlcbiAgICAgKiBAdHlwZSB7UmF0ZX1cbiAgICAgKi9cbiAgICB0aGlzLnJhdGUgPSBERUZBVUxUX0VNSVRURVJfUkFURTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIERldGVybWluZXMgaWYgdGhlIGVtaXR0ZXIgaXMgZW1pdHRpbmcgcGFydGljbGVzIG9yIG5vdC5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBlbWl0dGVyJ3MgaWQuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLmlkID0gYGVtaXR0ZXItJHt1aWQoKX1gO1xuICAgIHRoaXMuY0lEID0gMDtcbiAgICB0aGlzLm5hbWUgPSAnRW1pdHRlcic7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgaW5kZXggb2YgdGhlIGVtaXR0ZXIgYXMgaXQgaXMgYWRkZWQgdG8gdGhlIHN5c3RlbS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfHVuZGVmaW5lZH1cbiAgICAgKi9cbiAgICB0aGlzLmluZGV4ID0gREVGQVVMVF9FTUlUVEVSX0lOREVYO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGVtaXR0ZXIncyBpbnRlcm5hbCBldmVudCBkaXNwYXRjaGVyLlxuICAgICAqIEB0eXBlIHtFdmVudERpc3BhdGNoZXJ9XG4gICAgICovXG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIgPSBuZXcgRXZlbnREaXNwYXRjaGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJveHkgbWV0aG9kIGZvciB0aGUgaW50ZXJuYWwgZXZlbnQgZGlzcGF0Y2hlcidzIGRpc3BhdGNoRXZlbnQgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgLSBUaGUgZXZlbnQgdG8gZGlzcGF0Y2hcbiAgICogQHBhcmFtIHtvYmplY3Q8UGFydGljbGU+fSBbdGFyZ2V0PXRoaXNdIC0gVGhlIGV2ZW50IHRhcmdldFxuICAgKi9cbiAgZGlzcGF0Y2goZXZlbnQsIHRhcmdldCA9IHRoaXMpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIgcmF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSYXRlfSByYXRlIC0gYSByYXRlIGluaXRpYWxpemVyIG9iamVjdFxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0UmF0ZShyYXRlKSB7XG4gICAgdGhpcy5yYXRlID0gcmF0ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3UG9zaXRpb24gLSBhbiBvYmplY3QgdGhlIG5ldyB4LCB5IGFuZCB6IHByb3BzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRQb3NpdGlvbihuZXdQb3NpdGlvbiA9IHt9KSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gdGhpcztcbiAgICBjb25zdCB7IHggPSBwb3NpdGlvbi54LCB5ID0gcG9zaXRpb24ueSwgeiA9IHBvc2l0aW9uLnogfSA9IG5ld1Bvc2l0aW9uO1xuXG4gICAgdGhpcy5wb3NpdGlvbi5zZXQoeCwgeSwgeik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByb3RhdGlvbiBvZiB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1JvdGF0aW9uIC0gYW4gb2JqZWN0IHRoZSBuZXcgeCwgeSBhbmQgeiBwcm9wc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0Um90YXRpb24obmV3Um90YXRpb24gPSB7fSkge1xuICAgIGNvbnN0IHsgcm90YXRpb24gfSA9IHRoaXM7XG4gICAgY29uc3QgeyB4ID0gcm90YXRpb24ueCwgeSA9IHJvdGF0aW9uLnksIHogPSByb3RhdGlvbi56IH0gPSBuZXdSb3RhdGlvbjtcblxuICAgIHRoaXMucm90YXRpb24uc2V0KHgsIHksIHopO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRoZSBlbWl0dGVyIHNob3VsZCBlbWl0IHBhcnRpY2xlcyBhcyB3ZWxsIGFzXG4gICAqIHRoZSBlbWl0dGVyJ3MgbGlmZS4gQWxzbyBpbnRpYWxpemVzIHRoZSBlbWl0dGVyIHJhdGUuXG4gICAqIFRoaXMgZW5hYmxlcyB0aGUgZW1pdHRlciB0byBlbWl0IHBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0b3RhbEVtaXRUaW1lcz1JbmZpbml0eV0gLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSB0aGUgbGlmZSBvZiB0aGlzIGVtaXR0ZXIgaW4gbWlsbGlzZWNvbmRzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBlbWl0KHRvdGFsRW1pdFRpbWVzID0gSW5maW5pdHksIGxpZmUgPSBJbmZpbml0eSkge1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcbiAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gaXNOdW1iZXIodG90YWxFbWl0VGltZXMpID8gdG90YWxFbWl0VGltZXMgOiBJbmZpbml0eTtcblxuICAgIGlmICh0b3RhbEVtaXRUaW1lcyA9PT0gMSkge1xuICAgICAgdGhpcy5saWZlID0gdG90YWxFbWl0VGltZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlmZSA9IGlzTnVtYmVyKGxpZmUpID8gbGlmZSA6IEluZmluaXR5O1xuICAgIH1cblxuICAgIHRoaXMucmF0ZS5pbml0KCk7XG4gICAgdGhpcy5pc0VtaXR0aW5nID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCBlbWl0IG1ldGhvZCB0aGF0IGlzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBTeXN0ZW0uZW1pdCBtZXRob2QuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBleHBlcmltZW50YWxfZW1pdCgpIHtcbiAgICBjb25zdCB7IGlzRW1pdHRpbmcsIHRvdGFsRW1pdFRpbWVzLCBsaWZlIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFpc0VtaXR0aW5nKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFbWl0VGltZSA9IDA7XG5cbiAgICAgIGlmICghdG90YWxFbWl0VGltZXMpIHtcbiAgICAgICAgdGhpcy5zZXRUb3RhbEVtaXRUaW1lcyhJbmZpbml0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghbGlmZSkge1xuICAgICAgICB0aGlzLnNldExpZmUoSW5maW5pdHkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJhdGUuaW5pdCgpO1xuICAgICAgdGhpcy5pc0VtaXR0aW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0b3RhbCBlbWl0IHRpbWVzIGZvciB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0b3RhbEVtaXRUaW1lcz1JbmZpbml0eV0gLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRUb3RhbEVtaXRUaW1lcyh0b3RhbEVtaXRUaW1lcyA9IEluZmluaXR5KSB7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IGlzTnVtYmVyKHRvdGFsRW1pdFRpbWVzKSA/IHRvdGFsRW1pdFRpbWVzIDogSW5maW5pdHk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsaWZlIG9mIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmU9SW5maW5pdHldIC0gdGhlIGxpZmUgb2YgdGhpcyBlbWl0dGVyIGluIG1pbGxpc2Vjb25kc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgc2V0TGlmZShsaWZlID0gSW5maW5pdHkpIHtcbiAgICBpZiAodGhpcy50b3RhbEVtaXRUaW1lcyA9PT0gMSkge1xuICAgICAgdGhpcy5saWZlID0gdGhpcy50b3RhbEVtaXRUaW1lcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saWZlID0gaXNOdW1iZXIobGlmZSkgPyBsaWZlIDogSW5maW5pdHk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgdGhlIGVtaXR0ZXIgZnJvbSBlbWl0dGluZyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgc3RvcEVtaXQoKSB7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IC0xO1xuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lID0gMDtcbiAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLaWxscyBhbGwgb2YgdGhlIGVtaXR0ZXIncyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVtb3ZlQWxsUGFydGljbGVzKCkge1xuICAgIGxldCBpID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5wYXJ0aWNsZXNbaV0uZGVhZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwYXJ0aWNsZSBpbml0aWFsaXplciB0byB0aGUgZW1pdHRlci5cbiAgICogRWFjaCBpbml0aWFsaXplciBpcyBydW4gb24gZWFjaCBwYXJ0aWNsZSB3aGVuIHRoZXkgYXJlIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7SW5pdGlhbGl6ZXJ9IGluaXRpYWxpemVyIC0gVGhlIGluaXRpYWxpemVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkSW5pdGlhbGl6ZXIoaW5pdGlhbGl6ZXIpIHtcbiAgICB0aGlzLmluaXRpYWxpemVycy5wdXNoKGluaXRpYWxpemVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgcGFydGljbGUgaW5pdGlhbGl6ZXJzIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEluaXRpYWxpemVyPn0gaW5pdGlhbGl6ZXJzIC0gYW4gYXJyYXkgb2YgcGFydGljbGUgaW5pdGlhbGl6ZXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRJbml0aWFsaXplcnMoaW5pdGlhbGl6ZXJzKSB7XG4gICAgbGV0IGkgPSBpbml0aWFsaXplcnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5hZGRJbml0aWFsaXplcihpbml0aWFsaXplcnNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIncyBwYXJ0aWNsZSBpbml0aWFsaXplcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8SW5pdGlhbGl6ZXI+fSBpbml0aWFsaXplcnMgLSBhbiBhcnJheSBvZiBwYXJ0aWNsZSBpbml0aWFsaXplcnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldEluaXRpYWxpemVycyhpbml0aWFsaXplcnMpIHtcbiAgICB0aGlzLmluaXRpYWxpemVycyA9IGluaXRpYWxpemVycztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gaW5pdGlhbGl6ZXIgZnJvbSB0aGUgZW1pdHRlcidzIGluaXRpYWxpemVycyBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtJbml0aWFsaXplcn0gaW5pdGlhbGl6ZXIgLSBUaGUgaW5pdGlhbGl6ZXIgdG8gcmVtb3ZlXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVJbml0aWFsaXplcihpbml0aWFsaXplcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0aWFsaXplcnMuaW5kZXhPZihpbml0aWFsaXplcik7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBpbml0aWFsaXplcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxJbml0aWFsaXplcnMoKSB7XG4gICAgVXRpbC5kZXN0cm95QXJyYXkodGhpcy5pbml0aWFsaXplcnMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGJlaGF2aW91ciB0byB0aGUgZW1pdHRlci4gQWxsIGVtaXR0ZXIgYmVoYXZpb3VycyBhcmUgYWRkZWQgdG8gZWFjaCBwYXJ0aWNsZSB3aGVuXG4gICAqIHRoZXkgYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIGFkZCB0byB0aGUgZW1pdHRlclxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIHRoaXMuYmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIGJlaGF2aW91cnMgdG8gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8QmVoYXZpb3VyPn0gYmVoYXZpb3VycyAtIGFuIGFycmF5IG9mIGVtaXR0ZXIgYmVoYXZpb3Vyc1xuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgYWRkQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgbGV0IGkgPSBiZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMuYWRkQmVoYXZpb3VyKGJlaGF2aW91cnNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGVtaXR0ZXIncyBiZWhhdmlvdXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEJlaGF2aW91cj59IGJlaGF2aW91cnMgLSBhbiBhcnJheSBvZiBlbWl0dGVyIGJlaGF2aW91cnNcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIHNldEJlaGF2aW91cnMoYmVoYXZpb3Vycykge1xuICAgIHRoaXMuYmVoYXZpb3VycyA9IGJlaGF2aW91cnM7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5iZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZGVzdHJveUFycmF5KHRoaXMuYmVoYXZpb3Vycyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGVtaXR0ZXIgYmVoYXZpb3VyIHRvIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIC0gVGhlIGJlaGF2aW91ciB0byBhZGQgdG8gdGhlIGVtaXR0ZXJcbiAgICogQHJldHVybiB7RW1pdHRlcn1cbiAgICovXG4gIGFkZEVtaXR0ZXJCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICBiZWhhdmlvdXIuaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgYmVoYXZpb3VycyB0byB0aGUgZW1pdHRlci5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRFbWl0dGVyQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgbGV0IGkgPSBiZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMuYWRkRW1pdHRlckJlaGF2aW91cihiZWhhdmlvdXJzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBlbWl0dGVyJ3MgYmVoYXZpb3Vycy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxCZWhhdmlvdXI+fSBiZWhhdmlvdXJzIC0gYW4gYXJyYXkgb2YgZW1pdHRlciBiZWhhdmlvdXJzXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBzZXRFbWl0dGVyQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYmVoYXZpb3Vycy5sZW5ndGg7XG5cbiAgICB0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzID0gYmVoYXZpb3VycztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnNbaV0uaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgZW1pdHRlcidzIGJlaGF2aW91cnMgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIHJlbW92ZVxuICAgKiBAcmV0dXJuIHtFbWl0dGVyfVxuICAgKi9cbiAgcmVtb3ZlRW1pdHRlckJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZW1pdHRlckJlaGF2aW91cnMuaW5kZXhPZihiZWhhdmlvdXIpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuZW1pdHRlckJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIGVtaXR0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICByZW1vdmVBbGxFbWl0dGVyQmVoYXZpb3VycygpIHtcbiAgICBVdGlsLmRlc3Ryb3lBcnJheSh0aGlzLmVtaXR0ZXJCZWhhdmlvdXJzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGV2ZW50IGxpc3RlbmVyIGZvciB0aGUgRU1JVFRFUl9ERUFEIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29uRW1pdHRlckRlYWR9IC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgRU1JVFRFUl9ERUFEIGlzIGRpc3BhdGNoZWQuXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lcihvbkVtaXR0ZXJEZWFkKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihgJHt0aGlzLmlkfV8ke0VNSVRURVJfREVBRH1gLCAoKSA9PlxuICAgICAgb25FbWl0dGVyRGVhZCgpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYXJ0aWNsZSBieSByZXRyZWl2aW5nIG9uZSBmcm9tIHRoZSBwb29sIGFuZCBzZXR0aW5nIGl0IHVwIHdpdGhcbiAgICogdGhlIHN1cHBsaWVkIGluaXRpYWxpemVyIGFuZCBiZWhhdmlvdXIuXG4gICAqXG4gICAqIEByZXR1cm4ge0VtaXR0ZXJ9XG4gICAqL1xuICBjcmVhdGVQYXJ0aWNsZSgpIHtcbiAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFyZW50LnBvb2wuZ2V0KFBhcnRpY2xlKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHRoaXMuc2V0dXBQYXJ0aWNsZShwYXJ0aWNsZSwgaW5kZXgpO1xuICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoKFBBUlRJQ0xFX0NSRUFURUQsIHBhcnRpY2xlKTtcbiAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9DUkVBVEVELCBwYXJ0aWNsZSk7XG5cbiAgICByZXR1cm4gcGFydGljbGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBhIHBhcnRpY2xlIGJ5IHJ1bm5pbmcgYWxsIGluaXRpYWxpemVycyBvbiBpdCBhbmQgc2V0dGluZyBpdHMgYmVoYXZpb3Vycy5cbiAgICogQWxzbyBhZGRzIHRoZSBwYXJ0aWNsZSB0byB0aGlzLnBhcnRpY2xlcy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gc2V0dXBcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBzZXR1cFBhcnRpY2xlKHBhcnRpY2xlLCBpbmRleCkge1xuICAgIGNvbnN0IHsgaW5pdGlhbGl6ZXJzLCBiZWhhdmlvdXJzIH0gPSB0aGlzO1xuXG4gICAgSW5pdGlhbGl6ZXJVdGlsLmluaXRpYWxpemUodGhpcywgcGFydGljbGUsIGluaXRpYWxpemVycyk7XG5cbiAgICBwYXJ0aWNsZS5hZGRCZWhhdmlvdXJzKGJlaGF2aW91cnMpO1xuICAgIHBhcnRpY2xlLnBhcmVudCA9IHRoaXM7XG4gICAgcGFydGljbGUuaW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMucGFydGljbGVzLnB1c2gocGFydGljbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGVtaXR0ZXIgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIHBhc3NlZCBieSBjYWxsaW5nIHRoZSBnZW5lcmF0ZVxuICAgKiBhbmQgaW50ZWdyYXRlIG1ldGhvZHMuIFRoZSBnZW5lcmF0ZSBtZXRob2QgY3JlYXRlcyBwYXJ0aWNsZXMsIHRoZSBpbnRlZ3JhdGVcbiAgICogbWV0aG9kIHVwZGF0ZXMgZXhpc3RpbmcgcGFydGljbGVzLlxuICAgKlxuICAgKiBJZiB0aGUgZW1pdHRlciBhZ2UgaXMgZ3JlYXRlciB0aGFuIHRpbWUsIHRoZSBlbWl0dGVyIGlzIGtpbGxlZC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgYWxzbyBpbmRleGVzL2RlaW5kZXhlcyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgdXBkYXRlKHRpbWUpIHtcbiAgICBpZiAoIXRoaXMuaXNFbWl0dGluZyAmJiB0aGlzLnBhcnRpY2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFnZSArPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMuZGVhZCB8fCB0aGlzLmFnZSA+PSB0aGlzLmxpZmUpIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRW1pdHRpbmcpXG4gICAge1xuICAgICAgdGhpcy5nZW5lcmF0ZSh0aW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLmludGVncmF0ZSh0aW1lKTtcblxuICAgIGxldCBpID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY29uc3QgcGFydGljbGUgPSB0aGlzLnBhcnRpY2xlc1tpXTtcblxuICAgICAgaWYgKHBhcnRpY2xlLmRlYWQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuZGlzcGF0Y2goUEFSVElDTEVfREVBRCwgcGFydGljbGUpO1xuICAgICAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9ERUFELCBwYXJ0aWNsZSk7XG4gICAgICAgIHRoaXMucGFyZW50LnBvb2wuZXhwaXJlKHBhcnRpY2xlLnJlc2V0KCkpO1xuICAgICAgICB0aGlzLnBhcnRpY2xlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGlmKHRoaXMucGFydGljbGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAge1xuICAgICAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoKFNZU1RFTV9VUERBVEUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVFbWl0dGVyQmVoYXZpb3Vycyh0aW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBlbWl0dGVyJ3MgZW1pdHRlciBiZWhhdmlvdXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHVwZGF0ZUVtaXR0ZXJCZWhhdmlvdXJzKHRpbWUpIHtcbiAgICBpZiAodGhpcy5zbGVlcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZW1pdHRlckJlaGF2aW91cnMubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5lbWl0dGVyQmVoYXZpb3Vyc1tpXS5hcHBseUJlaGF2aW91cih0aGlzLCB0aW1lLCBpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyB0aGUgaW50ZWdyYXRpb24gYWxnb3JpdGhtIG9uIHRoZSBlbWl0dGVyIGFuZCBhbGwgcGFydGljbGVzLlxuICAgKiBVcGRhdGVzIHRoZSBwYXJ0aWNsZXMgd2l0aCB0aGUgdGltc3RhbXAgcGFzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFN5c3RlbSBlbmdpbmUgdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGludGVncmF0ZSh0aW1lKSB7XG4gICAgY29uc3QgaW50ZWdyYXRpb25UeXBlID0gdGhpcy5wYXJlbnRcbiAgICAgID8gdGhpcy5wYXJlbnQuaW50ZWdyYXRpb25UeXBlXG4gICAgICA6IElOVEVHUkFUSU9OX1RZUEVfRVVMRVI7XG4gICAgY29uc3QgZGFtcGluZyA9IDEgLSB0aGlzLmRhbXBpbmc7XG5cbiAgICBpbnRlZ3JhdGUodGhpcywgdGltZSwgZGFtcGluZywgaW50ZWdyYXRpb25UeXBlKTtcblxuICAgIGxldCBpbmRleCA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFydGljbGVzW2luZGV4XTtcblxuICAgICAgcGFydGljbGUudXBkYXRlKHRpbWUsIGluZGV4KTtcbiAgICAgIGludGVncmF0ZShwYXJ0aWNsZSwgdGltZSwgZGFtcGluZywgaW50ZWdyYXRpb25UeXBlKTtcblxuICAgICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuZGlzcGF0Y2goUEFSVElDTEVfVVBEQVRFLCBwYXJ0aWNsZSk7XG4gICAgICB0aGlzLmJpbmRFbWl0dGVyRXZlbnQgJiYgdGhpcy5kaXNwYXRjaChQQVJUSUNMRV9VUERBVEUsIHBhcnRpY2xlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIG5ldyBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gU3lzdGVtIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgZ2VuZXJhdGUodGltZSkge1xuICAgIGlmICh0aGlzLnRvdGFsRW1pdFRpbWVzID09PSAxKSB7XG4gICAgICBsZXQgaSA9IHRoaXMucmF0ZS5nZXRWYWx1ZSg5OTk5OSk7XG5cbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB0aGlzLmNJRCA9IGk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRvdGFsRW1pdFRpbWVzID0gMDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudEVtaXRUaW1lICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RW1pdFRpbWUgPCB0aGlzLnRvdGFsRW1pdFRpbWVzKSB7XG4gICAgICBsZXQgaSA9IHRoaXMucmF0ZS5nZXRWYWx1ZSh0aW1lKTtcblxuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHRoaXMuY0lEID0gaTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEtpbGxzIHRoZSBlbWl0dGVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICB0aGlzLmVuZXJneSA9IDA7XG4gICAgdGhpcy50b3RhbEVtaXRUaW1lcyA9IC0xO1xuXG4gICAgaWYgKHRoaXMucGFydGljbGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLmlzRW1pdHRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVtb3ZlQWxsSW5pdGlhbGl6ZXJzKCk7XG4gICAgICB0aGlzLnJlbW92ZUFsbEJlaGF2aW91cnMoKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goYCR7dGhpcy5pZH1fJHtFTUlUVEVSX0RFQUR9YCk7XG5cbiAgICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LnJlbW92ZUVtaXR0ZXIodGhpcyk7XG4gICAgfVxuICB9XG59XG4iXX0=