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

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 (343) hide show
  1. package/README.md +2 -2
  2. package/abstractions/{lib/billboard → billboard}/billboard.d.ts +14 -4
  3. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +25 -0
  4. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +25 -0
  5. package/abstractions/{lib/edges → edges}/edges.d.ts +11 -7
  6. package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-helper.d.ts +16 -23
  7. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  8. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +30 -0
  9. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +32 -0
  10. package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/gizmo-viewcube.d.ts +2 -3
  11. package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport-axis.d.ts +28 -9
  12. package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport.d.ts +23 -4
  13. package/abstractions/index.d.ts +11 -11
  14. package/abstractions/line/line-input.d.ts +42 -0
  15. package/abstractions/line/line.d.ts +35 -0
  16. package/abstractions/{lib/quadratic-bezier-line → quadratic-bezier-line}/quadratic-bezier-line.d.ts +12 -8
  17. package/abstractions/text/text.d.ts +77 -0
  18. package/abstractions/text-3d/text-3d.d.ts +74 -0
  19. package/cameras/{lib/camera → camera}/camera-content.d.ts +1 -1
  20. package/cameras/{lib/camera → camera}/camera.d.ts +12 -8
  21. package/cameras/cube-camera/cube-camera.d.ts +42 -0
  22. package/cameras/index.d.ts +5 -4
  23. package/cameras/{lib/orthographic-camera → orthographic-camera}/orthographic-camera.d.ts +14 -5
  24. package/controls/index.d.ts +1 -1
  25. package/controls/{lib/orbit-controls → orbit-controls}/orbit-controls.d.ts +19 -11
  26. package/esm2022/abstractions/angular-three-soba-abstractions.mjs +1 -1
  27. package/esm2022/abstractions/billboard/billboard.mjs +71 -0
  28. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +131 -0
  29. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +113 -0
  30. package/esm2022/abstractions/edges/edges.mjs +93 -0
  31. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +210 -0
  32. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  33. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +95 -0
  34. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +155 -0
  35. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +62 -0
  36. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +80 -0
  37. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +206 -0
  38. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +273 -0
  39. package/esm2022/abstractions/index.mjs +12 -12
  40. package/esm2022/abstractions/line/line-input.mjs +113 -0
  41. package/esm2022/abstractions/line/line.mjs +165 -0
  42. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +128 -0
  43. package/esm2022/abstractions/text/text.mjs +275 -0
  44. package/esm2022/abstractions/text-3d/text-3d.mjs +167 -0
  45. package/esm2022/angular-three-soba.mjs +1 -1
  46. package/esm2022/cameras/angular-three-soba-cameras.mjs +1 -1
  47. package/esm2022/cameras/camera/camera-content.mjs +21 -0
  48. package/esm2022/cameras/camera/camera.mjs +71 -0
  49. package/esm2022/cameras/cube-camera/cube-camera.mjs +131 -0
  50. package/esm2022/cameras/index.mjs +6 -5
  51. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +99 -0
  52. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +47 -0
  53. package/esm2022/controls/angular-three-soba-controls.mjs +1 -1
  54. package/esm2022/controls/index.mjs +2 -2
  55. package/esm2022/controls/orbit-controls/orbit-controls.mjs +165 -0
  56. package/esm2022/index.mjs +1 -1
  57. package/esm2022/loaders/angular-three-soba-loaders.mjs +1 -1
  58. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +33 -0
  59. package/esm2022/loaders/index.mjs +5 -6
  60. package/esm2022/loaders/loader/loader.mjs +133 -0
  61. package/esm2022/loaders/progress/progress.mjs +52 -0
  62. package/esm2022/loaders/texture-loader/texture-loader.mjs +28 -0
  63. package/esm2022/materials/angular-three-soba-materials.mjs +1 -1
  64. package/esm2022/materials/index.mjs +6 -6
  65. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +73 -0
  66. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +383 -0
  67. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +168 -0
  68. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +257 -0
  69. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +66 -0
  70. package/esm2022/misc/angular-three-soba-misc.mjs +1 -1
  71. package/esm2022/misc/animations/animations.mjs +55 -0
  72. package/esm2022/misc/bake-shadows/bake-shadows.mjs +24 -0
  73. package/esm2022/misc/depth-buffer/depth-buffer.mjs +46 -0
  74. package/esm2022/misc/fbo/fbo.mjs +47 -0
  75. package/esm2022/misc/index.mjs +5 -5
  76. package/esm2022/performance/adaptive/adaptive-dpr.mjs +46 -0
  77. package/esm2022/performance/adaptive/adaptive-events.mjs +31 -0
  78. package/esm2022/performance/angular-three-soba-performance.mjs +1 -1
  79. package/esm2022/performance/detailed/detailed.mjs +61 -0
  80. package/esm2022/performance/index.mjs +7 -5
  81. package/esm2022/performance/instances/instance.mjs +48 -0
  82. package/esm2022/performance/instances/instances.mjs +189 -0
  83. package/esm2022/performance/instances/position-mesh.mjs +52 -0
  84. package/esm2022/performance/stats/stats.mjs +79 -0
  85. package/esm2022/shaders/angular-three-soba-shaders.mjs +1 -1
  86. package/esm2022/shaders/blur-pass/blur-pass.mjs +61 -0
  87. package/esm2022/shaders/caustics-material/caustics-material.mjs +128 -0
  88. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +33 -0
  89. package/esm2022/shaders/convolution-material/convolution-material.mjs +94 -0
  90. package/esm2022/shaders/discard-material/discard-material.mjs +3 -0
  91. package/esm2022/shaders/index.mjs +15 -15
  92. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +55 -0
  93. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +223 -0
  94. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +170 -0
  95. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +268 -0
  96. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +37 -0
  97. package/esm2022/shaders/shader-material/shader-material.mjs +34 -0
  98. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +33 -0
  99. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +47 -0
  100. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +86 -0
  101. package/esm2022/shaders/star-field-material/star-field-material.mjs +32 -0
  102. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +283 -0
  103. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +108 -0
  104. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +208 -0
  105. package/esm2022/staging/angular-three-soba-staging.mjs +1 -1
  106. package/esm2022/staging/bounds/bounds.mjs +307 -0
  107. package/esm2022/staging/camera-shake/camera-shake.mjs +117 -0
  108. package/esm2022/staging/caustics/caustisc.mjs +384 -0
  109. package/esm2022/staging/center/center.mjs +148 -0
  110. package/esm2022/staging/cloud/cloud.mjs +164 -0
  111. package/esm2022/staging/contact-shadows/contact-shadows.mjs +249 -0
  112. package/esm2022/staging/environment/assets.mjs +13 -0
  113. package/esm2022/staging/environment/environment-cube.mjs +49 -0
  114. package/esm2022/staging/environment/environment-ground.mjs +43 -0
  115. package/esm2022/staging/environment/environment-input.mjs +106 -0
  116. package/esm2022/staging/environment/environment-map.mjs +53 -0
  117. package/esm2022/staging/environment/environment-portal.mjs +135 -0
  118. package/esm2022/staging/environment/environment.mjs +78 -0
  119. package/esm2022/staging/environment/utils.mjs +84 -0
  120. package/esm2022/staging/float/float.mjs +82 -0
  121. package/esm2022/staging/index.mjs +18 -18
  122. package/esm2022/staging/sky/sky.mjs +114 -0
  123. package/esm2022/staging/sparkles/sparkles.mjs +161 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +75 -0
  125. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +57 -0
  126. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +256 -0
  127. package/esm2022/staging/spot-light/spot-light.mjs +94 -0
  128. package/esm2022/staging/spot-light/volumetric-mesh.mjs +101 -0
  129. package/esm2022/staging/stage/stage.mjs +374 -0
  130. package/esm2022/staging/stars/stars.mjs +148 -0
  131. package/fesm2022/angular-three-soba-abstractions.mjs +1116 -890
  132. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  133. package/fesm2022/angular-three-soba-cameras.mjs +126 -122
  134. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  135. package/fesm2022/angular-three-soba-controls.mjs +72 -54
  136. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  137. package/fesm2022/angular-three-soba-loaders.mjs +147 -131
  138. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  139. package/fesm2022/angular-three-soba-materials.mjs +340 -258
  140. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  141. package/fesm2022/angular-three-soba-misc.mjs +140 -123
  142. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  143. package/fesm2022/angular-three-soba-performance.mjs +383 -106
  144. package/fesm2022/angular-three-soba-performance.mjs.map +1 -1
  145. package/fesm2022/angular-three-soba-shaders.mjs +57 -9
  146. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  147. package/fesm2022/angular-three-soba-staging.mjs +1609 -1561
  148. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  149. package/fesm2022/angular-three-soba.mjs.map +1 -1
  150. package/loaders/gltf-loader/gltf-loader.d.ts +9 -0
  151. package/loaders/index.d.ts +4 -5
  152. package/loaders/{lib/loader → loader}/loader.d.ts +20 -15
  153. package/loaders/progress/progress.d.ts +9 -0
  154. package/loaders/texture-loader/texture-loader.d.ts +7 -0
  155. package/materials/index.d.ts +5 -5
  156. package/materials/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +11 -5
  157. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +81 -0
  158. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +50 -0
  159. package/materials/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +51 -6
  160. package/materials/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +9 -3
  161. package/misc/animations/animations.d.ts +13 -0
  162. package/misc/{lib/bake-shadows → bake-shadows}/bake-shadows.d.ts +2 -5
  163. package/misc/depth-buffer/depth-buffer.d.ts +9 -0
  164. package/misc/{lib/fbo → fbo}/fbo.d.ts +4 -2
  165. package/misc/index.d.ts +4 -4
  166. package/package.json +19 -17
  167. package/performance/{lib/adaptive → adaptive}/adaptive-dpr.d.ts +4 -7
  168. package/performance/{lib/adaptive → adaptive}/adaptive-events.d.ts +2 -6
  169. package/performance/detailed/detailed.d.ts +20 -0
  170. package/performance/index.d.ts +6 -4
  171. package/performance/instances/instance.d.ts +9 -0
  172. package/performance/instances/instances.d.ts +35 -0
  173. package/performance/instances/position-mesh.d.ts +10 -0
  174. package/performance/{lib/stats → stats}/stats.d.ts +10 -7
  175. package/plugin/package.json +1 -1
  176. package/plugin/src/generators/init/compat.js.map +1 -1
  177. package/plugin/src/generators/init/init.d.ts +1 -1
  178. package/plugin/src/generators/init/init.js +1 -1
  179. package/plugin/src/generators/init/init.js.map +1 -1
  180. package/plugin/src/index.js.map +1 -1
  181. package/shaders/{lib/blur-pass → blur-pass}/blur-pass.d.ts +2 -2
  182. package/shaders/index.d.ts +14 -14
  183. package/shaders/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +1 -1
  184. package/shaders/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +1 -0
  185. package/shaders/{lib/soft-shadow-material → soft-shadow-material}/soft-shadow-material.d.ts +2 -2
  186. package/shaders/sparkles-material/sparkles-material.d.ts +3 -0
  187. package/staging/{lib/accumulative-shadows → accumulative-shadows}/accumulative-shadows.d.ts +55 -17
  188. package/staging/{lib/accumulative-shadows → accumulative-shadows}/progressive-light-map.d.ts +2 -2
  189. package/staging/{lib/accumulative-shadows → accumulative-shadows}/randomized-lights.d.ts +45 -10
  190. package/staging/{lib/bounds → bounds}/bounds.d.ts +32 -22
  191. package/staging/{lib/camera-shake → camera-shake}/camera-shake.d.ts +15 -11
  192. package/staging/{lib/caustics/caustics.d.ts → caustics/caustisc.d.ts} +36 -13
  193. package/staging/{lib/center → center}/center.d.ts +30 -8
  194. package/staging/cloud/cloud.d.ts +48 -0
  195. package/staging/{lib/contact-shadows → contact-shadows}/contact-shadows.d.ts +38 -10
  196. package/staging/environment/environment-cube.d.ts +11 -0
  197. package/staging/environment/environment-ground.d.ts +13 -0
  198. package/staging/environment/environment-input.d.ts +68 -0
  199. package/staging/environment/environment-map.d.ts +11 -0
  200. package/staging/{lib/environment → environment}/environment-portal.d.ts +5 -7
  201. package/staging/{lib/environment → environment}/environment.d.ts +2 -2
  202. package/staging/environment/utils.d.ts +7 -0
  203. package/staging/float/float.d.ts +27 -0
  204. package/staging/index.d.ts +17 -17
  205. package/staging/{lib/sky → sky}/sky.d.ts +26 -5
  206. package/staging/{lib/sparkles → sparkles}/sparkles.d.ts +30 -10
  207. package/staging/{lib/spot-light → spot-light}/spot-light-input.d.ts +24 -2
  208. package/staging/{lib/spot-light/shadow-mesh-input.d.ts → spot-light/spot-light-shadow-mesh-input.d.ts} +18 -3
  209. package/staging/spot-light/spot-light-shadow-mesh.d.ts +38 -0
  210. package/staging/{lib/spot-light → spot-light}/spot-light.d.ts +11 -5
  211. package/staging/{lib/spot-light → spot-light}/volumetric-mesh.d.ts +8 -5
  212. package/staging/{lib/stage → stage}/stage.d.ts +33 -14
  213. package/staging/{lib/stars → stars}/stars.d.ts +21 -7
  214. package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +0 -15
  215. package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +0 -15
  216. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -16
  217. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -24
  218. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -14
  219. package/abstractions/lib/line/line-input.d.ts +0 -19
  220. package/abstractions/lib/line/line.d.ts +0 -21
  221. package/abstractions/lib/text/text.d.ts +0 -21
  222. package/abstractions/lib/text-3d/text-3d.d.ts +0 -39
  223. package/assets/default-spot-light-shadow.glsl +0 -10
  224. package/cameras/lib/cube-camera/cube-camera.d.ts +0 -27
  225. package/esm2022/abstractions/lib/billboard/billboard.mjs +0 -74
  226. package/esm2022/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -120
  227. package/esm2022/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -99
  228. package/esm2022/abstractions/lib/edges/edges.mjs +0 -96
  229. package/esm2022/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -213
  230. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  231. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -92
  232. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -184
  233. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -46
  234. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -134
  235. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
  236. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -267
  237. package/esm2022/abstractions/lib/line/line-input.mjs +0 -76
  238. package/esm2022/abstractions/lib/line/line.mjs +0 -133
  239. package/esm2022/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  240. package/esm2022/abstractions/lib/text/text.mjs +0 -115
  241. package/esm2022/abstractions/lib/text-3d/text-3d.mjs +0 -145
  242. package/esm2022/cameras/lib/camera/camera-content.mjs +0 -21
  243. package/esm2022/cameras/lib/camera/camera.mjs +0 -75
  244. package/esm2022/cameras/lib/cube-camera/cube-camera.mjs +0 -131
  245. package/esm2022/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -93
  246. package/esm2022/cameras/lib/perspective-camera/perspective-camera.mjs +0 -47
  247. package/esm2022/controls/lib/orbit-controls/orbit-controls.mjs +0 -147
  248. package/esm2022/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +0 -10
  249. package/esm2022/loaders/lib/gltf-loader/gltf-loader.mjs +0 -32
  250. package/esm2022/loaders/lib/loader/loader.mjs +0 -134
  251. package/esm2022/loaders/lib/progress/progress.mjs +0 -39
  252. package/esm2022/loaders/lib/texture-loader/texture-loader.mjs +0 -19
  253. package/esm2022/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -75
  254. package/esm2022/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -328
  255. package/esm2022/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -158
  256. package/esm2022/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -238
  257. package/esm2022/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
  258. package/esm2022/misc/lib/animations/animations.mjs +0 -52
  259. package/esm2022/misc/lib/bake-shadows/bake-shadows.mjs +0 -26
  260. package/esm2022/misc/lib/depth-buffer/depth-buffer.mjs +0 -39
  261. package/esm2022/misc/lib/fbo/fbo.mjs +0 -39
  262. package/esm2022/performance/lib/adaptive/adaptive-dpr.mjs +0 -47
  263. package/esm2022/performance/lib/adaptive/adaptive-events.mjs +0 -37
  264. package/esm2022/performance/lib/detailed/detailed.mjs +0 -54
  265. package/esm2022/performance/lib/stats/stats.mjs +0 -80
  266. package/esm2022/shaders/lib/blur-pass/blur-pass.mjs +0 -61
  267. package/esm2022/shaders/lib/caustics-material/caustics-material.mjs +0 -128
  268. package/esm2022/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -33
  269. package/esm2022/shaders/lib/convolution-material/convolution-material.mjs +0 -94
  270. package/esm2022/shaders/lib/discard-material/discard-material.mjs +0 -3
  271. package/esm2022/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -55
  272. package/esm2022/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  273. package/esm2022/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -169
  274. package/esm2022/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  275. package/esm2022/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  276. package/esm2022/shaders/lib/shader-material/shader-material.mjs +0 -34
  277. package/esm2022/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -33
  278. package/esm2022/shaders/lib/spot-light-material/spot-light-material.mjs +0 -86
  279. package/esm2022/shaders/lib/star-field-material/star-field-material.mjs +0 -32
  280. package/esm2022/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -249
  281. package/esm2022/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -108
  282. package/esm2022/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -201
  283. package/esm2022/staging/lib/bounds/bounds.mjs +0 -284
  284. package/esm2022/staging/lib/camera-shake/camera-shake.mjs +0 -122
  285. package/esm2022/staging/lib/caustics/caustics.mjs +0 -364
  286. package/esm2022/staging/lib/center/center.mjs +0 -143
  287. package/esm2022/staging/lib/cloud/cloud.mjs +0 -160
  288. package/esm2022/staging/lib/contact-shadows/contact-shadows.mjs +0 -228
  289. package/esm2022/staging/lib/environment/assets.mjs +0 -13
  290. package/esm2022/staging/lib/environment/environment-cube.mjs +0 -41
  291. package/esm2022/staging/lib/environment/environment-ground.mjs +0 -67
  292. package/esm2022/staging/lib/environment/environment-inputs.mjs +0 -87
  293. package/esm2022/staging/lib/environment/environment-map.mjs +0 -39
  294. package/esm2022/staging/lib/environment/environment-portal.mjs +0 -111
  295. package/esm2022/staging/lib/environment/environment.mjs +0 -165
  296. package/esm2022/staging/lib/environment/utils.mjs +0 -70
  297. package/esm2022/staging/lib/float/float.mjs +0 -77
  298. package/esm2022/staging/lib/sky/sky.mjs +0 -109
  299. package/esm2022/staging/lib/sparkles/sparkles.mjs +0 -210
  300. package/esm2022/staging/lib/spot-light/common.mjs +0 -42
  301. package/esm2022/staging/lib/spot-light/shadow-mesh-input.mjs +0 -51
  302. package/esm2022/staging/lib/spot-light/spot-light-input.mjs +0 -62
  303. package/esm2022/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -74
  304. package/esm2022/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -126
  305. package/esm2022/staging/lib/spot-light/spot-light-shadow.mjs +0 -63
  306. package/esm2022/staging/lib/spot-light/spot-light.mjs +0 -117
  307. package/esm2022/staging/lib/spot-light/volumetric-mesh.mjs +0 -86
  308. package/esm2022/staging/lib/stage/stage.mjs +0 -368
  309. package/esm2022/staging/lib/stars/stars.mjs +0 -140
  310. package/loaders/lib/cube-texture-loader/cube-texture-loader.d.ts +0 -3
  311. package/loaders/lib/gltf-loader/gltf-loader.d.ts +0 -8
  312. package/loaders/lib/progress/progress.d.ts +0 -16
  313. package/loaders/lib/texture-loader/texture-loader.d.ts +0 -5
  314. package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +0 -41
  315. package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +0 -28
  316. package/misc/lib/animations/animations.d.ts +0 -13
  317. package/misc/lib/depth-buffer/depth-buffer.d.ts +0 -7
  318. package/performance/lib/detailed/detailed.d.ts +0 -13
  319. package/staging/lib/cloud/cloud.d.ts +0 -23
  320. package/staging/lib/environment/environment-cube.d.ts +0 -11
  321. package/staging/lib/environment/environment-ground.d.ts +0 -9
  322. package/staging/lib/environment/environment-inputs.d.ts +0 -28
  323. package/staging/lib/environment/environment-map.d.ts +0 -10
  324. package/staging/lib/environment/utils.d.ts +0 -8
  325. package/staging/lib/float/float.d.ts +0 -16
  326. package/staging/lib/spot-light/common.d.ts +0 -3
  327. package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +0 -14
  328. package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +0 -25
  329. package/staging/lib/spot-light/spot-light-shadow.d.ts +0 -6
  330. /package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/constants.d.ts +0 -0
  331. /package/cameras/{lib/perspective-camera → perspective-camera}/perspective-camera.d.ts +0 -0
  332. /package/plugin/{README.md → libs/plugin/README.md} +0 -0
  333. /package/shaders/{lib/caustics-material → caustics-material}/caustics-material.d.ts +0 -0
  334. /package/shaders/{lib/caustics-projection-material → caustics-material}/caustics-projection-material.d.ts +0 -0
  335. /package/shaders/{lib/convolution-material → convolution-material}/convolution-material.d.ts +0 -0
  336. /package/shaders/{lib/discard-material → discard-material}/discard-material.d.ts +0 -0
  337. /package/shaders/{lib/mesh-reflector-material → mesh-reflector-material}/mesh-reflector-material.d.ts +0 -0
  338. /package/shaders/{lib/mesh-refraction-material → mesh-refraction-material}/mesh-refraction-material.d.ts +0 -0
  339. /package/shaders/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +0 -0
  340. /package/shaders/{lib/shader-material → shader-material}/shader-material.d.ts +0 -0
  341. /package/shaders/{lib/spot-light-material → spot-light-material}/spot-light-material.d.ts +0 -0
  342. /package/shaders/{lib/star-field-material → star-field-material}/star-field-material.d.ts +0 -0
  343. /package/staging/{lib/environment → environment}/assets.d.ts +0 -0
