angular-three-soba 2.0.0-beta.2 → 2.0.0-beta.21

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 (321) hide show
  1. package/abstractions/billboard/billboard.d.ts +11 -7
  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 +50 -0
  5. package/abstractions/index.d.ts +2 -7
  6. package/abstractions/text/text.d.ts +10 -5
  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 +50 -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 +31 -12
  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 +180 -0
  19. package/esm2022/abstractions/index.mjs +3 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -124
  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 +129 -99
  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 +105 -85
  29. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  30. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +197 -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 +150 -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 +3 -6
  40. package/esm2022/loaders/loader/loader.mjs +92 -87
  41. package/esm2022/loaders/progress/progress.mjs +29 -29
  42. package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
  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 +102 -99
  47. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  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 +36 -32
  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 +33 -35
  55. package/esm2022/misc/example/example.mjs +160 -0
  56. package/esm2022/misc/fbo/fbo.mjs +35 -35
  57. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  58. package/esm2022/misc/html/html.mjs +304 -0
  59. package/esm2022/misc/index.mjs +10 -1
  60. package/esm2022/misc/sampler/sampler.mjs +142 -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 +209 -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 +220 -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 +326 -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 +182 -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 +31 -0
  83. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  84. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  85. package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
  86. package/esm2022/shaders/index.mjs +6 -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 +2 -2
  90. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
  91. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  92. package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
  93. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
  94. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  95. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -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 +160 -176
  99. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
  100. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
  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 +144 -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 -134
  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 +37 -15
  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 +266 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  125. package/esm2022/staging/spot-light/spot-light.mjs +51 -64
  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/content/content.mjs +15 -0
  133. package/esm2022/utils/index.mjs +2 -0
  134. package/fesm2022/angular-three-soba-abstractions.mjs +514 -1947
  135. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  136. package/fesm2022/angular-three-soba-cameras.mjs +302 -259
  137. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  138. package/fesm2022/angular-three-soba-controls.mjs +104 -83
  139. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-gizmos.mjs +1043 -0
  141. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  142. package/fesm2022/angular-three-soba-loaders.mjs +121 -117
  143. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  144. package/fesm2022/angular-three-soba-materials.mjs +662 -592
  145. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  146. package/fesm2022/angular-three-soba-misc.mjs +2214 -105
  147. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  148. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  149. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  150. package/fesm2022/angular-three-soba-performances.mjs +956 -0
  151. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  152. package/fesm2022/angular-three-soba-shaders.mjs +549 -252
  153. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  154. package/fesm2022/angular-three-soba-staging.mjs +2899 -2563
  155. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  156. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  157. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  158. package/gizmos/README.md +3 -0
  159. package/gizmos/gizmo-helper/gizmo-helper.d.ts +69 -0
  160. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  161. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
  162. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
  163. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
  164. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
  165. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
  166. package/gizmos/index.d.ts +3 -0
  167. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  168. package/loaders/loader/loader.d.ts +19 -17
  169. package/loaders/progress/progress.d.ts +1 -1
  170. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  171. package/materials/index.d.ts +1 -0
  172. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  173. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  174. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  175. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  176. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  177. package/materials/point-material/point-material.d.ts +24 -0
  178. package/metadata.json +1 -0
  179. package/misc/animations/animations.d.ts +6 -4
  180. package/misc/caustics/caustics.d.ts +87 -0
  181. package/misc/decal/decal.d.ts +49 -0
  182. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  183. package/misc/example/example.d.ts +81 -0
  184. package/misc/fbo/fbo.d.ts +2 -2
  185. package/misc/html/html-wrapper.d.ts +559 -0
  186. package/misc/html/html.d.ts +214 -0
  187. package/misc/index.d.ts +9 -0
  188. package/misc/sampler/sampler.d.ts +67 -0
  189. package/misc/shadow/shadow.d.ts +37 -0
  190. package/misc/stats-gl/stats-gl.d.ts +24 -0
  191. package/misc/trail/trail.d.ts +57 -0
  192. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  193. package/misc/trail-texture/trail-texture.d.ts +50 -0
  194. package/modifiers/README.md +3 -0
  195. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  196. package/modifiers/index.d.ts +1 -0
  197. package/package.json +31 -16
  198. package/performances/README.md +3 -0
  199. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  200. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  201. package/performances/index.d.ts +7 -0
  202. package/performances/instances/instances.d.ts +79 -0
  203. package/{performance → performances}/instances/position-mesh.d.ts +1 -1
  204. package/performances/points/points-input.d.ts +32 -0
  205. package/performances/points/points.d.ts +92 -0
  206. package/performances/points/position-point.d.ts +11 -0
  207. package/performances/segments/segment-object.d.ts +7 -0
  208. package/performances/segments/segments.d.ts +124 -0
  209. package/shaders/grid-material/grid-material.d.ts +37 -0
  210. package/shaders/index.d.ts +5 -2
  211. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +147 -2
  212. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  213. package/shaders/shader-material/shader-material.d.ts +2 -2
  214. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  215. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  216. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  217. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  218. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  219. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  220. package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
  221. package/staging/backdrop/backdrop.d.ts +30 -0
  222. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  223. package/staging/bounds/bounds.d.ts +100 -24
  224. package/staging/camera-shake/camera-shake.d.ts +30 -19
  225. package/staging/center/center.d.ts +43 -35
  226. package/staging/cloud/cloud.d.ts +26 -23
  227. package/staging/contact-shadows/contact-shadows.d.ts +41 -28
  228. package/staging/environment/assets.d.ts +9 -9
  229. package/staging/environment/environment-cube.d.ts +9 -5
  230. package/staging/environment/environment-ground.d.ts +7 -7
  231. package/staging/environment/environment-input.d.ts +37 -37
  232. package/staging/environment/environment-map.d.ts +10 -5
  233. package/staging/environment/environment-portal.d.ts +10 -5
  234. package/staging/environment/environment.d.ts +0 -4
  235. package/staging/environment/utils.d.ts +2 -2
  236. package/staging/float/float.d.ts +14 -10
  237. package/staging/index.d.ts +6 -2
  238. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  239. package/staging/normal-texture/normal-texture.d.ts +16 -0
  240. package/staging/sky/sky.d.ts +28 -21
  241. package/staging/sparkles/sparkles.d.ts +36 -22
  242. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  243. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  244. package/staging/spot-light/spot-light-input.d.ts +25 -25
  245. package/staging/spot-light/spot-light.d.ts +31 -15
  246. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  247. package/staging/stage/stage.d.ts +89 -65
  248. package/staging/stars/stars.d.ts +28 -17
  249. package/staging/wireframe/wireframe-input.d.ts +65 -0
  250. package/staging/wireframe/wireframe.d.ts +28 -0
  251. package/utils/README.md +3 -0
  252. package/utils/content/content.d.ts +8 -0
  253. package/utils/index.d.ts +1 -0
  254. package/web-types.json +1 -0
  255. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  256. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  257. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  258. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  259. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  260. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  261. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  262. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  263. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  264. package/abstractions/line/line-input.d.ts +0 -42
  265. package/abstractions/line/line.d.ts +0 -35
  266. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  267. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  268. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  269. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  270. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  271. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  272. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  273. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  274. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  275. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  276. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  277. package/esm2022/abstractions/line/line-input.mjs +0 -113
  278. package/esm2022/abstractions/line/line.mjs +0 -165
  279. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  280. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  281. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  282. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  283. package/esm2022/performance/detailed/detailed.mjs +0 -61
  284. package/esm2022/performance/index.mjs +0 -7
  285. package/esm2022/performance/instances/instance.mjs +0 -48
  286. package/esm2022/performance/instances/instances.mjs +0 -189
  287. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  288. package/esm2022/performance/stats/stats.mjs +0 -79
  289. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  290. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  291. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  292. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  293. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
  294. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  295. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  296. package/performance/README.md +0 -3
  297. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  298. package/performance/detailed/detailed.d.ts +0 -20
  299. package/performance/index.d.ts +0 -6
  300. package/performance/instances/instance.d.ts +0 -9
  301. package/performance/instances/instances.d.ts +0 -35
  302. package/performance/stats/stats.d.ts +0 -18
  303. package/plugin/generators.json +0 -19
  304. package/plugin/libs/plugin/README.md +0 -11
  305. package/plugin/package.json +0 -9
  306. package/plugin/src/generators/init/compat.d.ts +0 -2
  307. package/plugin/src/generators/init/compat.js +0 -6
  308. package/plugin/src/generators/init/compat.js.map +0 -1
  309. package/plugin/src/generators/init/init.d.ts +0 -4
  310. package/plugin/src/generators/init/init.js +0 -22
  311. package/plugin/src/generators/init/init.js.map +0 -1
  312. package/plugin/src/generators/init/schema.json +0 -6
  313. package/plugin/src/index.d.ts +0 -1
  314. package/plugin/src/index.js +0 -6
  315. package/plugin/src/index.js.map +0 -1
  316. package/staging/caustics/caustisc.d.ts +0 -70
  317. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  318. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  319. /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
  320. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  321. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -1,13 +1,13 @@
