angular-three-soba 2.0.0-beta.4 → 2.0.0-beta.41

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 (323) hide show
  1. package/abstractions/billboard/billboard.d.ts +12 -8
  2. package/abstractions/detailed/detailed.d.ts +26 -0
  3. package/abstractions/edges/edges.d.ts +24 -12
  4. package/abstractions/grid/grid.d.ts +42 -51
  5. package/abstractions/index.d.ts +1 -7
  6. package/abstractions/text/text.d.ts +10 -4
  7. package/abstractions/text-3d/text-3d.d.ts +51 -41
  8. package/cameras/camera/camera-content.d.ts +1 -1
  9. package/cameras/camera/camera.d.ts +16 -13
  10. package/cameras/cube-camera/cube-camera.d.ts +49 -23
  11. package/cameras/index.d.ts +0 -1
  12. package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
  13. package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
  14. package/controls/orbit-controls/orbit-controls.d.ts +34 -15
  15. package/esm2022/abstractions/billboard/billboard.mjs +36 -33
  16. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  17. package/esm2022/abstractions/edges/edges.mjs +58 -63
  18. package/esm2022/abstractions/grid/grid.mjs +140 -110
  19. package/esm2022/abstractions/index.mjs +2 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -122
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +120 -115
  22. package/esm2022/cameras/camera/camera-content.mjs +6 -6
  23. package/esm2022/cameras/camera/camera.mjs +48 -42
  24. package/esm2022/cameras/cube-camera/cube-camera.mjs +120 -100
  25. package/esm2022/cameras/index.mjs +1 -2
  26. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
  27. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
  28. package/esm2022/controls/orbit-controls/orbit-controls.mjs +109 -85
  29. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  30. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +198 -0
  31. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  32. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
  33. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +151 -0
  34. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
  35. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
  36. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
  37. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
  38. package/esm2022/gizmos/index.mjs +4 -0
  39. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +14 -9
  40. package/esm2022/loaders/loader/loader.mjs +92 -87
  41. package/esm2022/loaders/progress/progress.mjs +31 -30
  42. package/esm2022/loaders/texture-loader/texture-loader.mjs +20 -15
  43. package/esm2022/materials/index.mjs +2 -1
  44. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  45. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  46. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
  47. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +164 -144
  48. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  49. package/esm2022/materials/point-material/point-material.mjs +50 -0
  50. package/esm2022/misc/animations/animations.mjs +28 -23
  51. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  52. package/esm2022/misc/caustics/caustics.mjs +387 -0
  53. package/esm2022/misc/decal/decal.mjs +187 -0
  54. package/esm2022/misc/depth-buffer/depth-buffer.mjs +41 -37
  55. package/esm2022/misc/example/example.mjs +161 -0
  56. package/esm2022/misc/fbo/fbo.mjs +42 -36
  57. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  58. package/esm2022/misc/html/html.mjs +305 -0
  59. package/esm2022/misc/index.mjs +10 -1
  60. package/esm2022/misc/sampler/sampler.mjs +132 -0
  61. package/esm2022/misc/shadow/shadow.mjs +111 -0
  62. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  63. package/esm2022/misc/trail/trail.mjs +204 -0
  64. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  65. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  66. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  67. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  68. package/esm2022/modifiers/index.mjs +2 -0
  69. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  70. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  71. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  72. package/esm2022/performances/index.mjs +8 -0
  73. package/esm2022/performances/instances/instances.mjs +221 -0
  74. package/esm2022/performances/instances/position-mesh.mjs +52 -0
  75. package/esm2022/performances/points/points-input.mjs +64 -0
  76. package/esm2022/performances/points/points.mjs +327 -0
  77. package/esm2022/performances/points/position-point.mjs +54 -0
  78. package/esm2022/performances/segments/segment-object.mjs +9 -0
  79. package/esm2022/performances/segments/segments.mjs +183 -0
  80. package/esm2022/shaders/blur-pass/blur-pass.mjs +2 -2
  81. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  82. package/esm2022/shaders/caustics/caustics-projection-material.mjs +32 -0
  83. package/esm2022/shaders/convolution-material/convolution-material.mjs +3 -2
  84. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  85. package/esm2022/shaders/grid-material/grid-material.mjs +30 -14
  86. package/esm2022/shaders/index.mjs +5 -3
  87. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  88. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +2 -2
  89. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +3 -2
  90. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +7 -4
  91. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  92. package/esm2022/shaders/shader-material/shader-material.mjs +3 -5
  93. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +18 -25
  94. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  95. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +8 -7
  96. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  97. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  98. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +161 -176
  99. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +8 -8
  100. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +129 -129
  101. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  102. package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
  103. package/esm2022/staging/bounds/bounds.mjs +145 -143
  104. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  105. package/esm2022/staging/center/center.mjs +129 -112
  106. package/esm2022/staging/cloud/cloud.mjs +118 -124
  107. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -136
  108. package/esm2022/staging/environment/assets.mjs +12 -12
  109. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  110. package/esm2022/staging/environment/environment-ground.mjs +17 -19
  111. package/esm2022/staging/environment/environment-input.mjs +98 -85
  112. package/esm2022/staging/environment/environment-map.mjs +33 -33
  113. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  114. package/esm2022/staging/environment/environment.mjs +34 -51
  115. package/esm2022/staging/environment/utils.mjs +40 -17
  116. package/esm2022/staging/float/float.mjs +70 -58
  117. package/esm2022/staging/index.mjs +7 -3
  118. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  119. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  120. package/esm2022/staging/sky/sky.mjs +85 -80
  121. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  122. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  123. package/esm2022/staging/spot-light/shadow-mesh.mjs +267 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  125. package/esm2022/staging/spot-light/spot-light.mjs +51 -63
  126. package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
  127. package/esm2022/staging/stage/stage.mjs +305 -290
  128. package/esm2022/staging/stars/stars.mjs +101 -102
  129. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  130. package/esm2022/staging/wireframe/wireframe.mjs +228 -0
  131. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  132. package/esm2022/utils/constants.mjs +3 -0
  133. package/esm2022/utils/content/content.mjs +15 -0
  134. package/esm2022/utils/index.mjs +3 -0
  135. package/fesm2022/angular-three-soba-abstractions.mjs +504 -2079
  136. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  137. package/fesm2022/angular-three-soba-cameras.mjs +293 -260
  138. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  139. package/fesm2022/angular-three-soba-controls.mjs +108 -83
  140. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  141. package/fesm2022/angular-three-soba-gizmos.mjs +1045 -0
  142. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  143. package/fesm2022/angular-three-soba-loaders.mjs +148 -132
  144. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  145. package/fesm2022/angular-three-soba-materials.mjs +656 -588
  146. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  147. package/fesm2022/angular-three-soba-misc.mjs +2202 -99
  148. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  149. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  150. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  151. package/fesm2022/angular-three-soba-performances.mjs +957 -0
  152. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  153. package/fesm2022/angular-three-soba-shaders.mjs +508 -269
  154. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  155. package/fesm2022/angular-three-soba-staging.mjs +2910 -2573
  156. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  157. package/fesm2022/angular-three-soba-utils.mjs +25 -0
  158. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  159. package/gizmos/README.md +3 -0
  160. package/gizmos/gizmo-helper/gizmo-helper.d.ts +73 -0
  161. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  162. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
  163. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
  164. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
  165. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
  166. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
  167. package/gizmos/index.d.ts +3 -0
  168. package/loaders/gltf-loader/gltf-loader.d.ts +15 -4
  169. package/loaders/loader/loader.d.ts +19 -17
  170. package/loaders/progress/progress.d.ts +1 -1
  171. package/loaders/texture-loader/texture-loader.d.ts +8 -3
  172. package/materials/index.d.ts +1 -0
  173. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  174. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  175. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  176. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  177. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  178. package/materials/point-material/point-material.d.ts +24 -0
  179. package/metadata.json +1 -0
  180. package/misc/animations/animations.d.ts +6 -4
  181. package/misc/caustics/caustics.d.ts +87 -0
  182. package/misc/decal/decal.d.ts +49 -0
  183. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  184. package/misc/example/example.d.ts +85 -0
  185. package/misc/fbo/fbo.d.ts +2 -2
  186. package/misc/html/html-wrapper.d.ts +559 -0
  187. package/misc/html/html.d.ts +218 -0
  188. package/misc/index.d.ts +9 -0
  189. package/misc/sampler/sampler.d.ts +67 -0
  190. package/misc/shadow/shadow.d.ts +37 -0
  191. package/misc/stats-gl/stats-gl.d.ts +24 -0
  192. package/misc/trail/trail.d.ts +57 -0
  193. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  194. package/misc/trail-texture/trail-texture.d.ts +50 -0
  195. package/modifiers/README.md +3 -0
  196. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  197. package/modifiers/index.d.ts +1 -0
  198. package/package.json +42 -24
  199. package/performances/README.md +3 -0
  200. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  201. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  202. package/performances/index.d.ts +7 -0
  203. package/performances/instances/instances.d.ts +83 -0
  204. package/{performance → performances}/instances/position-mesh.d.ts +1 -1
  205. package/performances/points/points-input.d.ts +32 -0
  206. package/performances/points/points.d.ts +96 -0
  207. package/performances/points/position-point.d.ts +11 -0
  208. package/performances/segments/segment-object.d.ts +7 -0
  209. package/performances/segments/segments.d.ts +128 -0
  210. package/shaders/grid-material/grid-material.d.ts +33 -0
  211. package/shaders/index.d.ts +4 -2
  212. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +173 -6
  213. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  214. package/shaders/shader-material/shader-material.d.ts +2 -2
  215. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  216. package/shaders/sparkles-material/sparkles-material.d.ts +13 -0
  217. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  218. package/shaders/star-field-material/star-field-material.d.ts +9 -0
  219. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  220. package/staging/accumulative-shadows/accumulative-shadows.d.ts +93 -39
  221. package/staging/accumulative-shadows/randomized-lights.d.ts +41 -28
  222. package/staging/backdrop/backdrop.d.ts +30 -0
  223. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  224. package/staging/bounds/bounds.d.ts +105 -25
  225. package/staging/camera-shake/camera-shake.d.ts +30 -19
  226. package/staging/center/center.d.ts +43 -35
  227. package/staging/cloud/cloud.d.ts +27 -24
  228. package/staging/contact-shadows/contact-shadows.d.ts +43 -30
  229. package/staging/environment/assets.d.ts +9 -9
  230. package/staging/environment/environment-cube.d.ts +9 -5
  231. package/staging/environment/environment-ground.d.ts +7 -7
  232. package/staging/environment/environment-input.d.ts +38 -38
  233. package/staging/environment/environment-map.d.ts +10 -5
  234. package/staging/environment/environment-portal.d.ts +10 -5
  235. package/staging/environment/environment.d.ts +0 -4
  236. package/staging/environment/utils.d.ts +2 -2
  237. package/staging/float/float.d.ts +15 -11
  238. package/staging/index.d.ts +6 -2
  239. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  240. package/staging/normal-texture/normal-texture.d.ts +16 -0
  241. package/staging/sky/sky.d.ts +28 -21
  242. package/staging/sparkles/sparkles.d.ts +36 -22
  243. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  244. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  245. package/staging/spot-light/spot-light-input.d.ts +25 -25
  246. package/staging/spot-light/spot-light.d.ts +35 -15
  247. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  248. package/staging/stage/stage.d.ts +89 -65
  249. package/staging/stars/stars.d.ts +28 -17
  250. package/staging/wireframe/wireframe-input.d.ts +65 -0
  251. package/staging/wireframe/wireframe.d.ts +28 -0
  252. package/utils/README.md +3 -0
  253. package/utils/constants.d.ts +1 -0
  254. package/utils/content/content.d.ts +8 -0
  255. package/utils/index.d.ts +2 -0
  256. package/web-types.json +1 -0
  257. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  258. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  259. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  260. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  261. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  262. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  263. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  264. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  265. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  266. package/abstractions/line/line-input.d.ts +0 -42
  267. package/abstractions/line/line.d.ts +0 -35
  268. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  269. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  270. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  271. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  272. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  273. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  274. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  275. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  276. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  277. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  278. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  279. package/esm2022/abstractions/line/line-input.mjs +0 -113
  280. package/esm2022/abstractions/line/line.mjs +0 -165
  281. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  282. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  283. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  284. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  285. package/esm2022/performance/detailed/detailed.mjs +0 -61
  286. package/esm2022/performance/index.mjs +0 -7
  287. package/esm2022/performance/instances/instance.mjs +0 -48
  288. package/esm2022/performance/instances/instances.mjs +0 -189
  289. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  290. package/esm2022/performance/stats/stats.mjs +0 -79
  291. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  292. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  293. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  294. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  295. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
  296. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  297. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  298. package/performance/README.md +0 -3
  299. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  300. package/performance/detailed/detailed.d.ts +0 -20
  301. package/performance/index.d.ts +0 -6
  302. package/performance/instances/instance.d.ts +0 -9
  303. package/performance/instances/instances.d.ts +0 -35
  304. package/performance/stats/stats.d.ts +0 -18
  305. package/plugin/generators.json +0 -19
  306. package/plugin/libs/plugin/README.md +0 -11
  307. package/plugin/package.json +0 -9
  308. package/plugin/src/generators/init/compat.d.ts +0 -2
  309. package/plugin/src/generators/init/compat.js +0 -6
  310. package/plugin/src/generators/init/compat.js.map +0 -1
  311. package/plugin/src/generators/init/init.d.ts +0 -7
  312. package/plugin/src/generators/init/init.js +0 -28
  313. package/plugin/src/generators/init/init.js.map +0 -1
  314. package/plugin/src/generators/init/schema.json +0 -6
  315. package/plugin/src/index.d.ts +0 -1
  316. package/plugin/src/index.js +0 -6
  317. package/plugin/src/index.js.map +0 -1
  318. package/staging/caustics/caustisc.d.ts +0 -70
  319. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  320. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  321. /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
  322. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  323. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -1,58 +1,49 @@