@@ -1,86 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';
2
- import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtStore, startWithUndefined } from 'angular-three';
3
- import { SpotLightMaterial } from 'angular-three-soba/shaders';
4
- import { combineLatest, map } from 'rxjs';
5
- import * as THREE from 'three';
6
- import { Mesh } from 'three';
7
- import { NgtsSpotLightInput } from './spot-light-input';
8
- import * as i0 from "@angular/core";
9
- extend({ Mesh });
10
- class NgtsVolumetricMesh extends NgtsSpotLightInput {
11
- initialize() {
12
- super.initialize();
13
- this.set({ opacity: 1, color: 'white', distance: 5, angle: 0.15, attenuation: 5, anglePower: 5 });
14
- }
15
- constructor() {
16
- super();
17
- this.mesh = injectNgtRef();
18
- this.material = new SpotLightMaterial();
19
- this.nullRaycast = () => null;
20
- this.vec = new THREE.Vector3();
21
- this.store = inject(NgtStore);
22
- this.connect('normalizedRadiusTop', this.select('radiusTop').pipe(startWithUndefined(), map((radiusTop) => (radiusTop === undefined ? 0.1 : radiusTop))));
23
- this.connect('normalizedRadiusBottom', combineLatest([this.select('radiusBottom').pipe(startWithUndefined()), this.select('angle')]).pipe(map(([radiusBottom, angle]) => (radiusBottom === undefined ? angle * 7 : radiusBottom))));
24
- this.connect('geometry', combineLatest([
25
- this.select('normalizedRadiusTop'),
26
- this.select('normalizedRadiusBottom'),
27
- this.select('distance'),
28
- ]).pipe(map(([radiusTop, radiusBottom, distance]) => {
29
- const geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);
30
- geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));
31
- geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));
32
- return geometry;
33
- })));
34
- this.connect('cameraNear', this.store.select('camera').pipe(map((camera) => camera.near)));
35
- this.connect('cameraFar', this.store.select('camera').pipe(map((camera) => camera.far)));
36
- this.connect('resolution', combineLatest([
37
- this.select('depthBuffer').pipe(startWithUndefined()),
38
- this.store.select('size'),
39
- this.store.select('viewport', 'dpr'),
40
- ]).pipe(map(([depthBuffer, size, dpr]) => (depthBuffer ? [size.width * dpr, size.height * dpr] : [0, 0]))));
41
- injectBeforeRender(() => {
42
- this.material.uniforms['spotPosition'].value.copy(this.mesh.nativeElement.getWorldPosition(this.vec));
43
- this.mesh.nativeElement.lookAt(this.mesh.nativeElement.parent.target.getWorldPosition(this.vec));
44
- });
45
- }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", usesInheritance: true, ngImport: i0, template: `
48
- <ngt-mesh [ref]="mesh" [geometry]="get('geometry')" [raycast]="nullRaycast">
49
- <ngt-primitive *args="[material]" attach="material">
50
- <ngt-value [rawValue]="get('opacity')" attach="uniforms.opacity.value" />
51
- <ngt-value [rawValue]="get('color')" attach="uniforms.lightColor.value" />
52
- <ngt-value [rawValue]="get('attenuation')" attach="uniforms.attenuation.value" />
53
- <ngt-value [rawValue]="get('anglePower')" attach="uniforms.anglePower.value" />
54
- <ngt-value [rawvalue]="get('depthBuffer')" attach="uniforms.depth.value" />
55
- <ngt-value [rawvalue]="get('cameraNear')" attach="uniforms.cameraNear.value" />
56
- <ngt-value [rawvalue]="get('cameraFar')" attach="uniforms.cameraFar.value" />
57
- <ngt-value [rawvalue]="get('resolution')" attach="uniforms.resolution.value" />
58
- </ngt-primitive>
59
- </ngt-mesh>
60
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
61
- }
62
- export { NgtsVolumetricMesh };
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
64
- type: Component,
65
- args: [{
66
- selector: 'ngts-volumetric-mesh',
67
- standalone: true,
68
- template: `
69
- <ngt-mesh [ref]="mesh" [geometry]="get('geometry')" [raycast]="nullRaycast">
70
- <ngt-primitive *args="[material]" attach="material">
71
- <ngt-value [rawValue]="get('opacity')" attach="uniforms.opacity.value" />
72
- <ngt-value [rawValue]="get('color')" attach="uniforms.lightColor.value" />
73
- <ngt-value [rawValue]="get('attenuation')" attach="uniforms.attenuation.value" />
74
- <ngt-value [rawValue]="get('anglePower')" attach="uniforms.anglePower.value" />
75
- <ngt-value [rawvalue]="get('depthBuffer')" attach="uniforms.depth.value" />
76
- <ngt-value [rawvalue]="get('cameraNear')" attach="uniforms.cameraNear.value" />
77
- <ngt-value [rawvalue]="get('cameraFar')" attach="uniforms.cameraFar.value" />
78
- <ngt-value [rawvalue]="get('resolution')" attach="uniforms.resolution.value" />
79
- </ngt-primitive>
80
- </ngt-mesh>
81
- `,
82
- imports: [NgtArgs],
83
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
84
- }]
85
- }], ctorParameters: function () { return []; } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9sdW1ldHJpYy1tZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL3Nwb3QtbGlnaHQvdm9sdW1ldHJpYy1tZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFeEQsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUVqQixNQW9CYSxrQkFBbUIsU0FBUSxrQkFBa0I7SUFRN0MsVUFBVTtRQUNmLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBYkgsU0FBSSxHQUFHLFlBQVksRUFBYyxDQUFD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QztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3ROZ3RSZWYsIE5ndEFyZ3MsIE5ndFN0b3JlLCBzdGFydFdpdGhVbmRlZmluZWQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFNwb3RMaWdodE1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c1Nwb3RMaWdodElucHV0IH0gZnJvbSAnLi9zcG90LWxpZ2h0LWlucHV0JztcblxuZXh0ZW5kKHsgTWVzaCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXZvbHVtZXRyaWMtbWVzaCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW1lc2ggW3JlZl09XCJtZXNoXCIgW2dlb21ldHJ5XT1cImdldCgnZ2VvbWV0cnknKVwiIFtyYXljYXN0XT1cIm51bGxSYXljYXN0XCI+XG4gICAgICAgICAgICA8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbF1cIiBhdHRhY2g9XCJtYXRlcmlhbFwiPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnb3BhY2l0eScpXCIgYXR0YWNoPVwidW5pZm9ybXMub3BhY2l0eS52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdjb2xvcicpXCIgYXR0YWNoPVwidW5pZm9ybXMubGlnaHRDb2xvci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdhdHRlbnVhdGlvbicpXCIgYXR0YWNoPVwidW5pZm9ybXMuYXR0ZW51YXRpb24udmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnYW5nbGVQb3dlcicpXCIgYXR0YWNoPVwidW5pZm9ybXMuYW5nbGVQb3dlci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwiZ2V0KCdkZXB0aEJ1ZmZlcicpXCIgYXR0YWNoPVwidW5pZm9ybXMuZGVwdGgudmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cImdldCgnY2FtZXJhTmVhcicpXCIgYXR0YWNoPVwidW5pZm9ybXMuY2FtZXJhTmVhci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwiZ2V0KCdjYW1lcmFGYXInKVwiIGF0dGFjaD1cInVuaWZvcm1zLmNhbWVyYUZhci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwiZ2V0KCdyZXNvbHV0aW9uJylcIiBhdHRhY2g9XCJ1bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlXCIgLz5cbiAgICAgICAgICAgIDwvbmd0LXByaW1pdGl2ZT5cbiAgICAgICAgPC9uZ3QtbWVzaD5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNWb2x1bWV0cmljTWVzaCBleHRlbmRzIE5ndHNTcG90TGlnaHRJbnB1dCB7XG4gICAgcmVhZG9ubHkgbWVzaCA9IGluamVjdE5ndFJlZjxUSFJFRS5NZXNoPigpO1xuICAgIHJlYWRvbmx5IG1hdGVyaWFsID0gbmV3IFNwb3RMaWdodE1hdGVyaWFsKCk7XG4gICAgcmVhZG9ubHkgbnVsbFJheWNhc3QgPSAoKSA9PiBudWxsO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB2ZWMgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7IG9wYWNpdHk6IDEsIGNvbG9yOiAnd2hpdGUnLCBkaXN0YW5jZTogNSwgYW5nbGU6IDAuMTUsIGF0dGVudWF0aW9uOiA1LCBhbmdsZVBvd2VyOiA1IH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnbm9ybWFsaXplZFJhZGl1c1RvcCcsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdCgncmFkaXVzVG9wJykucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGhVbmRlZmluZWQoKSxcbiAgICAgICAgICAgICAgICBtYXAoKHJhZGl1c1RvcCkgPT4gKHJhZGl1c1RvcCA9PT0gdW5kZWZpbmVkID8gMC4xIDogcmFkaXVzVG9wKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ25vcm1hbGl6ZWRSYWRpdXNCb3R0b20nLFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ3JhZGl1c0JvdHRvbScpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLCB0aGlzLnNlbGVjdCgnYW5nbGUnKV0pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChbcmFkaXVzQm90dG9tLCBhbmdsZV0pID0+IChyYWRpdXNCb3R0b20gPT09IHVuZGVmaW5lZCA/IGFuZ2xlICogNyA6IHJhZGl1c0JvdHRvbSkpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ2dlb21ldHJ5JyxcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdub3JtYWxpemVkUmFkaXVzVG9wJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ25vcm1hbGl6ZWRSYWRpdXNCb3R0b20nKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnZGlzdGFuY2UnKSxcbiAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChbcmFkaXVzVG9wLCByYWRpdXNCb3R0b20sIGRpc3RhbmNlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBUSFJFRS5DeWxpbmRlckdlb21ldHJ5KHJhZGl1c1RvcCwgcmFkaXVzQm90dG9tLCBkaXN0YW5jZSwgMTI4LCA2NCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5LmFwcGx5TWF0cml4NChuZXcgVEhSRUUuTWF0cml4NCgpLm1ha2VUcmFuc2xhdGlvbigwLCAtZGlzdGFuY2UgLyAyLCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5LmFwcGx5TWF0cml4NChuZXcgVEhSRUUuTWF0cml4NCgpLm1ha2VSb3RhdGlvblgoLU1hdGguUEkgLyAyKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdCgnY2FtZXJhTmVhcicsIHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKS5waXBlKG1hcCgoY2FtZXJhKSA9PiBjYW1lcmEubmVhcikpKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KCdjYW1lcmFGYXInLCB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJykucGlwZShtYXAoKGNhbWVyYSkgPT4gY2FtZXJhLmZhcikpKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2RlcHRoQnVmZmVyJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgndmlld3BvcnQnLCAnZHByJyksXG4gICAgICAgICAgICBdKS5waXBlKG1hcCgoW2RlcHRoQnVmZmVyLCBzaXplLCBkcHJdKSA9PiAoZGVwdGhCdWZmZXIgPyBbc2l6ZS53aWR0aCAqIGRwciwgc2l6ZS5oZWlnaHQgKiBkcHJdIDogWzAsIDBdKSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWF0ZXJpYWwudW5pZm9ybXNbJ3Nwb3RQb3NpdGlvbiddLnZhbHVlLmNvcHkodGhpcy5tZXNoLm5hdGl2ZUVsZW1lbnQuZ2V0V29ybGRQb3NpdGlvbih0aGlzLnZlYykpO1xuICAgICAgICAgICAgdGhpcy5tZXNoLm5hdGl2ZUVsZW1lbnQubG9va0F0KFxuICAgICAgICAgICAgICAgICh0aGlzLm1lc2gubmF0aXZlRWxlbWVudC5wYXJlbnQgYXMgVEhSRUUuU3BvdExpZ2h0KS50YXJnZXQuZ2V0V29ybGRQb3NpdGlvbih0aGlzLnZlYylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,368 +0,0 @@
1
- import { NgIf } from '@angular/common';
2
- import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, Directive, EventEmitter, inject, Input, Output, } from '@angular/core';
3
- import { extend, NgtArgs, NgtRxStore } from 'angular-three';
4
- import { map } from 'rxjs';
5
- import { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';
6
- import { NgtsAccumulativeShadows } from '../accumulative-shadows/accumulative-shadows';
7
- import { NgtsRandomizedLights } from '../accumulative-shadows/randomized-lights';
8
- import { NgtsBounds, NGTS_BOUNDS_API } from '../bounds/bounds';
9
- import { NgtsCenter } from '../center/center';
10
- import { NgtsContactShadows } from '../contact-shadows/contact-shadows';
11
- import { NgtsEnvironment } from '../environment/environment';
12
- import * as i0 from "@angular/core";
13
- const presets = {
14
- rembrandt: {
15
- main: [1, 2, 1],
16
- fill: [-2, -0.5, -2],
17
- },
18
- portrait: {
19
- main: [-1, 2, 0.5],
20
- fill: [-1, 0.5, -1.5],
21
- },
22
- upfront: {
23
- main: [0, 2, 1],
24
- fill: [-1, 0.5, -1.5],
25
- },
26
- soft: {
27
- main: [-2, 4, 4],
28
- fill: [-1, 0.5, -1.5],
29
- },
30
- };
31
- class NgtsStageRefit {
32
- constructor() {
33
- this.boundsApi = inject(NGTS_BOUNDS_API);
34
- this.radius = 0;
35
- this.adjustCamera = true;
36
- }
37
- ngOnChanges() {
38
- if (this.adjustCamera) {
39
- this.boundsApi.refresh().clip().fit();
40
- }
41
- }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: "radius", adjustCamera: "adjustCamera" }, usesOnChanges: true, ngImport: i0 }); }
44
- }
45
- export { NgtsStageRefit };
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStageRefit, decorators: [{
47
- type: Directive,
48
- args: [{ selector: 'ngts-stage-refit', standalone: true }]
49
- }], propDecorators: { radius: [{
50
- type: Input
51
- }], adjustCamera: [{
52
- type: Input
53
- }] } });
54
- extend({ AmbientLight, SpotLight, Vector2, PointLight, Group });
55
- class NgtsStage extends NgtRxStore {
56
- constructor() {
57
- super(...arguments);
58
- this.cdr = inject(ChangeDetectorRef);
59
- this.Number = Number;
60
- this.centered = new EventEmitter();
61
- }
62
- set preset(preset) {
63
- this.set({ preset });
64
- }
65
- set shadows(shadows) {
66
- this.set({ shadows });
67
- }
68
- set adjustCamera(adjustCamera) {
69
- this.set({ adjustCamera });
70
- }
71
- set environment(environment) {
72
- this.set({ environment });
73
- }
74
- set intensity(intensity) {
75
- this.set({ intensity });
76
- }
77
- set center(center) {
78
- this.set({ center });
79
- }
80
- initialize() {
81
- super.initialize();
82
- this.set({
83
- adjustCamera: true,
84
- intensity: 0.5,
85
- shadows: 'contact',
86
- environment: 'city',
87
- preset: 'rembrandt',
88
- radius: 0,
89
- width: 0,
90
- height: 0,
91
- depth: 0,
92
- });
93
- this.connect('config', this.select('preset').pipe(map((preset) => (typeof preset === 'string' ? presets[preset] : preset))));
94
- this.connect('shadowsInfo', this.select('shadows').pipe(map((shadows) => {
95
- return {
96
- contactShadow: shadows === 'contact' || shadows?.type === 'contact',
97
- accumulativeShadow: shadows === 'accumulative' || shadows?.type === 'accumulative',
98
- shadowBias: shadows?.bias ?? -0.0001,
99
- normalBias: shadows?.normalBias ?? 0,
100
- shadowSize: shadows?.size ?? 1024,
101
- shadowOffset: shadows?.offset ?? 0,
102
- ...(typeof shadows === 'string' ? {} : shadows || {}),
103
- };
104
- })));
105
- this.connect('spotLightPosition', this.select(['config', 'radius'], ({ config, radius }) => [
106
- config.main[0] * radius,
107
- config.main[1] * radius,
108
- config.main[2] * radius,
109
- ]));
110
- this.connect('pointLightPosition', this.select(['config', 'radius'], ({ config, radius }) => [
111
- config.fill[0] * radius,
112
- config.fill[1] * radius,
113
- config.fill[2] * radius,
114
- ]));
115
- this.connect('environmentInfo', this.select('environment').pipe(map((environment) => {
116
- if (!environment)
117
- return null;
118
- if (typeof environment === 'string')
119
- return { preset: environment };
120
- return environment;
121
- })));
122
- }
123
- onCentered(props) {
124
- const { boundingSphere, width, height, depth } = props;
125
- this.set({ radius: boundingSphere.radius, width, height, depth });
126
- this.cdr.detectChanges();
127
- if (this.centered.observed)
128
- this.centered.emit(props);
129
- }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { preset: "preset", shadows: "shadows", adjustCamera: "adjustCamera", environment: "environment", intensity: "intensity", center: "center" }, outputs: { centered: "centered" }, usesInheritance: true, ngImport: i0, template: `
132
- <ngt-ambient-light [intensity]="get('intensity')! / 3" />
133
- <ngt-spot-light
134
- [penumbra]="1"
135
- [position]="get('spotLightPosition')"
136
- [intensity]="get('intensity')! * 2"
137
- [castShadow]="!!get('shadows')"
138
- >
139
- <ngt-value [rawValue]="get('shadowsInfo').shadowBias" attach="shadow.bias" />
140
- <ngt-value [rawValue]="get('shadowsInfo').normalBias" attach="shadow.normalBias" />
141
- <ngt-vector2
142
- *args="[get('shadowsInfo').shadowSize, get('shadowsInfo').shadowSize]"
143
- attach="shadow.mapSize"
144
- />
145
- </ngt-spot-light>
146
- <ngt-point-light [position]="get('pointLightPosition')" [intensity]="get('intensity')" />
147
-
148
- <ngts-bounds
149
- [fit]="!!get('adjustCamera')"
150
- [clip]="!!get('adjustCamera')"
151
- [margin]="Number(get('adjustCamera'))"
152
- [observe]="true"
153
- >
154
- <ngts-stage-refit [radius]="get('radius')" [adjustCamera]="!!get('adjustCamera')" />
155
- <ngts-center
156
- [position]="[0, get('shadowsInfo').shadowOffset / 2, 0]"
157
- [top]="!!get('center')?.top"
158
- [right]="!!get('center')?.right"
159
- [bottom]="!!get('center')?.bottom"
160
- [left]="!!get('center')?.left"
161
- [front]="!!get('center')?.front"
162
- [back]="!!get('center')?.back"
163
- [disableX]="!!get('center')?.disableX"
164
- [disableY]="!!get('center')?.disableY"
165
- [disableZ]="!!get('center')?.disableZ"
166
- [precise]="!!get('center')?.precise"
167
- (centered)="onCentered($event)"
168
- >
169
- <ng-content />
170
- </ngts-center>
171
- </ngts-bounds>
172
- <ngt-group [position]="[0, -get('height') / 2 - get('shadowsInfo').shadowOffset / 2, 0]">
173
- <ngts-contact-shadows
174
- *ngIf="get('shadowsInfo').contactShadow"
175
- [scale]="get('radius') * 4"
176
- [far]="get('radius')"
177
- [blur]="2"
178
- [opacity]="get('shadowsInfo').opacity"
179
- [width]="get('shadowsInfo').width"
180
- [height]="get('shadowsInfo').height"
181
- [smooth]="get('shadowsInfo').smooth"
182
- [resolution]="get('shadowsInfo').resolution"
183
- [frames]="get('shadowsInfo').frames"
184
- [scale]="get('shadowsInfo').scale"
185
- [color]="get('shadowsInfo').color"
186
- [depthWrite]="get('shadowsInfo').depthWrite"
187
- [renderOrder]="get('shadowsInfo').renderOrder"
188
- />
189
- <ngts-accumulative-shadows
190
- *ngIf="get('shadowsInfo').accumulativeShadow"
191
- [temporal]="true"
192
- [frames]="100"
193
- [alphaTest]="0.9"
194
- [toneMapped]="true"
195
- [scale]="get('radius') * 4"
196
- [opacity]="get('shadowsInfo').opacity"
197
- [alphaTest]="get('shadowsInfo').alphaTest"
198
- [color]="get('shadowsInfo').color"
199
- [colorBlend]="get('shadowsInfo').colorBlend"
200
- [resolution]="get('shadowsInfo').resolution"
201
- >
202
- <ngts-randomized-lights
203
- [amount]="get('shadowsInfo').amount ?? 8"
204
- [radius]="get('shadowsInfo').radius ?? get('radius')"
205
- [ambient]="get('shadowsInfo').ambient ?? 0.5"
206
- [intensity]="get('shadowsInfo').intensity ?? 1"
207
- [position]="get('spotLightPosition')"
208
- [size]="get('radius') * 4"
209
- [bias]="-get('shadowsInfo').shadowBias"
210
- [mapSize]="get('shadowsInfo').shadowSize"
211
- />
212
- </ngts-accumulative-shadows>
213
- </ngt-group>
214
- <ngts-environment
215
- *ngIf="get('environmentInfo')"
216
- [frames]="get('environmentInfo').frames"
217
- [near]="get('environmentInfo').near"
218
- [far]="get('environmentInfo').far"
219
- [resolution]="get('environmentInfo').resolution"
220
- [background]="get('environmentInfo').background"
221
- [blur]="get('environmentInfo').blur"
222
- [map]="get('environmentInfo').map"
223
- [files]="get('environmentInfo').files"
224
- [path]="get('environmentInfo').path"
225
- [preset]="get('environmentInfo').preset"
226
- [scene]="get('environmentInfo').scene"
227
- [extensions]="get('environmentInfo').extensions"
228
- [ground]="get('environmentInfo').ground"
229
- [encoding]="get('environmentInfo').encoding"
230
- />
231
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "component", type: NgtsBounds, selector: "ngts-bounds", inputs: ["boundsRef", "damping", "fit", "clip", "observe", "margin", "eps"], outputs: ["fitted"] }, { kind: "directive", type: NgtsStageRefit, selector: "ngts-stage-refit", inputs: ["radius", "adjustCamera"] }, { kind: "component", type: NgtsCenter, selector: "ngts-center", inputs: ["centerRef", "top", "right", "bottom", "left", "front", "back", "disableX", "disableY", "disableZ", "disabled", "precise"], outputs: ["centered"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsContactShadows, selector: "ngts-contact-shadows", inputs: ["contactShadowsRef", "opacity", "width", "height", "blur", "far", "smooth", "resolution", "frames", "scale", "color", "depthWrite", "renderOrder"] }, { kind: "component", type: NgtsAccumulativeShadows, selector: "ngts-accumulative-shadows", inputs: ["frames", "blend", "limit", "scale", "temporal", "opacity", "alphaTest", "color", "colorBlend", "resolution", "toneMapped"] }, { kind: "component", type: NgtsRandomizedLights, selector: "ngts-randomized-lights", inputs: ["lightsRef", "frames", "position", "radius", "amount", "intensity", "ambient", "castShadow", "bias", "mapSize", "size", "near", "far"] }, { kind: "component", type: NgtsEnvironment, selector: "ngts-environment" }] }); }
232
- }
233
- export { NgtsStage };
234
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStage, decorators: [{
235
- type: Component,
236
- args: [{
237
- selector: 'ngts-stage',
238
- standalone: true,
239
- template: `
240
- <ngt-ambient-light [intensity]="get('intensity')! / 3" />
241
- <ngt-spot-light
242
- [penumbra]="1"
243
- [position]="get('spotLightPosition')"
244
- [intensity]="get('intensity')! * 2"
245
- [castShadow]="!!get('shadows')"
246
- >
247
- <ngt-value [rawValue]="get('shadowsInfo').shadowBias" attach="shadow.bias" />
248
- <ngt-value [rawValue]="get('shadowsInfo').normalBias" attach="shadow.normalBias" />
249
- <ngt-vector2
250
- *args="[get('shadowsInfo').shadowSize, get('shadowsInfo').shadowSize]"
251
- attach="shadow.mapSize"
252
- />
253
- </ngt-spot-light>
254
- <ngt-point-light [position]="get('pointLightPosition')" [intensity]="get('intensity')" />
255
-
256
- <ngts-bounds
257
- [fit]="!!get('adjustCamera')"
258
- [clip]="!!get('adjustCamera')"
259
- [margin]="Number(get('adjustCamera'))"
260
- [observe]="true"
261
- >
262
- <ngts-stage-refit [radius]="get('radius')" [adjustCamera]="!!get('adjustCamera')" />
263
- <ngts-center
264
- [position]="[0, get('shadowsInfo').shadowOffset / 2, 0]"
265
- [top]="!!get('center')?.top"
266
- [right]="!!get('center')?.right"
267
- [bottom]="!!get('center')?.bottom"
268
- [left]="!!get('center')?.left"
269
- [front]="!!get('center')?.front"
270
- [back]="!!get('center')?.back"
271
- [disableX]="!!get('center')?.disableX"
272
- [disableY]="!!get('center')?.disableY"
273
- [disableZ]="!!get('center')?.disableZ"
274
- [precise]="!!get('center')?.precise"
275
- (centered)="onCentered($event)"
276
- >
277
- <ng-content />
278
- </ngts-center>
279
- </ngts-bounds>
280
- <ngt-group [position]="[0, -get('height') / 2 - get('shadowsInfo').shadowOffset / 2, 0]">
281
- <ngts-contact-shadows
282
- *ngIf="get('shadowsInfo').contactShadow"
283
- [scale]="get('radius') * 4"
284
- [far]="get('radius')"
285
- [blur]="2"
286
- [opacity]="get('shadowsInfo').opacity"
287
- [width]="get('shadowsInfo').width"
288
- [height]="get('shadowsInfo').height"
289
- [smooth]="get('shadowsInfo').smooth"
290
- [resolution]="get('shadowsInfo').resolution"
291
- [frames]="get('shadowsInfo').frames"
292
- [scale]="get('shadowsInfo').scale"
293
- [color]="get('shadowsInfo').color"
294
- [depthWrite]="get('shadowsInfo').depthWrite"
295
- [renderOrder]="get('shadowsInfo').renderOrder"
296
- />
297
- <ngts-accumulative-shadows
298
- *ngIf="get('shadowsInfo').accumulativeShadow"
299
- [temporal]="true"
300
- [frames]="100"
301
- [alphaTest]="0.9"
302
- [toneMapped]="true"
303
- [scale]="get('radius') * 4"
304
- [opacity]="get('shadowsInfo').opacity"
305
- [alphaTest]="get('shadowsInfo').alphaTest"
306
- [color]="get('shadowsInfo').color"
307
- [colorBlend]="get('shadowsInfo').colorBlend"
308
- [resolution]="get('shadowsInfo').resolution"
309
- >
310
- <ngts-randomized-lights
311
- [amount]="get('shadowsInfo').amount ?? 8"
312
- [radius]="get('shadowsInfo').radius ?? get('radius')"
313
- [ambient]="get('shadowsInfo').ambient ?? 0.5"
314
- [intensity]="get('shadowsInfo').intensity ?? 1"
315
- [position]="get('spotLightPosition')"
316
- [size]="get('radius') * 4"
317
- [bias]="-get('shadowsInfo').shadowBias"
318
- [mapSize]="get('shadowsInfo').shadowSize"
319
- />
320
- </ngts-accumulative-shadows>
321
- </ngt-group>
322
- <ngts-environment
323
- *ngIf="get('environmentInfo')"
324
- [frames]="get('environmentInfo').frames"
325
- [near]="get('environmentInfo').near"
326
- [far]="get('environmentInfo').far"
327
- [resolution]="get('environmentInfo').resolution"
328
- [background]="get('environmentInfo').background"
329
- [blur]="get('environmentInfo').blur"
330
- [map]="get('environmentInfo').map"
331
- [files]="get('environmentInfo').files"
332
- [path]="get('environmentInfo').path"
333
- [preset]="get('environmentInfo').preset"
334
- [scene]="get('environmentInfo').scene"
335
- [extensions]="get('environmentInfo').extensions"
336
- [ground]="get('environmentInfo').ground"
337
- [encoding]="get('environmentInfo').encoding"
338
- />
339
- `,
340
- imports: [
341
- NgtArgs,
342
- NgtsBounds,
343
- NgtsStageRefit,
344
- NgtsCenter,
345
- NgIf,
346
- NgtsContactShadows,
347
- NgtsAccumulativeShadows,
348
- NgtsRandomizedLights,
349
- NgtsEnvironment,
350
- ],
351
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
352
- }]
353
- }], propDecorators: { preset: [{
354
- type: Input
355
- }], shadows: [{
356
- type: Input
357
- }], adjustCamera: [{
358
- type: Input
359
- }], environment: [{
360
- type: Input
361
- }], intensity: [{
362
- type: Input
363
- }], center: [{
364
- type: Input
365
- }], centered: [{
366
- type: Output
367
- }] } });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3RhZ2Uvc3RhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLEdBQUc7SUFDWixTQUFTLEVBQUU7UUFDUCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENB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QixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBOZ3RBcmdzLCBOZ3RSeFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFtYmllbnRMaWdodCwgR3JvdXAsIFBvaW50TGlnaHQsIFNwb3RMaWdodCwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzIH0gZnJvbSAnLi4vYWNjdW11bGF0aXZlLXNoYWRvd3MvYWNjdW11bGF0aXZlLXNoYWRvd3MnO1xuaW1wb3J0IHsgTmd0c1JhbmRvbWl6ZWRMaWdodHMgfSBmcm9tICcuLi9hY2N1bXVsYXRpdmUtc2hhZG93cy9yYW5kb21pemVkLWxpZ2h0cyc7XG5pbXBvcnQgeyBOZ3RzQm91bmRzLCBOR1RTX0JPVU5EU19BUEkgfSBmcm9tICcuLi9ib3VuZHMvYm91bmRzJztcbmltcG9ydCB7IE5ndHNDZW50ZXIgfSBmcm9tICcuLi9jZW50ZXIvY2VudGVyJztcbmltcG9ydCB7IE5ndHNDb250YWN0U2hhZG93cyB9IGZyb20gJy4uL2NvbnRhY3Qtc2hhZG93cy9jb250YWN0LXNoYWRvd3MnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50UHJlc2V0c1R5cGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudC9hc3NldHMnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50SW5wdXRzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQtaW5wdXRzJztcblxuY29uc3QgcHJlc2V0cyA9IHtcbiAgICByZW1icmFuZHQ6IHtcbiAgICAgICAgbWFpbjogWzEsIDIsIDFdLFxuICAgICAgICBmaWxsOiBbLTIsIC0wLjUsIC0yXSxcbiAgICB9LFxuICAgIHBvcnRyYWl0OiB7XG4gICAgICAgIG1haW46IFstMSwgMiwgMC41XSxcbiAgICAgICAgZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuICAgIH0sXG4gICAgdXBmcm9udDoge1xuICAgICAgICBtYWluOiBbMCwgMiwgMV0sXG4gICAgICAgIGZpbGw6IFstMSwgMC41LCAtMS41XSxcbiAgICB9LFxuICAgIHNvZnQ6IHtcbiAgICAgICAgbWFpbjogWy0yLCA0LCA0XSxcbiAgICAgICAgZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuICAgIH0sXG59O1xuXG50eXBlIE5ndHNTdGFnZVNoYWRvd3MgPSBQYXJ0aWFsPE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzPiAmXG4gICAgUGFydGlhbDxOZ3RzUmFuZG9taXplZExpZ2h0cz4gJlxuICAgIFBhcnRpYWw8Tmd0c0NvbnRhY3RTaGFkb3dzPiAmIHtcbiAgICAgICAgdHlwZTogJ2NvbnRhY3QnIHwgJ2FjY3VtdWxhdGl2ZSc7XG4gICAgICAgIC8qKiBTaGFkb3cgcGxhbmUgb2Zmc2V0LCBkZWZhdWx0OiAwICovXG4gICAgICAgIG9mZnNldD86IG51bWJlcjtcbiAgICAgICAgLyoqIFNoYWRvdyBiaWFzLCBkZWZhdWx0OiAtMC4wMDAxICovXG4gICAgICAgIGJpYXM/OiBudW1iZXI7XG4gICAgICAgIC8qKiBTaGFkb3cgbm9ybWFsIGJpYXMsIGRlZmF1bHQ6IDAgKi9cbiAgICAgICAgbm9ybWFsQmlhcz86IG51bWJlcjtcbiAgICAgICAgLyoqIFNoYWRvdyBtYXAgc2l6ZSwgZGVmYXVsdDogMTAyNCAqL1xuICAgICAgICBzaXplPzogbnVtYmVyO1xuICAgIH07XG5cbnR5cGUgTmd0c1N0YWdlUHJvcHMgPSB7XG4gICAgLyoqIExpZ2h0aW5nIHNldHVwLCBkZWZhdWx0OiBcInJlbWJyYW5kdFwiICovXG4gICAgcHJlc2V0PzpcbiAgICAgICAgfCAncmVtYnJhbmR0J1xuICAgICAgICB8ICdwb3J0cmFpdCdcbiAgICAgICAgfCAndXBmcm9udCdcbiAgICAgICAgfCAnc29mdCdcbiAgICAgICAgfCB7IG1haW46IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXTsgZmlsbDogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdIH07XG4gICAgLyoqIENvbnRyb2xzIHRoZSBncm91bmQgc2hhZG93cywgZGVmYXVsdDogXCJjb250YWN0XCIgKi9cbiAgICBzaGFkb3dzPzogYm9vbGVhbiB8ICdjb250YWN0JyB8ICdhY2N1bXVsYXRpdmUnIHwgTmd0c1N0YWdlU2hhZG93cztcbiAgICAvKiogT3B0aW9uYWxseSB3cmFwcyBhbmQgdGhlcmVieSBjZW50ZXJzIHRoZSBtb2RlbHMgdXNpbmcgPEJvdW5kcz4sIGNhbiBhbHNvIGJlIGEgbWFyZ2luLCBkZWZhdWx0OiB0cnVlICovXG4gICAgYWRqdXN0Q2FtZXJhPzogYm9vbGVhbiB8IG51bWJlcjtcbiAgICAvKiogVGhlIGRlZmF1bHQgZW52aXJvbm1lbnQsIGRlZmF1bHQ6IFwiY2l0eVwiICovXG4gICAgZW52aXJvbm1lbnQ/OiBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSB8IFBhcnRpYWw8Tmd0c0Vudmlyb25tZW50SW5wdXRzPjtcbiAgICAvKiogVGhlIGxpZ2h0aW5nIGludGVuc2l0eSwgZGVmYXVsdDogMC41ICovXG4gICAgaW50ZW5zaXR5PzogbnVtYmVyO1xuICAgIC8qKiBUbyBhZGp1c3QgY2VudGVyaW5nLCBkZWZhdWx0OiB1bmRlZmluZWQgKi9cbiAgICBjZW50ZXI/OiBQYXJ0aWFsPE5ndHNDZW50ZXI+O1xufTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0cy1zdGFnZS1yZWZpdCcsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhZ2VSZWZpdCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBib3VuZHNBcGkgPSBpbmplY3QoTkdUU19CT1VORFNfQVBJKTtcblxuICAgIEBJbnB1dCgpIHJhZGl1cyA9IDA7XG4gICAgQElucHV0KCkgYWRqdXN0Q2FtZXJhID0gdHJ1ZTtcblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5hZGp1c3RDYW1lcmEpIHtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzQXBpLnJlZnJlc2goKS5jbGlwKCkuZml0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4dGVuZCh7IEFtYmllbnRMaWdodCwgU3BvdExpZ2h0LCBWZWN0b3IyLCBQb2ludExpZ2h0LCBHcm91cCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXN0YWdlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtYW1iaWVudC1saWdodCBbaW50ZW5zaXR5XT1cImdldCgnaW50ZW5zaXR5JykhIC8gM1wiIC8+XG4gICAgICAgIDxuZ3Qtc3BvdC1saWdodFxuICAgICAgICAgICAgW3BlbnVtYnJhXT1cIjFcIlxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImdldCgnc3BvdExpZ2h0UG9zaXRpb24nKVwiXG4gICAgICAgICAgICBbaW50ZW5zaXR5XT1cImdldCgnaW50ZW5zaXR5JykhICogMlwiXG4gICAgICAgICAgICBbY2FzdFNoYWRvd109XCIhIWdldCgnc2hhZG93cycpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd0JpYXNcIiBhdHRhY2g9XCJzaGFkb3cuYmlhc1wiIC8+XG4gICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJnZXQoJ3NoYWRvd3NJbmZvJykubm9ybWFsQmlhc1wiIGF0dGFjaD1cInNoYWRvdy5ub3JtYWxCaWFzXCIgLz5cbiAgICAgICAgICAgIDxuZ3QtdmVjdG9yMlxuICAgICAgICAgICAgICAgICphcmdzPVwiW2dldCgnc2hhZG93c0luZm8nKS5zaGFkb3dTaXplLCBnZXQoJ3NoYWRvd3NJbmZvJykuc2hhZG93U2l6ZV1cIlxuICAgICAgICAgICAgICAgIGF0dGFjaD1cInNoYWRvdy5tYXBTaXplXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbmd0LXNwb3QtbGlnaHQ+XG4gICAgICAgIDxuZ3QtcG9pbnQtbGlnaHQgW3Bvc2l0aW9uXT1cImdldCgncG9pbnRMaWdodFBvc2l0aW9uJylcIiBbaW50ZW5zaXR5XT1cImdldCgnaW50ZW5zaXR5JylcIiAvPlxuXG4gICAgICAgIDxuZ3RzLWJvdW5kc1xuICAgICAgICAgICAgW2ZpdF09XCIhIWdldCgnYWRqdXN0Q2FtZXJhJylcIlxuICAgICAgICAgICAgW2NsaXBdPVwiISFnZXQoJ2FkanVzdENhbWVyYScpXCJcbiAgICAgICAgICAgIFttYXJnaW5dPVwiTnVtYmVyKGdldCgnYWRqdXN0Q2FtZXJhJykpXCJcbiAgICAgICAgICAgIFtvYnNlcnZlXT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmd0cy1zdGFnZS1yZWZpdCBbcmFkaXVzXT1cImdldCgncmFkaXVzJylcIiBbYWRqdXN0Q2FtZXJhXT1cIiEhZ2V0KCdhZGp1c3RDYW1lcmEnKVwiIC8+XG4gICAgICAgICAgICA8bmd0cy1jZW50ZXJcbiAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiWzAsIGdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dPZmZzZXQgLyAyLCAwXVwiXG4gICAgICAgICAgICAgICAgW3RvcF09XCIhIWdldCgnY2VudGVyJyk/LnRvcFwiXG4gICAgICAgICAgICAgICAgW3JpZ2h0XT1cIiEhZ2V0KCdjZW50ZXInKT8ucmlnaHRcIlxuICAgICAgICAgICAgICAgIFtib3R0b21dPVwiISFnZXQoJ2NlbnRlcicpPy5ib3R0b21cIlxuICAgICAgICAgICAgICAgIFtsZWZ0XT1cIiEhZ2V0KCdjZW50ZXInKT8ubGVmdFwiXG4gICAgICAgICAgICAgICAgW2Zyb250XT1cIiEhZ2V0KCdjZW50ZXInKT8uZnJvbnRcIlxuICAgICAgICAgICAgICAgIFtiYWNrXT1cIiEhZ2V0KCdjZW50ZXInKT8uYmFja1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVYXT1cIiEhZ2V0KCdjZW50ZXInKT8uZGlzYWJsZVhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlWV09XCIhIWdldCgnY2VudGVyJyk/LmRpc2FibGVZXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVpdPVwiISFnZXQoJ2NlbnRlcicpPy5kaXNhYmxlWlwiXG4gICAgICAgICAgICAgICAgW3ByZWNpc2VdPVwiISFnZXQoJ2NlbnRlcicpPy5wcmVjaXNlXCJcbiAgICAgICAgICAgICAgICAoY2VudGVyZWQpPVwib25DZW50ZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgPC9uZ3RzLWNlbnRlcj5cbiAgICAgICAgPC9uZ3RzLWJvdW5kcz5cbiAgICAgICAgPG5ndC1ncm91cCBbcG9zaXRpb25dPVwiWzAsIC1nZXQoJ2hlaWdodCcpIC8gMiAtIGdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dPZmZzZXQgLyAyLCAwXVwiPlxuICAgICAgICAgICAgPG5ndHMtY29udGFjdC1zaGFkb3dzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ3NoYWRvd3NJbmZvJykuY29udGFjdFNoYWRvd1wiXG4gICAgICAgICAgICAgICAgW3NjYWxlXT1cImdldCgncmFkaXVzJykgKiA0XCJcbiAgICAgICAgICAgICAgICBbZmFyXT1cImdldCgncmFkaXVzJylcIlxuICAgICAgICAgICAgICAgIFtibHVyXT1cIjJcIlxuICAgICAgICAgICAgICAgIFtvcGFjaXR5XT1cImdldCgnc2hhZG93c0luZm8nKS5vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cImdldCgnc2hhZG93c0luZm8nKS5oZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtzbW9vdGhdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNtb290aFwiXG4gICAgICAgICAgICAgICAgW3Jlc29sdXRpb25dPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnJlc29sdXRpb25cIlxuICAgICAgICAgICAgICAgIFtmcmFtZXNdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmZyYW1lc1wiXG4gICAgICAgICAgICAgICAgW3NjYWxlXT1cImdldCgnc2hhZG93c0luZm8nKS5zY2FsZVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cImdldCgnc2hhZG93c0luZm8nKS5jb2xvclwiXG4gICAgICAgICAgICAgICAgW2RlcHRoV3JpdGVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmRlcHRoV3JpdGVcIlxuICAgICAgICAgICAgICAgIFtyZW5kZXJPcmRlcl09XCJnZXQoJ3NoYWRvd3NJbmZvJykucmVuZGVyT3JkZXJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxuZ3RzLWFjY3VtdWxhdGl2ZS1zaGFkb3dzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ3NoYWRvd3NJbmZvJykuYWNjdW11bGF0aXZlU2hhZG93XCJcbiAgICAgICAgICAgICAgICBbdGVtcG9yYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2ZyYW1lc109XCIxMDBcIlxuICAgICAgICAgICAgICAgIFthbHBoYVRlc3RdPVwiMC45XCJcbiAgICAgICAgICAgICAgICBbdG9uZU1hcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2NhbGVdPVwiZ2V0KCdyYWRpdXMnKSAqIDRcIlxuICAgICAgICAgICAgICAgIFtvcGFjaXR5XT1cImdldCgnc2hhZG93c0luZm8nKS5vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICBbYWxwaGFUZXN0XT1cImdldCgnc2hhZG93c0luZm8nKS5hbHBoYVRlc3RcIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJnZXQoJ3NoYWRvd3NJbmZvJykuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtjb2xvckJsZW5kXT1cImdldCgnc2hhZG93c0luZm8nKS5jb2xvckJsZW5kXCJcbiAgICAgICAgICAgICAgICBbcmVzb2x1dGlvbl09XCJnZXQoJ3NoYWRvd3NJbmZvJykucmVzb2x1dGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5ndHMtcmFuZG9taXplZC1saWdodHNcbiAgICAgICAgICAgICAgICAgICAgW2Ftb3VudF09XCJnZXQoJ3NoYWRvd3NJbmZvJykuYW1vdW50ID8/IDhcIlxuICAgICAgICAgICAgICAgICAgICBbcmFkaXVzXT1cImdldCgnc2hhZG93c0luZm8nKS5yYWRpdXMgPz8gZ2V0KCdyYWRpdXMnKVwiXG4gICAgICAgICAgICAgICAgICAgIFthbWJpZW50XT1cImdldCgnc2hhZG93c0luZm8nKS5hbWJpZW50ID8/IDAuNVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnRlbnNpdHldPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmludGVuc2l0eSA/PyAxXCJcbiAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImdldCgnc3BvdExpZ2h0UG9zaXRpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImdldCgncmFkaXVzJykgKiA0XCJcbiAgICAgICAgICAgICAgICAgICAgW2JpYXNdPVwiLWdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dCaWFzXCJcbiAgICAgICAgICAgICAgICAgICAgW21hcFNpemVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd1NpemVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L25ndHMtYWNjdW11bGF0aXZlLXNoYWRvd3M+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgICAgICA8bmd0cy1lbnZpcm9ubWVudFxuICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpXCJcbiAgICAgICAgICAgIFtmcmFtZXNdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5mcmFtZXNcIlxuICAgICAgICAgICAgW25lYXJdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5uZWFyXCJcbiAgICAgICAgICAgIFtmYXJdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5mYXJcIlxuICAgICAgICAgICAgW3Jlc29sdXRpb25dPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5yZXNvbHV0aW9uXCJcbiAgICAgICAgICAgIFtiYWNrZ3JvdW5kXT1cImdldCgnZW52aXJvbm1lbnRJbmZvJykuYmFja2dyb3VuZFwiXG4gICAgICAgICAgICBbYmx1cl09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmJsdXJcIlxuICAgICAgICAgICAgW21hcF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLm1hcFwiXG4gICAgICAgICAgICBbZmlsZXNdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5maWxlc1wiXG4gICAgICAgICAgICBbcGF0aF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLnBhdGhcIlxuICAgICAgICAgICAgW3ByZXNldF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLnByZXNldFwiXG4gICAgICAgICAgICBbc2NlbmVdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5zY2VuZVwiXG4gICAgICAgICAgICBbZXh0ZW5zaW9uc109XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgW2dyb3VuZF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmdyb3VuZFwiXG4gICAgICAgICAgICBbZW5jb2RpbmddPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5lbmNvZGluZ1wiXG4gICAgICAgIC8+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5ndEFyZ3MsXG4gICAgICAgIE5ndHNCb3VuZHMsXG4gICAgICAgIE5ndHNTdGFnZVJlZml0LFxuICAgICAgICBOZ3RzQ2VudGVyLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ3RzQ29udGFjdFNoYWRvd3MsXG4gICAgICAgIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzLFxuICAgICAgICBOZ3RzUmFuZG9taXplZExpZ2h0cyxcbiAgICAgICAgTmd0c0Vudmlyb25tZW50LFxuICAgIF0sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhZ2UgZXh0ZW5kcyBOZ3RSeFN0b3JlPE5ndHNTdGFnZVByb3BzPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHJlYWRvbmx5IE51bWJlciA9IE51bWJlcjtcblxuICAgIEBJbnB1dCgpIHNldCBwcmVzZXQocHJlc2V0OiBOZ3RzU3RhZ2VQcm9wc1sncHJlc2V0J10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwcmVzZXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNoYWRvd3Moc2hhZG93czogTmd0c1N0YWdlUHJvcHNbJ3NoYWRvd3MnXSkge1xuICAgICAgICB0aGlzLnNldCh7IHNoYWRvd3MgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGFkanVzdENhbWVyYShhZGp1c3RDYW1lcmE6IE5ndHNTdGFnZVByb3BzWydhZGp1c3RDYW1lcmEnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGFkanVzdENhbWVyYSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IE5ndHNTdGFnZVByb3BzWydlbnZpcm9ubWVudCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZW52aXJvbm1lbnQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGludGVuc2l0eShpbnRlbnNpdHk6IE5ndHNTdGFnZVByb3BzWydpbnRlbnNpdHknXSkge1xuICAgICAgICB0aGlzLnNldCh7IGludGVuc2l0eSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY2VudGVyKGNlbnRlcjogTmd0c1N0YWdlUHJvcHNbJ2NlbnRlciddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2VudGVyIH0pO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBjZW50ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKSBhcyBOZ3RzQ2VudGVyWydjZW50ZXJlZCddO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBhZGp1c3RDYW1lcmE6IHRydWUsXG4gICAgICAgICAgICBpbnRlbnNpdHk6IDAuNSxcbiAgICAgICAgICAgIHNoYWRvd3M6ICdjb250YWN0JyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiAnY2l0eScsXG4gICAgICAgICAgICBwcmVzZXQ6ICdyZW1icmFuZHQnLFxuXG4gICAgICAgICAgICByYWRpdXM6IDAsXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnY29uZmlnJyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdwcmVzZXQnKS5waXBlKG1hcCgocHJlc2V0KSA9PiAodHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycgPyBwcmVzZXRzW3ByZXNldF0gOiBwcmVzZXQpKSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc2hhZG93c0luZm8nLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3NoYWRvd3MnKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoc2hhZG93cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdFNoYWRvdzogc2hhZG93cyA9PT0gJ2NvbnRhY3QnIHx8IChzaGFkb3dzIGFzIE5ndHNTdGFnZVNoYWRvd3MpPy50eXBlID09PSAnY29udGFjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRpdmVTaGFkb3c6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93cyA9PT0gJ2FjY3VtdWxhdGl2ZScgfHwgKHNoYWRvd3MgYXMgTmd0c1N0YWdlU2hhZG93cyk/LnR5cGUgPT09ICdhY2N1bXVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93QmlhczogKHNoYWRvd3MgYXMgTmd0c1N0YWdlU2hhZG93cyk/LmJpYXMgPz8gLTAuMDAwMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbEJpYXM6IChzaGFkb3dzIGFzIE5ndHNTdGFnZVNoYWRvd3MpPy5ub3JtYWxCaWFzID8/IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTaXplOiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKT8uc2l6ZSA/PyAxMDI0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKT8ub2Zmc2V0ID8/IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHNoYWRvd3MgPT09ICdzdHJpbmcnID8ge30gOiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKSB8fCB7fSksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc3BvdExpZ2h0UG9zaXRpb24nLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoWydjb25maWcnLCAncmFkaXVzJ10sICh7IGNvbmZpZywgcmFkaXVzIH0pID0+IFtcbiAgICAgICAgICAgICAgICBjb25maWcubWFpblswXSAqIHJhZGl1cyxcbiAgICAgICAgICAgICAgICBjb25maWcubWFpblsxXSAqIHJhZGl1cyxcbiAgICAgICAgICAgICAgICBjb25maWcubWFpblsyXSAqIHJhZGl1cyxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ3BvaW50TGlnaHRQb3NpdGlvbicsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbJ2NvbmZpZycsICdyYWRpdXMnXSwgKHsgY29uZmlnLCByYWRpdXMgfSkgPT4gW1xuICAgICAgICAgICAgICAgIGNvbmZpZy5maWxsWzBdICogcmFkaXVzLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5maWxsWzFdICogcmFkaXVzLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5maWxsWzJdICogcmFkaXVzLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnZW52aXJvbm1lbnRJbmZvJyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdlbnZpcm9ubWVudCcpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChlbnZpcm9ubWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVudmlyb25tZW50KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbnZpcm9ubWVudCA9PT0gJ3N0cmluZycpIHJldHVybiB7IHByZXNldDogZW52aXJvbm1lbnQgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudmlyb25tZW50O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25DZW50ZXJlZChwcm9wczoge1xuICAgICAgICAvKiogVGhlIG5leHQgcGFyZW50IGFib3ZlIDxDZW50ZXI+ICovXG4gICAgICAgIHBhcmVudDogVEhSRUUuT2JqZWN0M0Q7XG4gICAgICAgIC8qKiBUaGUgb3V0bW9zdCBjb250YWluZXIgZ3JvdXAgb2YgdGhlIDxDZW50ZXI+IGNvbXBvbmVudCAqL1xuICAgICAgICBjb250YWluZXI6IFRIUkVFLk9iamVjdDNEO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgZGVwdGg6IG51bWJlcjtcbiAgICAgICAgYm91bmRpbmdCb3g6IFRIUkVFLkJveDM7XG4gICAgICAgIGJvdW5kaW5nU3BoZXJlOiBUSFJFRS5TcGhlcmU7XG4gICAgICAgIGNlbnRlcjogVEhSRUUuVmVjdG9yMztcbiAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IG51bWJlcjtcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogbnVtYmVyO1xuICAgICAgICBkZXB0aEFsaWdubWVudDogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgY29uc3QgeyBib3VuZGluZ1NwaGVyZSwgd2lkdGgsIGhlaWdodCwgZGVwdGggfSA9IHByb3BzO1xuICAgICAgICB0aGlzLnNldCh7IHJhZGl1czogYm91bmRpbmdTcGhlcmUucmFkaXVzLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCB9KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBpZiAodGhpcy5jZW50ZXJlZC5vYnNlcnZlZCkgdGhpcy5jZW50ZXJlZC5lbWl0KHByb3BzKTtcbiAgICB9XG59XG4iXX0=