1
- import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input, isSignal } from '@angular/core';
2
- import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore, NgtStore, } from 'angular-three';
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, isSignal } from '@angular/core';
2
+ import { NgtArgs, NgtKey, extend, injectBeforeRender, injectNgtRef, injectNgtStore, signalStore, } from 'angular-three';
3
3
  import { SparklesMaterial } from 'angular-three-soba/shaders';
4
4
  import * as THREE from 'three';
5
- import { BufferAttribute, BufferGeometry, Color, MathUtils, Points, Vector2, Vector3, Vector4 } from 'three';
5
+ import { BufferAttribute, BufferGeometry, Points } from 'three';
6
6
  import * as i0 from "@angular/core";
7
7
  extend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });
8
8
  const isFloat32Array = (def) => def && def.constructor === Float32Array;
9
9
  const expandColor = (v) => [v.r, v.g, v.b];
10
- const isVector = (v) => v instanceof Vector2 || v instanceof Vector3 || v instanceof Vector4;
10
+ const isVector = (v) => v instanceof THREE.Vector2 || v instanceof THREE.Vector3 || v instanceof THREE.Vector4;
11
11
  const normalizeVector = (v) => {
12
12
  if (Array.isArray(v))
13
13
  return v;
@@ -20,142 +20,145 @@ function usePropAsIsOrAsAttribute(count, prop, setDefault) {
20
20
  if (isFloat32Array(prop)) {
21
21
  return prop;
22
22
  }
23
- else {
24
- if (prop instanceof Color) {
25
- const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();
26
- return Float32Array.from(a);
27
- }
28
- else if (isVector(prop) || Array.isArray(prop)) {
29
- const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();
30
- return Float32Array.from(a);
31
- }
32
- return Float32Array.from({ length: count }, () => prop);
23
+ if (prop instanceof THREE.Color) {
24
+ const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();
25
+ return Float32Array.from(a);
33
26
  }
27
+ if (isVector(prop) || Array.isArray(prop)) {
28
+ const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();
29
+ return Float32Array.from(a);
30
+ }
31
+ return Float32Array.from({ length: count }, () => prop);
34
32
  }
35
33
  return Float32Array.from({ length: count }, setDefault);
36
34
  }
37
- class NgtsSparkles extends NgtSignalStore {
35
+ export class NgtsSparkles {
38
36
  /** Number of particles (default: 100) */
39
- set count(count) {
40
- this.set({ count });
37
+ set _count(count) {
38
+ this.inputs.set({ count });
41
39
  }
42
40
  /** Speed of particles (default: 1) */
43
- set speed(speed) {
44
- this.set({ speed });
41
+ set _speed(speed) {
42
+ this.inputs.set({ speed });
45
43
  }
46
44
  /** Opacity of particles (default: 1) */
47
- set opacity(opacity) {
48
- this.set({ opacity });
45
+ set _opacity(opacity) {
46
+ this.inputs.set({ opacity });
49
47
  }
50
48
  /** Color of particles (default: 100) */
51
- set color(color) {
52
- this.set({ color });
49
+ set _color(color) {
50
+ this.inputs.set({ color });
53
51
  }
54
52
  /** Size of particles (default: randomized between 0 and 1) */
55
- set size(size) {
56
- this.set({ size });
53
+ set _size(size) {
54
+ this.inputs.set({ size });
57
55
  }
58
56
  /** The space the particles occupy (default: 1) */
59
- set scale(scale) {
60
- this.set({ scale });
57
+ set _scale(scale) {
58
+ this.inputs.set({ scale });
61
59
  }
62
60
  /** Movement factor (default: 1) */
63
- set noise(noise) {
64
- this.set({ noise });
65
- }
66
- #store;
67
- #count;
68
- #scale;
69
- #color;
70
- #getComputed(nameOrComputed, count, setDefault) {
71
- const value = typeof nameOrComputed !== 'string' && isSignal(nameOrComputed)
72
- ? nameOrComputed
73
- : this.select(nameOrComputed);
74
- return computed(() => usePropAsIsOrAsAttribute(count(), value(), setDefault));
61
+ set _noise(noise) {
62
+ this.inputs.set({ noise });
75
63
  }
76
64
  constructor() {
77
- super({
65
+ this.inputs = signalStore({
78
66
  noise: 1,
79
67
  count: 100,
80
68
  speed: 1,
81
69
  opacity: 1,
82
70
  scale: 1,
83
71
  });
84
- this.pointsRef = injectNgtRef();
85
- this.#store = inject(NgtStore);
86
- this.#count = this.select('count');
87
- this.#scale = this.select('scale');
88
- this.#color = this.select('color');
89
- this.materialRef = injectNgtRef();
90
- this.dpr = this.#store.select('viewport', 'dpr');
91
- this.positions = computed(() => Float32Array.from(Array.from({ length: this.#count() }, () => normalizeVector(this.#scale()).map(MathUtils.randFloatSpread)).flat()));
92
- this.sizes = this.#getComputed('size', this.#count, Math.random);
93
- this.opacities = this.#getComputed('opacity', this.#count);
94
- this.speeds = this.#getComputed('speed', this.#count);
95
- this.noises = this.#getComputed('noise', () => this.#count() * 3);
96
- this.colors = this.#getComputed(computed(() => {
97
- const color = this.#color();
72
+ this.sparklesRef = injectNgtRef();
73
+ this.store = injectNgtStore();
74
+ this.dpr = this.store.select('viewport', 'dpr');
75
+ this.scale = this.inputs.select('scale');
76
+ this.count = this.inputs.select('count');
77
+ this.color = this.inputs.select('color');
78
+ this.positions = computed(() => Float32Array.from(Array.from({ length: this.count() }, () => normalizeVector(this.scale()).map(THREE.MathUtils.randFloatSpread)).flat()));
79
+ this.sizes = this.getComputed('size', this.count, Math.random);
80
+ this.opacities = this.getComputed('opacity', this.count);
81
+ this.speeds = this.getComputed('speed', this.count);
82
+ this.noises = this.getComputed('noise', () => this.count() * 3);
83
+ this.colors = this.getComputed(computed(() => {
84
+ const color = this.color();
98
85
  return !isFloat32Array(color) ? new THREE.Color(color) : color;
99
- }), () => (this.#color() === undefined ? this.#count() * 3 : this.#count()), () => 1);
100
- injectBeforeRender(this.#onBeforeRender.bind(this));
86
+ }), () => (this.color() === undefined ? this.count() * 3 : this.count()), () => 1);
87
+ this.key = computed(() => `particle-${this.count()}-${JSON.stringify(this.scale())}`);
88
+ this.beforeRender();
101
89
  }
102
- #onBeforeRender({ clock }) {
103
- if (!this.materialRef.nativeElement)
104
- return;
105
- this.materialRef.nativeElement.uniforms['time'].value = clock.elapsedTime;
90
+ beforeRender() {
91
+ injectBeforeRender(({ clock }) => {
92
+ const sparkles = this.sparklesRef.nativeElement;
93
+ if (!sparkles || !sparkles.material)
94
+ return;
95
+ sparkles.material.time = clock.elapsedTime;
96
+ });
106
97
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSparkles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSparkles, isStandalone: true, selector: "ngts-sparkles", inputs: { pointsRef: "pointsRef", count: "count", speed: "speed", opacity: "opacity", color: "color", size: "size", scale: "scale", noise: "noise" }, usesInheritance: true, ngImport: i0, template: `
109
- <ngt-points ngtCompount [ref]="pointsRef">
110
- <ngt-buffer-geometry>
111
- <ngt-buffer-attribute *args="[positions(), 3]" attach="attributes.position" />
112
- <ngt-buffer-attribute *args="[sizes(), 1]" attach="attributes.size" />
113
- <ngt-buffer-attribute *args="[opacities(), 1]" attach="attributes.opacity" />
114
- <ngt-buffer-attribute *args="[speeds(), 1]" attach="attributes.speed" />
115
- <ngt-buffer-attribute *args="[colors(), 3]" attach="attributes.color" />
116
- <ngt-buffer-attribute *args="[noises(), 3]" attach="attributes.noise" />
117
- </ngt-buffer-geometry>
118
- <ngt-sparkles-material [ref]="materialRef" [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr()" />
119
- </ngt-points>
120
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
98
+ getComputed(nameOrComputed, count, setDefault) {
99
+ const value = typeof nameOrComputed !== 'string' && isSignal(nameOrComputed)
100
+ ? nameOrComputed
101
+ : this.inputs.select(nameOrComputed);
102
+ return computed(() => usePropAsIsOrAsAttribute(count(), value(), setDefault));
103
+ }
104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSparkles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSparkles, isStandalone: true, selector: "ngts-sparkles", inputs: { sparklesRef: "sparklesRef", _count: ["count", "_count"], _speed: ["speed", "_speed"], _opacity: ["opacity", "_opacity"], _color: ["color", "_color"], _size: ["size", "_size"], _scale: ["scale", "_scale"], _noise: ["noise", "_noise"] }, ngImport: i0, template: `
106
+ <ngt-points *key="key()" ngtCompound [ref]="sparklesRef">
107
+ <ngt-buffer-geometry>
108
+ <ngt-buffer-attribute attach="attributes.position" *args="[positions(), 3]" />
109
+ <ngt-buffer-attribute attach="attributes.size" *args="[sizes(), 1]" />
110
+ <ngt-buffer-attribute attach="attributes.opacity" *args="[opacities(), 1]" />
111
+ <ngt-buffer-attribute attach="attributes.speed" *args="[speeds(), 1]" />
112
+ <ngt-buffer-attribute attach="attributes.color" *args="[colors(), 3]" />
113
+ <ngt-buffer-attribute attach="attributes.noise" *args="[noises(), 3]" />
114
+ </ngt-buffer-geometry>
115
+ <ngt-sparkles-material [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr()" />
116
+ </ngt-points>
117
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgtKey, selector: "ng-template[key]", inputs: ["key"] }] }); }
121
118
  }
122
- export { NgtsSparkles };
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSparkles, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSparkles, decorators: [{
124
120
  type: Component,
125
121
  args: [{
126
122
  selector: 'ngts-sparkles',
127
123
  standalone: true,
128
124
  template: `
129
- <ngt-points ngtCompount [ref]="pointsRef">
130
- <ngt-buffer-geometry>
131
- <ngt-buffer-attribute *args="[positions(), 3]" attach="attributes.position" />
132
- <ngt-buffer-attribute *args="[sizes(), 1]" attach="attributes.size" />
133
- <ngt-buffer-attribute *args="[opacities(), 1]" attach="attributes.opacity" />
134
- <ngt-buffer-attribute *args="[speeds(), 1]" attach="attributes.speed" />
135
- <ngt-buffer-attribute *args="[colors(), 3]" attach="attributes.color" />
136
- <ngt-buffer-attribute *args="[noises(), 3]" attach="attributes.noise" />
137
- </ngt-buffer-geometry>
138
- <ngt-sparkles-material [ref]="materialRef" [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr()" />
139
- </ngt-points>
140
- `,
141
- imports: [NgtArgs],
125
+ <ngt-points *key="key()" ngtCompound [ref]="sparklesRef">
126
+ <ngt-buffer-geometry>
127
+ <ngt-buffer-attribute attach="attributes.position" *args="[positions(), 3]" />
128
+ <ngt-buffer-attribute attach="attributes.size" *args="[sizes(), 1]" />
129
+ <ngt-buffer-attribute attach="attributes.opacity" *args="[opacities(), 1]" />
130
+ <ngt-buffer-attribute attach="attributes.speed" *args="[speeds(), 1]" />
131
+ <ngt-buffer-attribute attach="attributes.color" *args="[colors(), 3]" />
132
+ <ngt-buffer-attribute attach="attributes.noise" *args="[noises(), 3]" />
133
+ </ngt-buffer-geometry>
134
+ <ngt-sparkles-material [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr()" />
135
+ </ngt-points>
136
+ `,
137
+ imports: [NgtArgs, NgtKey],
142
138
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
143
139
  }]
144
- }], ctorParameters: function () { return []; }, propDecorators: { pointsRef: [{
145
- type: Input
146
- }], count: [{
147
- type: Input
148
- }], speed: [{
149
- type: Input
150
- }], opacity: [{
151
- type: Input
152
- }], color: [{
153
- type: Input
154
- }], size: [{
155
- type: Input
156
- }], scale: [{
157
- type: Input
158
- }], noise: [{
140
+ }], ctorParameters: function () { return []; }, propDecorators: { sparklesRef: [{
159
141
  type: Input
142
+ }], _count: [{
143
+ type: Input,
144
+ args: [{ alias: 'count' }]
145
+ }], _speed: [{
146
+ type: Input,
147
+ args: [{ alias: 'speed' }]
148
+ }], _opacity: [{
149
+ type: Input,
150
+ args: [{ alias: 'opacity' }]
151
+ }], _color: [{
152
+ type: Input,
153
+ args: [{ alias: 'color' }]
154
+ }], _size: [{
155
+ type: Input,
156
+ args: [{ alias: 'size' }]
157
+ }], _scale: [{
158
+ type: Input,
159
+ args: [{ alias: 'scale' }]
160
+ }], _noise: [{
161
+ type: Input,
162
+ args: [{ alias: 'noise' }]
160
163
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmtsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3BhcmtsZXMvc3BhcmtsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUNILE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLE9BQU8sRUFDUCxjQUFjLEVBQ2QsUUFBUSxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUU3RyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFdEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFRLEVBQXVCLEVBQUUsQ0FBQyxHQUFHLElBQUssR0FBb0IsQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDO0FBQ3BILE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQXNELEVBQUUsQ0FDNUUsQ0FBQyxZQUFZLE9BQU8sSUFBSSxDQUFDLFlBQVksT0FBTyxJQUFJLENBQUMsWUFB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QUUsQ0FBQyxDQUFDLENBQ1YsQ0FBQztRQXNCRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQWtCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUM5RSxDQUFDOzhHQTlGUSxZQUFZO2tHQUFaLFlBQVksc1BBaEJYOzs7Ozs7Ozs7Ozs7S0FZVCw0REFDUyxPQUFPOztTQUdSLFlBQVk7MkZBQVosWUFBWTtrQkFuQnhCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7OztLQVlUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUVZLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIGluamVjdCwgSW5wdXQsIGlzU2lnbmFsLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgZXh0ZW5kLFxuICAgIGluamVjdEJlZm9yZVJlbmRlcixcbiAgICBpbmplY3ROZ3RSZWYsXG4gICAgTmd0QXJncyxcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICBOZ3RTdG9yZSxcbiAgICB0eXBlIE5ndFJlbmRlclN0YXRlLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFNwYXJrbGVzTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5LCBDb2xvciwgTWF0aFV0aWxzLCBQb2ludHMsIFZlY3RvcjIsIFZlY3RvcjMsIFZlY3RvcjQgfSBmcm9tICd0aHJlZSc7XG5cbmV4dGVuZCh7IFNwYXJrbGVzTWF0ZXJpYWwsIFBvaW50cywgQnVmZmVyR2VvbWV0cnksIEJ1ZmZlckF0dHJpYnV0ZSB9KTtcblxuY29uc3QgaXNGbG9hdDMyQXJyYXkgPSAoZGVmOiBhbnkpOiBkZWYgaXMgRmxvYXQzMkFycmF5ID0+IGRlZiAmJiAoZGVmIGFzIEZsb2F0MzJBcnJheSkuY29uc3RydWN0b3IgPT09IEZsb2F0MzJBcnJheTtcbmNvbnN0IGV4cGFuZENvbG9yID0gKHY6IFRIUkVFLkNvbG9yKSA9PiBbdi5yLCB2LmcsIHYuYl07XG5jb25zdCBpc1ZlY3RvciA9ICh2OiBhbnkpOiB2IGlzIFRIUkVFLlZlY3RvcjIgfCBUSFJFRS5WZWN0b3IzIHwgVEhSRUUuVmVjdG9yNCA9PlxuICAgIHYgaW5zdGFuY2VvZiBWZWN0b3IyIHx8IHYgaW5zdGFuY2VvZiBWZWN0b3IzIHx8IHYgaW5zdGFuY2VvZiBWZWN0b3I0O1xuY29uc3Qgbm9ybWFsaXplVmVjdG9yID0gKHY6IGFueSk6IG51bWJlcltdID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkgcmV0dXJuIHY7XG4gICAgZWxzZSBpZiAoaXNWZWN0b3IodikpIHJldHVybiB2LnRvQXJyYXkoKTtcbiAgICByZXR1cm4gW3YsIHYsIHZdIGFzIG51bWJlcltdO1xufTtcblxuZnVuY3Rpb24gdXNlUHJvcEFzSXNPckFzQXR0cmlidXRlPFQgPSBhbnk+KGNvdW50OiBudW1iZXIsIHByb3A/OiBUIHwgRmxvYXQzMkFycmF5LCBzZXREZWZhdWx0PzogKHY6IFQpID0+IG51bWJlcikge1xuICAgIGlmIChwcm9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGlzRmxvYXQzMkFycmF5KHByb3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvcCBhcyBGbG9hdDMyQXJyYXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvcCBpbnN0YW5jZW9mIENvbG9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50ICogMyB9LCAoKSA9PiBleHBhbmRDb2xvcihwcm9wKSkuZmxhdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbShhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNWZWN0b3IocHJvcCkgfHwgQXJyYXkuaXNBcnJheShwcm9wKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCAqIDMgfSwgKCkgPT4gbm9ybWFsaXplVmVjdG9yKHByb3ApKS5mbGF0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoKSA9PiBwcm9wIGFzIHVua25vd24gYXMgbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sIHNldERlZmF1bHQhKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzU3BhcmtsZXNTdGF0ZSB7XG4gICAgLyoqIE51bWJlciBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEwMCkgKi9cbiAgICBjb3VudDogbnVtYmVyO1xuICAgIC8qKiBTcGVlZCBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG4gICAgc3BlZWQ6IG51bWJlciB8IEZsb2F0MzJBcnJheTtcbiAgICAvKiogT3BhY2l0eSBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG4gICAgb3BhY2l0eTogbnVtYmVyIHwgRmxvYXQzMkFycmF5O1xuICAgIC8qKiBDb2xvciBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEwMCkgKi9cbiAgICBjb2xvcj86IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24gfCBGbG9hdDMyQXJyYXk7XG4gICAgLyoqIFNpemUgb2YgcGFydGljbGVzIChkZWZhdWx0OiByYW5kb21pemVkIGJldHdlZW4gMCBhbmQgMSkgKi9cbiAgICBzaXplPzogbnVtYmVyIHwgRmxvYXQzMkFycmF5O1xuICAgIC8qKiBUaGUgc3BhY2UgdGhlIHBhcnRpY2xlcyBvY2N1cHkgKGRlZmF1bHQ6IDEpICovXG4gICAgc2NhbGU6IG51bWJlciB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFRIUkVFLlZlY3RvcjM7XG4gICAgLyoqIE1vdmVtZW50IGZhY3RvciAoZGVmYXVsdDogMSkgKi9cbiAgICBub2lzZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgVEhSRUUuVmVjdG9yMyB8IEZsb2F0MzJBcnJheTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXNwYXJrbGVzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtcG9pbnRzIG5ndENvbXBvdW50IFtyZWZdPVwicG9pbnRzUmVmXCI+XG4gICAgICAgICAgICA8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgKmFyZ3M9XCJbcG9zaXRpb25zKCksIDNdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5wb3NpdGlvblwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC1idWZmZXItYXR0cmlidXRlICphcmdzPVwiW3NpemVzKCksIDFdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5zaXplXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgKmFyZ3M9XCJbb3BhY2l0aWVzKCksIDFdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5vcGFjaXR5XCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgKmFyZ3M9XCJbc3BlZWRzKCksIDFdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5zcGVlZFwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC1idWZmZXItYXR0cmlidXRlICphcmdzPVwiW2NvbG9ycygpLCAzXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMuY29sb3JcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltub2lzZXMoKSwgM11cIiBhdHRhY2g9XCJhdHRyaWJ1dGVzLm5vaXNlXCIgLz5cbiAgICAgICAgICAgIDwvbmd0LWJ1ZmZlci1nZW9tZXRyeT5cbiAgICAgICAgICAgIDxuZ3Qtc3BhcmtsZXMtbWF0ZXJpYWwgW3JlZl09XCJtYXRlcmlhbFJlZlwiIFt0cmFuc3BhcmVudF09XCJ0cnVlXCIgW2RlcHRoV3JpdGVdPVwiZmFsc2VcIiBbcGl4ZWxSYXRpb109XCJkcHIoKVwiIC8+XG4gICAgICAgIDwvbmd0LXBvaW50cz5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcGFya2xlcyBleHRlbmRzIE5ndFNpZ25hbFN0b3JlPE5ndHNTcGFya2xlc1N0YXRlPiB7XG4gICAgQElucHV0KCkgcG9pbnRzUmVmID0gaW5qZWN0Tmd0UmVmPFBvaW50cz4oKTtcblxuICAgIC8qKiBOdW1iZXIgb2YgcGFydGljbGVzIChkZWZhdWx0OiAxMDApICovXG4gICAgQElucHV0KCkgc2V0IGNvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb3VudCB9KTtcbiAgICB9XG5cbiAgICAvKiogU3BlZWQgb2YgcGFydGljbGVzIChkZWZhdWx0OiAxKSAqL1xuICAgIEBJbnB1dCgpIHNldCBzcGVlZChzcGVlZDogbnVtYmVyIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc3BlZWQgfSk7XG4gICAgfVxuXG4gICAgLyoqIE9wYWNpdHkgb2YgcGFydGljbGVzIChkZWZhdWx0OiAxKSAqL1xuICAgIEBJbnB1dCgpIHNldCBvcGFjaXR5KG9wYWNpdHk6IG51bWJlciB8IEZsb2F0MzJBcnJheSkge1xuICAgICAgICB0aGlzLnNldCh7IG9wYWNpdHkgfSk7XG4gICAgfVxuXG4gICAgLyoqIENvbG9yIG9mIHBhcnRpY2xlcyAoZGVmYXVsdDogMTAwKSAqL1xuICAgIEBJbnB1dCgpIHNldCBjb2xvcihjb2xvcjogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbiB8IEZsb2F0MzJBcnJheSkge1xuICAgICAgICB0aGlzLnNldCh7IGNvbG9yIH0pO1xuICAgIH1cblxuICAgIC8qKiBTaXplIG9mIHBhcnRpY2xlcyAoZGVmYXVsdDogcmFuZG9taXplZCBiZXR3ZWVuIDAgYW5kIDEpICovXG4gICAgQElucHV0KCkgc2V0IHNpemUoc2l6ZTogbnVtYmVyIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2l6ZSB9KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHNwYWNlIHRoZSBwYXJ0aWNsZXMgb2NjdXB5IChkZWZhdWx0OiAxKSAqL1xuICAgIEBJbnB1dCgpIHNldCBzY2FsZShzY2FsZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgVEhSRUUuVmVjdG9yMykge1xuICAgICAgICB0aGlzLnNldCh7IHNjYWxlIH0pO1xuICAgIH1cblxuICAgIC8qKiBNb3ZlbWVudCBmYWN0b3IgKGRlZmF1bHQ6IDEpICovXG4gICAgQElucHV0KCkgc2V0IG5vaXNlKG5vaXNlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBUSFJFRS5WZWN0b3IzIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbm9pc2UgfSk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgI3N0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIHJlYWRvbmx5ICNjb3VudCA9IHRoaXMuc2VsZWN0KCdjb3VudCcpO1xuICAgIHJlYWRvbmx5ICNzY2FsZSA9IHRoaXMuc2VsZWN0KCdzY2FsZScpO1xuICAgIHJlYWRvbmx5ICNjb2xvciA9IHRoaXMuc2VsZWN0KCdjb2xvcicpO1xuXG4gICAgcmVhZG9ubHkgbWF0ZXJpYWxSZWYgPSBpbmplY3ROZ3RSZWY8SW5zdGFuY2VUeXBlPHR5cGVvZiBTcGFya2xlc01hdGVyaWFsPj4oKTtcblxuICAgIHJlYWRvbmx5IGRwciA9IHRoaXMuI3N0b3JlLnNlbGVjdCgndmlld3BvcnQnLCAnZHByJyk7XG4gICAgcmVhZG9ubHkgcG9zaXRpb25zID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgRmxvYXQzMkFycmF5LmZyb20oXG4gICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLiNjb3VudCgpIH0sICgpID0+XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplVmVjdG9yKHRoaXMuI3NjYWxlKCkpLm1hcChNYXRoVXRpbHMucmFuZEZsb2F0U3ByZWFkKVxuICAgICAgICAgICAgKS5mbGF0KClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICByZWFkb25seSBzaXplcyA9IHRoaXMuI2dldENvbXB1dGVkKCdzaXplJywgdGhpcy4jY291bnQsIE1hdGgucmFuZG9tKTtcbiAgICByZWFkb25seSBvcGFjaXRpZXMgPSB0aGlzLiNnZXRDb21wdXRlZCgnb3BhY2l0eScsIHRoaXMuI2NvdW50KTtcbiAgICByZWFkb25seSBzcGVlZHMgPSB0aGlzLiNnZXRDb21wdXRlZCgnc3BlZWQnLCB0aGlzLiNjb3VudCk7XG4gICAgcmVhZG9ubHkgbm9pc2VzID0gdGhpcy4jZ2V0Q29tcHV0ZWQoJ25vaXNlJywgKCkgPT4gdGhpcy4jY291bnQoKSAqIDMpO1xuICAgIHJlYWRvbmx5IGNvbG9ycyA9IHRoaXMuI2dldENvbXB1dGVkKFxuICAgICAgICBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2xvciA9IHRoaXMuI2NvbG9yKCk7XG4gICAgICAgICAgICByZXR1cm4gIWlzRmxvYXQzMkFycmF5KGNvbG9yKSA/IG5ldyBUSFJFRS5Db2xvcihjb2xvcikgOiBjb2xvcjtcbiAgICAgICAgfSksXG4gICAgICAgICgpID0+ICh0aGlzLiNjb2xvcigpID09PSB1bmRlZmluZWQgPyB0aGlzLiNjb3VudCgpICogMyA6IHRoaXMuI2NvdW50KCkpLFxuICAgICAgICAoKSA9PiAxXG4gICAgKTtcblxuICAgICNnZXRDb21wdXRlZDxUS2V5IGV4dGVuZHMga2V5b2YgTmd0c1NwYXJrbGVzU3RhdGU+KFxuICAgICAgICBuYW1lT3JDb21wdXRlZDogVEtleSB8IFNpZ25hbDxOZ3RzU3BhcmtsZXNTdGF0ZVtUS2V5XT4sXG4gICAgICAgIGNvdW50OiAoKSA9PiBudW1iZXIsXG4gICAgICAgIHNldERlZmF1bHQ/OiAodmFsdWU6IE5ndHNTcGFya2xlc1N0YXRlW1RLZXldKSA9PiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgdHlwZW9mIG5hbWVPckNvbXB1dGVkICE9PSAnc3RyaW5nJyAmJiBpc1NpZ25hbChuYW1lT3JDb21wdXRlZClcbiAgICAgICAgICAgICAgICA/IG5hbWVPckNvbXB1dGVkXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdChuYW1lT3JDb21wdXRlZCk7XG4gICAgICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB1c2VQcm9wQXNJc09yQXNBdHRyaWJ1dGUoY291bnQoKSwgdmFsdWUoKSwgc2V0RGVmYXVsdCkpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBub2lzZTogMSxcbiAgICAgICAgICAgIGNvdW50OiAxMDAsXG4gICAgICAgICAgICBzcGVlZDogMSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICBzY2FsZTogMSxcbiAgICAgICAgfSk7XG4gICAgICAgIGluamVjdEJlZm9yZVJlbmRlcih0aGlzLiNvbkJlZm9yZVJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICAjb25CZWZvcmVSZW5kZXIoeyBjbG9jayB9OiBOZ3RSZW5kZXJTdGF0ZSkge1xuICAgICAgICBpZiAoIXRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICB0aGlzLm1hdGVyaWFsUmVmLm5hdGl2ZUVsZW1lbnQudW5pZm9ybXNbJ3RpbWUnXS52YWx1ZSA9IGNsb2NrLmVsYXBzZWRUaW1lO1xuICAgIH1cbn1cbiJdfQ==
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmtsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3BhcmtsZXMvc3BhcmtsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQ04sT0FBTyxFQUNQLE1BQU0sRUFDTixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBaUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRWhFLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztBQUV0RSxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVEsRUFBdUIsRUFBRSxDQUFDLEdBQUcsSUFBSyxHQUFvQixDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUM7QUFFcEgsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQU0sRUFBc0QsRUFBRSxDQUMvRSxDQUFDLFlBQVksS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxDQUFDLE9BQU8sQ0FBQztBQUV4RixN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QUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFLSyxLQUFLO3NCQUFsQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFLTyxNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFLTSxNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBpc1NpZ25hbCwgdHlwZSBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdE5ndEFyZ3MsXG5cdE5ndEtleSxcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdE5ndFJlZixcblx0aW5qZWN0Tmd0U3RvcmUsXG5cdHNpZ25hbFN0b3JlLFxuXHR0eXBlIE5ndFBvaW50cyxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBTcGFya2xlc01hdGVyaWFsLCB0eXBlIE5ndFNwYXJrbGVzTWF0ZXJpYWxTdGF0ZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEJ1ZmZlckF0dHJpYnV0ZSwgQnVmZmVyR2VvbWV0cnksIFBvaW50cyB9IGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKHsgU3BhcmtsZXNNYXRlcmlhbCwgUG9pbnRzLCBCdWZmZXJHZW9tZXRyeSwgQnVmZmVyQXR0cmlidXRlIH0pO1xuXG5jb25zdCBpc0Zsb2F0MzJBcnJheSA9IChkZWY6IGFueSk6IGRlZiBpcyBGbG9hdDMyQXJyYXkgPT4gZGVmICYmIChkZWYgYXMgRmxvYXQzMkFycmF5KS5jb25zdHJ1Y3RvciA9PT0gRmxvYXQzMkFycmF5O1xuXG5jb25zdCBleHBhbmRDb2xvciA9ICh2OiBUSFJFRS5Db2xvcikgPT4gW3Yuciwgdi5nLCB2LmJdO1xuY29uc3QgaXNWZWN0b3IgPSAodjogYW55KTogdiBpcyBUSFJFRS5WZWN0b3IyIHwgVEhSRUUuVmVjdG9yMyB8IFRIUkVFLlZlY3RvcjQgPT5cblx0diBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjIgfHwgdiBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjMgfHwgdiBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjQ7XG5cbmNvbnN0IG5vcm1hbGl6ZVZlY3RvciA9ICh2OiBhbnkpOiBudW1iZXJbXSA9PiB7XG5cdGlmIChBcnJheS5pc0FycmF5KHYpKSByZXR1cm4gdjtcblx0ZWxzZSBpZiAoaXNWZWN0b3IodikpIHJldHVybiB2LnRvQXJyYXkoKTtcblx0cmV0dXJuIFt2LCB2LCB2XSBhcyBudW1iZXJbXTtcbn07XG5cbmZ1bmN0aW9uIHVzZVByb3BBc0lzT3JBc0F0dHJpYnV0ZTxUIGV4dGVuZHMgYW55Pihcblx0Y291bnQ6IG51bWJlcixcblx0cHJvcD86IFQgfCBGbG9hdDMyQXJyYXksXG5cdHNldERlZmF1bHQ/OiAodjogVCkgPT4gbnVtYmVyLFxuKSB7XG5cdGlmIChwcm9wICE9PSB1bmRlZmluZWQpIHtcblx0XHRpZiAoaXNGbG9hdDMyQXJyYXkocHJvcCkpIHtcblx0XHRcdHJldHVybiBwcm9wIGFzIEZsb2F0MzJBcnJheTtcblx0XHR9XG5cblx0XHRpZiAocHJvcCBpbnN0YW5jZW9mIFRIUkVFLkNvbG9yKSB7XG5cdFx0XHRjb25zdCBhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgKiAzIH0sICgpID0+IGV4cGFuZENvbG9yKHByb3ApKS5mbGF0KCk7XG5cdFx0XHRyZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oYSk7XG5cdFx0fVxuXG5cdFx0aWYgKGlzVmVjdG9yKHByb3ApIHx8IEFycmF5LmlzQXJyYXkocHJvcCkpIHtcblx0XHRcdGNvbnN0IGEgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCAqIDMgfSwgKCkgPT4gbm9ybWFsaXplVmVjdG9yKHByb3ApKS5mbGF0KCk7XG5cdFx0XHRyZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oYSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoKSA9PiBwcm9wIGFzIG51bWJlcik7XG5cdH1cblxuXHRyZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sIHNldERlZmF1bHQhKTtcbn1cblxuZXhwb3J0IHR5cGUgTmd0c1NwYXJrbGVzU3RhdGUgPSB7XG5cdC8qKiBOdW1iZXIgb2YgcGFydGljbGVzIChkZWZhdWx0OiAxMDApICovXG5cdGNvdW50OiBudW1iZXI7XG5cdC8qKiBTcGVlZCBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG5cdHNwZWVkOiBudW1iZXIgfCBGbG9hdDMyQXJyYXk7XG5cdC8qKiBPcGFjaXR5IG9mIHBhcnRpY2xlcyAoZGVmYXVsdDogMSkgKi9cblx0b3BhY2l0eTogbnVtYmVyIHwgRmxvYXQzMkFycmF5O1xuXHQvKiogQ29sb3Igb2YgcGFydGljbGVzIChkZWZhdWx0OiAxMDApICovXG5cdGNvbG9yPzogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbiB8IEZsb2F0MzJBcnJheTtcblx0LyoqIFNpemUgb2YgcGFydGljbGVzIChkZWZhdWx0OiByYW5kb21pemVkIGJldHdlZW4gMCBhbmQgMSkgKi9cblx0c2l6ZT86IG51bWJlciB8IEZsb2F0MzJBcnJheTtcblx0LyoqIFRoZSBzcGFjZSB0aGUgcGFydGljbGVzIG9jY3VweSAoZGVmYXVsdDogMSkgKi9cblx0c2NhbGU6IG51bWJlciB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFRIUkVFLlZlY3RvcjM7XG5cdC8qKiBNb3ZlbWVudCBmYWN0b3IgKGRlZmF1bHQ6IDEpICovXG5cdG5vaXNlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBUSFJFRS5WZWN0b3IzIHwgRmxvYXQzMkFycmF5O1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3QtcG9pbnRzXG5cdFx0ICovXG5cdFx0J25ndHMtc3BhcmtsZXMnOiBOZ3RzU3BhcmtsZXNTdGF0ZSAmIE5ndFBvaW50cztcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNwYXJrbGVzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBvaW50cyAqa2V5PVwia2V5KClcIiBuZ3RDb21wb3VuZCBbcmVmXT1cInNwYXJrbGVzUmVmXCI+XG5cdFx0XHQ8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlIGF0dGFjaD1cImF0dHJpYnV0ZXMucG9zaXRpb25cIiAqYXJncz1cIltwb3NpdGlvbnMoKSwgM11cIiAvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5zaXplXCIgKmFyZ3M9XCJbc2l6ZXMoKSwgMV1cIiAvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5vcGFjaXR5XCIgKmFyZ3M9XCJbb3BhY2l0aWVzKCksIDFdXCIgLz5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlIGF0dGFjaD1cImF0dHJpYnV0ZXMuc3BlZWRcIiAqYXJncz1cIltzcGVlZHMoKSwgMV1cIiAvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5jb2xvclwiICphcmdzPVwiW2NvbG9ycygpLCAzXVwiIC8+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSBhdHRhY2g9XCJhdHRyaWJ1dGVzLm5vaXNlXCIgKmFyZ3M9XCJbbm9pc2VzKCksIDNdXCIgLz5cblx0XHRcdDwvbmd0LWJ1ZmZlci1nZW9tZXRyeT5cblx0XHRcdDxuZ3Qtc3BhcmtsZXMtbWF0ZXJpYWwgW3RyYW5zcGFyZW50XT1cInRydWVcIiBbZGVwdGhXcml0ZV09XCJmYWxzZVwiIFtwaXhlbFJhdGlvXT1cImRwcigpXCIgLz5cblx0XHQ8L25ndC1wb2ludHM+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RLZXldLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcGFya2xlcyB7XG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c1NwYXJrbGVzU3RhdGU+KHtcblx0XHRub2lzZTogMSxcblx0XHRjb3VudDogMTAwLFxuXHRcdHNwZWVkOiAxLFxuXHRcdG9wYWNpdHk6IDEsXG5cdFx0c2NhbGU6IDEsXG5cdH0pO1xuXG5cdEBJbnB1dCgpIHNwYXJrbGVzUmVmID0gaW5qZWN0Tmd0UmVmPFBvaW50cz4oKTtcblxuXHQvKiogTnVtYmVyIG9mIHBhcnRpY2xlcyAoZGVmYXVsdDogMTAwKSAqL1xuXHRASW5wdXQoeyBhbGlhczogJ2NvdW50JyB9KSBzZXQgX2NvdW50KGNvdW50OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjb3VudCB9KTtcblx0fVxuXG5cdC8qKiBTcGVlZCBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG5cdEBJbnB1dCh7IGFsaWFzOiAnc3BlZWQnIH0pIHNldCBfc3BlZWQoc3BlZWQ6IG51bWJlciB8IEZsb2F0MzJBcnJheSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNwZWVkIH0pO1xuXHR9XG5cblx0LyoqIE9wYWNpdHkgb2YgcGFydGljbGVzIChkZWZhdWx0OiAxKSAqL1xuXHRASW5wdXQoeyBhbGlhczogJ29wYWNpdHknIH0pIHNldCBfb3BhY2l0eShvcGFjaXR5OiBudW1iZXIgfCBGbG9hdDMyQXJyYXkpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBvcGFjaXR5IH0pO1xuXHR9XG5cblx0LyoqIENvbG9yIG9mIHBhcnRpY2xlcyAoZGVmYXVsdDogMTAwKSAqL1xuXHRASW5wdXQoeyBhbGlhczogJ2NvbG9yJyB9KSBzZXQgX2NvbG9yKGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uIHwgRmxvYXQzMkFycmF5KSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblxuXHQvKiogU2l6ZSBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IHJhbmRvbWl6ZWQgYmV0d2VlbiAwIGFuZCAxKSAqL1xuXHRASW5wdXQoeyBhbGlhczogJ3NpemUnIH0pIHNldCBfc2l6ZShzaXplOiBudW1iZXIgfCBGbG9hdDMyQXJyYXkpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzaXplIH0pO1xuXHR9XG5cblx0LyoqIFRoZSBzcGFjZSB0aGUgcGFydGljbGVzIG9jY3VweSAoZGVmYXVsdDogMSkgKi9cblx0QElucHV0KHsgYWxpYXM6ICdzY2FsZScgfSkgc2V0IF9zY2FsZShzY2FsZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgVEhSRUUuVmVjdG9yMykge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNjYWxlIH0pO1xuXHR9XG5cblx0LyoqIE1vdmVtZW50IGZhY3RvciAoZGVmYXVsdDogMSkgKi9cblx0QElucHV0KHsgYWxpYXM6ICdub2lzZScgfSkgc2V0IF9ub2lzZShub2lzZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgVEhSRUUuVmVjdG9yMyB8IEZsb2F0MzJBcnJheSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG5vaXNlIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cblx0ZHByID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0JywgJ2RwcicpO1xuXG5cdHByaXZhdGUgc2NhbGUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3NjYWxlJyk7XG5cdHByaXZhdGUgY291bnQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvdW50Jyk7XG5cdHByaXZhdGUgY29sb3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbG9yJyk7XG5cblx0cG9zaXRpb25zID0gY29tcHV0ZWQoKCkgPT5cblx0XHRGbG9hdDMyQXJyYXkuZnJvbShcblx0XHRcdEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuY291bnQoKSB9LCAoKSA9PlxuXHRcdFx0XHRub3JtYWxpemVWZWN0b3IodGhpcy5zY2FsZSgpKS5tYXAoVEhSRUUuTWF0aFV0aWxzLnJhbmRGbG9hdFNwcmVhZCksXG5cdFx0XHQpLmZsYXQoKSxcblx0XHQpLFxuXHQpO1xuXHRzaXplcyA9IHRoaXMuZ2V0Q29tcHV0ZWQoJ3NpemUnLCB0aGlzLmNvdW50LCBNYXRoLnJhbmRvbSk7XG5cdG9wYWNpdGllcyA9IHRoaXMuZ2V0Q29tcHV0ZWQoJ29wYWNpdHknLCB0aGlzLmNvdW50KTtcblx0c3BlZWRzID0gdGhpcy5nZXRDb21wdXRlZCgnc3BlZWQnLCB0aGlzLmNvdW50KTtcblx0bm9pc2VzID0gdGhpcy5nZXRDb21wdXRlZCgnbm9pc2UnLCAoKSA9PiB0aGlzLmNvdW50KCkgKiAzKTtcblx0Y29sb3JzID0gdGhpcy5nZXRDb21wdXRlZChcblx0XHRjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBjb2xvciA9IHRoaXMuY29sb3IoKTtcblx0XHRcdHJldHVybiAhaXNGbG9hdDMyQXJyYXkoY29sb3IpID8gbmV3IFRIUkVFLkNvbG9yKGNvbG9yKSA6IGNvbG9yO1xuXHRcdH0pLFxuXHRcdCgpID0+ICh0aGlzLmNvbG9yKCkgPT09IHVuZGVmaW5lZCA/IHRoaXMuY291bnQoKSAqIDMgOiB0aGlzLmNvdW50KCkpLFxuXHRcdCgpID0+IDEsXG5cdCk7XG5cdGtleSA9IGNvbXB1dGVkKCgpID0+IGBwYXJ0aWNsZS0ke3RoaXMuY291bnQoKX0tJHtKU09OLnN0cmluZ2lmeSh0aGlzLnNjYWxlKCkpfWApO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgY2xvY2sgfSkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BhcmtsZXMgPSB0aGlzLnNwYXJrbGVzUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIXNwYXJrbGVzIHx8ICFzcGFya2xlcy5tYXRlcmlhbCkgcmV0dXJuO1xuXHRcdFx0KHNwYXJrbGVzLm1hdGVyaWFsIGFzIE5ndFNwYXJrbGVzTWF0ZXJpYWxTdGF0ZSkudGltZSA9IGNsb2NrLmVsYXBzZWRUaW1lO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRDb21wdXRlZDxUS2V5IGV4dGVuZHMga2V5b2YgTmd0c1NwYXJrbGVzU3RhdGU+KFxuXHRcdG5hbWVPckNvbXB1dGVkOiBUS2V5IHwgU2lnbmFsPE5ndHNTcGFya2xlc1N0YXRlW1RLZXldPixcblx0XHRjb3VudDogKCkgPT4gbnVtYmVyLFxuXHRcdHNldERlZmF1bHQ/OiAodmFsdWU6IE5ndHNTcGFya2xlc1N0YXRlW1RLZXldKSA9PiBudW1iZXIsXG5cdCkge1xuXHRcdGNvbnN0IHZhbHVlID1cblx0XHRcdHR5cGVvZiBuYW1lT3JDb21wdXRlZCAhPT0gJ3N0cmluZycgJiYgaXNTaWduYWwobmFtZU9yQ29tcHV0ZWQpXG5cdFx0XHRcdD8gbmFtZU9yQ29tcHV0ZWRcblx0XHRcdFx0OiB0aGlzLmlucHV0cy5zZWxlY3QobmFtZU9yQ29tcHV0ZWQpO1xuXHRcdHJldHVybiBjb21wdXRlZCgoKSA9PiB1c2VQcm9wQXNJc09yQXNBdHRyaWJ1dGUoY291bnQoKSwgdmFsdWUoKSwgc2V0RGVmYXVsdCkpO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { signalStore } from 'angular-three';
3
+ import * as i0 from "@angular/core";
4
+ export class NgtsSpotLightShadowMeshInput {
5
+ constructor() {
6
+ this.inputs = signalStore({});
7
+ this.distance = this.inputs.select('distance');
8
+ this.alphaTest = this.inputs.select('alphaTest');
9
+ this.scale = this.inputs.select('scale');
10
+ this.map = this.inputs.select('map');
11
+ this.shader = this.inputs.select('shader');
12
+ this.width = this.inputs.select('width');
13
+ this.height = this.inputs.select('height');
14
+ }
15
+ set _distance(distance) {
16
+ this.inputs.set({ distance });
17
+ }
18
+ set _alphaTest(alphaTest) {
19
+ this.inputs.set({ alphaTest });
20
+ }
21
+ set _scale(scale) {
22
+ this.inputs.set({ scale });
23
+ }
24
+ set _map(map) {
25
+ this.inputs.set({ map });
26
+ }
27
+ set _shader(shader) {
28
+ this.inputs.set({ shader });
29
+ }
30
+ set _width(width) {
31
+ this.inputs.set({ width });
32
+ }
33
+ set _height(height) {
34
+ this.inputs.set({ height });
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightShadowMeshInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
37
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSpotLightShadowMeshInput, inputs: { _distance: ["distance", "_distance"], _alphaTest: ["alphaTest", "_alphaTest"], _scale: ["scale", "_scale"], _map: ["map", "_map"], _shader: ["shader", "_shader"], _width: ["width", "_width"], _height: ["height", "_height"] }, ngImport: i0 }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightShadowMeshInput, decorators: [{
40
+ type: Directive
41
+ }], propDecorators: { _distance: [{
42
+ type: Input,
43
+ args: [{ alias: 'distance' }]
44
+ }], _alphaTest: [{
45
+ type: Input,
46
+ args: [{ alias: 'alphaTest' }]
47
+ }], _scale: [{
48
+ type: Input,
49
+ args: [{ alias: 'scale' }]
50
+ }], _map: [{
51
+ type: Input,
52
+ args: [{ alias: 'map' }]
53
+ }], _shader: [{
54
+ type: Input,
55
+ args: [{ alias: 'shader' }]
56
+ }], _width: [{
57
+ type: Input,
58
+ args: [{ alias: 'width' }]
59
+ }], _height: [{
60
+ type: Input,
61
+ args: [{ alias: 'height' }]
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93LW1lc2gtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3BvdC1saWdodC9zaGFkb3ctbWVzaC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWE1QyxNQUFNLE9BQWdCLDRCQUE0QjtJQURsRDtRQUVDLFdBQU0sR0FBRyxXQUFXLENBQW9DLEVBQUUsQ0FBQyxDQUFDO1FBOEI1RCxhQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsY0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxRQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsV0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDdEM7SUFuQ0EsSUFBa0MsU0FBUyxDQUFDLFFBQWdCO1FBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBbUMsVUFBVSxDQUFDLFNBQWlCO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBK0IsTUFBTSxDQUFDLEtBQWE7UUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUE2QixJQUFJLENBQUMsR0FBa0I7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFnQyxPQUFPLENBQUMsTUFBYztRQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQStCLE1BQU0sQ0FBQyxLQUFhO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBZ0MsT0FBTyxDQUFDLE1BQWM7UUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7OEdBN0JvQiw0QkFBNEI7a0dBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEakQsU0FBUzs4QkFJeUIsU0FBUztzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBSU8sVUFBVTtzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7Z0JBSUUsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSUksSUFBSTtzQkFBaEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBSVMsT0FBTztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSUssTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSU8sT0FBTztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuXG5leHBvcnQgdHlwZSBOZ3RzU3BvdExpZ2h0U2hhZG93TWVzaElucHV0U3RhdGUgPSB7XG5cdGRpc3RhbmNlOiBudW1iZXI7XG5cdGFscGhhVGVzdDogbnVtYmVyO1xuXHRzY2FsZTogbnVtYmVyO1xuXHRtYXA6IFRIUkVFLlRleHR1cmU7XG5cdHNoYWRlcjogc3RyaW5nO1xuXHR3aWR0aDogbnVtYmVyO1xuXHRoZWlnaHQ6IG51bWJlcjtcbn07XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5ndHNTcG90TGlnaHRTaGFkb3dNZXNoSW5wdXQge1xuXHRpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzU3BvdExpZ2h0U2hhZG93TWVzaElucHV0U3RhdGU+KHt9KTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2Rpc3RhbmNlJyB9KSBzZXQgX2Rpc3RhbmNlKGRpc3RhbmNlOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkaXN0YW5jZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYWxwaGFUZXN0JyB9KSBzZXQgX2FscGhhVGVzdChhbHBoYVRlc3Q6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGFscGhhVGVzdCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc2NhbGUnIH0pIHNldCBfc2NhbGUoc2NhbGU6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNjYWxlIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdtYXAnIH0pIHNldCBfbWFwKG1hcDogVEhSRUUuVGV4dHVyZSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG1hcCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc2hhZGVyJyB9KSBzZXQgX3NoYWRlcihzaGFkZXI6IHN0cmluZykge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNoYWRlciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnd2lkdGgnIH0pIHNldCBfd2lkdGgod2lkdGg6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHdpZHRoIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdoZWlnaHQnIH0pIHNldCBfaGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgaGVpZ2h0IH0pO1xuXHR9XG5cblx0ZGlzdGFuY2UgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2Rpc3RhbmNlJyk7XG5cdGFscGhhVGVzdCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYWxwaGFUZXN0Jyk7XG5cdHNjYWxlID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzY2FsZScpO1xuXHRtYXAgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ21hcCcpO1xuXHRzaGFkZXIgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3NoYWRlcicpO1xuXHR3aWR0aCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnd2lkdGgnKTtcblx0aGVpZ2h0ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdoZWlnaHQnKTtcbn1cbiJdfQ==