1
- import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';
2
- import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore, NgtStore, } from 'angular-three';
1
+ import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
+ import { extend, injectBeforeRender, injectNgtRef, injectNgtStore, NgtArgs, signalStore, } from 'angular-three';
3
3
  import * as THREE from 'three';
4
4
  import { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';
5
5
  import { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';
6
6
  import * as i0 from "@angular/core";
7
7
  extend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });
8
- class NgtsContactShadows extends NgtSignalStore {
9
- set opacity(opacity) {
10
- this.set({ opacity });
8
+ export class NgtsContactShadows {
9
+ set _opacity(opacity) {
10
+ this.inputs.set({ opacity });
11
11
  }
12
- set width(width) {
13
- this.set({ width });
12
+ set _width(width) {
13
+ this.inputs.set({ width });
14
14
  }
15
- set height(height) {
16
- this.set({ height });
15
+ set _height(height) {
16
+ this.inputs.set({ height });
17
17
  }
18
- set blur(blur) {
19
- this.set({ blur });
18
+ set _blur(blur) {
19
+ this.inputs.set({ blur });
20
20
  }
21
- set far(far) {
22
- this.set({ far });
21
+ set _far(far) {
22
+ this.inputs.set({ far });
23
23
  }
24
- set smooth(smooth) {
25
- this.set({ smooth });
24
+ set _smooth(smooth) {
25
+ this.inputs.set({ smooth });
26
26
  }
27
- set resolution(resolution) {
28
- this.set({ resolution });
27
+ set _resolution(resolution) {
28
+ this.inputs.set({ resolution });
29
29
  }
30
- set frames(frames) {
31
- this.set({ frames });
30
+ set _frames(frames) {
31
+ this.inputs.set({ frames });
32
32
  }
33
- set scale(scale) {
34
- this.set({ scale });
33
+ set _scale(scale) {
34
+ this.inputs.set({ scale });
35
35
  }
36
- set color(color) {
37
- this.set({ color });
36
+ set _color(color) {
37
+ this.inputs.set({ color });
38
38
  }
39
- set depthWrite(depthWrite) {
40
- this.set({ depthWrite });
39
+ set _depthWrite(depthWrite) {
40
+ this.inputs.set({ depthWrite });
41
41
  }
42
- set renderOrder(renderOrder) {
43
- this.set({ renderOrder });
42
+ set _renderOrder(renderOrder) {
43
+ this.inputs.set({ renderOrder });
44
44
  }
45
- #store;
46
- #scale;
47
- #width;
48
- #height;
49
- #far;
50
- #resolution;
51
- #color;
52
- #scaledWidth;
53
- #scaledHeight;
54
45
  constructor() {
55
- super({
46
+ this.inputs = signalStore({
56
47
  scale: 10,
57
48
  frames: Infinity,
58
49
  opacity: 1,
@@ -68,38 +59,36 @@ class NgtsContactShadows extends NgtSignalStore {
68
59
  });
69
60
  this.contactShadowsRef = injectNgtRef();
70
61
  this.Math = Math;
71
- this.#store = inject(NgtStore);
62
+ this.store = injectNgtStore();
72
63
  this.shadowCameraRef = injectNgtRef();
73
- this.#scale = this.select('scale');
74
- this.#width = this.select('width');
75
- this.#height = this.select('height');
76
- this.#far = this.select('far');
77
- this.#resolution = this.select('resolution');
78
- this.#color = this.select('color');
79
- this.#scaledWidth = computed(() => {
80
- const scale = this.#scale();
81
- return this.#width() * (Array.isArray(scale) ? scale[0] : scale || 1);
64
+ this.scale = this.inputs.select('scale');
65
+ this.width = this.inputs.select('width');
66
+ this.height = this.inputs.select('height');
67
+ this.far = this.inputs.select('far');
68
+ this.resolution = this.inputs.select('resolution');
69
+ this.color = this.inputs.select('color');
70
+ this.scaledWidth = computed(() => {
71
+ const scale = this.scale();
72
+ return this.width() * (Array.isArray(scale) ? scale[0] : scale || 1);
82
73
  });
83
- this.#scaledHeight = computed(() => {
84
- const scale = this.#scale();
85
- return this.#height() * (Array.isArray(scale) ? scale[1] : scale || 1);
74
+ this.scaledHeight = computed(() => {
75
+ const scale = this.scale();
76
+ return this.height() * (Array.isArray(scale) ? scale[1] : scale || 1);
86
77
  });
87
- this.encoding = this.#store.select('gl', 'outputEncoding');
88
- this.shadowRenderOrder = this.select('renderOrder');
89
- this.shadowOpacity = this.select('opacity');
90
- this.shadowDepthWrite = this.select('depthWrite');
78
+ this.renderOrder = this.inputs.select('renderOrder');
79
+ this.opacity = this.inputs.select('opacity');
80
+ this.depthWrite = this.inputs.select('depthWrite');
91
81
  this.cameraArgs = computed(() => {
92
- const width = this.#scaledWidth();
93
- const height = this.#scaledHeight();
94
- return [-width / 2, width / 2, height / 2, -height / 2, 0, this.#far()];
82
+ const width = this.scaledWidth();
83
+ const height = this.scaledHeight();
84
+ return [-width / 2, width / 2, height / 2, -height / 2, 0, this.far()];
95
85
  });
96
86
  this.contactShadows = computed(() => {
97
- const color = this.#color();
98
- const resolution = this.#resolution();
87
+ const [color, resolution] = [this.color(), this.resolution()];
99
88
  const renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);
100
89
  const renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);
101
90
  renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;
102
- const planeGeometry = new THREE.PlaneGeometry(this.#scaledWidth(), this.#scaledHeight()).rotateX(Math.PI / 2);
91
+ const planeGeometry = new THREE.PlaneGeometry(this.scaledWidth(), this.scaledHeight()).rotateX(Math.PI / 2);
103
92
  const blurPlane = new Mesh(planeGeometry);
104
93
  const depthMaterial = new THREE.MeshDepthMaterial();
105
94
  depthMaterial.depthTest = depthMaterial.depthWrite = false;
@@ -110,8 +99,7 @@ class NgtsContactShadows extends NgtSignalStore {
110
99
  };
111
100
  shader.fragmentShader = shader.fragmentShader.replace(`void main() {`, //
112
101
  `uniform vec3 ucolor;
113
- void main() {
114
- `);
102
+ void main() {`);
115
103
  shader.fragmentShader = shader.fragmentShader.replace('vec4( vec3( 1.0 - fragCoordZ ), opacity );',
116
104
  // Colorize the shadow, multiply by the falloff so that the center can remain darker
117
105
  'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );');
@@ -129,10 +117,10 @@ class NgtsContactShadows extends NgtSignalStore {
129
117
  renderTargetBlur,
130
118
  };
131
119
  });
132
- injectBeforeRender(this.#onBeforeRender.bind(this, 0));
120
+ injectBeforeRender(this.beforeRender.bind(this, 0));
133
121
  }
134
- #onBeforeRender(count, { scene, gl }) {
135
- const { frames = Infinity, blur = 1, smooth = true } = this.get();
122
+ beforeRender(count, { scene, gl }) {
123
+ const { frames = Infinity, blur = 1, smooth = true } = this.inputs.get();
136
124
  const { depthMaterial, renderTarget } = this.contactShadows();
137
125
  const shadowCamera = this.shadowCameraRef.nativeElement;
138
126
  if (shadowCamera && (frames === Infinity || count < frames)) {
@@ -143,17 +131,17 @@ class NgtsContactShadows extends NgtSignalStore {
143
131
  gl.setRenderTarget(renderTarget);
144
132
  gl.render(scene, shadowCamera);
145
133
  scene.overrideMaterial = initialOverrideMaterial;
146
- this.#blurShadows(blur);
134
+ this.blurShadows(blur);
147
135
  if (smooth)
148
- this.#blurShadows(blur * 0.4);
136
+ this.blurShadows(blur * 0.4);
149
137
  gl.setRenderTarget(null);
150
138
  scene.background = initialBackground;
151
139
  count++;
152
140
  }
153
141
  }
154
- #blurShadows(blur) {
142
+ blurShadows(blur) {
155
143
  const { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } = this.contactShadows();
156
- const gl = this.#store.get('gl');
144
+ const gl = this.store.get('gl');
157
145
  const shadowCamera = this.shadowCameraRef.nativeElement;
158
146
  blurPlane.visible = true;
159
147
  blurPlane.material = horizontalBlurMaterial;
@@ -168,82 +156,89 @@ class NgtsContactShadows extends NgtSignalStore {
168
156
  gl.render(blurPlane, shadowCamera);
169
157
  blurPlane.visible = false;
170
158
  }
171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
172
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsContactShadows, isStandalone: true, selector: "ngts-contact-shadows", inputs: { contactShadowsRef: "contactShadowsRef", opacity: "opacity", width: "width", height: "height", blur: "blur", far: "far", smooth: "smooth", resolution: "resolution", frames: "frames", scale: "scale", color: "color", depthWrite: "depthWrite", renderOrder: "renderOrder" }, usesInheritance: true, ngImport: i0, template: `
173
- <ngt-group ngtCompound [ref]="contactShadowsRef" [rotation]="[Math.PI / 2, 0, 0]">
174
- <ngt-mesh
175
- [renderOrder]="shadowRenderOrder() ?? 0"
176
- [geometry]="contactShadows().planeGeometry"
177
- [scale]="[1, -1, 1]"
178
- [rotation]="[-Math.PI / 2, 0, 0]"
179
- >
180
- <ngt-mesh-basic-material
181
- [map]="contactShadows().renderTarget.texture"
182
- [transparent]="true"
183
- [opacity]="shadowOpacity() ?? 1"
184
- [depthWrite]="shadowDepthWrite() ?? false"
185
- >
186
- <ngt-value [rawValue]="encoding()" attach="map.encoding" />
187
- </ngt-mesh-basic-material>
188
- </ngt-mesh>
189
- <ngt-orthographic-camera *args="cameraArgs()" [ref]="shadowCameraRef" />
190
- </ngt-group>
191
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsContactShadows, isStandalone: true, selector: "ngts-contact-shadows", inputs: { contactShadowsRef: "contactShadowsRef", _opacity: ["opacity", "_opacity"], _width: ["width", "_width"], _height: ["height", "_height"], _blur: ["blur", "_blur"], _far: ["far", "_far"], _smooth: ["smooth", "_smooth"], _resolution: ["resolution", "_resolution"], _frames: ["frames", "_frames"], _scale: ["scale", "_scale"], _color: ["color", "_color"], _depthWrite: ["depthWrite", "_depthWrite"], _renderOrder: ["renderOrder", "_renderOrder"] }, ngImport: i0, template: `
161
+ <ngt-group ngtCompound [ref]="contactShadowsRef" [rotation]="[Math.PI / 2, 0, 0]">
162
+ <ngt-mesh
163
+ [renderOrder]="renderOrder() ?? 0"
164
+ [geometry]="contactShadows().planeGeometry"
165
+ [scale]="[1, -1, 1]"
166
+ [rotation]="[-Math.PI / 2, 0, 0]"
167
+ >
168
+ <ngt-mesh-basic-material
169
+ [map]="contactShadows().renderTarget.texture"
170
+ [transparent]="true"
171
+ [opacity]="opacity() ?? 1"
172
+ [depthWrite]="depthWrite() ?? false"
173
+ />
174
+ </ngt-mesh>
175
+ <ngt-orthographic-camera *args="cameraArgs()" [ref]="shadowCameraRef" />
176
+ </ngt-group>
177
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
192
178
  }
193
- export { NgtsContactShadows };
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsContactShadows, decorators: [{
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsContactShadows, decorators: [{
195
180
  type: Component,
196
181
  args: [{
197
182
  selector: 'ngts-contact-shadows',
198
183
  standalone: true,
199
184
  template: `
200
- <ngt-group ngtCompound [ref]="contactShadowsRef" [rotation]="[Math.PI / 2, 0, 0]">
201
- <ngt-mesh
202
- [renderOrder]="shadowRenderOrder() ?? 0"
203
- [geometry]="contactShadows().planeGeometry"
204
- [scale]="[1, -1, 1]"
205
- [rotation]="[-Math.PI / 2, 0, 0]"
206
- >
207
- <ngt-mesh-basic-material
208
- [map]="contactShadows().renderTarget.texture"
209
- [transparent]="true"
210
- [opacity]="shadowOpacity() ?? 1"
211
- [depthWrite]="shadowDepthWrite() ?? false"
212
- >
213
- <ngt-value [rawValue]="encoding()" attach="map.encoding" />
214
- </ngt-mesh-basic-material>
215
- </ngt-mesh>
216
- <ngt-orthographic-camera *args="cameraArgs()" [ref]="shadowCameraRef" />
217
- </ngt-group>
218
- `,
185
+ <ngt-group ngtCompound [ref]="contactShadowsRef" [rotation]="[Math.PI / 2, 0, 0]">
186
+ <ngt-mesh
187
+ [renderOrder]="renderOrder() ?? 0"
188
+ [geometry]="contactShadows().planeGeometry"
189
+ [scale]="[1, -1, 1]"
190
+ [rotation]="[-Math.PI / 2, 0, 0]"
191
+ >
192
+ <ngt-mesh-basic-material
193
+ [map]="contactShadows().renderTarget.texture"
194
+ [transparent]="true"
195
+ [opacity]="opacity() ?? 1"
196
+ [depthWrite]="depthWrite() ?? false"
197
+ />
198
+ </ngt-mesh>
199
+ <ngt-orthographic-camera *args="cameraArgs()" [ref]="shadowCameraRef" />
200
+ </ngt-group>
201
+ `,
219
202
  imports: [NgtArgs],
220
203
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
221
204
  }]
222
205
  }], ctorParameters: function () { return []; }, propDecorators: { contactShadowsRef: [{
223
206
  type: Input
224
- }], opacity: [{
225
- type: Input
226
- }], width: [{
227
- type: Input
228
- }], height: [{
229
- type: Input
230
- }], blur: [{
231
- type: Input
232
- }], far: [{
233
- type: Input
234
- }], smooth: [{
235
- type: Input
236
- }], resolution: [{
237
- type: Input
238
- }], frames: [{
239
- type: Input
240
- }], scale: [{
241
- type: Input
242
- }], color: [{
243
- type: Input
244
- }], depthWrite: [{
245
- type: Input
246
- }], renderOrder: [{
247
- type: Input
207
+ }], _opacity: [{
208
+ type: Input,
209
+ args: [{ alias: 'opacity' }]
210
+ }], _width: [{
211
+ type: Input,
212
+ args: [{ alias: 'width' }]
213
+ }], _height: [{
214
+ type: Input,
215
+ args: [{ alias: 'height' }]
216
+ }], _blur: [{
217
+ type: Input,
218
+ args: [{ alias: 'blur' }]
219
+ }], _far: [{
220
+ type: Input,
221
+ args: [{ alias: 'far' }]
222
+ }], _smooth: [{
223
+ type: Input,
224
+ args: [{ alias: 'smooth' }]
225
+ }], _resolution: [{
226
+ type: Input,
227
+ args: [{ alias: 'resolution' }]
228
+ }], _frames: [{
229
+ type: Input,
230
+ args: [{ alias: 'frames' }]
231
+ }], _scale: [{
232
+ type: Input,
233
+ args: [{ alias: 'scale' }]
234
+ }], _color: [{
235
+ type: Input,
236
+ args: [{ alias: 'color' }]
237
+ }], _depthWrite: [{
238
+ type: Input,
239
+ args: [{ alias: 'depthWrite' }]
240
+ }], _renderOrder: [{
241
+ type: Input,
242
+ args: [{ alias: 'renderOrder' }]
248
243
  }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zaGFkb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2NvbnRhY3Qtc2hhZG93cy9jb250YWN0LXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQ0gsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osT0FBTyxFQUNQLGNBQWMsRUFDZCxRQUFRLEdBR1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUV4RSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztBQXVCL0QsTUEwQmEsa0JBQW1CLFNBQVEsY0FBdUM7SUFHM0UsSUFBYSxPQUFPLENBQUMsT0FBZTtRQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUMs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QUlPLEdBQUc7c0JBQWYsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBleHRlbmQsXG4gICAgaW5qZWN0QmVmb3JlUmVuZGVyLFxuICAgIGluamVjdE5ndFJlZixcbiAgICBOZ3RBcmdzLFxuICAgIE5ndFNpZ25hbFN0b3JlLFxuICAgIE5ndFN0b3JlLFxuICAgIHR5cGUgTmd0R3JvdXAsXG4gICAgdHlwZSBOZ3RSZW5kZXJTdGF0ZSxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCwgTWVzaCwgTWVzaEJhc2ljTWF0ZXJpYWwsIE9ydGhvZ3JhcGhpY0NhbWVyYSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEhvcml6b250YWxCbHVyU2hhZGVyLCBWZXJ0aWNhbEJsdXJTaGFkZXIgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHRlbmQoeyBHcm91cCwgTWVzaCwgTWVzaEJhc2ljTWF0ZXJpYWwsIE9ydGhvZ3JhcGhpY0NhbWVyYSB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzQ29udGFjdFNoYWRvd3NTdGF0ZSB7XG4gICAgb3BhY2l0eTogbnVtYmVyO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgYmx1cjogbnVtYmVyO1xuICAgIGZhcjogbnVtYmVyO1xuICAgIHNtb290aDogYm9vbGVhbjtcbiAgICByZXNvbHV0aW9uOiBudW1iZXI7XG4gICAgZnJhbWVzOiBudW1iZXI7XG4gICAgc2NhbGU6IG51bWJlciB8IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG4gICAgY29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb247XG4gICAgZGVwdGhXcml0ZTogYm9vbGVhbjtcbiAgICByZW5kZXJPcmRlcjogbnVtYmVyO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgICAgICduZ3RzLWNvbnRhY3Qtc2hhZG93cyc6IE5ndHNDb250YWN0U2hhZG93c1N0YXRlICYgTmd0R3JvdXA7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtY29udGFjdC1zaGFkb3dzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQgW3JlZl09XCJjb250YWN0U2hhZG93c1JlZlwiIFtyb3RhdGlvbl09XCJbTWF0aC5QSSAvIDIsIDAsIDBdXCI+XG4gICAgICAgICAgICA8bmd0LW1lc2hcbiAgICAgICAgICAgICAgICBbcmVuZGVyT3JkZXJdPVwic2hhZG93UmVuZGVyT3JkZXIoKSA/PyAwXCJcbiAgICAgICAgICAgICAgICBbZ2VvbWV0cnldPVwiY29udGFjdFNoYWRvd3MoKS5wbGFuZUdlb21ldHJ5XCJcbiAgICAgICAgICAgICAgICBbc2NhbGVdPVwiWzEsIC0xLCAxXVwiXG4gICAgICAgICAgICAgICAgW3JvdGF0aW9uXT1cIlstTWF0aC5QSSAvIDIsIDAsIDBdXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmd0LW1lc2gtYmFzaWMtbWF0ZXJpYWxcbiAgICAgICAgICAgICAgICAgICAgW21hcF09XCJjb250YWN0U2hhZG93cygpLnJlbmRlclRhcmdldC50ZXh0dXJlXCJcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbb3BhY2l0eV09XCJzaGFkb3dPcGFjaXR5KCkgPz8gMVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZXB0aFdyaXRlXT1cInNoYWRvd0RlcHRoV3JpdGUoKSA/PyBmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJlbmNvZGluZygpXCIgYXR0YWNoPVwibWFwLmVuY29kaW5nXCIgLz5cbiAgICAgICAgICAgICAgICA8L25ndC1tZXNoLWJhc2ljLW1hdGVyaWFsPlxuICAgICAgICAgICAgPC9uZ3QtbWVzaD5cbiAgICAgICAgICAgIDxuZ3Qtb3J0aG9ncmFwaGljLWNhbWVyYSAqYXJncz1cImNhbWVyYUFyZ3MoKVwiIFtyZWZdPVwic2hhZG93Q2FtZXJhUmVmXCIgLz5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0QXJnc10sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ29udGFjdFNoYWRvd3MgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RzQ29udGFjdFNoYWRvd3NTdGF0ZT4ge1xuICAgIEBJbnB1dCgpIGNvbnRhY3RTaGFkb3dzUmVmID0gaW5qZWN0Tmd0UmVmPEdyb3VwPigpO1xuXG4gICAgQElucHV0KCkgc2V0IG9wYWNpdHkob3BhY2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgb3BhY2l0eSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgd2lkdGgod2lkdGg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHdpZHRoIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBoZWlnaHQoaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBoZWlnaHQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJsdXIoYmx1cjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmx1ciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmFyKGZhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmFyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzbW9vdGgoc21vb3RoOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc21vb3RoIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJlc29sdXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZyYW1lcyhmcmFtZXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGZyYW1lcyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2NhbGUoc2NhbGU6IG51bWJlciB8IFt4OiBudW1iZXIsIHk6IG51bWJlcl0pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzY2FsZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY29sb3IoY29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb2xvciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZGVwdGhXcml0ZShkZXB0aFdyaXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGVwdGhXcml0ZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmVuZGVyT3JkZXIocmVuZGVyT3JkZXI6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJlbmRlck9yZGVyIH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IE1hdGggPSBNYXRoO1xuICAgIHJlYWRvbmx5ICNzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG5cbiAgICByZWFkb25seSBzaGFkb3dDYW1lcmFSZWYgPSBpbmplY3ROZ3RSZWY8T3J0aG9ncmFwaGljQ2FtZXJhPigpO1xuXG4gICAgcmVhZG9ubHkgI3NjYWxlID0gdGhpcy5zZWxlY3QoJ3NjYWxlJyk7XG4gICAgcmVhZG9ubHkgI3dpZHRoID0gdGhpcy5zZWxlY3QoJ3dpZHRoJyk7XG4gICAgcmVhZG9ubHkgI2hlaWdodCA9IHRoaXMuc2VsZWN0KCdoZWlnaHQnKTtcbiAgICByZWFkb25seSAjZmFyID0gdGhpcy5zZWxlY3QoJ2ZhcicpO1xuICAgIHJlYWRvbmx5ICNyZXNvbHV0aW9uID0gdGhpcy5zZWxlY3QoJ3Jlc29sdXRpb24nKTtcbiAgICByZWFkb25seSAjY29sb3IgPSB0aGlzLnNlbGVjdCgnY29sb3InKTtcblxuICAgIHJlYWRvbmx5ICNzY2FsZWRXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLiNzY2FsZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy4jd2lkdGgoKSAqIChBcnJheS5pc0FycmF5KHNjYWxlKSA/IHNjYWxlWzBdIDogc2NhbGUgfHwgMSk7XG4gICAgfSk7XG4gICAgcmVhZG9ubHkgI3NjYWxlZEhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLiNzY2FsZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy4jaGVpZ2h0KCkgKiAoQXJyYXkuaXNBcnJheShzY2FsZSkgPyBzY2FsZVsxXSA6IHNjYWxlIHx8IDEpO1xuICAgIH0pO1xuXG4gICAgcmVhZG9ubHkgZW5jb2RpbmcgPSB0aGlzLiNzdG9yZS5zZWxlY3QoJ2dsJywgJ291dHB1dEVuY29kaW5nJyk7XG4gICAgcmVhZG9ubHkgc2hhZG93UmVuZGVyT3JkZXIgPSB0aGlzLnNlbGVjdCgncmVuZGVyT3JkZXInKTtcbiAgICByZWFkb25seSBzaGFkb3dPcGFjaXR5ID0gdGhpcy5zZWxlY3QoJ29wYWNpdHknKTtcbiAgICByZWFkb25seSBzaGFkb3dEZXB0aFdyaXRlID0gdGhpcy5zZWxlY3QoJ2RlcHRoV3JpdGUnKTtcblxuICAgIHJlYWRvbmx5IGNhbWVyYUFyZ3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy4jc2NhbGVkV2lkdGgoKTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy4jc2NhbGVkSGVpZ2h0KCk7XG4gICAgICAgIHJldHVybiBbLXdpZHRoIC8gMiwgd2lkdGggLyAyLCBoZWlnaHQgLyAyLCAtaGVpZ2h0IC8gMiwgMCwgdGhpcy4jZmFyKCldO1xuICAgIH0pO1xuICAgIHJlYWRvbmx5IGNvbnRhY3RTaGFkb3dzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjb2xvciA9IHRoaXMuI2NvbG9yKCk7XG4gICAgICAgIGNvbnN0IHJlc29sdXRpb24gPSB0aGlzLiNyZXNvbHV0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlbmRlclRhcmdldCA9IG5ldyBUSFJFRS5XZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uKTtcbiAgICAgICAgY29uc3QgcmVuZGVyVGFyZ2V0Qmx1ciA9IG5ldyBUSFJFRS5XZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uKTtcbiAgICAgICAgcmVuZGVyVGFyZ2V0Qmx1ci50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcyA9IHJlbmRlclRhcmdldC50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcyA9IGZhbHNlO1xuICAgICAgICBjb25zdCBwbGFuZUdlb21ldHJ5ID0gbmV3IFRIUkVFLlBsYW5lR2VvbWV0cnkodGhpcy4jc2NhbGVkV2lkdGgoKSwgdGhpcy4jc2NhbGVkSGVpZ2h0KCkpLnJvdGF0ZVgoTWF0aC5QSSAvIDIpO1xuICAgICAgICBjb25zdCBibHVyUGxhbmUgPSBuZXcgTWVzaChwbGFuZUdlb21ldHJ5KTtcbiAgICAgICAgY29uc3QgZGVwdGhNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoRGVwdGhNYXRlcmlhbCgpO1xuICAgICAgICBkZXB0aE1hdGVyaWFsLmRlcHRoVGVzdCA9IGRlcHRoTWF0ZXJpYWwuZGVwdGhXcml0ZSA9IGZhbHNlO1xuICAgICAgICBkZXB0aE1hdGVyaWFsLm9uQmVmb3JlQ29tcGlsZSA9IChzaGFkZXIpID0+IHtcbiAgICAgICAgICAgIHNoYWRlci51bmlmb3JtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi5zaGFkZXIudW5pZm9ybXMsXG4gICAgICAgICAgICAgICAgdWNvbG9yOiB7IHZhbHVlOiBuZXcgVEhSRUUuQ29sb3IoY29sb3IpIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2hhZGVyLmZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYHZvaWQgbWFpbigpIHtgLCAvL1xuICAgICAgICAgICAgICAgIGB1bmlmb3JtIHZlYzMgdWNvbG9yO1xuICAgICAgICAgICAgICAgICB2b2lkIG1haW4oKSB7XG4gICAgICAgICAgICAgICAgYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICd2ZWM0KCB2ZWMzKCAxLjAgLSBmcmFnQ29vcmRaICksIG9wYWNpdHkgKTsnLFxuICAgICAgICAgICAgICAgIC8vIENvbG9yaXplIHRoZSBzaGFkb3csIG11bHRpcGx5IGJ5IHRoZSBmYWxsb2ZmIHNvIHRoYXQgdGhlIGNlbnRlciBjYW4gcmVtYWluIGRhcmtlclxuICAgICAgICAgICAgICAgICd2ZWM0KCB1Y29sb3IgKiBmcmFnQ29vcmRaICogMi4wLCAoIDEuMCAtIGZyYWdDb29yZFogKSAqIDEuMCApOydcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbEJsdXJNYXRlcmlhbCA9IG5ldyBUSFJFRS5TaGFkZXJNYXRlcmlhbChIb3Jpem9udGFsQmx1clNoYWRlcik7XG4gICAgICAgIGNvbnN0IHZlcnRpY2FsQmx1ck1hdGVyaWFsID0gbmV3IFRIUkVFLlNoYWRlck1hdGVyaWFsKFZlcnRpY2FsQmx1clNoYWRlcik7XG4gICAgICAgIHZlcnRpY2FsQmx1ck1hdGVyaWFsLmRlcHRoVGVzdCA9IGhvcml6b250YWxCbHVyTWF0ZXJpYWwuZGVwdGhUZXN0ID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlbmRlclRhcmdldCxcbiAgICAgICAgICAgIHBsYW5lR2VvbWV0cnksXG4gICAgICAgICAgICBkZXB0aE1hdGVyaWFsLFxuICAgICAgICAgICAgYmx1clBsYW5lLFxuICAgICAgICAgICAgaG9yaXpvbnRhbEJsdXJNYXRlcmlhbCxcbiAgICAgICAgICAgIHZlcnRpY2FsQmx1ck1hdGVyaWFsLFxuICAgICAgICAgICAgcmVuZGVyVGFyZ2V0Qmx1cixcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBzY2FsZTogMTAsXG4gICAgICAgICAgICBmcmFtZXM6IEluZmluaXR5LFxuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgICAgYmx1cjogMSxcbiAgICAgICAgICAgIGZhcjogMTAsXG4gICAgICAgICAgICByZXNvbHV0aW9uOiA1MTIsXG4gICAgICAgICAgICBzbW9vdGg6IHRydWUsXG4gICAgICAgICAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgICAgICAgICByZW5kZXJPcmRlcjogMCxcbiAgICAgICAgfSk7XG4gICAgICAgIGluamVjdEJlZm9yZVJlbmRlcih0aGlzLiNvbkJlZm9yZVJlbmRlci5iaW5kKHRoaXMsIDApKTtcbiAgICB9XG5cbiAgICAjb25CZWZvcmVSZW5kZXIoY291bnQ6IG51bWJlciwgeyBzY2VuZSwgZ2wgfTogTmd0UmVuZGVyU3RhdGUpIHtcbiAgICAgICAgY29uc3QgeyBmcmFtZXMgPSBJbmZpbml0eSwgYmx1ciA9IDEsIHNtb290aCA9IHRydWUgfSA9IHRoaXMuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHsgZGVwdGhNYXRlcmlhbCwgcmVuZGVyVGFyZ2V0IH0gPSB0aGlzLmNvbnRhY3RTaGFkb3dzKCk7XG4gICAgICAgIGNvbnN0IHNoYWRvd0NhbWVyYSA9IHRoaXMuc2hhZG93Q2FtZXJhUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChzaGFkb3dDYW1lcmEgJiYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpKSB7XG4gICAgICAgICAgICBjb25zdCBpbml0aWFsQmFja2dyb3VuZCA9IHNjZW5lLmJhY2tncm91bmQ7XG4gICAgICAgICAgICBzY2VuZS5iYWNrZ3JvdW5kID0gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxPdmVycmlkZU1hdGVyaWFsID0gc2NlbmUub3ZlcnJpZGVNYXRlcmlhbDtcbiAgICAgICAgICAgIHNjZW5lLm92ZXJyaWRlTWF0ZXJpYWwgPSBkZXB0aE1hdGVyaWFsO1xuICAgICAgICAgICAgZ2wuc2V0UmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCk7XG4gICAgICAgICAgICBnbC5yZW5kZXIoc2NlbmUsIHNoYWRvd0NhbWVyYSk7XG4gICAgICAgICAgICBzY2VuZS5vdmVycmlkZU1hdGVyaWFsID0gaW5pdGlhbE92ZXJyaWRlTWF0ZXJpYWw7XG5cbiAgICAgICAgICAgIHRoaXMuI2JsdXJTaGFkb3dzKGJsdXIpO1xuICAgICAgICAgICAgaWYgKHNtb290aCkgdGhpcy4jYmx1clNoYWRvd3MoYmx1ciAqIDAuNCk7XG5cbiAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChudWxsKTtcbiAgICAgICAgICAgIHNjZW5lLmJhY2tncm91bmQgPSBpbml0aWFsQmFja2dyb3VuZDtcbiAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjYmx1clNoYWRvd3MoYmx1cjogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHsgYmx1clBsYW5lLCBob3Jpem9udGFsQmx1ck1hdGVyaWFsLCB2ZXJ0aWNhbEJsdXJNYXRlcmlhbCwgcmVuZGVyVGFyZ2V0Qmx1ciwgcmVuZGVyVGFyZ2V0IH0gPVxuICAgICAgICAgICAgdGhpcy5jb250YWN0U2hhZG93cygpO1xuICAgICAgICBjb25zdCBnbCA9IHRoaXMuI3N0b3JlLmdldCgnZ2wnKTtcbiAgICAgICAgY29uc3Qgc2hhZG93Q2FtZXJhID0gdGhpcy5zaGFkb3dDYW1lcmFSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBibHVyUGxhbmUudmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgYmx1clBsYW5lLm1hdGVyaWFsID0gaG9yaXpvbnRhbEJsdXJNYXRlcmlhbDtcbiAgICAgICAgaG9yaXpvbnRhbEJsdXJNYXRlcmlhbC51bmlmb3Jtc1sndERpZmZ1c2UnXS52YWx1ZSA9IHJlbmRlclRhcmdldC50ZXh0dXJlO1xuICAgICAgICBob3Jpem9udGFsQmx1ck1hdGVyaWFsLnVuaWZvcm1zWydoJ10udmFsdWUgPSAoYmx1ciAqIDEpIC8gMjU2O1xuXG4gICAgICAgIGdsLnNldFJlbmRlclRhcmdldChyZW5kZXJUYXJnZXRCbHVyKTtcbiAgICAgICAgZ2wucmVuZGVyKGJsdXJQbGFuZSwgc2hhZG93Q2FtZXJhKTtcblxuICAgICAgICBibHVyUGxhbmUubWF0ZXJpYWwgPSB2ZXJ0aWNhbEJsdXJNYXRlcmlhbDtcbiAgICAgICAgdmVydGljYWxCbHVyTWF0ZXJpYWwudW5pZm9ybXNbJ3REaWZmdXNlJ10udmFsdWUgPSByZW5kZXJUYXJnZXRCbHVyLnRleHR1cmU7XG4gICAgICAgIHZlcnRpY2FsQmx1ck1hdGVyaWFsLnVuaWZvcm1zWyd2J10udmFsdWUgPSAoYmx1ciAqIDEpIC8gMjU2O1xuXG4gICAgICAgIGdsLnNldFJlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpO1xuICAgICAgICBnbC5yZW5kZXIoYmx1clBsYW5lLCBzaGFkb3dDYW1lcmEpO1xuXG4gICAgICAgIGJsdXJQbGFuZS52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxufVxuIl19
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zaGFkb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2NvbnRhY3Qtc2hhZG93cy9jb250YWN0LXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFDTixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsT0FBTyxFQUNQLFdBQVcsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhFLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBa0QvRCxNQUFNLE9BQU8sa0JBQWtCO0lBa0I5QixJQUFpQyxRQUFRLENBQUMsT0FBZTtRQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQStCLE1BQU0sQ0FBQyxLQUFhO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBZ0MsT0FBTyxDQUFDLE1BQWM7UUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFF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QUlPLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlJLEtBQUs7c0JBQWxDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUlLLElBQUk7c0JBQWhDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUlTLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlVLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUlFLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlLLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlNLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlXLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUlPLFlBQVk7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdGV4dGVuZCxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHRpbmplY3ROZ3RSZWYsXG5cdGluamVjdE5ndFN0b3JlLFxuXHROZ3RBcmdzLFxuXHRzaWduYWxTdG9yZSxcblx0dHlwZSBOZ3RHcm91cCxcblx0dHlwZSBOZ3RSZW5kZXJTdGF0ZSxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCwgTWVzaCwgTWVzaEJhc2ljTWF0ZXJpYWwsIE9ydGhvZ3JhcGhpY0NhbWVyYSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEhvcml6b250YWxCbHVyU2hhZGVyLCBWZXJ0aWNhbEJsdXJTaGFkZXIgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHRlbmQoeyBHcm91cCwgTWVzaCwgTWVzaEJhc2ljTWF0ZXJpYWwsIE9ydGhvZ3JhcGhpY0NhbWVyYSB9KTtcblxuZXhwb3J0IHR5cGUgTmd0c0NvbnRhY3RTaGFkb3dzU3RhdGUgPSB7XG5cdG9wYWNpdHk6IG51bWJlcjtcblx0d2lkdGg6IG51bWJlcjtcblx0aGVpZ2h0OiBudW1iZXI7XG5cdGJsdXI6IG51bWJlcjtcblx0ZmFyOiBudW1iZXI7XG5cdHNtb290aDogYm9vbGVhbjtcblx0cmVzb2x1dGlvbjogbnVtYmVyO1xuXHRmcmFtZXM6IG51bWJlcjtcblx0c2NhbGU6IG51bWJlciB8IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG5cdGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uO1xuXHRkZXB0aFdyaXRlOiBib29sZWFuO1xuXHRyZW5kZXJPcmRlcjogbnVtYmVyO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3QtZ3JvdXBcblx0XHQgKi9cblx0XHQnbmd0cy1jb250YWN0LXNoYWRvd3MnOiBOZ3RzQ29udGFjdFNoYWRvd3NTdGF0ZSAmIE5ndEdyb3VwO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtY29udGFjdC1zaGFkb3dzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWdyb3VwIG5ndENvbXBvdW5kIFtyZWZdPVwiY29udGFjdFNoYWRvd3NSZWZcIiBbcm90YXRpb25dPVwiW01hdGguUEkgLyAyLCAwLCAwXVwiPlxuXHRcdFx0PG5ndC1tZXNoXG5cdFx0XHRcdFtyZW5kZXJPcmRlcl09XCJyZW5kZXJPcmRlcigpID8/IDBcIlxuXHRcdFx0XHRbZ2VvbWV0cnldPVwiY29udGFjdFNoYWRvd3MoKS5wbGFuZUdlb21ldHJ5XCJcblx0XHRcdFx0W3NjYWxlXT1cIlsxLCAtMSwgMV1cIlxuXHRcdFx0XHRbcm90YXRpb25dPVwiWy1NYXRoLlBJIC8gMiwgMCwgMF1cIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmd0LW1lc2gtYmFzaWMtbWF0ZXJpYWxcblx0XHRcdFx0XHRbbWFwXT1cImNvbnRhY3RTaGFkb3dzKCkucmVuZGVyVGFyZ2V0LnRleHR1cmVcIlxuXHRcdFx0XHRcdFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcblx0XHRcdFx0XHRbb3BhY2l0eV09XCJvcGFjaXR5KCkgPz8gMVwiXG5cdFx0XHRcdFx0W2RlcHRoV3JpdGVdPVwiZGVwdGhXcml0ZSgpID8/IGZhbHNlXCJcblx0XHRcdFx0Lz5cblx0XHRcdDwvbmd0LW1lc2g+XG5cdFx0XHQ8bmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmEgKmFyZ3M9XCJjYW1lcmFBcmdzKClcIiBbcmVmXT1cInNoYWRvd0NhbWVyYVJlZlwiIC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ29udGFjdFNoYWRvd3Mge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNDb250YWN0U2hhZG93c1N0YXRlPih7XG5cdFx0c2NhbGU6IDEwLFxuXHRcdGZyYW1lczogSW5maW5pdHksXG5cdFx0b3BhY2l0eTogMSxcblx0XHR3aWR0aDogMSxcblx0XHRoZWlnaHQ6IDEsXG5cdFx0Ymx1cjogMSxcblx0XHRmYXI6IDEwLFxuXHRcdHJlc29sdXRpb246IDUxMixcblx0XHRzbW9vdGg6IHRydWUsXG5cdFx0Y29sb3I6ICcjMDAwMDAwJyxcblx0XHRkZXB0aFdyaXRlOiBmYWxzZSxcblx0XHRyZW5kZXJPcmRlcjogMCxcblx0fSk7XG5cblx0QElucHV0KCkgY29udGFjdFNoYWRvd3NSZWYgPSBpbmplY3ROZ3RSZWY8R3JvdXA+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdvcGFjaXR5JyB9KSBzZXQgX29wYWNpdHkob3BhY2l0eTogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgb3BhY2l0eSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnd2lkdGgnIH0pIHNldCBfd2lkdGgod2lkdGg6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHdpZHRoIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdoZWlnaHQnIH0pIHNldCBfaGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgaGVpZ2h0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdibHVyJyB9KSBzZXQgX2JsdXIoYmx1cjogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgYmx1ciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZmFyJyB9KSBzZXQgX2ZhcihmYXI6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZhciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc21vb3RoJyB9KSBzZXQgX3Ntb290aChzbW9vdGg6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzbW9vdGggfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3Jlc29sdXRpb24nIH0pIHNldCBfcmVzb2x1dGlvbihyZXNvbHV0aW9uOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyByZXNvbHV0aW9uIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmcmFtZXMnIH0pIHNldCBfZnJhbWVzKGZyYW1lczogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZnJhbWVzIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzY2FsZScgfSkgc2V0IF9zY2FsZShzY2FsZTogbnVtYmVyIHwgW3g6IG51bWJlciwgeTogbnVtYmVyXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNjYWxlIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdjb2xvcicgfSkgc2V0IF9jb2xvcihjb2xvcjogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGNvbG9yIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdkZXB0aFdyaXRlJyB9KSBzZXQgX2RlcHRoV3JpdGUoZGVwdGhXcml0ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGRlcHRoV3JpdGUgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3JlbmRlck9yZGVyJyB9KSBzZXQgX3JlbmRlck9yZGVyKHJlbmRlck9yZGVyOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyByZW5kZXJPcmRlciB9KTtcblx0fVxuXG5cdE1hdGggPSBNYXRoO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXG5cdHNoYWRvd0NhbWVyYVJlZiA9IGluamVjdE5ndFJlZjxPcnRob2dyYXBoaWNDYW1lcmE+KCk7XG5cblx0cHJpdmF0ZSBzY2FsZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc2NhbGUnKTtcblx0cHJpdmF0ZSB3aWR0aCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnd2lkdGgnKTtcblx0cHJpdmF0ZSBoZWlnaHQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2hlaWdodCcpO1xuXHRwcml2YXRlIGZhciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZmFyJyk7XG5cdHByaXZhdGUgcmVzb2x1dGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgncmVzb2x1dGlvbicpO1xuXHRwcml2YXRlIGNvbG9yID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdjb2xvcicpO1xuXG5cdHByaXZhdGUgc2NhbGVkV2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlKCk7XG5cdFx0cmV0dXJuIHRoaXMud2lkdGgoKSAqIChBcnJheS5pc0FycmF5KHNjYWxlKSA/IHNjYWxlWzBdIDogc2NhbGUgfHwgMSk7XG5cdH0pO1xuXHRwcml2YXRlIHNjYWxlZEhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGUoKTtcblx0XHRyZXR1cm4gdGhpcy5oZWlnaHQoKSAqIChBcnJheS5pc0FycmF5KHNjYWxlKSA/IHNjYWxlWzFdIDogc2NhbGUgfHwgMSk7XG5cdH0pO1xuXG5cdHJlbmRlck9yZGVyID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyZW5kZXJPcmRlcicpO1xuXHRvcGFjaXR5ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdvcGFjaXR5Jyk7XG5cdGRlcHRoV3JpdGUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2RlcHRoV3JpdGUnKTtcblxuXHRjYW1lcmFBcmdzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHdpZHRoID0gdGhpcy5zY2FsZWRXaWR0aCgpO1xuXHRcdGNvbnN0IGhlaWdodCA9IHRoaXMuc2NhbGVkSGVpZ2h0KCk7XG5cdFx0cmV0dXJuIFstd2lkdGggLyAyLCB3aWR0aCAvIDIsIGhlaWdodCAvIDIsIC1oZWlnaHQgLyAyLCAwLCB0aGlzLmZhcigpXTtcblx0fSk7XG5cdGNvbnRhY3RTaGFkb3dzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtjb2xvciwgcmVzb2x1dGlvbl0gPSBbdGhpcy5jb2xvcigpLCB0aGlzLnJlc29sdXRpb24oKV07XG5cdFx0Y29uc3QgcmVuZGVyVGFyZ2V0ID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0KHJlc29sdXRpb24sIHJlc29sdXRpb24pO1xuXHRcdGNvbnN0IHJlbmRlclRhcmdldEJsdXIgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQocmVzb2x1dGlvbiwgcmVzb2x1dGlvbik7XG5cdFx0cmVuZGVyVGFyZ2V0Qmx1ci50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcyA9IHJlbmRlclRhcmdldC50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcyA9IGZhbHNlO1xuXHRcdGNvbnN0IHBsYW5lR2VvbWV0cnkgPSBuZXcgVEhSRUUuUGxhbmVHZW9tZXRyeSh0aGlzLnNjYWxlZFdpZHRoKCksIHRoaXMuc2NhbGVkSGVpZ2h0KCkpLnJvdGF0ZVgoTWF0aC5QSSAvIDIpO1xuXHRcdGNvbnN0IGJsdXJQbGFuZSA9IG5ldyBNZXNoKHBsYW5lR2VvbWV0cnkpO1xuXHRcdGNvbnN0IGRlcHRoTWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaERlcHRoTWF0ZXJpYWwoKTtcblx0XHRkZXB0aE1hdGVyaWFsLmRlcHRoVGVzdCA9IGRlcHRoTWF0ZXJpYWwuZGVwdGhXcml0ZSA9IGZhbHNlO1xuXHRcdGRlcHRoTWF0ZXJpYWwub25CZWZvcmVDb21waWxlID0gKHNoYWRlcikgPT4ge1xuXHRcdFx0c2hhZGVyLnVuaWZvcm1zID0ge1xuXHRcdFx0XHQuLi5zaGFkZXIudW5pZm9ybXMsXG5cdFx0XHRcdHVjb2xvcjogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKGNvbG9yKSB9LFxuXHRcdFx0fTtcblx0XHRcdHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuXHRcdFx0XHRgdm9pZCBtYWluKCkge2AsIC8vXG5cdFx0XHRcdGB1bmlmb3JtIHZlYzMgdWNvbG9yO1xuICAgICAgICAgdm9pZCBtYWluKCkge2AsXG5cdFx0XHQpO1xuXHRcdFx0c2hhZGVyLmZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyLnJlcGxhY2UoXG5cdFx0XHRcdCd2ZWM0KCB2ZWMzKCAxLjAgLSBmcmFnQ29vcmRaICksIG9wYWNpdHkgKTsnLFxuXHRcdFx0XHQvLyBDb2xvcml6ZSB0aGUgc2hhZG93LCBtdWx0aXBseSBieSB0aGUgZmFsbG9mZiBzbyB0aGF0IHRoZSBjZW50ZXIgY2FuIHJlbWFpbiBkYXJrZXJcblx0XHRcdFx0J3ZlYzQoIHVjb2xvciAqIGZyYWdDb29yZFogKiAyLjAsICggMS4wIC0gZnJhZ0Nvb3JkWiApICogMS4wICk7Jyxcblx0XHRcdCk7XG5cdFx0fTtcblxuXHRcdGNvbnN0IGhvcml6b250YWxCbHVyTWF0ZXJpYWwgPSBuZXcgVEhSRUUuU2hhZGVyTWF0ZXJpYWwoSG9yaXpvbnRhbEJsdXJTaGFkZXIpO1xuXHRcdGNvbnN0IHZlcnRpY2FsQmx1ck1hdGVyaWFsID0gbmV3IFRIUkVFLlNoYWRlck1hdGVyaWFsKFZlcnRpY2FsQmx1clNoYWRlcik7XG5cdFx0dmVydGljYWxCbHVyTWF0ZXJpYWwuZGVwdGhUZXN0ID0gaG9yaXpvbnRhbEJsdXJNYXRlcmlhbC5kZXB0aFRlc3QgPSBmYWxzZTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRyZW5kZXJUYXJnZXQsXG5cdFx0XHRwbGFuZUdlb21ldHJ5LFxuXHRcdFx0ZGVwdGhNYXRlcmlhbCxcblx0XHRcdGJsdXJQbGFuZSxcblx0XHRcdGhvcml6b250YWxCbHVyTWF0ZXJpYWwsXG5cdFx0XHR2ZXJ0aWNhbEJsdXJNYXRlcmlhbCxcblx0XHRcdHJlbmRlclRhcmdldEJsdXIsXG5cdFx0fTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMuYmVmb3JlUmVuZGVyLmJpbmQodGhpcywgMCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoY291bnQ6IG51bWJlciwgeyBzY2VuZSwgZ2wgfTogTmd0UmVuZGVyU3RhdGUpIHtcblx0XHRjb25zdCB7IGZyYW1lcyA9IEluZmluaXR5LCBibHVyID0gMSwgc21vb3RoID0gdHJ1ZSB9ID0gdGhpcy5pbnB1dHMuZ2V0KCk7XG5cdFx0Y29uc3QgeyBkZXB0aE1hdGVyaWFsLCByZW5kZXJUYXJnZXQgfSA9IHRoaXMuY29udGFjdFNoYWRvd3MoKTtcblx0XHRjb25zdCBzaGFkb3dDYW1lcmEgPSB0aGlzLnNoYWRvd0NhbWVyYVJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChzaGFkb3dDYW1lcmEgJiYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpKSB7XG5cdFx0XHRjb25zdCBpbml0aWFsQmFja2dyb3VuZCA9IHNjZW5lLmJhY2tncm91bmQ7XG5cdFx0XHRzY2VuZS5iYWNrZ3JvdW5kID0gbnVsbDtcblx0XHRcdGNvbnN0IGluaXRpYWxPdmVycmlkZU1hdGVyaWFsID0gc2NlbmUub3ZlcnJpZGVNYXRlcmlhbDtcblx0XHRcdHNjZW5lLm92ZXJyaWRlTWF0ZXJpYWwgPSBkZXB0aE1hdGVyaWFsO1xuXHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCk7XG5cdFx0XHRnbC5yZW5kZXIoc2NlbmUsIHNoYWRvd0NhbWVyYSk7XG5cdFx0XHRzY2VuZS5vdmVycmlkZU1hdGVyaWFsID0gaW5pdGlhbE92ZXJyaWRlTWF0ZXJpYWw7XG5cblx0XHRcdHRoaXMuYmx1clNoYWRvd3MoYmx1cik7XG5cdFx0XHRpZiAoc21vb3RoKSB0aGlzLmJsdXJTaGFkb3dzKGJsdXIgKiAwLjQpO1xuXG5cdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0XHRzY2VuZS5iYWNrZ3JvdW5kID0gaW5pdGlhbEJhY2tncm91bmQ7XG5cdFx0XHRjb3VudCsrO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYmx1clNoYWRvd3MoYmx1cjogbnVtYmVyKSB7XG5cdFx0Y29uc3QgeyBibHVyUGxhbmUsIGhvcml6b250YWxCbHVyTWF0ZXJpYWwsIHZlcnRpY2FsQmx1ck1hdGVyaWFsLCByZW5kZXJUYXJnZXRCbHVyLCByZW5kZXJUYXJnZXQgfSA9XG5cdFx0XHR0aGlzLmNvbnRhY3RTaGFkb3dzKCk7XG5cdFx0Y29uc3QgZ2wgPSB0aGlzLnN0b3JlLmdldCgnZ2wnKTtcblx0XHRjb25zdCBzaGFkb3dDYW1lcmEgPSB0aGlzLnNoYWRvd0NhbWVyYVJlZi5uYXRpdmVFbGVtZW50O1xuXG5cdFx0Ymx1clBsYW5lLnZpc2libGUgPSB0cnVlO1xuXG5cdFx0Ymx1clBsYW5lLm1hdGVyaWFsID0gaG9yaXpvbnRhbEJsdXJNYXRlcmlhbDtcblx0XHRob3Jpem9udGFsQmx1ck1hdGVyaWFsLnVuaWZvcm1zWyd0RGlmZnVzZSddLnZhbHVlID0gcmVuZGVyVGFyZ2V0LnRleHR1cmU7XG5cdFx0aG9yaXpvbnRhbEJsdXJNYXRlcmlhbC51bmlmb3Jtc1snaCddLnZhbHVlID0gKGJsdXIgKiAxKSAvIDI1NjtcblxuXHRcdGdsLnNldFJlbmRlclRhcmdldChyZW5kZXJUYXJnZXRCbHVyKTtcblx0XHRnbC5yZW5kZXIoYmx1clBsYW5lLCBzaGFkb3dDYW1lcmEpO1xuXG5cdFx0Ymx1clBsYW5lLm1hdGVyaWFsID0gdmVydGljYWxCbHVyTWF0ZXJpYWw7XG5cdFx0dmVydGljYWxCbHVyTWF0ZXJpYWwudW5pZm9ybXNbJ3REaWZmdXNlJ10udmFsdWUgPSByZW5kZXJUYXJnZXRCbHVyLnRleHR1cmU7XG5cdFx0dmVydGljYWxCbHVyTWF0ZXJpYWwudW5pZm9ybXNbJ3YnXS52YWx1ZSA9IChibHVyICogMSkgLyAyNTY7XG5cblx0XHRnbC5zZXRSZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KTtcblx0XHRnbC5yZW5kZXIoYmx1clBsYW5lLCBzaGFkb3dDYW1lcmEpO1xuXG5cdFx0Ymx1clBsYW5lLnZpc2libGUgPSBmYWxzZTtcblx0fVxufVxuIl19
@@ -1,13 +1,13 @@
1
- export const ngtsEnvironmentPresetsObj = {
2
- sunset: 'venice/venice_sunset_1k.hdr',
3
- dawn: 'kiara/kiara_1_dawn_1k.hdr',
4
- night: 'dikhololo/dikhololo_night_1k.hdr',
5
- warehouse: 'empty-wharehouse/empty_warehouse_01_1k.hdr',
6
- forest: 'forrest-slope/forest_slope_1k.hdr',
7
- apartment: 'lebombo/lebombo_1k.hdr',
8
- studio: 'studio-small-3/studio_small_03_1k.hdr',
9
- city: 'potsdamer-platz/potsdamer_platz_1k.hdr',
10
- park: 'rooitou/rooitou_park_1k.hdr',
11
- lobby: 'st-fagans/st_fagans_interior_1k.hdr',
1
+ export const ENVIRONMENT_PRESETS = {
2
+ apartment: 'lebombo_1k.hdr',
3
+ city: 'potsdamer_platz_1k.hdr',
4
+ dawn: 'kiara_1_dawn_1k.hdr',
5
+ forest: 'forest_slope_1k.hdr',
6
+ lobby: 'st_fagans_interior_1k.hdr',
7
+ night: 'dikhololo_night_1k.hdr',
8
+ park: 'rooitou_park_1k.hdr',
9
+ studio: 'studio_small_03_1k.hdr',
10
+ sunset: 'venice_sunset_1k.hdr',
11
+ warehouse: 'empty_warehouse_01_1k.hdr',
12
12
  };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2Vudmlyb25tZW50L2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUNyQyxNQUFNLEVBQUUsNkJBQTZCO0lBQ3JDLElBQUksRUFBRSwyQkFBMkI7SUFDakMsS0FBSyxFQUFFLGtDQUFrQztJQUN6QyxTQUFTLEVBQUUsNENBQTRDO0lBQ3ZELE1BQU0sRUFBRSxtQ0FBbUM7SUFDM0MsU0FBUyxFQUFFLHdCQUF3QjtJQUNuQyxNQUFNLEVBQUUsdUNBQXVDO0lBQy9DLElBQUksRUFBRSx3Q0FBd0M7SUFDOUMsSUFBSSxFQUFFLDZCQUE2QjtJQUNuQyxLQUFLLEVBQUUscUNBQXFDO0NBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgbmd0c0Vudmlyb25tZW50UHJlc2V0c09iaiA9IHtcbiAgICBzdW5zZXQ6ICd2ZW5pY2UvdmVuaWNlX3N1bnNldF8xay5oZHInLFxuICAgIGRhd246ICdraWFyYS9raWFyYV8xX2Rhd25fMWsuaGRyJyxcbiAgICBuaWdodDogJ2Rpa2hvbG9sby9kaWtob2xvbG9fbmlnaHRfMWsuaGRyJyxcbiAgICB3YXJlaG91c2U6ICdlbXB0eS13aGFyZWhvdXNlL2VtcHR5X3dhcmVob3VzZV8wMV8xay5oZHInLFxuICAgIGZvcmVzdDogJ2ZvcnJlc3Qtc2xvcGUvZm9yZXN0X3Nsb3BlXzFrLmhkcicsXG4gICAgYXBhcnRtZW50OiAnbGVib21iby9sZWJvbWJvXzFrLmhkcicsXG4gICAgc3R1ZGlvOiAnc3R1ZGlvLXNtYWxsLTMvc3R1ZGlvX3NtYWxsXzAzXzFrLmhkcicsXG4gICAgY2l0eTogJ3BvdHNkYW1lci1wbGF0ei9wb3RzZGFtZXJfcGxhdHpfMWsuaGRyJyxcbiAgICBwYXJrOiAncm9vaXRvdS9yb29pdG91X3BhcmtfMWsuaGRyJyxcbiAgICBsb2JieTogJ3N0LWZhZ2Fucy9zdF9mYWdhbnNfaW50ZXJpb3JfMWsuaGRyJyxcbn07XG5cbmV4cG9ydCB0eXBlIE5ndHNFbnZpcm9ubWVudFByZXNldHNUeXBlID0ga2V5b2YgdHlwZW9mIG5ndHNFbnZpcm9ubWVudFByZXNldHNPYmo7XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2Vudmlyb25tZW50L2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNsQyxTQUFTLEVBQUUsZ0JBQWdCO0lBQzNCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQixNQUFNLEVBQUUscUJBQXFCO0lBQzdCLEtBQUssRUFBRSwyQkFBMkI7SUFDbEMsS0FBSyxFQUFFLHdCQUF3QjtJQUMvQixJQUFJLEVBQUUscUJBQXFCO0lBQzNCLE1BQU0sRUFBRSx3QkFBd0I7SUFDaEMsTUFBTSxFQUFFLHNCQUFzQjtJQUM5QixTQUFTLEVBQUUsMkJBQTJCO0NBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRU5WSVJPTk1FTlRfUFJFU0VUUyA9IHtcblx0YXBhcnRtZW50OiAnbGVib21ib18xay5oZHInLFxuXHRjaXR5OiAncG90c2RhbWVyX3BsYXR6XzFrLmhkcicsXG5cdGRhd246ICdraWFyYV8xX2Rhd25fMWsuaGRyJyxcblx0Zm9yZXN0OiAnZm9yZXN0X3Nsb3BlXzFrLmhkcicsXG5cdGxvYmJ5OiAnc3RfZmFnYW5zX2ludGVyaW9yXzFrLmhkcicsXG5cdG5pZ2h0OiAnZGlraG9sb2xvX25pZ2h0XzFrLmhkcicsXG5cdHBhcms6ICdyb29pdG91X3BhcmtfMWsuaGRyJyxcblx0c3R1ZGlvOiAnc3R1ZGlvX3NtYWxsXzAzXzFrLmhkcicsXG5cdHN1bnNldDogJ3ZlbmljZV9zdW5zZXRfMWsuaGRyJyxcblx0d2FyZWhvdXNlOiAnZW1wdHlfd2FyZWhvdXNlXzAxXzFrLmhkcicsXG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSA9IGtleW9mIHR5cGVvZiBFTlZJUk9OTUVOVF9QUkVTRVRTO1xuIl19
@@ -1,49 +1,47 @@
1
- import { Directive, Input, computed, effect, inject } from '@angular/core';
2
- import { NgtStore, requestAnimationInInjectionContext } from 'angular-three';
1
+ import { Directive, Input, effect, inject } from '@angular/core';
2
+ import { injectNgtStore, signalStore } from 'angular-three';
3
3
  import { NgtsEnvironmentInput } from './environment-input';
4
4
  import { injectNgtsEnvironment, setEnvProps } from './utils';
5
5
  import * as i0 from "@angular/core";
6
- class NgtsEnvironmentCube {
7
- #store;
8
- set background(background) {
9
- this.environmentInput.set({ background });
6
+ export class NgtsEnvironmentCube {
7
+ set _background(background) {
8
+ this.inputs.set({ background });
10
9
  }
11
10
  constructor() {
12
11
  this.environmentInput = inject(NgtsEnvironmentInput);
13
- this.#store = inject(NgtStore);
14
- this.textureRef = injectNgtsEnvironment(this.environmentInput.environmentParams);
15
- this.environmentInput.patch({ background: false });
16
- requestAnimationInInjectionContext(() => {
17
- this.#setEnvProps();
18
- });
12
+ this.inputs = signalStore({ background: false });
13
+ this.store = injectNgtStore();
14
+ this.scene = this.store.select('scene');
15
+ this.background = this.inputs.select('background');
16
+ this.textureRef = injectNgtsEnvironment(this.environmentInput.params);
17
+ this.setEnvProps();
19
18
  }
20
- #setEnvProps() {
21
- const scene = this.#store.select('scene');
22
- const trigger = computed(() => ({
23
- defaultScene: scene(),
24
- scene: this.environmentInput.environmentScene(),
25
- background: this.environmentInput.environmentBackground(),
26
- blur: this.environmentInput.environmentBlur(),
27
- texture: this.textureRef.nativeElement,
28
- }));
19
+ setEnvProps() {
29
20
  effect((onCleanup) => {
30
- const { background, defaultScene, scene, blur, texture } = trigger();
21
+ const [defaultScene, scene, background, blur, texture] = [
22
+ this.scene(),
23
+ this.environmentInput.scene(),
24
+ this.background(),
25
+ this.environmentInput.blur(),
26
+ this.textureRef.nativeElement,
27
+ ];
31
28
  if (!texture)
32
29
  return;
33
- onCleanup(setEnvProps(background, scene, defaultScene, texture, blur));
30
+ const cleanUp = setEnvProps(background, scene, defaultScene, texture, blur);
31
+ onCleanup(cleanUp);
34
32
  });
35
33
  }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsEnvironmentCube, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
37
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", inputs: { background: "background" }, ngImport: i0 }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsEnvironmentCube, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", inputs: { _background: ["background", "_background"] }, ngImport: i0 }); }
38
36
  }
39
- export { NgtsEnvironmentCube };
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsEnvironmentCube, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsEnvironmentCube, decorators: [{
41
38
  type: Directive,
42
39
  args: [{
43
40
  selector: 'ngts-environment-cube',
44
41
  standalone: true,
45
42
  }]
46
- }], ctorParameters: function () { return []; }, propDecorators: { background: [{
47
- type: Input
43
+ }], ctorParameters: function () { return []; }, propDecorators: { _background: [{
44
+ type: Input,
45
+ args: [{ alias: 'background' }]
48
46
  }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtY3ViZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC1jdWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFN0QsTUFJYSxtQkFBbUI7SUFFbkIsTUFBTSxDQUFvQjtJQUduQyxJQUFhLFVBQVUsQ0FBQyxVQUFtQjtRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7UUFSbUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDMUQsV0FBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixlQUFVLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFPakYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELGtDQUFrQyxDQUFDLEdBQUcsRUFBRTtZQUNwQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWTtRQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLFlBQVksRUFBRSxLQUFLLEVBQUU7WUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUMvQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFO1lBQ3pELElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFO1lBQzdDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWE7U0FDekMsQ0FBQyxDQUFDLENBQUM7UUFFSixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNqQixNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU87WUFDckIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBL0JRLG1CQUFtQjtrR0FBbkIsbUJBQW1COztTQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7MEVBTWdCLFVBQVU7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFN0b3JlLCByZXF1ZXN0QW5pbWF0aW9uSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRJbnB1dCB9IGZyb20gJy4vZW52aXJvbm1lbnQtaW5wdXQnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c0Vudmlyb25tZW50LCBzZXRFbnZQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ25ndHMtZW52aXJvbm1lbnQtY3ViZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0Vudmlyb25tZW50Q3ViZSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVudmlyb25tZW50SW5wdXQgPSBpbmplY3QoTmd0c0Vudmlyb25tZW50SW5wdXQpO1xuICAgIHJlYWRvbmx5ICNzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG4gICAgcmVhZG9ubHkgdGV4dHVyZVJlZiA9IGluamVjdE5ndHNFbnZpcm9ubWVudCh0aGlzLmVudmlyb25tZW50SW5wdXQuZW52aXJvbm1lbnRQYXJhbXMpO1xuXG4gICAgQElucHV0KCkgc2V0IGJhY2tncm91bmQoYmFja2dyb3VuZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmVudmlyb25tZW50SW5wdXQuc2V0KHsgYmFja2dyb3VuZCB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudElucHV0LnBhdGNoKHsgYmFja2dyb3VuZDogZmFsc2UgfSk7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25JbkluamVjdGlvbkNvbnRleHQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jc2V0RW52UHJvcHMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI3NldEVudlByb3BzKCkge1xuICAgICAgICBjb25zdCBzY2VuZSA9IHRoaXMuI3N0b3JlLnNlbGVjdCgnc2NlbmUnKTtcbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICAgICAgICBkZWZhdWx0U2NlbmU6IHNjZW5lKCksXG4gICAgICAgICAgICBzY2VuZTogdGhpcy5lbnZpcm9ubWVudElucHV0LmVudmlyb25tZW50U2NlbmUoKSxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRoaXMuZW52aXJvbm1lbnRJbnB1dC5lbnZpcm9ubWVudEJhY2tncm91bmQoKSxcbiAgICAgICAgICAgIGJsdXI6IHRoaXMuZW52aXJvbm1lbnRJbnB1dC5lbnZpcm9ubWVudEJsdXIoKSxcbiAgICAgICAgICAgIHRleHR1cmU6IHRoaXMudGV4dHVyZVJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgZWZmZWN0KChvbkNsZWFudXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgYmFja2dyb3VuZCwgZGVmYXVsdFNjZW5lLCBzY2VuZSwgYmx1ciwgdGV4dHVyZSB9ID0gdHJpZ2dlcigpO1xuICAgICAgICAgICAgaWYgKCF0ZXh0dXJlKSByZXR1cm47XG4gICAgICAgICAgICBvbkNsZWFudXAoc2V0RW52UHJvcHMoYmFja2dyb3VuZCEsIHNjZW5lLCBkZWZhdWx0U2NlbmUsIHRleHR1cmUsIGJsdXIpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtY3ViZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC1jdWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFrQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBTTdELE1BQU0sT0FBTyxtQkFBbUI7SUFLL0IsSUFBb0MsV0FBVyxDQUFDLFVBQW1CO1FBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBUUQ7UUFkQSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUV4QyxXQUFNLEdBQUcsV0FBVyxDQUFnRCxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBTTNGLFVBQUssR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUN6QixVQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsZUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLGVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFHeEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxXQUFXO1FBQ2xCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUc7Z0JBQ3hELElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhO2FBQzdCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0UsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FoQ1csbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzBFQU1vQyxXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RTdG9yZSwgc2lnbmFsU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudElucHV0LCB0eXBlIE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGUgfSBmcm9tICcuL2Vudmlyb25tZW50LWlucHV0JztcbmltcG9ydCB7IGluamVjdE5ndHNFbnZpcm9ubWVudCwgc2V0RW52UHJvcHMgfSBmcm9tICcuL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnbmd0cy1lbnZpcm9ubWVudC1jdWJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0Vudmlyb25tZW50Q3ViZSB7XG5cdGVudmlyb25tZW50SW5wdXQgPSBpbmplY3QoTmd0c0Vudmlyb25tZW50SW5wdXQpO1xuXG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8UGljazxOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlLCAnYmFja2dyb3VuZCc+Pih7IGJhY2tncm91bmQ6IGZhbHNlIH0pO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYmFja2dyb3VuZCcgfSkgc2V0IF9iYWNrZ3JvdW5kKGJhY2tncm91bmQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBiYWNrZ3JvdW5kIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgc2NlbmUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblxuXHRwcml2YXRlIGJhY2tncm91bmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2JhY2tncm91bmQnKTtcblx0cHJpdmF0ZSB0ZXh0dXJlUmVmID0gaW5qZWN0Tmd0c0Vudmlyb25tZW50KHRoaXMuZW52aXJvbm1lbnRJbnB1dC5wYXJhbXMpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuc2V0RW52UHJvcHMoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0RW52UHJvcHMoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtkZWZhdWx0U2NlbmUsIHNjZW5lLCBiYWNrZ3JvdW5kLCBibHVyLCB0ZXh0dXJlXSA9IFtcblx0XHRcdFx0dGhpcy5zY2VuZSgpLFxuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50SW5wdXQuc2NlbmUoKSxcblx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kKCksXG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRJbnB1dC5ibHVyKCksXG5cdFx0XHRcdHRoaXMudGV4dHVyZVJlZi5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XTtcblx0XHRcdGlmICghdGV4dHVyZSkgcmV0dXJuO1xuXHRcdFx0Y29uc3QgY2xlYW5VcCA9IHNldEVudlByb3BzKGJhY2tncm91bmQhLCBzY2VuZSwgZGVmYXVsdFNjZW5lLCB0ZXh0dXJlLCBibHVyKTtcblx0XHRcdG9uQ2xlYW51cChjbGVhblVwKTtcblx0XHR9KTtcblx0fVxufVxuIl19