framefields 2.1.2 → 2.1.3

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 (228) hide show
  1. package/dist/audio/index.mjs +10 -10
  2. package/dist/{audio-GGuQ_JI0.mjs → audio-DqaHxtG3.mjs} +3 -3
  3. package/dist/{audio-GGuQ_JI0.mjs.map → audio-DqaHxtG3.mjs.map} +1 -1
  4. package/dist/{dist-Bb8BoMiw.mjs → dist-BgFYDCoL.mjs} +5 -3
  5. package/dist/dist-BgFYDCoL.mjs.map +1 -0
  6. package/dist/{dist-DkuDAIrG.mjs → dist-Cog5jyVI.mjs} +42 -40
  7. package/dist/dist-Cog5jyVI.mjs.map +1 -0
  8. package/dist/effects/index.mjs +34 -34
  9. package/dist/{effects-D6wFg2FR.mjs → effects-CXrmO68D.mjs} +2 -2
  10. package/dist/{effects-D6wFg2FR.mjs.map → effects-CXrmO68D.mjs.map} +1 -1
  11. package/dist/fonts/index.mjs +2 -2
  12. package/dist/{fonts-CZMYtbP7.mjs → fonts-BUVSUWXJ.mjs} +3 -3
  13. package/dist/fonts-BUVSUWXJ.mjs.map +1 -0
  14. package/dist/{gpu-DG3gI88-.mjs → gpu-Bj08zUc5.mjs} +2 -2
  15. package/dist/{gpu-DG3gI88-.mjs.map → gpu-Bj08zUc5.mjs.map} +1 -1
  16. package/dist/index-BcA8rep0.d.mts.map +1 -1
  17. package/dist/index-Cpkzy5XR.d.mts.map +1 -1
  18. package/dist/index.d.mts +55 -55
  19. package/dist/index.d.mts.map +1 -1
  20. package/dist/index.mjs +48 -48
  21. package/dist/preview/index.mjs +10 -10
  22. package/dist/{preview--rOXbBxl.mjs → preview-BOqCRCgp.mjs} +2 -2
  23. package/dist/{preview--rOXbBxl.mjs.map → preview-BOqCRCgp.mjs.map} +1 -1
  24. package/dist/preview-engine/audio.mjs +1 -1
  25. package/dist/preview-engine/{chunk-XC5WZNOY.mjs → chunk-5MSAA3DL.mjs} +2 -2
  26. package/dist/preview-engine/{chunk-5FC7GOWW.mjs → chunk-AE2336RK.mjs} +1 -1
  27. package/dist/preview-engine/chunk-AKMCLVJ6.mjs +5 -0
  28. package/dist/preview-engine/{chunk-E4RAFHZM.mjs → chunk-ATLWPS6N.mjs} +1 -1
  29. package/dist/preview-engine/chunk-JJ5EF3EY.mjs +1 -0
  30. package/dist/preview-engine/{chunk-BWJS6G7R.mjs → chunk-LQENNFBA.mjs} +6 -6
  31. package/dist/preview-engine/chunk-N4OG2BHX.mjs +3 -0
  32. package/dist/preview-engine/{chunk-7EPDVSCL.mjs → chunk-NI577OMQ.mjs} +1 -1
  33. package/dist/preview-engine/{chunk-QY7MHWZW.mjs → chunk-USM33CF5.mjs} +1 -1
  34. package/dist/preview-engine/effects.mjs +1 -1
  35. package/dist/preview-engine/fonts.mjs +1 -1
  36. package/dist/preview-engine/framefields.mjs +1 -1
  37. package/dist/preview-engine/player.mjs +5 -5
  38. package/dist/preview-engine/{renderers-YZEVPHPQ.mjs → renderers-BH5MXUTT.mjs} +1 -1
  39. package/dist/preview-engine/signals.mjs +1 -1
  40. package/dist/{program-Cc5AsBHz.mjs → program-D8JoVobr.mjs} +2 -2
  41. package/dist/{program-Cc5AsBHz.mjs.map → program-D8JoVobr.mjs.map} +1 -1
  42. package/dist/renderer/index.mjs +2 -2
  43. package/dist/{renderer-C7UZLOYk.mjs → renderer--2bwnzBi.mjs} +2 -2
  44. package/dist/{renderer-C7UZLOYk.mjs.map → renderer--2bwnzBi.mjs.map} +1 -1
  45. package/dist/{renderer-DzrM1KMN.mjs → renderer--JBbEfTc.mjs} +3 -3
  46. package/dist/{renderer-DzrM1KMN.mjs.map → renderer--JBbEfTc.mjs.map} +1 -1
  47. package/dist/{renderer-NXdm6HLb.mjs → renderer-0dD1VQsz.mjs} +3 -3
  48. package/dist/{renderer-NXdm6HLb.mjs.map → renderer-0dD1VQsz.mjs.map} +1 -1
  49. package/dist/{renderer-BygIYH8s.mjs → renderer-0fRv8mc5.mjs} +2 -2
  50. package/dist/{renderer-BygIYH8s.mjs.map → renderer-0fRv8mc5.mjs.map} +1 -1
  51. package/dist/renderer-3MuT2oZO.mjs +5 -0
  52. package/dist/{renderer-Bb8T5eRX.mjs → renderer-58bVJfZx.mjs} +2 -2
  53. package/dist/{renderer-Bb8T5eRX.mjs.map → renderer-58bVJfZx.mjs.map} +1 -1
  54. package/dist/renderer-AX_fHrXM.mjs +5 -0
  55. package/dist/{renderer-DkyXqrQ6.mjs → renderer-B-QXAPY0.mjs} +2 -2
  56. package/dist/{renderer-DkyXqrQ6.mjs.map → renderer-B-QXAPY0.mjs.map} +1 -1
  57. package/dist/renderer-B2-LQreV.mjs +5 -0
  58. package/dist/renderer-B2QhkksW.mjs +5 -0
  59. package/dist/renderer-B5CoE2Cv.mjs +5 -0
  60. package/dist/renderer-B6Au6f82.mjs +5 -0
  61. package/dist/renderer-B6qAMLXh.mjs +5 -0
  62. package/dist/{renderer-DX2qEJTL.mjs → renderer-B6x_Mmpf.mjs} +53 -53
  63. package/dist/{renderer-DX2qEJTL.mjs.map → renderer-B6x_Mmpf.mjs.map} +1 -1
  64. package/dist/{renderer-BWVsBB3t.mjs → renderer-B7jZuO6k.mjs} +2 -2
  65. package/dist/{renderer-BWVsBB3t.mjs.map → renderer-B7jZuO6k.mjs.map} +1 -1
  66. package/dist/{renderer-c4AorKyw.mjs → renderer-B8Wjov5-.mjs} +2 -2
  67. package/dist/{renderer-Br9BOkQs.mjs → renderer-B9ProG0Z.mjs} +2 -2
  68. package/dist/{renderer-Br9BOkQs.mjs.map → renderer-B9ProG0Z.mjs.map} +1 -1
  69. package/dist/renderer-BEfvyxL_.mjs +5 -0
  70. package/dist/renderer-BH4j4urG.mjs +5 -0
  71. package/dist/renderer-BH4zfzus.mjs +5 -0
  72. package/dist/{renderer-D8-zNjyz.mjs → renderer-BJD6Ouon.mjs} +2 -2
  73. package/dist/{renderer-D8-zNjyz.mjs.map → renderer-BJD6Ouon.mjs.map} +1 -1
  74. package/dist/{renderer-9L0p8IT3.mjs → renderer-BJ_GtjUk.mjs} +2 -2
  75. package/dist/{renderer-D2FFvxsq.mjs → renderer-BNyDJZzl.mjs} +3 -3
  76. package/dist/{renderer-D2FFvxsq.mjs.map → renderer-BNyDJZzl.mjs.map} +1 -1
  77. package/dist/{renderer-_1xGBbxn.mjs → renderer-BPDita2c.mjs} +5 -5
  78. package/dist/{renderer-_1xGBbxn.mjs.map → renderer-BPDita2c.mjs.map} +1 -1
  79. package/dist/renderer-BRjW_pgJ.mjs +6 -0
  80. package/dist/renderer-BVo6W_BO.mjs +5 -0
  81. package/dist/{renderer-Dy-DBU0X.mjs → renderer-BXZo84vM.mjs} +2 -2
  82. package/dist/{renderer-Dy-DBU0X.mjs.map → renderer-BXZo84vM.mjs.map} +1 -1
  83. package/dist/{renderer-Bg7647VN.mjs → renderer-Ba7Rc8DE.mjs} +3 -3
  84. package/dist/{renderer-Bg7647VN.mjs.map → renderer-Ba7Rc8DE.mjs.map} +1 -1
  85. package/dist/{renderer-BKf1qDwL.mjs → renderer-BaYEXoS3.mjs} +3 -3
  86. package/dist/{renderer-BKf1qDwL.mjs.map → renderer-BaYEXoS3.mjs.map} +1 -1
  87. package/dist/renderer-BbxBM7Vh.mjs +5 -0
  88. package/dist/{renderer-DWEvQ-hQ.mjs → renderer-BcFdZx4j.mjs} +3 -3
  89. package/dist/{renderer-DWEvQ-hQ.mjs.map → renderer-BcFdZx4j.mjs.map} +1 -1
  90. package/dist/{renderer-Dno-fujw.mjs → renderer-BeuG4dyz.mjs} +2 -2
  91. package/dist/{renderer-Dno-fujw.mjs.map → renderer-BeuG4dyz.mjs.map} +1 -1
  92. package/dist/{renderer-CoGP4Mvf.mjs → renderer-BlTPu9QT.mjs} +2 -2
  93. package/dist/{renderer-CoGP4Mvf.mjs.map → renderer-BlTPu9QT.mjs.map} +1 -1
  94. package/dist/{renderer-BI5rvAyo.mjs → renderer-Bm0W9qgc.mjs} +3 -3
  95. package/dist/{renderer-BI5rvAyo.mjs.map → renderer-Bm0W9qgc.mjs.map} +1 -1
  96. package/dist/{renderer-DDqwds9R.mjs → renderer-Bos8nRhT.mjs} +2 -2
  97. package/dist/{renderer-DDqwds9R.mjs.map → renderer-Bos8nRhT.mjs.map} +1 -1
  98. package/dist/{renderer-C27RfwXN.mjs → renderer-BqCx28Zb.mjs} +3 -3
  99. package/dist/{renderer-C27RfwXN.mjs.map → renderer-BqCx28Zb.mjs.map} +1 -1
  100. package/dist/{renderer-CMsjnZ0G.mjs → renderer-Br1OuXr_.mjs} +3 -3
  101. package/dist/{renderer-CMsjnZ0G.mjs.map → renderer-Br1OuXr_.mjs.map} +1 -1
  102. package/dist/{renderer-timEC0Gl.mjs → renderer-BwBc5xNu.mjs} +3 -3
  103. package/dist/{renderer-timEC0Gl.mjs.map → renderer-BwBc5xNu.mjs.map} +1 -1
  104. package/dist/{renderer-CydWqyf0.mjs → renderer-ByGPFIu2.mjs} +2 -2
  105. package/dist/{renderer-CydWqyf0.mjs.map → renderer-ByGPFIu2.mjs.map} +1 -1
  106. package/dist/{renderer-B1Zn91xt.mjs → renderer-C-AzyBir.mjs} +3 -3
  107. package/dist/{renderer-B1Zn91xt.mjs.map → renderer-C-AzyBir.mjs.map} +1 -1
  108. package/dist/{renderer-D0aZNkQE.mjs → renderer-C-BjN5HM.mjs} +3 -3
  109. package/dist/{renderer-D0aZNkQE.mjs.map → renderer-C-BjN5HM.mjs.map} +1 -1
  110. package/dist/renderer-C07CnYVd.mjs +5 -0
  111. package/dist/renderer-C2Z3vJCu.mjs +5 -0
  112. package/dist/renderer-C31qkFvm.mjs +5 -0
  113. package/dist/renderer-C3FV8cYm.mjs +5 -0
  114. package/dist/{renderer-DX8aBDqR.mjs → renderer-CATBdL9s.mjs} +2 -2
  115. package/dist/{renderer-DX8aBDqR.mjs.map → renderer-CATBdL9s.mjs.map} +1 -1
  116. package/dist/{renderer-DyzNM721.mjs → renderer-CBBhVrwO.mjs} +2 -2
  117. package/dist/{renderer-DyzNM721.mjs.map → renderer-CBBhVrwO.mjs.map} +1 -1
  118. package/dist/{renderer-DUhXH5Tz.mjs → renderer-CJnIeI0m.mjs} +3 -3
  119. package/dist/{renderer-DUhXH5Tz.mjs.map → renderer-CJnIeI0m.mjs.map} +1 -1
  120. package/dist/{renderer-DYIPWN_B.mjs → renderer-CMOAtGdC.mjs} +3 -3
  121. package/dist/{renderer-DYIPWN_B.mjs.map → renderer-CMOAtGdC.mjs.map} +1 -1
  122. package/dist/renderer-CQXszrAF.mjs +5 -0
  123. package/dist/{renderer-DqjITuT-.mjs → renderer-CVD0oPsf.mjs} +2 -2
  124. package/dist/{renderer-DqjITuT-.mjs.map → renderer-CVD0oPsf.mjs.map} +1 -1
  125. package/dist/renderer-CWK41ajp.mjs +5 -0
  126. package/dist/{renderer-qsg-JMuN.mjs → renderer-CZ7-42SE.mjs} +3 -3
  127. package/dist/{renderer-qsg-JMuN.mjs.map → renderer-CZ7-42SE.mjs.map} +1 -1
  128. package/dist/renderer-C_U225ub.mjs +5 -0
  129. package/dist/renderer-C_nPzKwZ.mjs +5 -0
  130. package/dist/{renderer-C5zpaQed.mjs → renderer-Cd5BLFnS.mjs} +2 -2
  131. package/dist/{renderer-C5zpaQed.mjs.map → renderer-Cd5BLFnS.mjs.map} +1 -1
  132. package/dist/renderer-Cd6I_dsC.mjs +5 -0
  133. package/dist/renderer-Ceb06HuN.mjs +5 -0
  134. package/dist/{renderer-BhKIZDsm.mjs → renderer-CgFs_3gW.mjs} +2 -2
  135. package/dist/{renderer-BhKIZDsm.mjs.map → renderer-CgFs_3gW.mjs.map} +1 -1
  136. package/dist/{renderer-DKqG9Lek.mjs → renderer-ChO8NNw9.mjs} +2 -2
  137. package/dist/{renderer-DKqG9Lek.mjs.map → renderer-ChO8NNw9.mjs.map} +1 -1
  138. package/dist/{renderer-C92mwhZz.mjs → renderer-ClIXn9ZU.mjs} +2 -2
  139. package/dist/{renderer-C92mwhZz.mjs.map → renderer-ClIXn9ZU.mjs.map} +1 -1
  140. package/dist/{renderer-C--Dqe-3.mjs → renderer-CmEvkdNL.mjs} +3 -3
  141. package/dist/{renderer-C--Dqe-3.mjs.map → renderer-CmEvkdNL.mjs.map} +1 -1
  142. package/dist/{renderer-DVnVnS3c.mjs → renderer-CmpV4YNd.mjs} +2 -2
  143. package/dist/{renderer-DVnVnS3c.mjs.map → renderer-CmpV4YNd.mjs.map} +1 -1
  144. package/dist/{renderer-CzBQgGD2.mjs → renderer-Cun5J3z9.mjs} +3 -3
  145. package/dist/{renderer-CzBQgGD2.mjs.map → renderer-Cun5J3z9.mjs.map} +1 -1
  146. package/dist/{renderer-DZD2G76E.mjs → renderer-CxE5__5p.mjs} +2 -2
  147. package/dist/{renderer-DZD2G76E.mjs.map → renderer-CxE5__5p.mjs.map} +1 -1
  148. package/dist/renderer-D3P5SLcx.mjs +5 -0
  149. package/dist/renderer-D9R8QXS7.mjs +5 -0
  150. package/dist/renderer-D9SJ4Fg9.mjs +5 -0
  151. package/dist/{renderer-DGtBOdst.mjs → renderer-D9mf-msP.mjs} +2 -2
  152. package/dist/renderer-DGAypVNj.mjs +5 -0
  153. package/dist/{renderer-FHyZn0em.mjs → renderer-DKmV8F6L.mjs} +2 -2
  154. package/dist/{renderer-FHyZn0em.mjs.map → renderer-DKmV8F6L.mjs.map} +1 -1
  155. package/dist/renderer-DLAAfwg0.mjs +5 -0
  156. package/dist/{renderer-Bc6J0iVG.mjs → renderer-DT1bySqu.mjs} +2 -2
  157. package/dist/{renderer-Bc6J0iVG.mjs.map → renderer-DT1bySqu.mjs.map} +1 -1
  158. package/dist/renderer-DTkBPkBu.mjs +5 -0
  159. package/dist/{renderer-Da06_9FZ.mjs → renderer-D_2Y_tdA.mjs} +2 -2
  160. package/dist/{renderer-Da06_9FZ.mjs.map → renderer-D_2Y_tdA.mjs.map} +1 -1
  161. package/dist/renderer-DbaTMTuo.mjs +5 -0
  162. package/dist/{renderer-CrAqu3Rg.mjs → renderer-Dd9NUd_I.mjs} +2 -2
  163. package/dist/{renderer-CrAqu3Rg.mjs.map → renderer-Dd9NUd_I.mjs.map} +1 -1
  164. package/dist/{renderer-BXQQxeNC.mjs → renderer-Dj_K1f1T.mjs} +3 -3
  165. package/dist/{renderer-BXQQxeNC.mjs.map → renderer-Dj_K1f1T.mjs.map} +1 -1
  166. package/dist/renderer-DsxhQdCp.mjs +5 -0
  167. package/dist/{renderer-CAJe9eLS.mjs → renderer-FSCTtHrt.mjs} +2 -2
  168. package/dist/{renderer-CAJe9eLS.mjs.map → renderer-FSCTtHrt.mjs.map} +1 -1
  169. package/dist/renderer-Hf1pCqoN.mjs +5 -0
  170. package/dist/{renderer-DoYdfDEA.mjs → renderer-KcV0gCO5.mjs} +3 -3
  171. package/dist/{renderer-DoYdfDEA.mjs.map → renderer-KcV0gCO5.mjs.map} +1 -1
  172. package/dist/renderer-V0UuIniZ.mjs +5 -0
  173. package/dist/renderer-VCnMXWqE.mjs +5 -0
  174. package/dist/{renderer-D2BRlqof.mjs → renderer-aw8EsrS9.mjs} +2 -2
  175. package/dist/{renderer-D2BRlqof.mjs.map → renderer-aw8EsrS9.mjs.map} +1 -1
  176. package/dist/{renderer-C5caYAA3.mjs → renderer-cjiONTY_.mjs} +2 -2
  177. package/dist/{renderer-C5caYAA3.mjs.map → renderer-cjiONTY_.mjs.map} +1 -1
  178. package/dist/{renderer-BhhSyHKF.mjs → renderer-hIbXvzPu.mjs} +2 -2
  179. package/dist/renderer-lifu3xIt.mjs +5 -0
  180. package/dist/renderer-mPDgLBi4.mjs +5 -0
  181. package/dist/{renderer-BaaOR3Ao.mjs → renderer-pNxZ_lV2.mjs} +2 -2
  182. package/dist/{renderer-BaaOR3Ao.mjs.map → renderer-pNxZ_lV2.mjs.map} +1 -1
  183. package/dist/{renderers-CP8CFWDs-CMYe4kvZ.mjs → renderers-CP8CFWDs-ZKjdDfYg.mjs} +2 -2
  184. package/dist/{renderers-CP8CFWDs-CMYe4kvZ.mjs.map → renderers-CP8CFWDs-ZKjdDfYg.mjs.map} +1 -1
  185. package/dist/signals/index.mjs +4 -4
  186. package/package.json +55 -55
  187. package/dist/dist-Bb8BoMiw.mjs.map +0 -1
  188. package/dist/dist-DkuDAIrG.mjs.map +0 -1
  189. package/dist/fonts-CZMYtbP7.mjs.map +0 -1
  190. package/dist/preview-engine/chunk-B43Z3J7J.mjs +0 -5
  191. package/dist/preview-engine/chunk-LGVEFPOG.mjs +0 -3
  192. package/dist/preview-engine/chunk-PNB3ERR3.mjs +0 -1
  193. package/dist/renderer-1VSi7Vum.mjs +0 -5
  194. package/dist/renderer-4BlpUHQT.mjs +0 -5
  195. package/dist/renderer-AzSX2-mZ.mjs +0 -5
  196. package/dist/renderer-B-cxK24t.mjs +0 -5
  197. package/dist/renderer-B5d5oM_D.mjs +0 -5
  198. package/dist/renderer-B8BdNjaN.mjs +0 -5
  199. package/dist/renderer-BKEfeg-4.mjs +0 -5
  200. package/dist/renderer-BLLOkeFB.mjs +0 -5
  201. package/dist/renderer-BTvov1NH.mjs +0 -5
  202. package/dist/renderer-BVun05IK.mjs +0 -5
  203. package/dist/renderer-B_3h5nhy.mjs +0 -5
  204. package/dist/renderer-BaZjoFYK.mjs +0 -5
  205. package/dist/renderer-BcApaCVe.mjs +0 -5
  206. package/dist/renderer-C14mKYCw.mjs +0 -5
  207. package/dist/renderer-CFqhAXkH.mjs +0 -5
  208. package/dist/renderer-CK-spD4j.mjs +0 -5
  209. package/dist/renderer-CLLzQTIk.mjs +0 -5
  210. package/dist/renderer-COwa6xlF.mjs +0 -5
  211. package/dist/renderer-CQPuuoVf.mjs +0 -6
  212. package/dist/renderer-CRd-cDqZ.mjs +0 -5
  213. package/dist/renderer-CTVnQAUm.mjs +0 -5
  214. package/dist/renderer-CbiEBSGx.mjs +0 -5
  215. package/dist/renderer-Cl7PruQ1.mjs +0 -5
  216. package/dist/renderer-CmuGGUDR.mjs +0 -5
  217. package/dist/renderer-CoNRrfqx.mjs +0 -5
  218. package/dist/renderer-CvIGa0mE.mjs +0 -5
  219. package/dist/renderer-CwMDPv0p.mjs +0 -5
  220. package/dist/renderer-DOHbhGPu.mjs +0 -5
  221. package/dist/renderer-DOmA6IKc.mjs +0 -5
  222. package/dist/renderer-DmCWc4JL.mjs +0 -5
  223. package/dist/renderer-OLaYikwi.mjs +0 -5
  224. package/dist/renderer-Q75RC5Uz.mjs +0 -5
  225. package/dist/renderer-T0LJ4Po3.mjs +0 -5
  226. package/dist/renderer-VuXt1hfq.mjs +0 -5
  227. package/dist/renderer-hY_2WLt3.mjs +0 -5
  228. package/dist/renderer-y4EqE06a.mjs +0 -5
@@ -1,4 +1,4 @@
1
- import{a as mi}from"./chunk-OCX5AD23.mjs";import{o as tt,r as Zn}from"./chunk-RQLMW6MA.mjs";import{h as Tn,l as Jn}from"./chunk-24P6DAB3.mjs";import{d as Yn}from"./chunk-6YJP57MZ.mjs";import{e as te,q as Vn,r as Wn,s as GA,t as zn,u as Xn}from"./chunk-BWJS6G7R.mjs";import{r as CA}from"./chunk-MTJHQATU.mjs";import{a as et}from"./chunk-IQC2I5A5.mjs";import{c as On,e as Kn}from"./chunk-IQKIHFNZ.mjs";import{d as Jt}from"./chunk-HYBAPT6I.mjs";import{o as TA}from"./chunk-YAQFFQPG.mjs";import{a as di,c as Hn,e as v}from"./chunk-BVF64D6H.mjs";var nr=di((Oa,tr)=>{v();var ot=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":ot(),apply:()=>ot(),construct:()=>ot()});tr.exports=ot()});v();var _n=new Float32Array(2048);for(let A=0;A<2048;A++)_n[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var jn=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;jn[A]=e}var $n=new Float32Array(2048/2),Ar=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;$n[A]=Math.cos(e),Ar[A]=Math.sin(e)}function hi(A,e){for(let t=0;t<2048;t++){let n=jn[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let i=e[t]??0;e[t]=e[n]??0,e[n]=i}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let i=0;i<2048;i+=t)for(let o=0;o<n;o++){let a=o*r,s=$n[a]??1,g=Ar[a]??0,l=A[i+o]??0,I=e[i+o]??0,B=A[i+o+n]??0,E=e[i+o+n]??0,Q=B*s-E*g,C=B*g+E*s;A[i+o]=l+Q,e[i+o]=I+C,A[i+o+n]=l-Q,e[i+o+n]=I-C}}}var nt=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,i=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let G=0;G<2048;G++){let M=a+G,w=0;M>=0&&M<i&&(r===1?w=e[0]?.[M]??0:r>=2&&(w=((e[0]?.[M]??0)+(e[1]?.[M]??0))*.5)),this.tempReal[G]=w*(_n[G]??1),this.tempImag[G]=0}hi(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let G=0;G<1024;G++){let M=this.tempReal[G]??0,w=this.tempImag[G]??0;s[G]=Math.sqrt(M*M+w*w)*g*2}let l=t/2048,I=Math.max(1,Math.round(20/l)),B=Math.max(I+1,Math.round(150/l)),E=0;for(let G=I;G<=B&&G<1024;G++)E+=(s[G]??0)*(s[G]??0);let Q=Math.min(1,Math.sqrt(E/(B-I+1))*4),C=0;for(let G=0;G<1024;G++){let M=(s[G]??0)-(this.previousBins[G]??0);M>0&&(C+=M),this.previousBins[G]=s[G]??0}let p=Math.min(1,C*.15),h=Math.round(300/l),d=Math.min(1023,Math.round(3400/l)),D=0;for(let G=h;G<=d;G++)D+=(s[G]??0)*(s[G]??0);let x=Math.min(1,Math.sqrt(D/(d-h+1))*3.5);return{fftBins:s,bassEnergy:Q,drumTransient:p,vocalEnergy:x,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},qn=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let i=new nt,o=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/o*a)+10),l=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(l);for(let I=0;I<l;I++){let B=I/a;this.frames[I]=i.extractAtTime(e,o,B)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),i=n.get(r);if(!i){let o=this.getFrameData(r);i=nt.createGpuBuffer(e,o),n.set(r,i)}return i}};v();var R={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};v();var _={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=R.normalize(A),n=t[0],r=t[1],i=t[2],o=Math.cos(e),a=Math.sin(e),s=1-o;return[s*n*n+o,s*n*r+a*i,s*n*i-a*r,0,s*n*r-a*i,s*r*r+o,s*r*i+a*n,0,s*n*i+a*r,s*r*i-a*n,s*i*i+o,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=R.subtract(e,A);R.lengthSq(n)===0?n=[0,0,1]:n=R.normalize(n);let r=R.cross(n,t);R.lengthSq(r)===0?r=[1,0,0]:r=R.normalize(r);let i=R.cross(r,n);return[r[0],i[0],n[0],0,r[1],i[1],n[1],0,r[2],i[2],n[2],0,-R.dot(r,A),-R.dot(i,A),-R.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),i=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*i,1,0,0,-t*n*i,0]},orthographic(A,e,t,n,r,i){let o=1/(e-A),a=1/(n-t),s=1/(i-r);return[2*o,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*o,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],i=A[0]*t+A[4]*n+A[8]*r+A[12],o=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[i*g,o*g,a*g]},projectRectangle(A,e,t){return[_.projectPoint(A,[0,0,0]),_.projectPoint(A,[e,0,0]),_.projectPoint(A,[e,t,0]),_.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};v();function Me(A,e,t=3){let n=0,r=1,i=1,o=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*i,o+=i,r*=2,i*=.5}return o>0?n/o:0}var Ie={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return _.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=_.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=Ie.computeViewMatrix(A),t=Ie.computeProjectionMatrix(A);return _.multiply(t,e)},dolly(A,e,t){let n=R.normalize(R.subtract(e,A)),r=R.multiplyScalar(n,t);return{eye:R.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let i=R.normalize(R.subtract(e,A)),o=R.normalize(R.cross(i,t)),a=R.cross(o,i),s=R.multiplyScalar(o,n),g=R.multiplyScalar(a,r),l=R.add(s,g);return{eye:R.add(A,l),target:R.add(e,l)}},orbit(A,e,t,n){let r=t*Math.PI/180,i=n*Math.PI/180,o=Math.cos(i),a=Math.sin(i),s=Math.cos(r),g=Math.sin(r),l=A[0]+e*o*g,I=A[1]-e*a,B=A[2]-e*o*s;return[l,I,B]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=R.normalize(R.subtract(A.target,A.eye)),i=R.normalize(R.cross(r,A.up)),o=R.cross(i,r),a=R.distance(A.eye,A.target),s=r,g=o;if(t!==0){let B=t*Math.PI/180,E=Math.cos(B),Q=Math.sin(B);s=R.normalize(R.subtract(R.multiplyScalar(s,E),R.multiplyScalar(i,Q)))}let l=R.normalize(R.cross(s,g));if(e!==0){let B=e*Math.PI/180,E=Math.cos(B),Q=Math.sin(B);s=R.normalize(R.add(R.multiplyScalar(s,E),R.multiplyScalar(g,Q))),g=R.normalize(R.cross(l,s))}if(n!==0){let B=n*Math.PI/180,E=Math.cos(B),Q=Math.sin(B);g=R.normalize(R.add(R.multiplyScalar(g,E),R.multiplyScalar(l,Q)))}let I=R.add(A.eye,R.multiplyScalar(s,a));return{...A,target:I,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:i=2.5,octaves:o=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*i,g=Me(s,a,o)*n,l=Me(s,a+101.5,o)*n,I=Me(s,a+203.7,o)*(n*.5),B=Me(s,a+307.1,o)*r,E=Me(s,a+409.3,o)*r,Q=R.normalize(R.subtract(A.target,A.eye)),C=R.normalize(R.cross(Q,A.up)),p=R.cross(C,Q),h=R.add(R.multiplyScalar(C,g),R.add(R.multiplyScalar(p,l),R.multiplyScalar(Q,I))),d=R.add(A.eye,h),D=R.add(A.target,R.add(R.multiplyScalar(C,E*10),R.multiplyScalar(p,B*10)));return{...A,eye:d,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let i=Math.abs(A-e),o=t/n,a=i/A*o*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let i=r[0]>0?e[0]:A[0],o=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*i+r[1]*o+r[2]*a+r[3]<0)return!1}return!0}};v();var pi={studio:{top:"#9da3ad",horizon:"#5d626b",bottom:"#202226",softboxes:3.5},soft:{top:"#f1efea",horizon:"#cfcac1",bottom:"#77726a",softboxes:1.2},sunset:{top:"#4d63a3",horizon:"#ff9a5c",bottom:"#3b2a28",softboxes:1},night:{top:"#121a3a",horizon:"#1f2950",bottom:"#05060b",softboxes:.5},neutral:{top:"#9a9a9a",horizon:"#808080",bottom:"#5c5c5c",softboxes:0}},yi={none:0,aces:1,agx:2,neutral:3};function rt(A){let e=On(A)??[0,0,0,1],t=n=>n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return[t(e[0]),t(e[1]),t(e[2])]}function er(A){let e=pi[A.preset??"studio"],t=A.intensity??1,n=r=>[r[0]*t,r[1]*t,r[2]*t];return{top:n(rt(A.top??e.top)),horizon:n(rt(A.horizon??e.horizon)),bottom:n(rt(A.bottom??e.bottom)),softboxes:(A.softboxes??e.softboxes)*t,rotationRad:(A.rotation??0)*Math.PI/180,exposureMultiplier:2**(A.exposure??0),toneMapping:yi[A.toneMapping??"neutral"],fog:A.fog?{color:rt(A.fog.color),start:A.fog.start,end:A.fog.end,opacity:Math.max(0,Math.min(1,A.fog.opacity??1))}:void 0}}v();var it=8,Kt=736;function Ot(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,i=A[1]??1,o=A[2]??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A=="object"&&A!==null){let r=A.r??1,i=A.g??1,o=A.b??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let i=Number.parseInt(r[0]+r[0],16)/255,o=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[i,o,a]}if(r.length>=6){let i=Number.parseInt(r.slice(0,2),16)/255,o=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[i,o,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,i=Number.parseFloat(t[2])/255,o=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,i)),Math.max(0,Math.min(1,o))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,i=Number.parseFloat(n[2])/100,o=Number.parseFloat(n[3])/100;return Di(r,i,o)}return[1,1,1]}function Di(A,e,t){if(e===0)return[t,t,t];let n=(o,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?o+(a-o)*6*g:g<1/2?a:g<2/3?o+(a-o)*(2/3-g)*6:o},r=t<.5?t*(1+e):t+e-t*e,i=2*t-r;return[n(i,r,A+1/3),n(i,r,A),n(i,r,A-1/3)]}var qA={computeNormalMatrix(A){let e=_.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:_.identity()},processLight(A){let e=Ot(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,i=A.position?A.position[2]:A.z??0,o=A.lightType??A.type??"directional",a=1;o==="ambient"?a=0:o==="directional"?a=1:o==="point"?a=2:o==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=R.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let h=A.target?A.target[0]:A.targetX??n,d=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??i,x=[h,d,D],G=R.subtract(x,[n,r,i]);R.length(G)>1e-4&&(s=R.normalize(G))}let g=Math.max(1,A.radius??1e3),l=A.decay??2,I=Math.max(.1,Math.min(180,A.angle??45)),B=Math.max(0,Math.min(1,A.penumbra??.2)),E=I*Math.PI/180,Q=E*(1-B),C=Math.cos(E),p=Math.cos(Q);return{posType:[n,r,i,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[C,p,l,0]}},packLightsUniforms(A,e,t){let n=new Float32Array(Kt/4);if(qA.packPhysicalBlock(n,A??[],e,t),(!A||A.length===0)&&!e)return n[4]=0,n[5]=0,n;let r=0,i=0,o=0,a=[];for(let g of A)if((g.lightType??g.type)==="ambient"){let I=Ot(g.color),B=g.intensity??1;r+=I[0]*B,i+=I[1]*B,o+=I[2]*B}else a.length<it&&a.push(qA.processLight(g));n[0]=r,n[1]=i,n[2]=o,n[3]=1,n[4]=a.length,n[5]=1;let s=8;for(let g=0;g<it;g++){if(g<a.length){let l=a[g];n[s+0]=l.posType[0],n[s+1]=l.posType[1],n[s+2]=l.posType[2],n[s+3]=l.posType[3],n[s+4]=l.dirRadius[0],n[s+5]=l.dirRadius[1],n[s+6]=l.dirRadius[2],n[s+7]=l.dirRadius[3],n[s+8]=l.colorIntensity[0],n[s+9]=l.colorIntensity[1],n[s+10]=l.colorIntensity[2],n[s+11]=l.colorIntensity[3],n[s+12]=l.spotParams[0],n[s+13]=l.spotParams[1],n[s+14]=l.spotParams[2],n[s+15]=l.spotParams[3]}else for(let l=0;l<16;l++)n[s+l]=0;s+=16}return n},shadowCasterIndex(A){let e=0;for(let t of A){let n=t.lightType??t.type;if(n!=="ambient"){if(e>=it)break;if(t.castShadow&&(n==="directional"||n==="spot"))return e;e++}}return-1},packPhysicalBlock(A,e,t,n){let r=8+it*16,i=0,o=0,a=0;for(let s of e){if((s.lightType??s.type)!=="ambient")continue;let[g,l,I]=Ot(s.color),B=s.intensity??1,E=Q=>Q<=.04045?Q/12.92:((Q+.055)/1.055)**2.4;i+=E(g)*B,o+=E(l)*B,a+=E(I)*B}if(A[r+0]=i,A[r+1]=o,A[r+2]=a,A[r+3]=1,t){let s=er(t);A[6]=1,A[7]=s.toneMapping,A[r+3]=s.exposureMultiplier,A.set([...s.top,s.rotationRad],r+4),A.set([...s.horizon,s.softboxes],r+8),A.set([...s.bottom,1],r+12),s.fog&&(A.set([...s.fog.color,1],r+16),A.set([s.fog.start,s.fog.end,s.fog.opacity,0],r+20))}if(n&&n.lightIndex>=0){A.set([1,n.lightIndex,n.softness,n.mapSize],r+24),A.set([n.bias,n.normalOffset,n.darkness,0],r+28);for(let s=0;s<16;s++)A[r+32+s]=n.matrix[s]??0}}};v();var Ge=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},i=typeof t=="string"?t:r.mtlText,o=[],a=[],s=[],g=[],l={materialName:"default",faces:[]};g.push(l);let I={};i&&Object.assign(I,A.parseMtl(i));let B=e.split(/\r?\n/);for(let k=0;k<B.length;k++){let eA=B[k]?.trim();if(!eA||eA.startsWith("#"))continue;let q=eA.split(/\s+/),sA=q[0]?.toLowerCase();if(sA==="mtllib"){let BA=q.slice(1).join(" ").trim();if(r.basePath&&typeof CA<"u"&&CA.existsSync)try{let T=TA.resolve(r.basePath,BA);if(CA.existsSync(T)){let iA=CA.readFileSync(T,"utf-8");Object.assign(I,A.parseMtl(iA))}}catch{}}else if(sA==="v"){let BA=Number.parseFloat(q[1]??"0"),T=Number.parseFloat(q[2]??"0"),iA=Number.parseFloat(q[3]??"0");o.push([BA,T,iA])}else if(sA==="vn"){let BA=Number.parseFloat(q[1]??"0"),T=Number.parseFloat(q[2]??"0"),iA=Number.parseFloat(q[3]??"0");a.push([BA,T,iA])}else if(sA==="vt"){let BA=Number.parseFloat(q[1]??"0"),T=q[2]!==void 0?Number.parseFloat(q[2]):0;s.push([BA,T])}else if(sA==="usemtl"){let BA=q[1]??"default";l.faces.length>0?(l={materialName:BA,faces:[]},g.push(l)):l.materialName=BA}else if(sA==="f"){let BA=[];for(let T=1;T<q.length;T++){let iA=q[T];if(!iA)continue;let oA=iA.split("/"),uA=Number.parseInt(oA[0]??"0",10),QA=oA[1]&&oA[1].length>0?Number.parseInt(oA[1],10):0,cA=oA[2]&&oA[2].length>0?Number.parseInt(oA[2],10):0;uA<0&&(uA=o.length+uA+1),QA<0&&(QA=s.length+QA+1),cA<0&&(cA=a.length+cA+1),BA.push({v:uA-1,vt:QA-1,vn:cA-1})}if(BA.length>=3)for(let T=1;T<BA.length-1;T++){let iA=BA[0],oA=BA[T],uA=BA[T+1];iA&&oA&&uA&&l.faces.push([iA,oA,uA])}}}let E=1/0,Q=1/0,C=1/0,p=-1/0,h=-1/0,d=-1/0;for(let k of o){let[eA,q,sA]=k;eA===void 0||q===void 0||sA===void 0||(eA<E&&(E=eA),q<Q&&(Q=q),sA<C&&(C=sA),eA>p&&(p=eA),q>h&&(h=q),sA>d&&(d=sA))}Number.isFinite(E)||(E=-1,Q=-1,C=-1,p=1,h=1,d=1);let D=(E+p)*.5,x=(Q+h)*.5,G=(C+d)*.5,M=Math.max(1e-4,p-E),w=Math.max(1e-4,h-Q),b=Math.max(1e-4,d-C),N=Math.max(M,w,b),U=1;r.normalizeSize&&r.normalizeSize>0&&(U=r.normalizeSize/N),typeof r.scale=="number"&&(U*=r.scale);let L=r.center??!1,F=L?D:0,J=L?x:0,W=L?G:0,K=[];for(let k=0;k<g.length;k++){let eA=g[k];if(!eA||eA.faces.length===0)continue;let q=new Map,sA=[],BA=[],T=[],iA=[],oA=!1;for(let cA of eA.faces)for(let gA of cA){let bA=`${gA.v}_${gA.vt}_${gA.vn}`,DA=q.get(bA);if(DA===void 0){DA=sA.length/3,q.set(bA,DA);let hA=o[gA.v]??[0,0,0],pA=((hA[0]??0)-F)*U,UA=((hA[1]??0)-J)*U,SA=((hA[2]??0)-W)*U;if(sA.push(pA,UA,SA),gA.vt>=0&&s[gA.vt]){let LA=s[gA.vt];T.push(LA[0]??0,1-(LA[1]??0))}else T.push(0,0);if(gA.vn>=0&&a[gA.vn]){oA=!0;let LA=a[gA.vn];BA.push(LA[0]??0,LA[1]??0,LA[2]??0)}else BA.push(0,0,0)}iA.push(DA)}if(!oA||r.smoothNormals){let cA=new Float32Array(sA.length);for(let gA=0;gA<iA.length;gA+=3){let bA=iA[gA],DA=iA[gA+1],hA=iA[gA+2],pA=[sA[bA*3],sA[bA*3+1],sA[bA*3+2]],UA=[sA[DA*3],sA[DA*3+1],sA[DA*3+2]],SA=[sA[hA*3],sA[hA*3+1],sA[hA*3+2]],LA=R.subtract(UA,pA),Nt=R.subtract(SA,pA),vA=R.cross(LA,Nt);cA[bA*3]+=vA[0],cA[bA*3+1]+=vA[1],cA[bA*3+2]+=vA[2],cA[DA*3]+=vA[0],cA[DA*3+1]+=vA[1],cA[DA*3+2]+=vA[2],cA[hA*3]+=vA[0],cA[hA*3+1]+=vA[1],cA[hA*3+2]+=vA[2]}for(let gA=0;gA<sA.length/3;gA++){let bA=cA[gA*3],DA=cA[gA*3+1],hA=cA[gA*3+2],pA=Math.hypot(bA,DA,hA)||1;BA[gA*3]=bA/pA,BA[gA*3+1]=DA/pA,BA[gA*3+2]=hA/pA}}let QA=sA.length/3>65535?new Uint32Array(iA):new Uint16Array(iA);K.push({id:`mesh_${k}`,name:eA.materialName,positions:new Float32Array(sA),normals:new Float32Array(BA),uvs:new Float32Array(T),indices:QA,materialName:eA.materialName})}let aA=(E-F)*U,j=(Q-J)*U,rA=(C-W)*U,fA=(p-F)*U,X=(h-J)*U,V=(d-W)*U,Z=fA-aA,mA=X-j,$=V-rA,lA=(aA+fA)*.5,IA=(j+X)*.5,yA=(rA+V)*.5,AA=Math.hypot(Z,mA,$)*.5;return{meshes:K,materials:I,animations:[],bounds:{min:[aA,j,rA],max:[fA,X,V],center:[lA,IA,yA],size:[Z,mA,$],boundingSphereRadius:AA}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let i of r){let o=i.trim();if(!o||o.startsWith("#"))continue;let a=o.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),I=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,l,I,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),I=Number.parseFloat(a[3]??"1");n.specularColor=[g,l,I],n.specularIntensity=(g+l+I)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),l=Number.parseFloat(a[2]??"0.2"),I=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,l,I]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else s==="map_kd"?n.diffuseTexture=a.slice(1).join(" "):(s==="map_bump"||s==="bump")&&(n.normalTexture=a.slice(1).join(" "))}return t}};function Pa(A,e,t={}){return Ge.parse(A,e,t)}function Ha(A){return Ge.parseMtl(A)}function Ne(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
1
+ import{a as mi}from"./chunk-OCX5AD23.mjs";import{o as tt,r as Zn}from"./chunk-RQLMW6MA.mjs";import{h as Tn,l as Jn}from"./chunk-24P6DAB3.mjs";import{d as Yn}from"./chunk-6YJP57MZ.mjs";import{e as te,q as Vn,r as Wn,s as GA,t as zn,u as Xn}from"./chunk-LQENNFBA.mjs";import{r as CA}from"./chunk-MTJHQATU.mjs";import{a as et}from"./chunk-IQC2I5A5.mjs";import{c as On,e as Kn}from"./chunk-IQKIHFNZ.mjs";import{d as Jt}from"./chunk-HYBAPT6I.mjs";import{o as TA}from"./chunk-YAQFFQPG.mjs";import{a as di,c as Hn,e as v}from"./chunk-BVF64D6H.mjs";var nr=di((Oa,tr)=>{v();var ot=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":ot(),apply:()=>ot(),construct:()=>ot()});tr.exports=ot()});v();var _n=new Float32Array(2048);for(let A=0;A<2048;A++)_n[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var jn=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;jn[A]=e}var $n=new Float32Array(2048/2),Ar=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;$n[A]=Math.cos(e),Ar[A]=Math.sin(e)}function hi(A,e){for(let t=0;t<2048;t++){let n=jn[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let i=e[t]??0;e[t]=e[n]??0,e[n]=i}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let i=0;i<2048;i+=t)for(let o=0;o<n;o++){let a=o*r,s=$n[a]??1,g=Ar[a]??0,l=A[i+o]??0,I=e[i+o]??0,B=A[i+o+n]??0,E=e[i+o+n]??0,Q=B*s-E*g,C=B*g+E*s;A[i+o]=l+Q,e[i+o]=I+C,A[i+o+n]=l-Q,e[i+o+n]=I-C}}}var nt=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,i=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let G=0;G<2048;G++){let M=a+G,w=0;M>=0&&M<i&&(r===1?w=e[0]?.[M]??0:r>=2&&(w=((e[0]?.[M]??0)+(e[1]?.[M]??0))*.5)),this.tempReal[G]=w*(_n[G]??1),this.tempImag[G]=0}hi(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let G=0;G<1024;G++){let M=this.tempReal[G]??0,w=this.tempImag[G]??0;s[G]=Math.sqrt(M*M+w*w)*g*2}let l=t/2048,I=Math.max(1,Math.round(20/l)),B=Math.max(I+1,Math.round(150/l)),E=0;for(let G=I;G<=B&&G<1024;G++)E+=(s[G]??0)*(s[G]??0);let Q=Math.min(1,Math.sqrt(E/(B-I+1))*4),C=0;for(let G=0;G<1024;G++){let M=(s[G]??0)-(this.previousBins[G]??0);M>0&&(C+=M),this.previousBins[G]=s[G]??0}let p=Math.min(1,C*.15),h=Math.round(300/l),d=Math.min(1023,Math.round(3400/l)),D=0;for(let G=h;G<=d;G++)D+=(s[G]??0)*(s[G]??0);let x=Math.min(1,Math.sqrt(D/(d-h+1))*3.5);return{fftBins:s,bassEnergy:Q,drumTransient:p,vocalEnergy:x,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},qn=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let i=new nt,o=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/o*a)+10),l=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(l);for(let I=0;I<l;I++){let B=I/a;this.frames[I]=i.extractAtTime(e,o,B)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),i=n.get(r);if(!i){let o=this.getFrameData(r);i=nt.createGpuBuffer(e,o),n.set(r,i)}return i}};v();var R={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};v();var _={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=R.normalize(A),n=t[0],r=t[1],i=t[2],o=Math.cos(e),a=Math.sin(e),s=1-o;return[s*n*n+o,s*n*r+a*i,s*n*i-a*r,0,s*n*r-a*i,s*r*r+o,s*r*i+a*n,0,s*n*i+a*r,s*r*i-a*n,s*i*i+o,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=R.subtract(e,A);R.lengthSq(n)===0?n=[0,0,1]:n=R.normalize(n);let r=R.cross(n,t);R.lengthSq(r)===0?r=[1,0,0]:r=R.normalize(r);let i=R.cross(r,n);return[r[0],i[0],n[0],0,r[1],i[1],n[1],0,r[2],i[2],n[2],0,-R.dot(r,A),-R.dot(i,A),-R.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),i=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*i,1,0,0,-t*n*i,0]},orthographic(A,e,t,n,r,i){let o=1/(e-A),a=1/(n-t),s=1/(i-r);return[2*o,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*o,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],i=A[0]*t+A[4]*n+A[8]*r+A[12],o=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[i*g,o*g,a*g]},projectRectangle(A,e,t){return[_.projectPoint(A,[0,0,0]),_.projectPoint(A,[e,0,0]),_.projectPoint(A,[e,t,0]),_.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};v();function Me(A,e,t=3){let n=0,r=1,i=1,o=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*i,o+=i,r*=2,i*=.5}return o>0?n/o:0}var Ie={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return _.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=_.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=Ie.computeViewMatrix(A),t=Ie.computeProjectionMatrix(A);return _.multiply(t,e)},dolly(A,e,t){let n=R.normalize(R.subtract(e,A)),r=R.multiplyScalar(n,t);return{eye:R.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let i=R.normalize(R.subtract(e,A)),o=R.normalize(R.cross(i,t)),a=R.cross(o,i),s=R.multiplyScalar(o,n),g=R.multiplyScalar(a,r),l=R.add(s,g);return{eye:R.add(A,l),target:R.add(e,l)}},orbit(A,e,t,n){let r=t*Math.PI/180,i=n*Math.PI/180,o=Math.cos(i),a=Math.sin(i),s=Math.cos(r),g=Math.sin(r),l=A[0]+e*o*g,I=A[1]-e*a,B=A[2]-e*o*s;return[l,I,B]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=R.normalize(R.subtract(A.target,A.eye)),i=R.normalize(R.cross(r,A.up)),o=R.cross(i,r),a=R.distance(A.eye,A.target),s=r,g=o;if(t!==0){let B=t*Math.PI/180,E=Math.cos(B),Q=Math.sin(B);s=R.normalize(R.subtract(R.multiplyScalar(s,E),R.multiplyScalar(i,Q)))}let l=R.normalize(R.cross(s,g));if(e!==0){let B=e*Math.PI/180,E=Math.cos(B),Q=Math.sin(B);s=R.normalize(R.add(R.multiplyScalar(s,E),R.multiplyScalar(g,Q))),g=R.normalize(R.cross(l,s))}if(n!==0){let B=n*Math.PI/180,E=Math.cos(B),Q=Math.sin(B);g=R.normalize(R.add(R.multiplyScalar(g,E),R.multiplyScalar(l,Q)))}let I=R.add(A.eye,R.multiplyScalar(s,a));return{...A,target:I,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:i=2.5,octaves:o=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*i,g=Me(s,a,o)*n,l=Me(s,a+101.5,o)*n,I=Me(s,a+203.7,o)*(n*.5),B=Me(s,a+307.1,o)*r,E=Me(s,a+409.3,o)*r,Q=R.normalize(R.subtract(A.target,A.eye)),C=R.normalize(R.cross(Q,A.up)),p=R.cross(C,Q),h=R.add(R.multiplyScalar(C,g),R.add(R.multiplyScalar(p,l),R.multiplyScalar(Q,I))),d=R.add(A.eye,h),D=R.add(A.target,R.add(R.multiplyScalar(C,E*10),R.multiplyScalar(p,B*10)));return{...A,eye:d,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let i=Math.abs(A-e),o=t/n,a=i/A*o*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let i=r[0]>0?e[0]:A[0],o=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*i+r[1]*o+r[2]*a+r[3]<0)return!1}return!0}};v();var pi={studio:{top:"#9da3ad",horizon:"#5d626b",bottom:"#202226",softboxes:3.5},soft:{top:"#f1efea",horizon:"#cfcac1",bottom:"#77726a",softboxes:1.2},sunset:{top:"#4d63a3",horizon:"#ff9a5c",bottom:"#3b2a28",softboxes:1},night:{top:"#121a3a",horizon:"#1f2950",bottom:"#05060b",softboxes:.5},neutral:{top:"#9a9a9a",horizon:"#808080",bottom:"#5c5c5c",softboxes:0}},yi={none:0,aces:1,agx:2,neutral:3};function rt(A){let e=On(A)??[0,0,0,1],t=n=>n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return[t(e[0]),t(e[1]),t(e[2])]}function er(A){let e=pi[A.preset??"studio"],t=A.intensity??1,n=r=>[r[0]*t,r[1]*t,r[2]*t];return{top:n(rt(A.top??e.top)),horizon:n(rt(A.horizon??e.horizon)),bottom:n(rt(A.bottom??e.bottom)),softboxes:(A.softboxes??e.softboxes)*t,rotationRad:(A.rotation??0)*Math.PI/180,exposureMultiplier:2**(A.exposure??0),toneMapping:yi[A.toneMapping??"neutral"],fog:A.fog?{color:rt(A.fog.color),start:A.fog.start,end:A.fog.end,opacity:Math.max(0,Math.min(1,A.fog.opacity??1))}:void 0}}v();var it=8,Kt=736;function Ot(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,i=A[1]??1,o=A[2]??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A=="object"&&A!==null){let r=A.r??1,i=A.g??1,o=A.b??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let i=Number.parseInt(r[0]+r[0],16)/255,o=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[i,o,a]}if(r.length>=6){let i=Number.parseInt(r.slice(0,2),16)/255,o=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[i,o,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,i=Number.parseFloat(t[2])/255,o=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,i)),Math.max(0,Math.min(1,o))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,i=Number.parseFloat(n[2])/100,o=Number.parseFloat(n[3])/100;return Di(r,i,o)}return[1,1,1]}function Di(A,e,t){if(e===0)return[t,t,t];let n=(o,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?o+(a-o)*6*g:g<1/2?a:g<2/3?o+(a-o)*(2/3-g)*6:o},r=t<.5?t*(1+e):t+e-t*e,i=2*t-r;return[n(i,r,A+1/3),n(i,r,A),n(i,r,A-1/3)]}var qA={computeNormalMatrix(A){let e=_.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:_.identity()},processLight(A){let e=Ot(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,i=A.position?A.position[2]:A.z??0,o=A.lightType??A.type??"directional",a=1;o==="ambient"?a=0:o==="directional"?a=1:o==="point"?a=2:o==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=R.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let h=A.target?A.target[0]:A.targetX??n,d=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??i,x=[h,d,D],G=R.subtract(x,[n,r,i]);R.length(G)>1e-4&&(s=R.normalize(G))}let g=Math.max(1,A.radius??1e3),l=A.decay??2,I=Math.max(.1,Math.min(180,A.angle??45)),B=Math.max(0,Math.min(1,A.penumbra??.2)),E=I*Math.PI/180,Q=E*(1-B),C=Math.cos(E),p=Math.cos(Q);return{posType:[n,r,i,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[C,p,l,0]}},packLightsUniforms(A,e,t){let n=new Float32Array(Kt/4);if(qA.packPhysicalBlock(n,A??[],e,t),(!A||A.length===0)&&!e)return n[4]=0,n[5]=0,n;let r=0,i=0,o=0,a=[];for(let g of A)if((g.lightType??g.type)==="ambient"){let I=Ot(g.color),B=g.intensity??1;r+=I[0]*B,i+=I[1]*B,o+=I[2]*B}else a.length<it&&a.push(qA.processLight(g));n[0]=r,n[1]=i,n[2]=o,n[3]=1,n[4]=a.length,n[5]=1;let s=8;for(let g=0;g<it;g++){if(g<a.length){let l=a[g];n[s+0]=l.posType[0],n[s+1]=l.posType[1],n[s+2]=l.posType[2],n[s+3]=l.posType[3],n[s+4]=l.dirRadius[0],n[s+5]=l.dirRadius[1],n[s+6]=l.dirRadius[2],n[s+7]=l.dirRadius[3],n[s+8]=l.colorIntensity[0],n[s+9]=l.colorIntensity[1],n[s+10]=l.colorIntensity[2],n[s+11]=l.colorIntensity[3],n[s+12]=l.spotParams[0],n[s+13]=l.spotParams[1],n[s+14]=l.spotParams[2],n[s+15]=l.spotParams[3]}else for(let l=0;l<16;l++)n[s+l]=0;s+=16}return n},shadowCasterIndex(A){let e=0;for(let t of A){let n=t.lightType??t.type;if(n!=="ambient"){if(e>=it)break;if(t.castShadow&&(n==="directional"||n==="spot"))return e;e++}}return-1},packPhysicalBlock(A,e,t,n){let r=8+it*16,i=0,o=0,a=0;for(let s of e){if((s.lightType??s.type)!=="ambient")continue;let[g,l,I]=Ot(s.color),B=s.intensity??1,E=Q=>Q<=.04045?Q/12.92:((Q+.055)/1.055)**2.4;i+=E(g)*B,o+=E(l)*B,a+=E(I)*B}if(A[r+0]=i,A[r+1]=o,A[r+2]=a,A[r+3]=1,t){let s=er(t);A[6]=1,A[7]=s.toneMapping,A[r+3]=s.exposureMultiplier,A.set([...s.top,s.rotationRad],r+4),A.set([...s.horizon,s.softboxes],r+8),A.set([...s.bottom,1],r+12),s.fog&&(A.set([...s.fog.color,1],r+16),A.set([s.fog.start,s.fog.end,s.fog.opacity,0],r+20))}if(n&&n.lightIndex>=0){A.set([1,n.lightIndex,n.softness,n.mapSize],r+24),A.set([n.bias,n.normalOffset,n.darkness,0],r+28);for(let s=0;s<16;s++)A[r+32+s]=n.matrix[s]??0}}};v();var Ge=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},i=typeof t=="string"?t:r.mtlText,o=[],a=[],s=[],g=[],l={materialName:"default",faces:[]};g.push(l);let I={};i&&Object.assign(I,A.parseMtl(i));let B=e.split(/\r?\n/);for(let k=0;k<B.length;k++){let eA=B[k]?.trim();if(!eA||eA.startsWith("#"))continue;let q=eA.split(/\s+/),sA=q[0]?.toLowerCase();if(sA==="mtllib"){let BA=q.slice(1).join(" ").trim();if(r.basePath&&typeof CA<"u"&&CA.existsSync)try{let T=TA.resolve(r.basePath,BA);if(CA.existsSync(T)){let iA=CA.readFileSync(T,"utf-8");Object.assign(I,A.parseMtl(iA))}}catch{}}else if(sA==="v"){let BA=Number.parseFloat(q[1]??"0"),T=Number.parseFloat(q[2]??"0"),iA=Number.parseFloat(q[3]??"0");o.push([BA,T,iA])}else if(sA==="vn"){let BA=Number.parseFloat(q[1]??"0"),T=Number.parseFloat(q[2]??"0"),iA=Number.parseFloat(q[3]??"0");a.push([BA,T,iA])}else if(sA==="vt"){let BA=Number.parseFloat(q[1]??"0"),T=q[2]!==void 0?Number.parseFloat(q[2]):0;s.push([BA,T])}else if(sA==="usemtl"){let BA=q[1]??"default";l.faces.length>0?(l={materialName:BA,faces:[]},g.push(l)):l.materialName=BA}else if(sA==="f"){let BA=[];for(let T=1;T<q.length;T++){let iA=q[T];if(!iA)continue;let oA=iA.split("/"),uA=Number.parseInt(oA[0]??"0",10),QA=oA[1]&&oA[1].length>0?Number.parseInt(oA[1],10):0,cA=oA[2]&&oA[2].length>0?Number.parseInt(oA[2],10):0;uA<0&&(uA=o.length+uA+1),QA<0&&(QA=s.length+QA+1),cA<0&&(cA=a.length+cA+1),BA.push({v:uA-1,vt:QA-1,vn:cA-1})}if(BA.length>=3)for(let T=1;T<BA.length-1;T++){let iA=BA[0],oA=BA[T],uA=BA[T+1];iA&&oA&&uA&&l.faces.push([iA,oA,uA])}}}let E=1/0,Q=1/0,C=1/0,p=-1/0,h=-1/0,d=-1/0;for(let k of o){let[eA,q,sA]=k;eA===void 0||q===void 0||sA===void 0||(eA<E&&(E=eA),q<Q&&(Q=q),sA<C&&(C=sA),eA>p&&(p=eA),q>h&&(h=q),sA>d&&(d=sA))}Number.isFinite(E)||(E=-1,Q=-1,C=-1,p=1,h=1,d=1);let D=(E+p)*.5,x=(Q+h)*.5,G=(C+d)*.5,M=Math.max(1e-4,p-E),w=Math.max(1e-4,h-Q),b=Math.max(1e-4,d-C),N=Math.max(M,w,b),U=1;r.normalizeSize&&r.normalizeSize>0&&(U=r.normalizeSize/N),typeof r.scale=="number"&&(U*=r.scale);let L=r.center??!1,F=L?D:0,J=L?x:0,W=L?G:0,K=[];for(let k=0;k<g.length;k++){let eA=g[k];if(!eA||eA.faces.length===0)continue;let q=new Map,sA=[],BA=[],T=[],iA=[],oA=!1;for(let cA of eA.faces)for(let gA of cA){let bA=`${gA.v}_${gA.vt}_${gA.vn}`,DA=q.get(bA);if(DA===void 0){DA=sA.length/3,q.set(bA,DA);let hA=o[gA.v]??[0,0,0],pA=((hA[0]??0)-F)*U,UA=((hA[1]??0)-J)*U,SA=((hA[2]??0)-W)*U;if(sA.push(pA,UA,SA),gA.vt>=0&&s[gA.vt]){let LA=s[gA.vt];T.push(LA[0]??0,1-(LA[1]??0))}else T.push(0,0);if(gA.vn>=0&&a[gA.vn]){oA=!0;let LA=a[gA.vn];BA.push(LA[0]??0,LA[1]??0,LA[2]??0)}else BA.push(0,0,0)}iA.push(DA)}if(!oA||r.smoothNormals){let cA=new Float32Array(sA.length);for(let gA=0;gA<iA.length;gA+=3){let bA=iA[gA],DA=iA[gA+1],hA=iA[gA+2],pA=[sA[bA*3],sA[bA*3+1],sA[bA*3+2]],UA=[sA[DA*3],sA[DA*3+1],sA[DA*3+2]],SA=[sA[hA*3],sA[hA*3+1],sA[hA*3+2]],LA=R.subtract(UA,pA),Nt=R.subtract(SA,pA),vA=R.cross(LA,Nt);cA[bA*3]+=vA[0],cA[bA*3+1]+=vA[1],cA[bA*3+2]+=vA[2],cA[DA*3]+=vA[0],cA[DA*3+1]+=vA[1],cA[DA*3+2]+=vA[2],cA[hA*3]+=vA[0],cA[hA*3+1]+=vA[1],cA[hA*3+2]+=vA[2]}for(let gA=0;gA<sA.length/3;gA++){let bA=cA[gA*3],DA=cA[gA*3+1],hA=cA[gA*3+2],pA=Math.hypot(bA,DA,hA)||1;BA[gA*3]=bA/pA,BA[gA*3+1]=DA/pA,BA[gA*3+2]=hA/pA}}let QA=sA.length/3>65535?new Uint32Array(iA):new Uint16Array(iA);K.push({id:`mesh_${k}`,name:eA.materialName,positions:new Float32Array(sA),normals:new Float32Array(BA),uvs:new Float32Array(T),indices:QA,materialName:eA.materialName})}let aA=(E-F)*U,j=(Q-J)*U,rA=(C-W)*U,fA=(p-F)*U,X=(h-J)*U,V=(d-W)*U,Z=fA-aA,mA=X-j,$=V-rA,lA=(aA+fA)*.5,IA=(j+X)*.5,yA=(rA+V)*.5,AA=Math.hypot(Z,mA,$)*.5;return{meshes:K,materials:I,animations:[],bounds:{min:[aA,j,rA],max:[fA,X,V],center:[lA,IA,yA],size:[Z,mA,$],boundingSphereRadius:AA}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let i of r){let o=i.trim();if(!o||o.startsWith("#"))continue;let a=o.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),I=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,l,I,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),I=Number.parseFloat(a[3]??"1");n.specularColor=[g,l,I],n.specularIntensity=(g+l+I)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),l=Number.parseFloat(a[2]??"0.2"),I=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,l,I]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else s==="map_kd"?n.diffuseTexture=a.slice(1).join(" "):(s==="map_bump"||s==="bump")&&(n.normalTexture=a.slice(1).join(" "))}return t}};function Pa(A,e,t={}){return Ge.parse(A,e,t)}function Ha(A){return Ge.parseMtl(A)}function Ne(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
2
2
  v `)||r.includes("\rv "))&&typeof CA<"u"&&CA.existsSync)try{let o=A.startsWith("file://")?A.slice(7):A;try{o=decodeURIComponent(o)}catch{}CA.existsSync(o)?(n=CA.readFileSync(o,"utf-8"),t={basePath:t.basePath??TA.dirname(o),...t}):n=A}catch{n=A}else n=A}return Ge.parse(n,e,t)}v();var ir=Hn(nr(),1);var re=class A{static FBX_KTIME=46186158e3;static parse(e,t={}){let n=typeof e=="string"?A.parseAscii(e):A.isBinary(e)?A.parseBinary(e):A.parseAscii(new TextDecoder().decode(e));return A.buildModelFromTree(n,t)}static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let r=0;r<n.length;r++)if(t[r]!==n.charCodeAt(r))return!1;return!0}static parseBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(23,!0)>=7500,o=27,a={name:"Root",props:[],children:[]},s=()=>{if(o>=t.byteLength)return null;let g,l,I;if(i){if(o+25>t.byteLength)return null;g=Number(n.getBigUint64(o,!0)),l=Number(n.getBigUint64(o+8,!0)),I=n.getUint8(o+24),o+=25}else{if(o+13>t.byteLength)return null;g=n.getUint32(o,!0),l=n.getUint32(o+4,!0),I=n.getUint8(o+12),o+=13}if(g===0)return null;let B=new TextDecoder().decode(t.subarray(o,o+I));o+=I;let E=[];for(let C=0;C<l;C++){let p=String.fromCharCode(t[o]);switch(o+=1,p){case"Y":{E.push(n.getInt16(o,!0)),o+=2;break}case"C":case"B":{E.push(n.getUint8(o)!==0),o+=1;break}case"I":{E.push(n.getInt32(o,!0)),o+=4;break}case"F":{E.push(n.getFloat32(o,!0)),o+=4;break}case"D":{E.push(n.getFloat64(o,!0)),o+=8;break}case"L":{E.push(Number(n.getBigInt64(o,!0))),o+=8;break}case"S":{let h=n.getUint32(o,!0);o+=4;let d=new TextDecoder().decode(t.subarray(o,o+h));E.push(d),o+=h;break}case"R":{let h=n.getUint32(o,!0);o+=4;let d=t.subarray(o,o+h);E.push(d),o+=h;break}case"f":case"d":case"i":case"l":case"b":case"c":{let h=n.getUint32(o,!0),d=n.getUint32(o+4,!0),D=n.getUint32(o+8,!0);o+=12;let x;if(d===1){let M=t.subarray(o,o+D);x=(0,ir.inflateSync)(M),o+=D}else{let w=h*(p==="d"||p==="l"?8:p==="f"||p==="i"?4:1);x=t.subarray(o,o+w),o+=w}let G=new DataView(x.buffer,x.byteOffset,x.byteLength);if(p==="f"){let M=new Float32Array(h);for(let w=0;w<h;w++)M[w]=G.getFloat32(w*4,!0);E.push(M)}else if(p==="d"){let M=new Float64Array(h);for(let w=0;w<h;w++)M[w]=G.getFloat64(w*8,!0);E.push(M)}else if(p==="i"){let M=new Int32Array(h);for(let w=0;w<h;w++)M[w]=G.getInt32(w*4,!0);E.push(M)}else if(p==="l"){let M=new Float64Array(h);for(let w=0;w<h;w++)M[w]=Number(G.getBigInt64(w*8,!0));E.push(M)}else if(p==="b"){let M=new Uint8Array(h);for(let w=0;w<h;w++)M[w]=G.getUint8(w);E.push(M)}else E.push(x);break}default:break}}let Q=[];for(;o<g;){let C=s();if(C)Q.push(C);else break}return o=g,{name:B,props:E,children:Q}};for(;o<t.byteLength-(i?25:13);){let g=s();if(g)a.children.push(g);else break}return a}static parseAscii(e){let t={name:"Root",props:[],children:[]},n=[t],r=e.split(/\r?\n/);for(let i=0;i<r.length;i++){let o=r[i]?.trim();if(!o||o.startsWith(";"))continue;if(o==="}"){n.length>1&&n.pop();continue}let a=o.indexOf(":");if(a===-1)continue;let s=o.substring(0,a).trim(),g=o.substring(a+1).trim(),l=g.endsWith("{"),I=l?g.slice(0,-1).trim():g,B=[];if(I){let C=I.split(",").map(p=>p.trim());for(let p of C)p.startsWith('"')&&p.endsWith('"')?B.push(p.slice(1,-1)):Number.isNaN(Number(p))?B.push(p):B.push(Number(p))}let E={name:s,props:B,children:[]},Q=n[n.length-1];Q&&Q.children.push(E),l&&n.push(E)}return t}static buildModelFromTree(e,t={}){let n=e.children.find(b=>b.name==="Objects"),r=e.children.find(b=>b.name==="Connections"),i=new Map;if(n)for(let b of n.children){let N=b.props[0]??0,L=String(b.props[1]??"").split("::"),F=L.length>1?L[1]:L[0],J=String(b.props[2]??b.name);i.set(N,{id:N,name:F,type:J,node:b})}let o=[];if(r){for(let b of r.children)if(b.name==="C"||b.name==="Connect"){let N=String(b.props[0]),U=b.props[1]??0,L=b.props[2]??0,F=N==="OP"?String(b.props[3]):void 0;o.push({childId:U,parentId:L,propName:F})}}let a=[],s={};function g(b){if(!b)return[];if(b.props[0]instanceof Float32Array||b.props[0]instanceof Float64Array||b.props[0]instanceof Int32Array||Array.isArray(b.props[0]))return b.props[0];let N=b.children.find(U=>U.name==="a");return N&&N.props.length>0?N.props:Array.isArray(b.props)&&b.props.length>0&&typeof b.props[0]=="number"?b.props:[]}for(let[b,N]of i)if(N.node.name==="Geometry"&&(N.type==="Mesh"||N.node.props[2]==="Mesh"||N.type==="")){let U=N.node,L=U.children.find(T=>T.name==="Vertices"),F=U.children.find(T=>T.name==="PolygonVertexIndex"),J=U.children.find(T=>T.name==="LayerElementNormal"),W=U.children.find(T=>T.name==="LayerElementUV");if(!L||!F)continue;let K=g(L),aA=g(F),j=J?.children.find(T=>T.name==="Normals"),rA=g(j),fA=W?.children.find(T=>T.name==="UV"),X=W?.children.find(T=>T.name==="UVIndex"),V=g(fA),Z=g(X),mA=[],$=[],lA=[];for(let T=0;T<aA.length;T++){let iA=aA[T];if(iA<0){if(lA.push(-(iA+1)),$.push(T),lA.length>=3)for(let oA=1;oA<lA.length-1;oA++)mA.push([lA[0],lA[oA],lA[oA+1]]);lA=[]}else lA.push(iA),$.push(T)}let IA=[],yA=[],AA=[],k=[];for(let T=0;T<mA.length;T++){let iA=mA[T];for(let oA=0;oA<3;oA++){let uA=iA[oA],QA=IA.length/3,cA=K[uA*3]??0,gA=K[uA*3+1]??0,bA=K[uA*3+2]??0;if(IA.push(cA,gA,bA),rA.length>0){let DA=rA[uA*3]??0,hA=rA[uA*3+1]??0,pA=rA[uA*3+2]??0;yA.push(DA,hA,pA)}else yA.push(0,0,1);if(V.length>0){let DA=uA;Z.length>0&&(DA=Z[uA]??uA);let hA=V[DA*2]??0,pA=V[DA*2+1]??0;AA.push(hA,1-pA)}else AA.push(0,0);k.push(QA)}}if(rA.length===0||t.smoothNormals){let T=new Float32Array(IA.length);for(let iA=0;iA<k.length;iA+=3){let oA=k[iA],uA=k[iA+1],QA=k[iA+2],cA=[IA[oA*3],IA[oA*3+1],IA[oA*3+2]],gA=[IA[uA*3],IA[uA*3+1],IA[uA*3+2]],bA=[IA[QA*3],IA[QA*3+1],IA[QA*3+2]],DA=R.subtract(gA,cA),hA=R.subtract(bA,cA),pA=R.cross(DA,hA);T[oA*3]+=pA[0],T[oA*3+1]+=pA[1],T[oA*3+2]+=pA[2],T[uA*3]+=pA[0],T[uA*3+1]+=pA[1],T[uA*3+2]+=pA[2],T[QA*3]+=pA[0],T[QA*3+1]+=pA[1],T[QA*3+2]+=pA[2]}for(let iA=0;iA<IA.length/3;iA++){let oA=T[iA*3],uA=T[iA*3+1],QA=T[iA*3+2],cA=Math.hypot(oA,uA,QA)||1;yA[iA*3]=oA/cA,yA[iA*3+1]=uA/cA,yA[iA*3+2]=QA/cA}}let eA=o.find(T=>T.parentId===b&&i.get(T.childId)?.type==="Deformer"&&i.get(T.childId)?.node.props[2]==="Skin"),q,sA;if(eA){let T=IA.length/3;q=new Float32Array(T*4),sA=new Float32Array(T*4),o.filter(oA=>oA.parentId===eA.childId&&i.get(oA.childId)?.type==="Deformer"&&i.get(oA.childId)?.node.props[2]==="Cluster").forEach((oA,uA)=>{let QA=i.get(oA.childId)?.node,cA=QA?.children.find(bA=>bA.name==="Indexes"),gA=QA?.children.find(bA=>bA.name==="Weights");if(cA&&gA){let bA=g(cA),DA=g(gA);for(let hA=0;hA<bA.length;hA++){let pA=DA[hA]??0;for(let UA=0;UA<T;UA++)for(let SA=0;SA<4;SA++)if(sA[UA*4+SA]===0){q[UA*4+SA]=uA,sA[UA*4+SA]=pA;break}}}})}let BA=IA.length/3>65535;a.push({id:`fbx_mesh_${b}`,name:N.name,positions:new Float32Array(IA),normals:new Float32Array(yA),uvs:new Float32Array(AA),indices:BA?new Uint32Array(k):new Uint16Array(k),jointIndices:q,jointWeights:sA,materialName:N.name})}for(let[,b]of i)if(b.node.name==="Material"){let U=b.node.children.find(W=>W.name==="Properties70"),L=[1,1,1,1],F=32,J=1;if(U){for(let W of U.children)if(W.name==="P"){let K=String(W.props[0]);if(K==="DiffuseColor"||K==="Color"){let aA=Number(W.props[4]??1),j=Number(W.props[5]??1),rA=Number(W.props[6]??1);L=[aA,j,rA,1]}else K==="Shininess"||K==="ShininessExponent"?F=Number(W.props[4]??32):K==="Opacity"&&(J=Number(W.props[4]??1),L[3]=J)}}s[b.name]={name:b.name,diffuseColor:L,shininess:F,opacity:J}}let l=[];for(let[b,N]of i)if(N.node.name==="AnimationStack"){let U=N.name||"Take 001",L=[],F=o.find(W=>W.parentId===b&&i.get(W.childId)?.node.name==="AnimationLayer");if(F){let W=o.filter(aA=>aA.parentId===F.childId&&i.get(aA.childId)?.node.name==="AnimationCurveNode"),K=new Map;for(let aA of W){let j=i.get(aA.childId);if(!j)continue;let rA=o.find($=>$.childId===j.id&&i.get($.parentId)?.node.name==="Model"),fA=rA?i.get(rA.parentId):void 0,X=rr(rA?.propName)??rr(j.name);if(!X)continue;let V=`${fA?.id??j.id}|${X}`,Z=K.get(V);if(!Z){let $=fA?.node;Z={nodeName:fA?.name??j.name,model:$,kind:X,defaults:wi($,j.node,X),channels:[void 0,void 0,void 0]},K.set(V,Z)}o.filter($=>$.parentId===j.id&&i.get($.childId)?.node.name==="AnimationCurve").forEach(($,lA)=>{let IA=bi($.propName)??lA;if(IA>2)return;let yA=i.get($.childId)?.node,AA=g(yA?.children.find(q=>q.name==="KeyTime")),k=g(yA?.children.find(q=>q.name==="KeyValueFloat")),eA=Math.min(AA.length,k.length);eA!==0&&(Z.channels[IA]={times:Array.from(AA.slice(0,eA),q=>Number(q)),values:Array.from(k.slice(0,eA),q=>Number(q))})})}for(let aA of K.values()){let j=Fi(aA);j&&L.push(j)}}let J=1;for(let W of L)if(W.times.length>0){let K=W.times[W.times.length-1]??0;K>J&&(J=K)}l.push({name:U,duration:J,fps:30,tracks:L})}let I=1/0,B=1/0,E=1/0,Q=-1/0,C=-1/0,p=-1/0;for(let b of a)for(let N=0;N<b.positions.length;N+=3){let U=b.positions[N],L=b.positions[N+1],F=b.positions[N+2];U<I&&(I=U),L<B&&(B=L),F<E&&(E=F),U>Q&&(Q=U),L>C&&(C=L),F>p&&(p=F)}Number.isFinite(I)||(I=-1,B=-1,E=-1,Q=1,C=1,p=1);let h=Q-I,d=C-B,D=p-E,x=(I+Q)*.5,G=(B+C)*.5,M=(E+p)*.5,w=Math.hypot(h,d,D)*.5;return{meshes:a,materials:s,animations:l,bounds:{min:[I,B,E],max:[Q,C,p],center:[x,G,M],size:[h,d,D],boundingSphereRadius:w}}}};function rr(A){switch(A){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function bi(A){switch(A){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function Yt(A,e){let n=A?.children.find(r=>r.name==="Properties70")?.children.find(r=>r.name==="P"&&r.props[0]===e);if(n)return n.props.slice(4).map(r=>Number(r))}function wi(A,e,t){let n=t==="S"?1:0,r=Yt(A,t==="T"?"Lcl Translation":t==="R"?"Lcl Rotation":"Lcl Scaling"),i=[n,n,n];for(let o=0;o<3;o++){let a=r?.[o],s=Yt(e,`d|${"XYZ"[o]}`)?.[0],g=a??s;g!==void 0&&Number.isFinite(g)&&(i[o]=g)}return i}var xi=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function Mi(A){let e=Yt(A,"RotationOrder")?.[0]??0;return xi[e]??"XYZ"}function Gi(A,e="XYZ"){let t=[0,0,0,1];for(let n of e){let r="XYZ".indexOf(n),i=(A[r]??0)*Math.PI/360,o=Math.sin(i),a=[0,0,0,Math.cos(i)];a[r]=o,t=[a[3]*t[0]+a[0]*t[3]+a[1]*t[2]-a[2]*t[1],a[3]*t[1]-a[0]*t[2]+a[1]*t[3]+a[2]*t[0],a[3]*t[2]+a[0]*t[1]-a[1]*t[0]+a[2]*t[3],a[3]*t[3]-a[0]*t[0]-a[1]*t[1]-a[2]*t[2]]}return t}function Ni(A,e){let{times:t,values:n}=A,r=t.length-1;if(e<=t[0])return n[0];if(e>=t[r])return n[r];let i=0;for(;i<r-1&&t[i+1]<=e;)i++;let o=t[i],a=t[i+1],s=a>o?(e-o)/(a-o):0;return n[i]+(n[i+1]-n[i])*s}function Fi(A){let e=new Set;for(let s of A.channels)for(let g of s?.times??[])e.add(g);if(e.size===0)return;let t=[...e].sort((s,g)=>s-g),n=new Float32Array(t.length),r=A.kind==="R",i=new Float32Array(t.length*(r?4:3)),o=r?Mi(A.model):"XYZ",a;return t.forEach((s,g)=>{n[g]=s/re.FBX_KTIME;let l=[0,1,2].map(B=>{let E=A.channels[B];return E?Ni(E,s):A.defaults[B]});if(!r){i.set(l,g*3);return}let I=Gi(l,o);if(a&&a[0]*I[0]+a[1]*I[1]+a[2]*I[2]+a[3]*I[3]<0)for(let B=0;B<4;B++)I[B]=-I[B];a=I,i.set(I,g*4)}),{nodeName:A.nodeName,times:n,translations:A.kind==="T"?i:void 0,rotations:r?i:void 0,scales:A.kind==="S"?i:void 0}}function Wa(A,e={}){return re.parse(A,e)}function Fe(A,e={}){let t=A;if(typeof A=="string"){let n=A.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof CA<"u"&&CA.existsSync)try{let i=A.startsWith("file://")?A.slice(7):A;try{i=decodeURIComponent(i)}catch{}if(CA.existsSync(i)){let o=CA.readFileSync(i);t=new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}}catch{}}return re.parse(t,e)}v();v();var or=`
3
3
  struct AudioLatentBuffer {
4
4
  fftBins : array<f32, 1024>,
@@ -1443,6 +1443,6 @@ struct MrtBloomOutput {
1443
1443
  out.hdr = f.hdr;
1444
1444
  return out;
1445
1445
  }
1446
- `;var dr=24,dt=class{device;pipelineSingle;pipelineMrt;bloomVariants;modelLayout;fontLayout;modelPool;instancePool;fontBindGroups=new WeakMap;modelData=new Float32Array(40+_A);constructor(e,t,n,r,i,o=1){this.device=e,this.modelPool=new GA((40+_A)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.instancePool=new GA(65536,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"slug3d.wgsl",code:fr});this.modelLayout=e.createBindGroupLayout({label:"Slug3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},Ce(1)]}),this.fontLayout=e.createBindGroupLayout({label:"Slug3DFontLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"unfilterable-float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}}]});let s=e.createPipelineLayout({bindGroupLayouts:[r,this.modelLayout,this.fontLayout,i]}),g={module:a,entryPoint:"vs",buffers:[{arrayStride:dr*4,stepMode:"instance",attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x4"},{shaderLocation:2,offset:32,format:"float32x4"},{shaderLocation:3,offset:48,format:"float32x4"},{shaderLocation:4,offset:64,format:"float32x4"},{shaderLocation:5,offset:80,format:"float32x4"}]}]},E={label:"Slug3DPipeline",layout:s,vertex:g,module:a,format:t,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:o}},{single:Q,mrt:C}=de(e,E);this.pipelineSingle=Q,this.pipelineMrt=C,this.bloomVariants=new ne(e,E)}resetPools(){this.modelPool.reset(),this.instancePool.reset()}draw(e,t,n,r,i,o,a,s=!1,g=!1){if(o===0||!r.curvesTex||!r.bandsTex)return;this.modelData.set(a.modelMatrix,0),this.modelData.set(a.normalMatrix,16),this.modelData[32]=a.opacity,this.modelData[33]=a.slant,this.modelData[34]=a.twoSided?1:0,this.modelData[35]=a.depthPull,this.modelData.set(_t(a),36),me(a,this.modelData,40);let l=this.modelPool.getBuffer(this.device,this.modelData),I=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:l}},{binding:1,resource:a.matte?.createView()??fe(this.device)}]}),B=this.instancePool.getBuffer(this.device,i.subarray(0,o*dr));e.setPipeline(g?this.bloomVariants.get(s):s?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,I),e.setBindGroup(2,this.fontBindGroup(r.curvesTex,r.bandsTex)),e.setBindGroup(3,n),e.setVertexBuffer(0,B),e.draw(6,o)}fontBindGroup(e,t){let n=this.fontBindGroups.get(e);return n||(n=this.device.createBindGroup({layout:this.fontLayout,entries:[{binding:0,resource:e.createView()},{binding:1,resource:t.createView()}]}),this.fontBindGroups.set(e,n)),n}destroy(){this.modelPool.destroy(),this.instancePool.destroy()}};var to={repeat:"repeat",clamp:"clamp-to-edge",mirror:"mirror-repeat"},no=5e-4,mr=class{device;format;quad3dPipeline;slug3dPipeline;mesh3dPipeline;audioMeshDeformPipeline;dofPipeline;dofBindGroupLayout;cameraPool;lightsPool;cameraUniformBindGroupCache=new zn;samplerCache=new Zn;depthTexture=null;linearDepthTexture=null;msaaColorTexture=null;msaaLinearDepthTexture=null;msaaHdrTexture=null;hdrTexture=null;passWritesHdr=!1;cameraUniformData=new Float32Array(80);meshBuffersCache=new WeakMap;materialTextures=new WeakMap;materialMapCache=new WeakMap;modelCache=new Map;lastCameraPose=null;shadowTexture=null;placeholderShadowTexture=null;shadowSampler=null;meshBounds=new WeakMap;bloomPipeline=null;lastCameraBuffer=null;sampleCount;constructor(e,t,n=4){this.device=e,this.format=t,this.sampleCount=n,this.quad3dPipeline=new Qt(e,t,"depth24plus",n),this.slug3dPipeline=new dt(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.mesh3dPipeline=new Ct(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.audioMeshDeformPipeline=new at(e),this.cameraPool=new GA(320,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.lightsPool=new GA(Kt,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"dof-bokeh.wgsl",code:Ir});this.dofBindGroupLayout=e.createBindGroupLayout({label:"DoFBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.dofPipeline=e.createRenderPipeline({label:"DoFBokehPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.dofBindGroupLayout]}),vertex:{module:r,entryPoint:"vs_fullscreen"},fragment:{module:r,entryPoint:"fs_dof",targets:[{format:t}]},primitive:{topology:"triangle-list"}})}resetPools(){this.bloomPipeline?.resetPools(),this.cameraPool.reset(),this.lastCameraPose=null,this.lastCameraBuffer=null,this.lightsPool.reset(),this.quad3dPipeline.resetPools(),this.slug3dPipeline.resetPools(),this.mesh3dPipeline.resetPools(),this.audioMeshDeformPipeline.resetPools()}getOrCreateDepthTexture(e,t){return(!this.depthTexture||this.depthTexture.width!==e||this.depthTexture.height!==t)&&(this.depthTexture?.destroy(),this.depthTexture=this.device.createTexture({label:"Renderer3DDepthTexture",size:{width:e,height:t},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.depthTexture}getOrCreateMsaaTexture(e,t,n,r,i){return e&&e.width===r&&e.height===i?e:(e?.destroy(),this.device.createTexture({label:t,size:{width:r,height:i},format:n,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}))}hdrSource(){return this.hdrTexture}getOrCreateHdrTexture(e,t){return(!this.hdrTexture||this.hdrTexture.width!==e||this.hdrTexture.height!==t)&&(this.hdrTexture?.destroy(),this.hdrTexture=this.device.createTexture({label:"Renderer3DHdrRadiance",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.hdrTexture}getOrCreateLinearDepthTexture(e,t){return(!this.linearDepthTexture||this.linearDepthTexture.width!==e||this.linearDepthTexture.height!==t)&&(this.linearDepthTexture?.destroy(),this.linearDepthTexture=this.device.createTexture({label:"Renderer3DLinearDepthTexture",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.linearDepthTexture}packCameraUniforms(e,t,n,r=0){if(this.lastCameraPose&&this.lastCameraBuffer&&this.lastCameraPose.eye[0]===e.eye[0]&&this.lastCameraPose.eye[1]===e.eye[1]&&this.lastCameraPose.eye[2]===e.eye[2]&&this.lastCameraPose.target[0]===e.target[0]&&this.lastCameraPose.target[1]===e.target[1]&&this.lastCameraPose.target[2]===e.target[2]&&this.lastCameraPose.up[0]===e.up[0]&&this.lastCameraPose.up[1]===e.up[1]&&this.lastCameraPose.up[2]===e.up[2]&&this.lastCameraPose.fov===e.fov&&this.lastCameraPose.near===e.near&&this.lastCameraPose.far===e.far)return this.lastCameraBuffer;let i=Ie.computeViewMatrix(e),o=Ie.computeProjectionMatrix(e),a=Ie.computeViewProjectionMatrix(e),s=_.invert(a)??_.identity();this.cameraUniformData.set(i,0),this.cameraUniformData.set(o,16),this.cameraUniformData.set(a,32),this.cameraUniformData.set(s,48),this.cameraUniformData[64]=e.eye[0],this.cameraUniformData[65]=e.eye[1],this.cameraUniformData[66]=e.eye[2],this.cameraUniformData[67]=e.near;let g=R.normalize(R.subtract(e.target,e.eye));this.cameraUniformData[68]=g[0],this.cameraUniformData[69]=g[1],this.cameraUniformData[70]=g[2],this.cameraUniformData[71]=e.far,this.cameraUniformData[72]=e.focusDistance??1e3,this.cameraUniformData[73]=e.fStop??2.8,this.cameraUniformData[74]=e.maxBlurRadius??32,this.cameraUniformData[75]=e.focusDistance!==void 0?1:0,this.cameraUniformData[76]=t,this.cameraUniformData[77]=n,this.cameraUniformData[78]=r,this.cameraUniformData[79]=0;let l=this.cameraPool.getBuffer(this.device,this.cameraUniformData);return this.lastCameraPose=e,this.lastCameraBuffer=l,l}createCameraBindGroup(e){return this.cameraUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.cameraLayout,e)}getOrCreateLightsBuffer(e,t){let n=qA.packLightsUniforms(e??[],t?.environment,t?.shadow);return this.lightsPool.getBuffer(this.device,n)}createLightsBindGroup(e,t){this.shadowSampler??=this.device.createSampler({label:"ShadowComparisonSampler",compare:"less-equal",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.placeholderShadowTexture??=this.device.createTexture({label:"ShadowMapPlaceholder",size:{width:1,height:1},format:Bt,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT});let n=t&&this.shadowTexture?this.shadowTexture:this.placeholderShadowTexture;return this.device.createBindGroup({label:"Lights3DBindGroup",layout:this.quad3dPipeline.lightsLayout,entries:[{binding:0,resource:{buffer:e}},{binding:1,resource:n.createView()},{binding:2,resource:this.shadowSampler}]})}meshAabb(e){let t=this.meshBounds.get(e);if(!t){let n=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],i=e.positions;for(let o=0;o+2<i.length;o+=3)for(let a=0;a<3;a++){let s=i[o+a];s<n[a]&&(n[a]=s),s>r[a]&&(r[a]=s)}t=Number.isFinite(n[0])?{min:n,max:r}:{min:[0,0,0],max:[0,0,0]},this.meshBounds.set(e,t)}return t}worldBounds(e){return e.kind==="mesh"?$t(this.meshAabb(e.mesh),this.meshModelMatrix(e.opts)):$t({min:[-.5,-.5,0],max:[.5,.5,0]},this.quadModelMatrix(e.opts))}renderShadowMap(e,t,n,r,i,o={}){let a=t.lightType??t.type;if(a!=="directional"&&a!=="spot")return null;let s=qA.processLight(t),g=[s.posType[0],s.posType[1],s.posType[2]],l=[s.dirRadius[0],s.dirRadius[1],s.dirRadius[2]],I=o.mapSize??2048,B=r.map(d=>this.worldBounds(d)),E=Cr({type:a,position:g,direction:l,angle:t.angle},B,i,I);if(!E)return null;(!this.shadowTexture||this.shadowTexture.width!==I)&&(this.shadowTexture?.destroy(),this.shadowTexture=this.device.createTexture({label:"ShadowMap",size:{width:I,height:I},format:Bt,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}));let Q=new Float32Array(80);Q.set(E.viewProj,32),Q.set(E.viewProj,0),Q[5]=1,Q.set(E.viewProj,16),Q[64]=g[0],Q[65]=g[1],Q[66]=g[2],Q[68]=l[0],Q[69]=l[1],Q[70]=l[2],Q[76]=I,Q[77]=I;let C=this.createCameraBindGroup(this.cameraPool.getBuffer(this.device,Q)),p=e.beginRenderPass({label:"ShadowMapPass",colorAttachments:[],depthStencilAttachment:{view:this.shadowTexture.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}}),h=this.samplerCache.getSampler(this.device);for(let d of r)if(d.kind==="mesh"){let D=this.meshModelMatrix(d.opts);this.mesh3dPipeline.drawShadow(p,C,d.buffers??this.getOrCreateMeshBuffers(d.mesh),{modelMatrix:D,normalMatrix:d.opts.normalMatrix??qA.computeNormalMatrix(D),isSkinned:d.opts.isSkinned,skinningMatrices:d.opts.skinningMatrices})}else{let D=this.quadModelMatrix(d.opts);this.quad3dPipeline.drawShadow(p,C,d.texture,h,{modelMatrix:D,normalMatrix:D,width:d.opts.width,height:d.opts.height,textureExtent:d.opts.textureExtent,opacity:d.opts.opacity,colorTint:d.opts.colorTint})}return p.end(),{matrix:E.viewProj,lightIndex:n,mapSize:I,softness:o.softness??t.shadowSoftness??2.5,bias:a==="directional"?6e-4:8e-5,normalOffset:E.texelWorldSize*1.5,darkness:o.darkness??t.shadowDarkness??1}}beginPass(e,t,n,r,i,o="clear",a={r:0,g:0,b:0,a:0},s,g,l,I=!1){let B=this.getOrCreateDepthTexture(n,r),E=this.packCameraUniforms(i,n,r),Q=this.createCameraBindGroup(E),C=this.getOrCreateLightsBuffer(g,l),p=this.createLightsBindGroup(C,!!l?.shadow),h=this.sampleCount>1;if(h&&o==="load")throw new Error("Renderer3D.beginPass: loadOp 'load' needs a Renderer3D built with sampleCount 1");let d=(G,M,w,b)=>M?{view:M.createView(),resolveTarget:G,loadOp:"clear",storeOp:"discard",clearValue:w}:{view:G,loadOp:b,storeOp:"store",clearValue:w};h&&(this.msaaColorTexture=this.getOrCreateMsaaTexture(this.msaaColorTexture,"Renderer3DMsaaColor",this.format,n,r));let D=[d(t,h?this.msaaColorTexture:null,a,o)];return s&&(h&&(this.msaaLinearDepthTexture=this.getOrCreateMsaaTexture(this.msaaLinearDepthTexture,"Renderer3DMsaaLinearDepth","rgba16float",n,r)),D.push(d(s,h?this.msaaLinearDepthTexture:null,{r:i.far,g:0,b:0,a:1},"clear"))),this.passWritesHdr=I,I&&(this.hdrTexture=this.getOrCreateHdrTexture(n,r),h&&(this.msaaHdrTexture=this.getOrCreateMsaaTexture(this.msaaHdrTexture,"Renderer3DMsaaHdr","rgba16float",n,r)),D.push(d(this.hdrTexture.createView(),h?this.msaaHdrTexture:null,{r:0,g:0,b:0,a:0},"clear"))),{pass:e.beginRenderPass({colorAttachments:D,depthStencilAttachment:{view:B.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:h?"discard":"store"}}),cameraBindGroup:Q,cameraBuffer:E,lightsBindGroup:p}}quadModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t,width:n,height:r,rotation:i=[0,0,0],scale:o=[1,1,1],anchor:a=[.5,.5]}=e,s=_.identity();s=_.multiply(s,_.translate(t[0],t[1],t[2]));let g=i[0]*Math.PI/180,l=i[1]*Math.PI/180,I=i[2]*Math.PI/180;I!==0&&(s=_.multiply(s,_.rotateZ(I))),l!==0&&(s=_.multiply(s,_.rotateY(l))),g!==0&&(s=_.multiply(s,_.rotateX(g)));let B=n*o[0],E=r*o[1],Q=o[2];s=_.multiply(s,_.scale(B,E,Q));let C=.5-a[0],p=.5-a[1];return(C!==0||p!==0)&&(s=_.multiply(s,_.translate(C,p,0))),s}drawSlugText(e,t,n,r,i,o=0,a=!1){let{width:s,height:g}=i;if(!(s>0&&g>0))return;let l=this.quadModelMatrix(i),I=i.normalMatrix??qA.computeNormalMatrix(l),B=_.multiply(l,_.multiply(_.translate(-.5,-.5,0),_.scale(1/s,1/g,1)));for(let E=0;E<r.length;E++){let Q=r[E],[C,p,h,d,D,x]=Q.transform,G=[C,p,0,0,h,d,0,0,0,0,1,0,D,x,0,1];this.slug3dPipeline.draw(e,t,n,Q.font,Q.instances,Q.instanceCount,{modelMatrix:_.multiply(B,G),normalMatrix:I,opacity:Q.opacity*(i.opacity??1),slant:Q.slant,twoSided:i.twoSided??!0,depthPull:no*(o+E+1),material:i.material,shininess:i.shininess??32,roughness:i.roughness,specularIntensity:i.specularIntensity??.5,ambientIntensity:i.ambientIntensity??1,metallic:i.metallic,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte},a,this.passWritesHdr)}}drawTextureQuad(e,t,n,r,i,o=!1){let{width:a,height:s,opacity:g=1,colorTint:l=[1,1,1,1],borderColor:I,borderWidth:B=0,borderRadius:E=0,twoSided:Q=!0,material:C="lit",shininess:p=32,roughness:h,specularIntensity:d=.5,ambientIntensity:D=1,metallic:x}=i,G=this.quadModelMatrix(i),M=i.normalMatrix??qA.computeNormalMatrix(G),w=this.samplerCache.getSampler(this.device),b;if(I)if(Array.isArray(I))b=I;else{let N=et(I);b=[N.r,N.g,N.b,N.a]}this.quad3dPipeline.draw(e,t,n,r,w,{modelMatrix:G,normalMatrix:M,colorTint:l,borderColor:b,borderWidth:B,opacity:g,borderRadius:E,twoSided:Q,width:a,height:s,textureExtent:i.textureExtent,material:C,shininess:p,roughness:h,specularIntensity:d,ambientIntensity:D,metallic:x,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte},o,this.passWritesHdr)}meshModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t=[0,0,0],rotation:n=[0,0,0],scale:r=[1,1,1]}=e,i=_.translate(t[0],t[1],t[2]),o=n[0]*Math.PI/180,a=n[1]*Math.PI/180,s=n[2]*Math.PI/180;return s!==0&&(i=_.multiply(i,_.rotateZ(s))),a!==0&&(i=_.multiply(i,_.rotateY(a))),o!==0&&(i=_.multiply(i,_.rotateX(o))),_.multiply(i,_.scale(r[0],r[1],r[2]))}getOrCreateMeshBuffers(e){let t=this.meshBuffersCache.get(e);if(t)return t;let n=e.positions.length/3,r=new Float32Array(n*16);for(let l=0;l<n;l++){let I=l*16;r[I]=e.positions[l*3]??0,r[I+1]=e.positions[l*3+1]??0,r[I+2]=e.positions[l*3+2]??0,r[I+3]=e.uvs[l*2]??0,r[I+4]=e.uvs[l*2+1]??0,r[I+5]=e.normals[l*3]??0,r[I+6]=e.normals[l*3+1]??0,r[I+7]=e.normals[l*3+2]??1,e.jointIndices?(r[I+8]=e.jointIndices[l*4]??0,r[I+9]=e.jointIndices[l*4+1]??0,r[I+10]=e.jointIndices[l*4+2]??0,r[I+11]=e.jointIndices[l*4+3]??0):(r[I+8]=0,r[I+9]=0,r[I+10]=0,r[I+11]=0),e.jointWeights?(r[I+12]=e.jointWeights[l*4]??0,r[I+13]=e.jointWeights[l*4+1]??0,r[I+14]=e.jointWeights[l*4+2]??0,r[I+15]=e.jointWeights[l*4+3]??0):(r[I+12]=0,r[I+13]=0,r[I+14]=0,r[I+15]=0)}let i=Math.ceil(r.byteLength/4)*4,o=this.device.createBuffer({size:Math.max(4,i),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,mappedAtCreation:!0});new Float32Array(o.getMappedRange()).set(r),o.unmap();let a=e.indices instanceof Uint32Array,s=Math.ceil(e.indices.byteLength/4)*4,g=this.device.createBuffer({size:Math.max(4,s),usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return a?new Uint32Array(g.getMappedRange()).set(e.indices):new Uint16Array(g.getMappedRange()).set(e.indices),g.unmap(),t={vertexBuffer:o,indexBuffer:g,indexCount:e.indices.length,indexFormat:a?"uint32":"uint16"},this.meshBuffersCache.set(e,t),t}deformMesh(e,t,n){let r=this.getOrCreateMeshBuffers(t),i=t.positions.length/3;return{vertexBuffer:this.audioMeshDeformPipeline.execute(e,r.vertexBuffer,{config:n.config,audioLatentBuffer:n.latentBuffer,vertexCount:i,timeMs:n.timeMs,sampleRate:n.sampleRate}),indexBuffer:r.indexBuffer,indexCount:r.indexCount,indexFormat:r.indexFormat}}drawMesh3D(e,t,n,r,i,o={},a=!1){let s="vertexBuffer"in r?r:this.getOrCreateMeshBuffers(r),{opacity:g=1,colorTint:l=[1,1,1,1],twoSided:I=!0,wireframe:B=!1,isSkinned:E=!1,skinningMatrices:Q,material:C="lit",shadeColor:p,alphaCutoff:h,textureWrap:d="clamp",shininess:D=32,roughness:x,specularIntensity:G=.5,ambientIntensity:M=1,metallic:w}=o,b=this.meshModelMatrix(o),N=o.normalMatrix??qA.computeNormalMatrix(b),U=to[d],L=this.samplerCache.getSampler(this.device,{addressModeU:U,addressModeV:U});this.mesh3dPipeline.draw(e,t,n,s,i,L,{modelMatrix:b,normalMatrix:N,colorTint:l,opacity:g,twoSided:I,wireframe:B,isSkinned:E,skinningMatrices:Q,material:C,shadeColor:p,alphaCutoff:h,shininess:D,roughness:x,specularIntensity:G,ambientIntensity:M,metallic:w,emissive:o.emissive,emissiveIntensity:o.emissiveIntensity,matte:o.matte,maps:o.maps},a,this.passWritesHdr)}loadModel(e,t="auto",n={}){if(typeof e!="string")return hr(e,t,n);let r=`${t}|${JSON.stringify(n)}|${e}`,i=this.modelCache.get(r);return i||(i=hr(e,t,n),this.modelCache.set(r,i)),i}materialTexture(e){let t=this.materialTextures.get(e);return t||(t=this.uploadMaterialTexture(e),this.materialTextures.set(e,t)),t}materialMaps(e){let t=this.materialMapCache.get(e);return t||(t=(async()=>{let n=e.name,[r,i,o,a]=await Promise.all([this.uploadImage(e.normalTextureBuffer,`${n}:normal`),this.uploadImage(e.metallicRoughnessTextureBuffer,`${n}:metallicRoughness`),this.uploadImage(e.occlusionTextureBuffer,`${n}:occlusion`),this.uploadImage(e.emissiveTextureBuffer,`${n}:emissive`)]);return{...r&&{normal:r,normalScale:e.normalScale??1},...i&&{metallicRoughness:i},...o&&{occlusion:o,occlusionStrength:e.occlusionStrength??1},...a&&{emissive:a}}})(),this.materialMapCache.set(e,t)),t}uploadMaterialTexture(e){return this.uploadImage(e.diffuseTextureBuffer,`Material:${e.name}`)}async uploadImage(e,t){if(!e)return;let n=(await import("./sharp-V6ZTBNDW.mjs")).default,r=Buffer.from(e instanceof Uint8Array?e:new Uint8Array(e)),{width:i,height:o}=await n(r).metadata();if(!i||!o)return;let a=Math.floor(Math.log2(Math.max(i,o)))+1,s=this.device.createTexture({label:t,size:{width:i,height:o},mipLevelCount:a,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let g=0;g<a;g++){let l=Math.max(1,i>>g),I=Math.max(1,o>>g),B=await n(r).ensureAlpha().resize(l,I,{fit:"fill"}).raw().toBuffer();this.device.queue.writeTexture({texture:s,mipLevel:g},B,{bytesPerRow:l*4,rowsPerImage:I},{width:l,height:I})}return s}applyBloom(e,t,n,r={},i){this.bloomPipeline??=new ut(this.device),this.bloomPipeline.apply(e,t,n,r,i??void 0)}applyDepthOfField(e,t,n,r,i){let o=this.samplerCache.getSampler(this.device),a=this.device.createBindGroup({layout:this.dofBindGroupLayout,entries:[{binding:0,resource:{buffer:i}},{binding:1,resource:o},{binding:2,resource:t.createView()},{binding:3,resource:n.createView()}]}),s=e.beginRenderPass({colorAttachments:[{view:r,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});s.setPipeline(this.dofPipeline),s.setBindGroup(0,a),s.draw(3),s.end()}destroy(){this.bloomPipeline?.destroy(),this.depthTexture?.destroy(),this.shadowTexture?.destroy(),this.placeholderShadowTexture?.destroy(),this.linearDepthTexture?.destroy(),this.msaaColorTexture?.destroy(),this.msaaLinearDepthTexture?.destroy(),this.msaaHdrTexture?.destroy(),this.hdrTexture?.destroy(),this.quad3dPipeline.destroy(),this.slug3dPipeline.destroy(),this.mesh3dPipeline.destroy(),this.cameraPool.destroy(),this.lightsPool.destroy(),this.cameraUniformBindGroupCache.destroy()}};function hr(A,e="auto",t={}){if(e==="gltf"||e==="glb")return st(A,t);if(e==="stl")return Se(A,t);if(e==="ply")return ve(A,t);if(e==="vox")return gt(A,t);if(e==="3ds")return lt(A,t);if(e==="off")return It(A,t);if(e==="fbx")return Fe(A,t);if(e==="obj")return Ne(A,void 0,t);let n=typeof A!="string",r=typeof A=="string"?A.trim():"",i=r.toLowerCase();if(i.endsWith(".glb")||i.endsWith(".gltf"))return st(A,t);if(i.endsWith(".stl"))return Se(A,t);if(i.endsWith(".ply"))return ve(A,t);if(i.endsWith(".vox"))return gt(A,t);if(i.endsWith(".3ds"))return lt(A,t);if(i.endsWith(".off"))return It(A,t);if(i.endsWith(".fbx"))return Fe(A,t);if(i.endsWith(".obj"))return Ne(A,void 0,t);if(n){let o=A instanceof Uint8Array?A:new Uint8Array(A);return ce.isGlb(o)?lr(o,t):re.isBinary(o)?Fe(o,t):Le.isVox(o)?gt(o,t):ke.is3DS(o)?lt(o,t):o.length>=3&&o[0]===112&&o[1]===108&&o[2]===121?ve(o,t):Ue.isBinary(o)?Se(o,t):Ne(o,void 0,t)}return r.startsWith("{")&&(r.includes('"asset"')||r.includes('"meshes"'))?st(r,t):r.startsWith("ply")||r.startsWith("PLY")?ve(r,t):r.startsWith("OFF")||r.startsWith("NOFF")||r.startsWith("COFF")?It(r,t):r.includes("FBXHeaderExtension")||r.includes("Kaydara FBX")?Fe(r,t):r.startsWith("solid")&&r.includes("facet")?Se(r,t):Ne(A,void 0,t)}v();var{cbrt:An,sqrt:en,PI:he}=Math,ro=(A,e,t,n,r)=>{let i=e+t*A,o=i**2+n;if(o>0){let l=en(o);return An(i+l)+An(i-l)-r}let a=An(en(i*i-o)),s=i?Math.atan(en(-o)/i):-he/2,g;return t<0?g=(i>0?2*he:he)-s:r<0?g=(i>0?2*he:-3*he)+s:g=(i>0?0:he)+s,2*a*Math.cos(g/3)-r},io=(A,e,t,n)=>((e*A+3*t)*A+n)*A,tn=A=>A;function pr(A,e,t,n){if(!(0<=A&&A<=1&&0<=t&&t<=1))throw new Error("bezier x values must be in [0, 1] range");if(A===e&&t===n)return tn;let r=6*(3*A-3*t+1),i=6*(t-2*A),o=3*A,a=r*r,s=i*i,g=i/r,l=3*i*o/a-s*i/(a*r),I=2*o/r-s/a,B=I*I*I,E=3/r,Q=3*e-3*n+1,C=n-2*e,p=3*e,h=r?ro:tn;return function(D){return D===0||D===1?D:io(h(D,l,E,B,g),Q,C,p)}}var rl={linear:tn,ease:pr(.25,.1,.25,1),quad:A=>A*A,cubic:A=>A*A*A,poly:A=>e=>e**A,sin:A=>1-Math.cos(A*Math.PI/2),circle:A=>1-Math.sqrt(1-A*A),exp:A=>2**(10*(A-1)),elastic:(A=1)=>{let e=A*Math.PI;return t=>1-Math.cos(t*Math.PI/2)**3*Math.cos(t*e)},back:(A=1.70158)=>e=>e*e*((A+1)*e-A),bounce:A=>{if(A<1/2.75)return 7.5625*A*A;if(A<2/2.75){let t=A-.5454545454545454;return 7.5625*t*t+.75}if(A<2.5/2.75){let t=A-.8181818181818182;return 7.5625*t*t+.9375}let e=A-2.625/2.75;return 7.5625*e*e+.984375},bezier:pr,in:A=>A,out:A=>e=>1-A(1-e),inOut:A=>e=>e<.5?A(e*2)/2:1-A((1-e)*2)/2};function yr(A,e,t,n){let r=n?.extrapolateLeft??"extend",i=n?.extrapolateRight??"extend";if(e.length!==t.length)throw new Error("inputRange and outputRange must have the same length");if(e.length<2)throw new Error("inputRange must have at least 2 elements");let o=e[0],a=e[e.length-1];if(A<o){if(r==="clamp")return t[0];if(r==="identity")return A}if(A>a){if(i==="clamp")return t[t.length-1];if(i==="identity")return A}let s=1;for(;s<e.length-1&&!(A<e[s]);s++);let g=e[s-1],l=e[s],I=t[s-1],B=t[s];if(g===l)return I;let E=(A-g)/(l-g);return n?.easing&&(E=n.easing(E)),I+E*(B-I)}v();var oo={damping:10,mass:1,stiffness:100,overshootClamping:!1},nn={};function ao({animation:A,now:e,config:t}){let{toValue:n,lastTimestamp:r,current:i,velocity:o}=A,a=Math.min(e-r,64);if(t.damping<=0)throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");if(t.stiffness<=0)throw new Error("Spring stiffness must be greater than 0.");if(t.mass<=0)throw new Error("Spring mass must be greater than 0.");let s=t.damping,g=t.mass,l=t.stiffness,I=[n,r,i,o,s,g,l,e].join("-");if(nn[I])return nn[I];let B=-o,E=n-i,Q=s/(2*Math.sqrt(l*g)),C=Math.sqrt(l/g),p=C*Math.sqrt(1-Q**2),h=a/1e3,d=Math.sin(p*h),D=Math.cos(p*h),x=Math.exp(-Q*C*h),G=x*(d*((B+Q*C*E)/p)+E*D),M=n-G,w=Q*C*G-x*(D*(B+Q*C*E)-p*E*d),b=Math.exp(-C*h),N=n-b*(E+(B+C*E)*h),U=b*(B*(h*C-1)+h*E*C*C),L={toValue:n,prevPosition:i,lastTimestamp:e,current:Q<1?M:N,velocity:Q<1?w:U};return nn[I]=L,L}var rn={};function Dr({frame:A,fps:e,config:t={}}){let i=[A,e,t.damping,t.mass,t.overshootClamping,t.stiffness].join("-");if(rn[i])return rn[i];let o={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},a=Math.max(0,A),s=a%1;for(let g=0;g<=Math.floor(a);g++){g===Math.floor(a)&&(g+=s);let l=g/e*1e3;o=ao({animation:o,now:l,config:{...oo,...t}})}return rn[i]=o,o}var on=new Map;function so({fps:A,config:e={},threshold:t=.005}){if(typeof t!="number")throw new TypeError(`threshold must be a number, got ${t}`);if(t===0)return 1/0;if(t===1)return 0;if(Number.isNaN(t))throw new TypeError("Threshold is NaN");if(!Number.isFinite(t))throw new TypeError("Threshold is not finite");if(t<0)throw new TypeError("Threshold is below 0");let n=[A,e.damping,e.mass,e.overshootClamping,e.stiffness,t].join("-");if(on.has(n))return on.get(n);let r=0,i=0,o=()=>Dr({fps:A,frame:r,config:e}),a=o(),s=()=>Math.abs(a.current-a.toValue),g=s();for(;g>=t;)r++,a=o(),g=s();i=r;for(let l=0;l<20;l++)r++,a=o(),g=s(),g>=t&&(l=0,i=r+1);return on.set(n,i),i}function sl({frame:A,fps:e,config:t={},from:n=0,to:r=1,durationInFrames:i,durationRestThreshold:o,delay:a=0,reverse:s=!1}){let g=s||typeof i<"u",l=g?so({fps:e,config:t,threshold:o}):void 0,I=g?{get:()=>l}:{get:()=>{throw new Error("did not calculate natural duration")}},E=(s?(i??I.get())-A:A)+(s?a:-a),Q=i===void 0?E:E/(i/I.get());if(i&&E>i)return r;let C=Dr({fps:e,frame:Q,config:t}),p=t.overshootClamping?r>=n?Math.min(C.current,r):Math.max(C.current,r):C.current;return n===0&&r===1?p:yr(p,[0,1],[n,r])}v();v();v();v();var Te=new Set,an=!1;function Bn(A,e,t=2){let n=e&&e.length,r=n?e[0]*t:A.length;Te.size&&Te.clear();let i=Mr(A,0,r,t,!0),o=[];if(!i||i.next===i.prev)return o;let a=0,s=0,g=0;if(n&&(i=co(A,e,i,t)),A.length>80*t){a=A[0],s=A[1];let l=a,I=s;for(let B=t;B<r;B+=t){let E=A[B],Q=A[B+1];E<a&&(a=E),Q<s&&(s=Q),E>l&&(l=E),Q>I&&(I=Q)}g=Math.max(l-a,I-s),g=g!==0?32767/g:0}return sn(i,o,a,s,g),o}function Mr(A,e,t,n,r){let i=null;if(r===xo(A,e,t,n)>0)for(let o=e;o<t;o+=n)i=xr(o/n|0,A[o],A[o+1],i);else for(let o=t-n;o>=e;o-=n)i=xr(o/n|0,A[o],A[o+1],i);return i&&Je(i,i.next)&&(Ke(i),i=i.next),i}function ae(A,e=A){let t=e===A,n=A,r;do r=!1,n!==n.next&&(Te.size===0||!Te.has(n))&&(Je(n,n.next)||MA(n.prev,n,n.next)===0)?((t||n===e)&&(e=n.prev),an=!0,Ke(n),n=n.prev,r=!0):(t||n!==e)&&(n=n.next,r=!t);while(r||n!==e);return e}function sn(A,e,t,n,r){r&&ho(A,t,n,r);let i=A,o=!1;for(;A.prev!==A.next;){let a=A.prev,s=A.next;if(MA(a,A,s)<0&&(r?lo(A,t,n,r):go(A))){e.push(a.i,A.i,s.i),Ke(A),A=s,i=s;continue}if(A=s,A===i){if(an=!1,A=ae(A),an){i=A;continue}if(!o){A=Io(A,e),i=A,o=!0;continue}uo(A,e,t,n,r);break}}}function go(A){let e=A.prev,t=A,n=A.next,r=e.x,i=t.x,o=n.x,a=e.y,s=t.y,g=n.y,l=Math.min(r,i,o),I=Math.min(a,s,g),B=Math.max(r,i,o),E=Math.max(a,s,g),Q=n.next;for(;Q!==e;){if(Q.x>=l&&Q.x<=B&&Q.y>=I&&Q.y<=E&&!(r===Q.x&&a===Q.y)&&yt(r,a,i,s,o,g,Q.x,Q.y)&&MA(Q.prev,Q,Q.next)>=0)return!1;Q=Q.next}return!0}function lo(A,e,t,n){let r=A.prev,i=A,o=A.next,a=r.x,s=i.x,g=o.x,l=r.y,I=i.y,B=o.y,E=Math.min(a,s,g),Q=Math.min(l,I,B),C=Math.max(a,s,g),p=Math.max(l,I,B),h=un(E,Q,e,t,n),d=un(C,p,e,t,n),D=A.prevZ;for(;D&&D.z>=h;){if(D.x>=E&&D.x<=C&&D.y>=Q&&D.y<=p&&D!==o&&!(a===D.x&&l===D.y)&&yt(a,l,s,I,g,B,D.x,D.y)&&MA(D.prev,D,D.next)>=0)return!1;D=D.prevZ}let x=A.nextZ;for(;x&&x.z<=d;){if(x.x>=E&&x.x<=C&&x.y>=Q&&x.y<=p&&x!==o&&!(a===x.x&&l===x.y)&&yt(a,l,s,I,g,B,x.x,x.y)&&MA(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function Io(A,e){let t=A,n=!1;do{let r=t.prev,i=t.next.next;Fr(r,t,t.next,i,!1)&&Oe(r,i)&&Oe(i,r)&&(e.push(r.i,t.i,i.i),Ke(t),Ke(t.next),t=A=i,n=!0),t=t.next}while(t!==A);return n?ae(t):t}function uo(A,e,t,n,r){let i=A;do{let o=i.next.next;for(;o!==i.prev;){if(i.i!==o.i&&Do(i,o)){let a=Ur(i,o);i=ae(i,i.next),a=ae(a,a.next),sn(i,e,t,n,r),sn(a,e,t,n,r);return}o=o.next}i=i.next}while(i!==A)}var gn=!1;function co(A,e,t,n){let r=[];for(let i=0,o=e.length;i<o;i++){let a=e[i]*n,s=i<o-1?e[i+1]*n:A.length,g=Mr(A,a,s,n,!1);g===g.next&&Te.add(g),r.push(yo(g))}r.sort(Bo),Qo(A.length/n,e.length),Nr(t,t),gn=!0;for(let i=0;i<r.length;i++)t=Eo(r[i],t);return gn=!1,ae(t)}function Bo(A,e){return A.x-e.x||A.y-e.y||(A.next.y-A.y)/(A.next.x-A.x)-(e.next.y-e.y)/(e.next.x-e.x)}function Eo(A,e){let t=fo(A,e);if(!t)return e;let n=Ur(t,A),r=n.next;return Nr(t,r.next),ae(n,n.next),ae(t,t.next)}var Gr=16,wA=new Float64Array(0),pt=0,ln=[],In=[];function Qo(A,e){let t=Math.ceil((A+2*e)/Gr)+e+2;wA.length<t*4&&(wA=new Float64Array(t*4)),pt=0}function Nr(A,e){let t=A;do{let n=pt++;ln[n]=t;let r=t.x,i=t.y,o=t.x,a=t.y,s=0;do{let l=t.next;t.z=n,l.x<r&&(r=l.x),l.x>o&&(o=l.x),l.y<i&&(i=l.y),l.y>a&&(a=l.y),t=l}while(++s<Gr&&t!==e);In[n]=t;let g=n*4;wA[g]=r,wA[g+1]=i,wA[g+2]=o,wA[g+3]=a}while(t!==e)}function Co(A,e){let t=A.z*4;e.x<wA[t]&&(wA[t]=e.x),e.y<wA[t+1]&&(wA[t+1]=e.y),e.x>wA[t+2]&&(wA[t+2]=e.x),e.y>wA[t+3]&&(wA[t+3]=e.y)}function br(A){let e=In[A];for(;e.prev.next!==e;)e=e.next;return In[A]=e,e}function wr(A){let e=ln[A];for(;e.prev.next!==e;)e=e.next;return ln[A]=e,e}function fo(A,e){let t=e,n=A.x,r=A.y,i=-1/0,o;if(Je(A,t))return t;for(let B=0,E=0;B<pt;B++,E+=4){if(r<wA[E+1]||r>wA[E+3]||wA[E]>n||wA[E+2]<=i)continue;let Q=br(B);t=wr(B);do{if(t.prev.next===t){if(Je(A,t.next))return t.next;if(r<=t.y&&r>=t.next.y&&t.next.y!==t.y){let C=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(C<=n&&C>i&&(i=C,o=t.x<t.next.x?t:t.next,C===n))return o}}t=t.next}while(t!==Q)}if(!o)return null;let a=o.x,s=o.y,g=Math.min(r,s),l=Math.max(r,s),I=1/0;for(let B=0,E=0;B<pt;B++,E+=4){if(wA[E+2]<a||wA[E]>n||wA[E+3]<g||wA[E+1]>l)continue;let Q=br(B);t=wr(B);do{if(t.prev.next===t&&n>=t.x&&t.x>=a&&n!==t.x&&yt(r<s?n:i,r,a,s,r<s?i:n,r,t.x,t.y)){let C=Math.abs(r-t.y)/(n-t.x);(Oe(t,A)||t.y===r&&t.next.y===r&&t.next.x>n)&&(C<I||C===I&&(t.x>o.x||t.x===o.x&&mo(o,t)))&&(o=t,I=C)}t=t.next}while(t!==Q)}return o}function mo(A,e){return MA(A.prev,A,e.prev)<0&&MA(e.next,A,A.next)<0}var FA=[],pe=[],oe=new Uint32Array(0),Pe=new Uint32Array(0),He=new Uint32Array(256);function ho(A,e,t,n){let r=A,i=0;do r.z=un(r.x,r.y,e,t,n),FA[i++]=r,r=r.next;while(r!==A);po(i);let o=null;for(let a=0;a<i;a++){let s=FA[a];s.prevZ=o,o&&(o.nextZ=s),o=s}o.nextZ=null,FA.fill(null,0,i),pe.fill(null,0,i)}function po(A){if(A<=32){for(let e=1;e<A;e++){let t=FA[e],n=t.z,r=e-1;for(;r>=0&&FA[r].z>n;)FA[r+1]=FA[r],r--;FA[r+1]=t}return}oe.length<A&&(oe=new Uint32Array(A),Pe=new Uint32Array(A),pe=new Array(A));for(let e=0;e<A;e++)oe[e]=FA[e].z;mt(A,FA,oe,pe,Pe,0),mt(A,pe,Pe,FA,oe,8),mt(A,FA,oe,pe,Pe,16),mt(A,pe,Pe,FA,oe,24)}function mt(A,e,t,n,r,i){He.fill(0);for(let a=0;a<A;a++)He[t[a]>>>i&255]++;let o=0;for(let a=0;a<256;a++){let s=He[a];He[a]=o,o+=s}for(let a=0;a<A;a++){let s=t[a],g=He[s>>>i&255]++;n[g]=e[a],r[g]=s}}function un(A,e,t,n,r){return A=(A-t)*r|0,e=(e-n)*r|0,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,A|e<<1}function yo(A){let e=A,t=A;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==A);return t}function yt(A,e,t,n,r,i,o,a){return(r-o)*(e-a)>=(A-o)*(i-a)&&(A-o)*(n-a)>=(t-o)*(e-a)&&(t-o)*(i-a)>=(r-o)*(n-a)}function Do(A,e){let t=Je(A,e)&&MA(A.prev,A,A.next)>0&&MA(e.prev,e,e.next)>0;return A.next.i!==e.i&&(t||Oe(A,e)&&Oe(e,A)&&(MA(A.prev,A,e.prev)!==0||MA(A,e.prev,e)!==0))&&!bo(A,e)&&(t||wo(A,e))}function MA(A,e,t){return(e.y-A.y)*(t.x-e.x)-(e.x-A.x)*(t.y-e.y)}function Je(A,e){return A.x===e.x&&A.y===e.y}function Fr(A,e,t,n,r=!0){let i=MA(A,e,t),o=MA(A,e,n),a=MA(t,n,A),s=MA(t,n,e);return(i>0&&o<0||i<0&&o>0)&&(a>0&&s<0||a<0&&s>0)?!0:r?!!(i===0&&ht(A,t,e)||o===0&&ht(A,n,e)||a===0&&ht(t,A,n)||s===0&&ht(t,e,n)):!1}function ht(A,e,t){return e.x<=Math.max(A.x,t.x)&&e.x>=Math.min(A.x,t.x)&&e.y<=Math.max(A.y,t.y)&&e.y>=Math.min(A.y,t.y)}function bo(A,e){let t=Math.min(A.x,e.x),n=Math.max(A.x,e.x),r=Math.min(A.y,e.y),i=Math.max(A.y,e.y),o=A;do{let a=o.next;if(o.x>n&&a.x>n||o.x<t&&a.x<t||o.y>i&&a.y>i||o.y<r&&a.y<r){o=a;continue}if(o.i!==A.i&&a.i!==A.i&&o.i!==e.i&&a.i!==e.i&&Fr(o,a,A,e))return!0;o=a}while(o!==A);return!1}function Oe(A,e){return MA(A.prev,A,A.next)<0?MA(A,e,A.next)>=0&&MA(A,A.prev,e)>=0:MA(A,e,A.prev)<0||MA(A,A.next,e)<0}function wo(A,e){let t=A,n=!1,r=(A.x+e.x)/2,i=(A.y+e.y)/2;do{let o=t.next;t.y>i!=o.y>i&&r<(o.x-t.x)*(i-t.y)/(o.y-t.y)+t.x&&(n=!n),t=o}while(t!==A);return n}function Ur(A,e){let t=cn(A.i,A.x,A.y),n=cn(e.i,e.x,e.y),r=A.next,i=e.prev;return A.next=e,e.prev=A,t.next=r,r.prev=t,n.next=t,t.prev=n,i.next=n,n.prev=i,n}function xr(A,e,t,n){let r=cn(A,e,t);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function Ke(A){A.next.prev=A.prev,A.prev.next=A.next,A.prevZ&&(A.prevZ.nextZ=A.nextZ),A.nextZ&&(A.nextZ.prevZ=A.prevZ),gn&&Co(A.prev,A.next)}function cn(A,e,t){return{i:A,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function xo(A,e,t,n){let r=0;for(let i=e,o=t-n;i<t;i+=n)r+=(A[o]-A[i])*(A[i+1]+A[o+1]),o=i;return r}var vr=Hn(mi(),1);function Dt(A){let e=A.trim();if(e.startsWith("#")){let t=e.slice(1);if(t.length===3){let n=Number.parseInt(t[0]+t[0],16)/255,r=Number.parseInt(t[1]+t[1],16)/255,i=Number.parseInt(t[2]+t[2],16)/255;return[n,r,i,1]}if(t.length===6){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255;return[n,r,i,1]}if(t.length===8){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,o=Number.parseInt(t.slice(6,8),16)/255;return[n,r,i,o]}}if(e.startsWith("rgb")){let t=e.replace(/rgba?\(/,"").replace(/\)/,"").split(",").map(a=>Number.parseFloat(a.trim())),n=(t[0]??0)/255,r=(t[1]??0)/255,i=(t[2]??0)/255,o=t[3]!==void 0?t[3]:1;return[n,r,i,o]}return[1,1,1,1]}function Ye(A){let e=0,t=A.length;for(let n=0;n<t;n++){let r=(n+1)%t;e+=A[n].x*A[r].y-A[r].x*A[n].y}return e/2}function bt(A,e){let t=!1,n=e.length;for(let r=0,i=n-1;r<n;i=r++){let o=e[r].x,a=e[r].y,s=e[i].x,g=e[i].y;a>A.y!=g>A.y&&A.x<(s-o)*(A.y-a)/(g-a)+o&&(t=!t)}return t}var Mo=.1,Go=64;function Rr(A,e){if(e.segments!==void 0)return e.segments;let t=Math.ceil(Math.sqrt(A/(8*e.tolerance)));return Math.min(Go,Math.max(1,t))}function No(A,e,t,n,r){let i=Rr(2*Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),n);for(let o=1;o<=i;o++){let a=o/i,s=1-a;r.push({x:s*s*A.x+2*s*a*e.x+a*a*t.x,y:s*s*A.y+2*s*a*e.y+a*a*t.y})}}function Fo(A,e,t,n,r,i){let o=Rr(6*Math.max(Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),Math.hypot(e.x-2*t.x+n.x,e.y-2*t.y+n.y)),r);for(let a=1;a<=o;a++){let s=a/o,g=1-s;i.push({x:g*g*g*A.x+3*g*g*s*e.x+3*g*s*s*t.x+s*s*s*n.x,y:g*g*g*A.y+3*g*g*s*e.y+3*g*s*s*t.y+s*s*s*n.y})}}function Uo(A){try{let e=new vr.Path2D(A).simplify().edges;return Array.isArray(e)?e:null}catch{return null}}function So(A,e,t,n,r){let i=A.path?.toSVG();if(!i)return{contours:[],simplified:!0};let o=Uo(i),a=o!==null;o??=(A.path?.commands??[]).map(B=>[B.command,...B.args]);let s=[],g={x:0,y:0},l=[],I=()=>{if(l.length>=3){let B=l[0],E=l[l.length-1];Math.hypot(E.x-B.x,E.y-B.y)<1e-4&&l.pop(),l.length>=3&&s.push(l)}l=[]};for(let B of o){let E=B[0],Q=B.slice(1);if(E==="moveTo")I(),g={x:(e+Q[0])*n,y:-(t+Q[1])*n},l=[g];else if(E==="lineTo")g={x:(e+Q[0])*n,y:-(t+Q[1])*n},l.push(g);else if(E==="quadraticCurveTo"){let C={x:(e+Q[0])*n,y:-(t+Q[1])*n},p={x:(e+Q[2])*n,y:-(t+Q[3])*n};No(g,C,p,r,l),g=p}else if(E==="bezierCurveTo"){let C={x:(e+Q[0])*n,y:-(t+Q[1])*n},p={x:(e+Q[2])*n,y:-(t+Q[3])*n},h={x:(e+Q[4])*n,y:-(t+Q[5])*n};Fo(g,C,p,h,r,l),g=h}else E==="closePath"&&I()}return I(),{contours:s,simplified:a}}var vo=Math.cos(30*Math.PI/180);function Ro({contours:A,simplified:e}){if(!e)return Lo(A);let t=A.map(o=>({contour:o,area:Math.abs(Ye(o))}));t.sort((o,a)=>a.area-o.area);let n=t.map(()=>[]);for(let o=0;o<t.length;o++){let a=t[o].contour,s=a[Math.floor(a.length/2)];for(let g=0;g<o;g++){if(t[g].area<=t[o].area)continue;let l=t[g].contour;(bt(a[0],l)||bt(s,l))&&n[o].push(g)}}let r=[],i=new Map;for(let o=0;o<t.length;o++){let a=n[o];if(a.length%2===0){let s={outer:t[o].contour,holes:[]};r.push(s),i.set(o,s)}else i.get(a[a.length-1])?.holes.push(t[o].contour)}return r}function Lo(A){let e=A.map(r=>{let i=Ye(r);return{contour:r,signed:i,area:Math.abs(i)}});if(e.length===0)return[];e.sort((r,i)=>i.area-r.area);let t=Math.sign(e[0].signed),n=[];for(let r of e)Math.sign(r.signed)===t&&n.push({outer:r.contour,holes:[]});for(let r of e){if(Math.sign(r.signed)===t)continue;let i=r.contour[0],o=r.contour[Math.floor(r.contour.length/2)],a,s=Number.POSITIVE_INFINITY;for(let g of n){let l=Math.abs(Ye(g.outer));l>r.area&&l<s&&(bt(i,g.outer)||bt(o,g.outer))&&(a=g,s=l)}a?.holes.push(r.contour)}return n}var Sr=new WeakMap;function ko(A,e,t,n,r,i){let o=Sr.get(A);o||(o=new Map,Sr.set(A,o));let a=`${e.id}|${r}|${i.segments??""}|${i.tolerance}`,s=o.get(a);s||(s=Ro(So(e,0,0,r,i)),o.set(a,s));let g=t*r,l=-n*r,I=B=>B.map(E=>({x:E.x+g,y:E.y+l}));return s.map(B=>({outer:I(B.outer),holes:B.holes.map(I)}))}function El(A){let e=A.font,t=A.fontSize??48,n=A.depth??20,r=n/2,i={segments:A.curveSegments!==void 0?Math.max(2,A.curveSegments):void 0,tolerance:Math.max(.001,A.curveTolerance??Mo)},o=e.unitsPerEm||1e3,a=t/o,s=Vn(e,A.text.replace(/\n/g," "),{direction:A.direction,letterSpacing:A.letterSpacing?A.letterSpacing/a:0}),g=[];for(let X of s.glyphs){let V=e.getGlyph(X.glyphId),Z=ko(e,V,X.x,X.y,a,i);for(let mA of Z)g.push(mA)}let l=Number.POSITIVE_INFINITY,I=Number.NEGATIVE_INFINITY,B=Number.POSITIVE_INFINITY,E=Number.NEGATIVE_INFINITY;for(let X of g){for(let V of X.outer)V.x<l&&(l=V.x),V.x>I&&(I=V.x),V.y<B&&(B=V.y),V.y>E&&(E=V.y);for(let V of X.holes)for(let Z of V)Z.x<l&&(l=Z.x),Z.x>I&&(I=Z.x),Z.y<B&&(B=Z.y),Z.y>E&&(E=Z.y)}Number.isFinite(l)||(l=0,I=0,B=0,E=0);let Q=I-l,C=E-B,p=(s.baseLevel&1)===1,h=A.align==="start"?p?"right":"left":A.align==="end"?p?"left":"right":A.align,d=(l+I)/2;h==="left"&&(d=l),h==="right"&&(d=I);let D=(B+E)/2;A.verticalAlign==="top"&&(D=B),A.verticalAlign==="bottom"&&(D=E);for(let X of g){for(let V of X.outer)V.x-=d,V.y-=D;for(let V of X.holes)for(let Z of V)Z.x-=d,Z.y-=D}l-=d,I-=d,B-=D,E-=D;let x=[],G=[],M=[],w=[],b=[],N=[],U=[],L=[],F=(X,V,Z)=>{let mA=b.length/3;return b.push(X.x,X.y,r,X.x,X.y,-r),N.push(V.x,V.y,0,V.x,V.y,0),U.push(Z,0,Z,1),mA},J=X=>{let V=X.filter((k,eA)=>{let q=X[(eA+1)%X.length];return Math.hypot(q.x-k.x,q.y-k.y)>=1e-6}),Z=V.length;if(Z<2)return;let mA=[],$=V.map((k,eA)=>{let q=V[(eA+1)%Z],sA=Math.hypot(q.x-k.x,q.y-k.y);return mA.push(sA),{x:(q.y-k.y)/sA,y:-(q.x-k.x)/sA}}),lA=mA.reduce((k,eA)=>k+eA,0),IA=[],yA=[],AA=0;for(let k=0;k<Z;k++){let eA=$[(k-1+Z)%Z],q=$[k],sA=AA/lA,BA=eA.x+q.x,T=eA.y+q.y,oA=eA.x*q.x+eA.y*q.y>=vo?{x:BA/Math.hypot(BA,T),y:T/Math.hypot(BA,T)}:null;oA&&k>0?IA[k]=yA[k]=F(V[k],oA,sA):(yA[k]=F(V[k],oA??eA,k===0?1:sA),IA[k]=F(V[k],oA??q,sA)),AA+=mA[k]}for(let k=0;k<Z;k++){let eA=IA[k],q=yA[(k+1)%Z];L.push(eA,q+1,q),L.push(eA,eA+1,q+1)}};for(let X of g){let V=X.outer;Ye(V)<0&&V.reverse();for(let AA of X.holes)Ye(AA)>0&&AA.reverse();let Z=[],mA=[];for(let AA of V)Z.push(AA.x,AA.y);for(let AA of X.holes){mA.push(Z.length/2);for(let k of AA)Z.push(k.x,k.y)}let $=Bn(Z,mA,2),lA=Z.length/2,IA=x.length/3;for(let AA=0;AA<lA;AA++){let k=Z[AA*2],eA=Z[AA*2+1];x.push(k,eA,-r),G.push(0,0,-1),M.push((k-l)/(Q||1),(eA-B)/(C||1))}for(let AA=0;AA<$.length;AA+=3)w.push(IA+$[AA],IA+$[AA+2],IA+$[AA+1]);let yA=x.length/3;for(let AA=0;AA<lA;AA++){let k=Z[AA*2],eA=Z[AA*2+1];x.push(k,eA,r),G.push(0,0,1),M.push((k-l)/(Q||1),(eA-B)/(C||1))}for(let AA=0;AA<$.length;AA+=3)w.push(yA+$[AA],yA+$[AA+1],yA+$[AA+2]);J(V);for(let AA of X.holes)J(AA)}let W=Dt(A.fill??"#ffffff"),K=Dt(A.bevelColor??A.fill??"#ffffff"),aA={name:"front-material",diffuseColor:W,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},j={name:"side-material",diffuseColor:K,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},rA=[];return w.length>0&&rA.push({id:"text-front-mesh",name:"front",positions:new Float32Array(x),normals:new Float32Array(G),uvs:new Float32Array(M),indices:x.length/3>65535?new Uint32Array(w):new Uint16Array(w),materialName:"front-material"}),L.length>0&&rA.push({id:"text-side-mesh",name:"side",positions:new Float32Array(b),normals:new Float32Array(N),uvs:new Float32Array(U),indices:b.length/3>65535?new Uint32Array(L):new Uint16Array(L),materialName:"side-material"}),{modelData:{name:`extruded-text-${A.text}`,meshes:rA,materials:{"front-material":aA,"side-material":j},animations:[],bounds:{min:[l,B,-r],max:[I,E,r],center:[(l+I)/2,(B+E)/2,0],size:[Q,C,n],boundingSphereRadius:Math.hypot(Q,C,n)/2}},bounds:{minX:l,maxX:I,minY:B,maxY:E,width:Q,height:C,depth:n}}}var Qn=class{positions=[];normals=[];uvs=[];indices=[];vertex(e,t,n){return this.positions.push(e[0],e[1],e[2]),this.normals.push(t[0],t[1],t[2]),this.uvs.push(n[0],n[1]),this.positions.length/3-1}grid(e,t,n,r=!1){for(let i=0;i<n;i++)for(let o=0;o<t;o++){let a=e+i*(t+1)+o,s=a+1,g=a+t+1,l=g+1;r?this.indices.push(a,s,g,s,l,g):this.indices.push(a,g,s,s,g,l)}}build(e){let t=this.positions.length/3;return{id:`${e}-mesh`,name:e,positions:new Float32Array(this.positions),normals:new Float32Array(this.normals),uvs:new Float32Array(this.uvs),indices:t>65535?new Uint32Array(this.indices):new Uint16Array(this.indices),materialName:`${e}-material`}}};function Cn(A){let e=Math.hypot(A[0],A[1],A[2]);return e>1e-12?[A[0]/e,A[1]/e,A[2]/e]:[0,0,0]}function En(A,e,t){if(e<=0)return[-A,A];let n=A-e,r=[];for(let i=0;i<=t;i++)r.push(-n-e*Math.cos(i/t*Math.PI/2));for(let i=n>1e-9?0:1;i<=t;i++)r.push(n+e*Math.sin(i/t*Math.PI/2));return r}function Po(A,e){let t=A.width/2,n=A.height/2,r=A.depth/2,i=Math.max(0,Math.min(A.radius??0,t,n,r)),o=Math.max(1,Math.round(A.segments??4)),a=A.taper??1,s=t-i,g=n-i,l=r-i,I=En(t,i,o),B=En(n,i,o),E=En(r,i,o),Q=A.height>0?(1-a)/A.height:0,C=x=>a+Q*(x+n),p=(x,G)=>{let M=[Math.max(-s,Math.min(s,x[0])),Math.max(-g,Math.min(g,x[1])),Math.max(-l,Math.min(l,x[2]))],w=i>0?Cn([x[0]-M[0],x[1]-M[1],x[2]-M[2]]):G;w[0]===0&&w[1]===0&&w[2]===0&&(w=G);let b=[M[0]+w[0]*i,M[1]+w[1]*i,M[2]+w[2]*i];if(a===1)return{p:b,n:w};let N=C(b[1]);return{p:[b[0]*N,b[1],b[2]*N],n:Cn([w[0]/N,w[1]-b[0]*Q*w[0]/N-b[2]*Q*w[2]/N,w[2]/N])}},h=[{axis:2,sign:-1,u:0,v:1},{axis:2,sign:1,u:0,v:1},{axis:0,sign:-1,u:2,v:1},{axis:0,sign:1,u:2,v:1},{axis:1,sign:-1,u:0,v:2},{axis:1,sign:1,u:0,v:2}],d=[t,n,r],D=[I,B,E];for(let x of h){let G=D[x.u],M=D[x.v],w=[0,0,0];w[x.axis]=x.sign;let b=e.positions.length/3;for(let U=0;U<M.length;U++)for(let L=0;L<G.length;L++){let F=[0,0,0];F[x.axis]=x.sign*d[x.axis],F[x.u]=G[L],F[x.v]=M[U];let{p:J,n:W}=p(F,w);e.vertex(J,W,[(G[L]/d[x.u]+1)/2,(M[U]/d[x.v]+1)/2])}let N=(x.v+1)%3===x.u;e.grid(b,G.length-1,M.length-1,(N?1:-1)!==x.sign)}}function Ho(A,e){let t=Math.max(3,Math.round(A.segments??32)),n=Math.max(2,Math.round(t/2));for(let r=0;r<=n;r++){let i=r/n*Math.PI;for(let o=0;o<=t;o++){let a=o/t*Math.PI*2,s=[Math.sin(i)*Math.cos(a),-Math.cos(i),Math.sin(i)*Math.sin(a)];e.vertex([s[0]*A.radius,s[1]*A.radius,s[2]*A.radius],s,[o/t,r/n])}}e.grid(0,t,n)}function To(A,e){let t=Math.max(3,Math.round(A.segments??32)),n=A.radiusTop??A.radius??50,r=A.radiusBottom??A.radius??50,i=A.height/2,o=A.height>0?(r-n)/A.height:0;for(let a=0;a<=1;a++){let s=a===0?n:r,g=a===0?-i:i;for(let l=0;l<=t;l++){let I=l/t*Math.PI*2,B=Math.cos(I),E=Math.sin(I);e.vertex([B*s,g,E*s],Cn([B,-o,E]),[l/t,a])}}if(e.grid(0,t,1),!A.openEnded)for(let[a,s,g]of[[-i,n,-1],[i,r,1]]){if(s<=0)continue;let l=e.vertex([0,a,0],[0,g,0],[.5,.5]),I=e.positions.length/3;for(let B=0;B<=t;B++){let E=B/t*Math.PI*2,Q=Math.cos(E),C=Math.sin(E);e.vertex([Q*s,a,C*s],[0,g,0],[(Q+1)/2,(C+1)/2])}for(let B=0;B<t;B++)g<0?e.indices.push(l,I+B,I+B+1):e.indices.push(l,I+B+1,I+B)}}function Jo(A){let e=new Qn;if(A.type==="roundedBox")Po(A,e);else if(A.type==="sphere")Ho(A,e);else if(A.type==="cylinder")To(A,e);else throw new Error(`Unknown 3D primitive: ${A.type}`);let t=A.type,n=e.build(t),r={name:`${t}-material`,diffuseColor:Dt(A.color??"#ffffff"),shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic},i=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],o=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],a=n.positions;for(let g=0;g<a.length;g+=3)for(let l=0;l<3;l++){let I=a[g+l];I<i[l]&&(i[l]=I),I>o[l]&&(o[l]=I)}let s=[o[0]-i[0],o[1]-i[1],o[2]-i[2]];return{name:`primitive-${t}`,meshes:[n],materials:{[r.name]:r},animations:[],bounds:{min:i,max:o,center:[(i[0]+o[0])/2,(i[1]+o[1])/2,(i[2]+o[2])/2],size:s,boundingSphereRadius:Math.hypot(...s)/2}}}var wt=new Map;function dl(A){let e=JSON.stringify(A),t=wt.get(e);return t||(t=Jo(A),wt.size>512&&wt.clear(),wt.set(e,t)),t}var fn=new Map;function Oo(A,e){return JSON.stringify({text:A,...e})}function dn(A,e){let t=A?String(A):" ",n=Oo(t,e),r=fn.get(n);if(r)return r;let i=e.fontSize??48,o=e.fontFamily??"Inter";te.isFailed(o)&&(o="Inter");let a=e.letterSpacing??0,s=e.lineHeight!==void 0&&e.lineHeight<10?e.lineHeight*i:e.lineHeight??i*1.2,g=te.getFont(o,e.fontWeight,null),l=e.padding??0;if(!g){if(!te.isFailed(o)){let d=Jt(o);te.preloadSlugFont(null,o,d).catch(()=>{})}let E=t.split(`
1446
+ `;var dr=24,dt=class{device;pipelineSingle;pipelineMrt;bloomVariants;modelLayout;fontLayout;modelPool;instancePool;fontBindGroups=new WeakMap;modelData=new Float32Array(40+_A);constructor(e,t,n,r,i,o=1){this.device=e,this.modelPool=new GA((40+_A)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.instancePool=new GA(65536,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"slug3d.wgsl",code:fr});this.modelLayout=e.createBindGroupLayout({label:"Slug3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},Ce(1)]}),this.fontLayout=e.createBindGroupLayout({label:"Slug3DFontLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"unfilterable-float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}}]});let s=e.createPipelineLayout({bindGroupLayouts:[r,this.modelLayout,this.fontLayout,i]}),g={module:a,entryPoint:"vs",buffers:[{arrayStride:dr*4,stepMode:"instance",attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x4"},{shaderLocation:2,offset:32,format:"float32x4"},{shaderLocation:3,offset:48,format:"float32x4"},{shaderLocation:4,offset:64,format:"float32x4"},{shaderLocation:5,offset:80,format:"float32x4"}]}]},E={label:"Slug3DPipeline",layout:s,vertex:g,module:a,format:t,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:o}},{single:Q,mrt:C}=de(e,E);this.pipelineSingle=Q,this.pipelineMrt=C,this.bloomVariants=new ne(e,E)}resetPools(){this.modelPool.reset(),this.instancePool.reset()}draw(e,t,n,r,i,o,a,s=!1,g=!1){if(o===0||!r.curvesTex||!r.bandsTex)return;this.modelData.set(a.modelMatrix,0),this.modelData.set(a.normalMatrix,16),this.modelData[32]=a.opacity,this.modelData[33]=a.slant,this.modelData[34]=a.twoSided?1:0,this.modelData[35]=a.depthPull,this.modelData.set(_t(a),36),me(a,this.modelData,40);let l=this.modelPool.getBuffer(this.device,this.modelData),I=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:l}},{binding:1,resource:a.matte?.createView()??fe(this.device)}]}),B=this.instancePool.getBuffer(this.device,i.subarray(0,o*dr));e.setPipeline(g?this.bloomVariants.get(s):s?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,I),e.setBindGroup(2,this.fontBindGroup(r.curvesTex,r.bandsTex)),e.setBindGroup(3,n),e.setVertexBuffer(0,B),e.draw(6,o)}fontBindGroup(e,t){let n=this.fontBindGroups.get(e);return n||(n=this.device.createBindGroup({layout:this.fontLayout,entries:[{binding:0,resource:e.createView()},{binding:1,resource:t.createView()}]}),this.fontBindGroups.set(e,n)),n}destroy(){this.modelPool.destroy(),this.instancePool.destroy()}};var to={repeat:"repeat",clamp:"clamp-to-edge",mirror:"mirror-repeat"},no=5e-4,mr=class{device;format;quad3dPipeline;slug3dPipeline;mesh3dPipeline;audioMeshDeformPipeline;dofPipeline;dofBindGroupLayout;cameraPool;lightsPool;cameraUniformBindGroupCache=new zn;samplerCache=new Zn;depthTexture=null;linearDepthTexture=null;msaaColorTexture=null;msaaLinearDepthTexture=null;msaaHdrTexture=null;hdrTexture=null;passWritesHdr=!1;cameraUniformData=new Float32Array(80);meshBuffersCache=new WeakMap;materialTextures=new WeakMap;materialMapCache=new WeakMap;modelCache=new Map;lastCameraPose=null;shadowTexture=null;placeholderShadowTexture=null;shadowSampler=null;meshBounds=new WeakMap;bloomPipeline=null;lastCameraBuffer=null;sampleCount;constructor(e,t,n=4){this.device=e,this.format=t,this.sampleCount=n,this.quad3dPipeline=new Qt(e,t,"depth24plus",n),this.slug3dPipeline=new dt(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.mesh3dPipeline=new Ct(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.audioMeshDeformPipeline=new at(e),this.cameraPool=new GA(320,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.lightsPool=new GA(Kt,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"dof-bokeh.wgsl",code:Ir});this.dofBindGroupLayout=e.createBindGroupLayout({label:"DoFBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.dofPipeline=e.createRenderPipeline({label:"DoFBokehPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.dofBindGroupLayout]}),vertex:{module:r,entryPoint:"vs_fullscreen"},fragment:{module:r,entryPoint:"fs_dof",targets:[{format:t}]},primitive:{topology:"triangle-list"}})}resetPools(){this.bloomPipeline?.resetPools(),this.cameraPool.reset(),this.lastCameraPose=null,this.lastCameraBuffer=null,this.lightsPool.reset(),this.quad3dPipeline.resetPools(),this.slug3dPipeline.resetPools(),this.mesh3dPipeline.resetPools(),this.audioMeshDeformPipeline.resetPools()}getOrCreateDepthTexture(e,t){return(!this.depthTexture||this.depthTexture.width!==e||this.depthTexture.height!==t)&&(this.depthTexture?.destroy(),this.depthTexture=this.device.createTexture({label:"Renderer3DDepthTexture",size:{width:e,height:t},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.depthTexture}getOrCreateMsaaTexture(e,t,n,r,i){return e&&e.width===r&&e.height===i?e:(e?.destroy(),this.device.createTexture({label:t,size:{width:r,height:i},format:n,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}))}hdrSource(){return this.hdrTexture}getOrCreateHdrTexture(e,t){return(!this.hdrTexture||this.hdrTexture.width!==e||this.hdrTexture.height!==t)&&(this.hdrTexture?.destroy(),this.hdrTexture=this.device.createTexture({label:"Renderer3DHdrRadiance",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.hdrTexture}getOrCreateLinearDepthTexture(e,t){return(!this.linearDepthTexture||this.linearDepthTexture.width!==e||this.linearDepthTexture.height!==t)&&(this.linearDepthTexture?.destroy(),this.linearDepthTexture=this.device.createTexture({label:"Renderer3DLinearDepthTexture",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.linearDepthTexture}packCameraUniforms(e,t,n,r=0){if(this.lastCameraPose&&this.lastCameraBuffer&&this.lastCameraPose.eye[0]===e.eye[0]&&this.lastCameraPose.eye[1]===e.eye[1]&&this.lastCameraPose.eye[2]===e.eye[2]&&this.lastCameraPose.target[0]===e.target[0]&&this.lastCameraPose.target[1]===e.target[1]&&this.lastCameraPose.target[2]===e.target[2]&&this.lastCameraPose.up[0]===e.up[0]&&this.lastCameraPose.up[1]===e.up[1]&&this.lastCameraPose.up[2]===e.up[2]&&this.lastCameraPose.fov===e.fov&&this.lastCameraPose.near===e.near&&this.lastCameraPose.far===e.far)return this.lastCameraBuffer;let i=Ie.computeViewMatrix(e),o=Ie.computeProjectionMatrix(e),a=Ie.computeViewProjectionMatrix(e),s=_.invert(a)??_.identity();this.cameraUniformData.set(i,0),this.cameraUniformData.set(o,16),this.cameraUniformData.set(a,32),this.cameraUniformData.set(s,48),this.cameraUniformData[64]=e.eye[0],this.cameraUniformData[65]=e.eye[1],this.cameraUniformData[66]=e.eye[2],this.cameraUniformData[67]=e.near;let g=R.normalize(R.subtract(e.target,e.eye));this.cameraUniformData[68]=g[0],this.cameraUniformData[69]=g[1],this.cameraUniformData[70]=g[2],this.cameraUniformData[71]=e.far,this.cameraUniformData[72]=e.focusDistance??1e3,this.cameraUniformData[73]=e.fStop??2.8,this.cameraUniformData[74]=e.maxBlurRadius??32,this.cameraUniformData[75]=e.focusDistance!==void 0?1:0,this.cameraUniformData[76]=t,this.cameraUniformData[77]=n,this.cameraUniformData[78]=r,this.cameraUniformData[79]=0;let l=this.cameraPool.getBuffer(this.device,this.cameraUniformData);return this.lastCameraPose=e,this.lastCameraBuffer=l,l}createCameraBindGroup(e){return this.cameraUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.cameraLayout,e)}getOrCreateLightsBuffer(e,t){let n=qA.packLightsUniforms(e??[],t?.environment,t?.shadow);return this.lightsPool.getBuffer(this.device,n)}createLightsBindGroup(e,t){this.shadowSampler??=this.device.createSampler({label:"ShadowComparisonSampler",compare:"less-equal",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.placeholderShadowTexture??=this.device.createTexture({label:"ShadowMapPlaceholder",size:{width:1,height:1},format:Bt,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT});let n=t&&this.shadowTexture?this.shadowTexture:this.placeholderShadowTexture;return this.device.createBindGroup({label:"Lights3DBindGroup",layout:this.quad3dPipeline.lightsLayout,entries:[{binding:0,resource:{buffer:e}},{binding:1,resource:n.createView()},{binding:2,resource:this.shadowSampler}]})}meshAabb(e){let t=this.meshBounds.get(e);if(!t){let n=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],i=e.positions;for(let o=0;o+2<i.length;o+=3)for(let a=0;a<3;a++){let s=i[o+a];s<n[a]&&(n[a]=s),s>r[a]&&(r[a]=s)}t=Number.isFinite(n[0])?{min:n,max:r}:{min:[0,0,0],max:[0,0,0]},this.meshBounds.set(e,t)}return t}worldBounds(e){return e.kind==="mesh"?$t(this.meshAabb(e.mesh),this.meshModelMatrix(e.opts)):$t({min:[-.5,-.5,0],max:[.5,.5,0]},this.quadModelMatrix(e.opts))}renderShadowMap(e,t,n,r,i,o={}){let a=t.lightType??t.type;if(a!=="directional"&&a!=="spot")return null;let s=qA.processLight(t),g=[s.posType[0],s.posType[1],s.posType[2]],l=[s.dirRadius[0],s.dirRadius[1],s.dirRadius[2]],I=o.mapSize??2048,B=r.map(d=>this.worldBounds(d)),E=Cr({type:a,position:g,direction:l,angle:t.angle},B,i,I);if(!E)return null;(!this.shadowTexture||this.shadowTexture.width!==I)&&(this.shadowTexture?.destroy(),this.shadowTexture=this.device.createTexture({label:"ShadowMap",size:{width:I,height:I},format:Bt,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}));let Q=new Float32Array(80);Q.set(E.viewProj,32),Q.set(E.viewProj,0),Q[5]=1,Q.set(E.viewProj,16),Q[64]=g[0],Q[65]=g[1],Q[66]=g[2],Q[68]=l[0],Q[69]=l[1],Q[70]=l[2],Q[76]=I,Q[77]=I;let C=this.createCameraBindGroup(this.cameraPool.getBuffer(this.device,Q)),p=e.beginRenderPass({label:"ShadowMapPass",colorAttachments:[],depthStencilAttachment:{view:this.shadowTexture.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}}),h=this.samplerCache.getSampler(this.device);for(let d of r)if(d.kind==="mesh"){let D=this.meshModelMatrix(d.opts);this.mesh3dPipeline.drawShadow(p,C,d.buffers??this.getOrCreateMeshBuffers(d.mesh),{modelMatrix:D,normalMatrix:d.opts.normalMatrix??qA.computeNormalMatrix(D),isSkinned:d.opts.isSkinned,skinningMatrices:d.opts.skinningMatrices})}else{let D=this.quadModelMatrix(d.opts);this.quad3dPipeline.drawShadow(p,C,d.texture,h,{modelMatrix:D,normalMatrix:D,width:d.opts.width,height:d.opts.height,textureExtent:d.opts.textureExtent,opacity:d.opts.opacity,colorTint:d.opts.colorTint})}return p.end(),{matrix:E.viewProj,lightIndex:n,mapSize:I,softness:o.softness??t.shadowSoftness??2.5,bias:a==="directional"?6e-4:8e-5,normalOffset:E.texelWorldSize*1.5,darkness:o.darkness??t.shadowDarkness??1}}beginPass(e,t,n,r,i,o="clear",a={r:0,g:0,b:0,a:0},s,g,l,I=!1){let B=this.getOrCreateDepthTexture(n,r),E=this.packCameraUniforms(i,n,r),Q=this.createCameraBindGroup(E),C=this.getOrCreateLightsBuffer(g,l),p=this.createLightsBindGroup(C,!!l?.shadow),h=this.sampleCount>1;if(h&&o==="load")throw new Error("Renderer3D.beginPass: loadOp 'load' needs a Renderer3D built with sampleCount 1");let d=(G,M,w,b)=>M?{view:M.createView(),resolveTarget:G,loadOp:"clear",storeOp:"discard",clearValue:w}:{view:G,loadOp:b,storeOp:"store",clearValue:w};h&&(this.msaaColorTexture=this.getOrCreateMsaaTexture(this.msaaColorTexture,"Renderer3DMsaaColor",this.format,n,r));let D=[d(t,h?this.msaaColorTexture:null,a,o)];return s&&(h&&(this.msaaLinearDepthTexture=this.getOrCreateMsaaTexture(this.msaaLinearDepthTexture,"Renderer3DMsaaLinearDepth","rgba16float",n,r)),D.push(d(s,h?this.msaaLinearDepthTexture:null,{r:i.far,g:0,b:0,a:1},"clear"))),this.passWritesHdr=I,I&&(this.hdrTexture=this.getOrCreateHdrTexture(n,r),h&&(this.msaaHdrTexture=this.getOrCreateMsaaTexture(this.msaaHdrTexture,"Renderer3DMsaaHdr","rgba16float",n,r)),D.push(d(this.hdrTexture.createView(),h?this.msaaHdrTexture:null,{r:0,g:0,b:0,a:0},"clear"))),{pass:e.beginRenderPass({colorAttachments:D,depthStencilAttachment:{view:B.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:h?"discard":"store"}}),cameraBindGroup:Q,cameraBuffer:E,lightsBindGroup:p}}quadModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t,width:n,height:r,rotation:i=[0,0,0],scale:o=[1,1,1],anchor:a=[.5,.5]}=e,s=_.identity();s=_.multiply(s,_.translate(t[0],t[1],t[2]));let g=i[0]*Math.PI/180,l=i[1]*Math.PI/180,I=i[2]*Math.PI/180;I!==0&&(s=_.multiply(s,_.rotateZ(I))),l!==0&&(s=_.multiply(s,_.rotateY(l))),g!==0&&(s=_.multiply(s,_.rotateX(g)));let B=n*o[0],E=r*o[1],Q=o[2];s=_.multiply(s,_.scale(B,E,Q));let C=.5-a[0],p=.5-a[1];return(C!==0||p!==0)&&(s=_.multiply(s,_.translate(C,p,0))),s}drawSlugText(e,t,n,r,i,o=0,a=!1){let{width:s,height:g}=i;if(!(s>0&&g>0))return;let l=this.quadModelMatrix(i),I=i.normalMatrix??qA.computeNormalMatrix(l),B=_.multiply(l,_.multiply(_.translate(-.5,-.5,0),_.scale(1/s,1/g,1)));for(let E=0;E<r.length;E++){let Q=r[E],[C,p,h,d,D,x]=Q.transform,G=[C,p,0,0,h,d,0,0,0,0,1,0,D,x,0,1];this.slug3dPipeline.draw(e,t,n,Q.font,Q.instances,Q.instanceCount,{modelMatrix:_.multiply(B,G),normalMatrix:I,opacity:Q.opacity*(i.opacity??1),slant:Q.slant,twoSided:i.twoSided??!0,depthPull:no*(o+E+1),material:i.material,shininess:i.shininess??32,roughness:i.roughness,specularIntensity:i.specularIntensity??.5,ambientIntensity:i.ambientIntensity??1,metallic:i.metallic,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte},a,this.passWritesHdr)}}drawTextureQuad(e,t,n,r,i,o=!1){let{width:a,height:s,opacity:g=1,colorTint:l=[1,1,1,1],borderColor:I,borderWidth:B=0,borderRadius:E=0,twoSided:Q=!0,material:C="lit",shininess:p=32,roughness:h,specularIntensity:d=.5,ambientIntensity:D=1,metallic:x}=i,G=this.quadModelMatrix(i),M=i.normalMatrix??qA.computeNormalMatrix(G),w=this.samplerCache.getSampler(this.device),b;if(I)if(Array.isArray(I))b=I;else{let N=et(I);b=[N.r,N.g,N.b,N.a]}this.quad3dPipeline.draw(e,t,n,r,w,{modelMatrix:G,normalMatrix:M,colorTint:l,borderColor:b,borderWidth:B,opacity:g,borderRadius:E,twoSided:Q,width:a,height:s,textureExtent:i.textureExtent,material:C,shininess:p,roughness:h,specularIntensity:d,ambientIntensity:D,metallic:x,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte},o,this.passWritesHdr)}meshModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t=[0,0,0],rotation:n=[0,0,0],scale:r=[1,1,1]}=e,i=_.translate(t[0],t[1],t[2]),o=n[0]*Math.PI/180,a=n[1]*Math.PI/180,s=n[2]*Math.PI/180;return s!==0&&(i=_.multiply(i,_.rotateZ(s))),a!==0&&(i=_.multiply(i,_.rotateY(a))),o!==0&&(i=_.multiply(i,_.rotateX(o))),_.multiply(i,_.scale(r[0],r[1],r[2]))}getOrCreateMeshBuffers(e){let t=this.meshBuffersCache.get(e);if(t)return t;let n=e.positions.length/3,r=new Float32Array(n*16);for(let l=0;l<n;l++){let I=l*16;r[I]=e.positions[l*3]??0,r[I+1]=e.positions[l*3+1]??0,r[I+2]=e.positions[l*3+2]??0,r[I+3]=e.uvs[l*2]??0,r[I+4]=e.uvs[l*2+1]??0,r[I+5]=e.normals[l*3]??0,r[I+6]=e.normals[l*3+1]??0,r[I+7]=e.normals[l*3+2]??1,e.jointIndices?(r[I+8]=e.jointIndices[l*4]??0,r[I+9]=e.jointIndices[l*4+1]??0,r[I+10]=e.jointIndices[l*4+2]??0,r[I+11]=e.jointIndices[l*4+3]??0):(r[I+8]=0,r[I+9]=0,r[I+10]=0,r[I+11]=0),e.jointWeights?(r[I+12]=e.jointWeights[l*4]??0,r[I+13]=e.jointWeights[l*4+1]??0,r[I+14]=e.jointWeights[l*4+2]??0,r[I+15]=e.jointWeights[l*4+3]??0):(r[I+12]=0,r[I+13]=0,r[I+14]=0,r[I+15]=0)}let i=Math.ceil(r.byteLength/4)*4,o=this.device.createBuffer({size:Math.max(4,i),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,mappedAtCreation:!0});new Float32Array(o.getMappedRange()).set(r),o.unmap();let a=e.indices instanceof Uint32Array,s=Math.ceil(e.indices.byteLength/4)*4,g=this.device.createBuffer({size:Math.max(4,s),usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return a?new Uint32Array(g.getMappedRange()).set(e.indices):new Uint16Array(g.getMappedRange()).set(e.indices),g.unmap(),t={vertexBuffer:o,indexBuffer:g,indexCount:e.indices.length,indexFormat:a?"uint32":"uint16"},this.meshBuffersCache.set(e,t),t}deformMesh(e,t,n){let r=this.getOrCreateMeshBuffers(t),i=t.positions.length/3;return{vertexBuffer:this.audioMeshDeformPipeline.execute(e,r.vertexBuffer,{config:n.config,audioLatentBuffer:n.latentBuffer,vertexCount:i,timeMs:n.timeMs,sampleRate:n.sampleRate}),indexBuffer:r.indexBuffer,indexCount:r.indexCount,indexFormat:r.indexFormat}}drawMesh3D(e,t,n,r,i,o={},a=!1){let s="vertexBuffer"in r?r:this.getOrCreateMeshBuffers(r),{opacity:g=1,colorTint:l=[1,1,1,1],twoSided:I=!0,wireframe:B=!1,isSkinned:E=!1,skinningMatrices:Q,material:C="lit",shadeColor:p,alphaCutoff:h,textureWrap:d="clamp",shininess:D=32,roughness:x,specularIntensity:G=.5,ambientIntensity:M=1,metallic:w}=o,b=this.meshModelMatrix(o),N=o.normalMatrix??qA.computeNormalMatrix(b),U=to[d],L=this.samplerCache.getSampler(this.device,{addressModeU:U,addressModeV:U});this.mesh3dPipeline.draw(e,t,n,s,i,L,{modelMatrix:b,normalMatrix:N,colorTint:l,opacity:g,twoSided:I,wireframe:B,isSkinned:E,skinningMatrices:Q,material:C,shadeColor:p,alphaCutoff:h,shininess:D,roughness:x,specularIntensity:G,ambientIntensity:M,metallic:w,emissive:o.emissive,emissiveIntensity:o.emissiveIntensity,matte:o.matte,maps:o.maps},a,this.passWritesHdr)}loadModel(e,t="auto",n={}){if(typeof e!="string")return hr(e,t,n);let r=`${t}|${JSON.stringify(n)}|${e}`,i=this.modelCache.get(r);return i||(i=hr(e,t,n),this.modelCache.set(r,i)),i}materialTexture(e){let t=this.materialTextures.get(e);return t||(t=this.uploadMaterialTexture(e),this.materialTextures.set(e,t)),t}materialMaps(e){let t=this.materialMapCache.get(e);return t||(t=(async()=>{let n=e.name,[r,i,o,a]=await Promise.all([this.uploadImage(e.normalTextureBuffer,`${n}:normal`),this.uploadImage(e.metallicRoughnessTextureBuffer,`${n}:metallicRoughness`),this.uploadImage(e.occlusionTextureBuffer,`${n}:occlusion`),this.uploadImage(e.emissiveTextureBuffer,`${n}:emissive`)]);return{...r&&{normal:r,normalScale:e.normalScale??1},...i&&{metallicRoughness:i},...o&&{occlusion:o,occlusionStrength:e.occlusionStrength??1},...a&&{emissive:a}}})(),this.materialMapCache.set(e,t)),t}uploadMaterialTexture(e){return this.uploadImage(e.diffuseTextureBuffer,`Material:${e.name}`)}async uploadImage(e,t){if(!e)return;let n=(await import("./sharp-V6ZTBNDW.mjs")).default,r=Buffer.from(e instanceof Uint8Array?e:new Uint8Array(e)),{width:i,height:o}=await n(r).metadata();if(!i||!o)return;let a=Math.floor(Math.log2(Math.max(i,o)))+1,s=this.device.createTexture({label:t,size:{width:i,height:o},mipLevelCount:a,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let g=0;g<a;g++){let l=Math.max(1,i>>g),I=Math.max(1,o>>g),B=await n(r).ensureAlpha().resize(l,I,{fit:"fill"}).raw().toBuffer();this.device.queue.writeTexture({texture:s,mipLevel:g},B,{bytesPerRow:l*4,rowsPerImage:I},{width:l,height:I})}return s}applyBloom(e,t,n,r={},i){this.bloomPipeline??=new ut(this.device),this.bloomPipeline.apply(e,t,n,r,i??void 0)}applyDepthOfField(e,t,n,r,i){let o=this.samplerCache.getSampler(this.device),a=this.device.createBindGroup({layout:this.dofBindGroupLayout,entries:[{binding:0,resource:{buffer:i}},{binding:1,resource:o},{binding:2,resource:t.createView()},{binding:3,resource:n.createView()}]}),s=e.beginRenderPass({colorAttachments:[{view:r,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});s.setPipeline(this.dofPipeline),s.setBindGroup(0,a),s.draw(3),s.end()}destroy(){this.bloomPipeline?.destroy(),this.depthTexture?.destroy(),this.shadowTexture?.destroy(),this.placeholderShadowTexture?.destroy(),this.linearDepthTexture?.destroy(),this.msaaColorTexture?.destroy(),this.msaaLinearDepthTexture?.destroy(),this.msaaHdrTexture?.destroy(),this.hdrTexture?.destroy(),this.quad3dPipeline.destroy(),this.slug3dPipeline.destroy(),this.mesh3dPipeline.destroy(),this.cameraPool.destroy(),this.lightsPool.destroy(),this.cameraUniformBindGroupCache.destroy()}};function hr(A,e="auto",t={}){if(e==="gltf"||e==="glb")return st(A,t);if(e==="stl")return Se(A,t);if(e==="ply")return ve(A,t);if(e==="vox")return gt(A,t);if(e==="3ds")return lt(A,t);if(e==="off")return It(A,t);if(e==="fbx")return Fe(A,t);if(e==="obj")return Ne(A,void 0,t);let n=typeof A!="string",r=typeof A=="string"?A.trim():"",i=r.toLowerCase();if(i.endsWith(".glb")||i.endsWith(".gltf"))return st(A,t);if(i.endsWith(".stl"))return Se(A,t);if(i.endsWith(".ply"))return ve(A,t);if(i.endsWith(".vox"))return gt(A,t);if(i.endsWith(".3ds"))return lt(A,t);if(i.endsWith(".off"))return It(A,t);if(i.endsWith(".fbx"))return Fe(A,t);if(i.endsWith(".obj"))return Ne(A,void 0,t);if(n){let o=A instanceof Uint8Array?A:new Uint8Array(A);return ce.isGlb(o)?lr(o,t):re.isBinary(o)?Fe(o,t):Le.isVox(o)?gt(o,t):ke.is3DS(o)?lt(o,t):o.length>=3&&o[0]===112&&o[1]===108&&o[2]===121?ve(o,t):Ue.isBinary(o)?Se(o,t):Ne(o,void 0,t)}return r.startsWith("{")&&(r.includes('"asset"')||r.includes('"meshes"'))?st(r,t):r.startsWith("ply")||r.startsWith("PLY")?ve(r,t):r.startsWith("OFF")||r.startsWith("NOFF")||r.startsWith("COFF")?It(r,t):r.includes("FBXHeaderExtension")||r.includes("Kaydara FBX")?Fe(r,t):r.startsWith("solid")&&r.includes("facet")?Se(r,t):Ne(A,void 0,t)}v();var{cbrt:An,sqrt:en,PI:he}=Math,ro=(A,e,t,n,r)=>{let i=e+t*A,o=i**2+n;if(o>0){let l=en(o);return An(i+l)+An(i-l)-r}let a=An(en(i*i-o)),s=i?Math.atan(en(-o)/i):-he/2,g;return t<0?g=(i>0?2*he:he)-s:r<0?g=(i>0?2*he:-3*he)+s:g=(i>0?0:he)+s,2*a*Math.cos(g/3)-r},io=(A,e,t,n)=>((e*A+3*t)*A+n)*A,tn=A=>A;function pr(A,e,t,n){if(!(0<=A&&A<=1&&0<=t&&t<=1))throw new Error("bezier x values must be in [0, 1] range");if(A===e&&t===n)return tn;let r=6*(3*A-3*t+1),i=6*(t-2*A),o=3*A,a=r*r,s=i*i,g=i/r,l=3*i*o/a-s*i/(a*r),I=2*o/r-s/a,B=I*I*I,E=3/r,Q=3*e-3*n+1,C=n-2*e,p=3*e,h=r?ro:tn;return function(D){return D===0||D===1?D:io(h(D,l,E,B,g),Q,C,p)}}var rl={linear:tn,ease:pr(.25,.1,.25,1),quad:A=>A*A,cubic:A=>A*A*A,poly:A=>e=>e**A,sin:A=>1-Math.cos(A*Math.PI/2),circle:A=>1-Math.sqrt(1-A*A),exp:A=>2**(10*(A-1)),elastic:(A=1)=>{let e=A*Math.PI;return t=>1-Math.cos(t*Math.PI/2)**3*Math.cos(t*e)},back:(A=1.70158)=>e=>e*e*((A+1)*e-A),bounce:A=>{if(A<1/2.75)return 7.5625*A*A;if(A<2/2.75){let t=A-.5454545454545454;return 7.5625*t*t+.75}if(A<2.5/2.75){let t=A-.8181818181818182;return 7.5625*t*t+.9375}let e=A-2.625/2.75;return 7.5625*e*e+.984375},bezier:pr,in:A=>A,out:A=>e=>1-A(1-e),inOut:A=>e=>e<.5?A(e*2)/2:1-A((1-e)*2)/2};function yr(A,e,t,n){let r=n?.extrapolateLeft??"extend",i=n?.extrapolateRight??"extend";if(e.length!==t.length)throw new Error("inputRange and outputRange must have the same length");if(e.length<2)throw new Error("inputRange must have at least 2 elements");let o=e[0],a=e[e.length-1];if(A<o){if(r==="clamp")return t[0];if(r==="identity")return A}if(A>a){if(i==="clamp")return t[t.length-1];if(i==="identity")return A}let s=1;for(;s<e.length-1&&!(A<e[s]);s++);let g=e[s-1],l=e[s],I=t[s-1],B=t[s];if(g===l)return I;let E=(A-g)/(l-g);return n?.easing&&(E=n.easing(E)),I+E*(B-I)}v();var oo={damping:10,mass:1,stiffness:100,overshootClamping:!1},nn={};function ao({animation:A,now:e,config:t}){let{toValue:n,lastTimestamp:r,current:i,velocity:o}=A,a=Math.min(e-r,64);if(t.damping<=0)throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");if(t.stiffness<=0)throw new Error("Spring stiffness must be greater than 0.");if(t.mass<=0)throw new Error("Spring mass must be greater than 0.");let s=t.damping,g=t.mass,l=t.stiffness,I=[n,r,i,o,s,g,l,e].join("-");if(nn[I])return nn[I];let B=-o,E=n-i,Q=s/(2*Math.sqrt(l*g)),C=Math.sqrt(l/g),p=C*Math.sqrt(1-Q**2),h=a/1e3,d=Math.sin(p*h),D=Math.cos(p*h),x=Math.exp(-Q*C*h),G=x*(d*((B+Q*C*E)/p)+E*D),M=n-G,w=Q*C*G-x*(D*(B+Q*C*E)-p*E*d),b=Math.exp(-C*h),N=n-b*(E+(B+C*E)*h),U=b*(B*(h*C-1)+h*E*C*C),L={toValue:n,prevPosition:i,lastTimestamp:e,current:Q<1?M:N,velocity:Q<1?w:U};return nn[I]=L,L}var rn={};function Dr({frame:A,fps:e,config:t={}}){let i=[A,e,t.damping,t.mass,t.overshootClamping,t.stiffness].join("-");if(rn[i])return rn[i];let o={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},a=Math.max(0,A),s=a%1;for(let g=0;g<=Math.floor(a);g++){g===Math.floor(a)&&(g+=s);let l=g/e*1e3;o=ao({animation:o,now:l,config:{...oo,...t}})}return rn[i]=o,o}var on=new Map;function so({fps:A,config:e={},threshold:t=.005}){if(typeof t!="number")throw new TypeError(`threshold must be a number, got ${t}`);if(t===0)return 1/0;if(t===1)return 0;if(Number.isNaN(t))throw new TypeError("Threshold is NaN");if(!Number.isFinite(t))throw new TypeError("Threshold is not finite");if(t<0)throw new TypeError("Threshold is below 0");let n=[A,e.damping,e.mass,e.overshootClamping,e.stiffness,t].join("-");if(on.has(n))return on.get(n);let r=0,i=0,o=()=>Dr({fps:A,frame:r,config:e}),a=o(),s=()=>Math.abs(a.current-a.toValue),g=s();for(;g>=t;)r++,a=o(),g=s();i=r;for(let l=0;l<20;l++)r++,a=o(),g=s(),g>=t&&(l=0,i=r+1);return on.set(n,i),i}function sl({frame:A,fps:e,config:t={},from:n=0,to:r=1,durationInFrames:i,durationRestThreshold:o,delay:a=0,reverse:s=!1}){let g=s||typeof i<"u",l=g?so({fps:e,config:t,threshold:o}):void 0,I=g?{get:()=>l}:{get:()=>{throw new Error("did not calculate natural duration")}},E=(s?(i??I.get())-A:A)+(s?a:-a),Q=i===void 0?E:E/(i/I.get());if(i&&E>i)return r;let C=Dr({fps:e,frame:Q,config:t}),p=t.overshootClamping?r>=n?Math.min(C.current,r):Math.max(C.current,r):C.current;return n===0&&r===1?p:yr(p,[0,1],[n,r])}v();v();v();v();var Te=new Set,an=!1;function Bn(A,e,t=2){let n=e&&e.length,r=n?e[0]*t:A.length;Te.size&&Te.clear();let i=Mr(A,0,r,t,!0),o=[];if(!i||i.next===i.prev)return o;let a=0,s=0,g=0;if(n&&(i=co(A,e,i,t)),A.length>80*t){a=A[0],s=A[1];let l=a,I=s;for(let B=t;B<r;B+=t){let E=A[B],Q=A[B+1];E<a&&(a=E),Q<s&&(s=Q),E>l&&(l=E),Q>I&&(I=Q)}g=Math.max(l-a,I-s),g=g!==0?32767/g:0}return sn(i,o,a,s,g),o}function Mr(A,e,t,n,r){let i=null;if(r===xo(A,e,t,n)>0)for(let o=e;o<t;o+=n)i=xr(o/n|0,A[o],A[o+1],i);else for(let o=t-n;o>=e;o-=n)i=xr(o/n|0,A[o],A[o+1],i);return i&&Je(i,i.next)&&(Ke(i),i=i.next),i}function ae(A,e=A){let t=e===A,n=A,r;do r=!1,n!==n.next&&(Te.size===0||!Te.has(n))&&(Je(n,n.next)||MA(n.prev,n,n.next)===0)?((t||n===e)&&(e=n.prev),an=!0,Ke(n),n=n.prev,r=!0):(t||n!==e)&&(n=n.next,r=!t);while(r||n!==e);return e}function sn(A,e,t,n,r){r&&ho(A,t,n,r);let i=A,o=!1;for(;A.prev!==A.next;){let a=A.prev,s=A.next;if(MA(a,A,s)<0&&(r?lo(A,t,n,r):go(A))){e.push(a.i,A.i,s.i),Ke(A),A=s,i=s;continue}if(A=s,A===i){if(an=!1,A=ae(A),an){i=A;continue}if(!o){A=Io(A,e),i=A,o=!0;continue}uo(A,e,t,n,r);break}}}function go(A){let e=A.prev,t=A,n=A.next,r=e.x,i=t.x,o=n.x,a=e.y,s=t.y,g=n.y,l=Math.min(r,i,o),I=Math.min(a,s,g),B=Math.max(r,i,o),E=Math.max(a,s,g),Q=n.next;for(;Q!==e;){if(Q.x>=l&&Q.x<=B&&Q.y>=I&&Q.y<=E&&!(r===Q.x&&a===Q.y)&&yt(r,a,i,s,o,g,Q.x,Q.y)&&MA(Q.prev,Q,Q.next)>=0)return!1;Q=Q.next}return!0}function lo(A,e,t,n){let r=A.prev,i=A,o=A.next,a=r.x,s=i.x,g=o.x,l=r.y,I=i.y,B=o.y,E=Math.min(a,s,g),Q=Math.min(l,I,B),C=Math.max(a,s,g),p=Math.max(l,I,B),h=un(E,Q,e,t,n),d=un(C,p,e,t,n),D=A.prevZ;for(;D&&D.z>=h;){if(D.x>=E&&D.x<=C&&D.y>=Q&&D.y<=p&&D!==o&&!(a===D.x&&l===D.y)&&yt(a,l,s,I,g,B,D.x,D.y)&&MA(D.prev,D,D.next)>=0)return!1;D=D.prevZ}let x=A.nextZ;for(;x&&x.z<=d;){if(x.x>=E&&x.x<=C&&x.y>=Q&&x.y<=p&&x!==o&&!(a===x.x&&l===x.y)&&yt(a,l,s,I,g,B,x.x,x.y)&&MA(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function Io(A,e){let t=A,n=!1;do{let r=t.prev,i=t.next.next;Fr(r,t,t.next,i,!1)&&Oe(r,i)&&Oe(i,r)&&(e.push(r.i,t.i,i.i),Ke(t),Ke(t.next),t=A=i,n=!0),t=t.next}while(t!==A);return n?ae(t):t}function uo(A,e,t,n,r){let i=A;do{let o=i.next.next;for(;o!==i.prev;){if(i.i!==o.i&&Do(i,o)){let a=Ur(i,o);i=ae(i,i.next),a=ae(a,a.next),sn(i,e,t,n,r),sn(a,e,t,n,r);return}o=o.next}i=i.next}while(i!==A)}var gn=!1;function co(A,e,t,n){let r=[];for(let i=0,o=e.length;i<o;i++){let a=e[i]*n,s=i<o-1?e[i+1]*n:A.length,g=Mr(A,a,s,n,!1);g===g.next&&Te.add(g),r.push(yo(g))}r.sort(Bo),Qo(A.length/n,e.length),Nr(t,t),gn=!0;for(let i=0;i<r.length;i++)t=Eo(r[i],t);return gn=!1,ae(t)}function Bo(A,e){return A.x-e.x||A.y-e.y||(A.next.y-A.y)/(A.next.x-A.x)-(e.next.y-e.y)/(e.next.x-e.x)}function Eo(A,e){let t=fo(A,e);if(!t)return e;let n=Ur(t,A),r=n.next;return Nr(t,r.next),ae(n,n.next),ae(t,t.next)}var Gr=16,wA=new Float64Array(0),pt=0,ln=[],In=[];function Qo(A,e){let t=Math.ceil((A+2*e)/Gr)+e+2;wA.length<t*4&&(wA=new Float64Array(t*4)),pt=0}function Nr(A,e){let t=A;do{let n=pt++;ln[n]=t;let r=t.x,i=t.y,o=t.x,a=t.y,s=0;do{let l=t.next;t.z=n,l.x<r&&(r=l.x),l.x>o&&(o=l.x),l.y<i&&(i=l.y),l.y>a&&(a=l.y),t=l}while(++s<Gr&&t!==e);In[n]=t;let g=n*4;wA[g]=r,wA[g+1]=i,wA[g+2]=o,wA[g+3]=a}while(t!==e)}function Co(A,e){let t=A.z*4;e.x<wA[t]&&(wA[t]=e.x),e.y<wA[t+1]&&(wA[t+1]=e.y),e.x>wA[t+2]&&(wA[t+2]=e.x),e.y>wA[t+3]&&(wA[t+3]=e.y)}function br(A){let e=In[A];for(;e.prev.next!==e;)e=e.next;return In[A]=e,e}function wr(A){let e=ln[A];for(;e.prev.next!==e;)e=e.next;return ln[A]=e,e}function fo(A,e){let t=e,n=A.x,r=A.y,i=-1/0,o;if(Je(A,t))return t;for(let B=0,E=0;B<pt;B++,E+=4){if(r<wA[E+1]||r>wA[E+3]||wA[E]>n||wA[E+2]<=i)continue;let Q=br(B);t=wr(B);do{if(t.prev.next===t){if(Je(A,t.next))return t.next;if(r<=t.y&&r>=t.next.y&&t.next.y!==t.y){let C=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(C<=n&&C>i&&(i=C,o=t.x<t.next.x?t:t.next,C===n))return o}}t=t.next}while(t!==Q)}if(!o)return null;let a=o.x,s=o.y,g=Math.min(r,s),l=Math.max(r,s),I=1/0;for(let B=0,E=0;B<pt;B++,E+=4){if(wA[E+2]<a||wA[E]>n||wA[E+3]<g||wA[E+1]>l)continue;let Q=br(B);t=wr(B);do{if(t.prev.next===t&&n>=t.x&&t.x>=a&&n!==t.x&&yt(r<s?n:i,r,a,s,r<s?i:n,r,t.x,t.y)){let C=Math.abs(r-t.y)/(n-t.x);(Oe(t,A)||t.y===r&&t.next.y===r&&t.next.x>n)&&(C<I||C===I&&(t.x>o.x||t.x===o.x&&mo(o,t)))&&(o=t,I=C)}t=t.next}while(t!==Q)}return o}function mo(A,e){return MA(A.prev,A,e.prev)<0&&MA(e.next,A,A.next)<0}var FA=[],pe=[],oe=new Uint32Array(0),Pe=new Uint32Array(0),He=new Uint32Array(256);function ho(A,e,t,n){let r=A,i=0;do r.z=un(r.x,r.y,e,t,n),FA[i++]=r,r=r.next;while(r!==A);po(i);let o=null;for(let a=0;a<i;a++){let s=FA[a];s.prevZ=o,o&&(o.nextZ=s),o=s}o.nextZ=null,FA.fill(null,0,i),pe.fill(null,0,i)}function po(A){if(A<=32){for(let e=1;e<A;e++){let t=FA[e],n=t.z,r=e-1;for(;r>=0&&FA[r].z>n;)FA[r+1]=FA[r],r--;FA[r+1]=t}return}oe.length<A&&(oe=new Uint32Array(A),Pe=new Uint32Array(A),pe=new Array(A));for(let e=0;e<A;e++)oe[e]=FA[e].z;mt(A,FA,oe,pe,Pe,0),mt(A,pe,Pe,FA,oe,8),mt(A,FA,oe,pe,Pe,16),mt(A,pe,Pe,FA,oe,24)}function mt(A,e,t,n,r,i){He.fill(0);for(let a=0;a<A;a++)He[t[a]>>>i&255]++;let o=0;for(let a=0;a<256;a++){let s=He[a];He[a]=o,o+=s}for(let a=0;a<A;a++){let s=t[a],g=He[s>>>i&255]++;n[g]=e[a],r[g]=s}}function un(A,e,t,n,r){return A=(A-t)*r|0,e=(e-n)*r|0,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,A|e<<1}function yo(A){let e=A,t=A;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==A);return t}function yt(A,e,t,n,r,i,o,a){return(r-o)*(e-a)>=(A-o)*(i-a)&&(A-o)*(n-a)>=(t-o)*(e-a)&&(t-o)*(i-a)>=(r-o)*(n-a)}function Do(A,e){let t=Je(A,e)&&MA(A.prev,A,A.next)>0&&MA(e.prev,e,e.next)>0;return A.next.i!==e.i&&(t||Oe(A,e)&&Oe(e,A)&&(MA(A.prev,A,e.prev)!==0||MA(A,e.prev,e)!==0))&&!bo(A,e)&&(t||wo(A,e))}function MA(A,e,t){return(e.y-A.y)*(t.x-e.x)-(e.x-A.x)*(t.y-e.y)}function Je(A,e){return A.x===e.x&&A.y===e.y}function Fr(A,e,t,n,r=!0){let i=MA(A,e,t),o=MA(A,e,n),a=MA(t,n,A),s=MA(t,n,e);return(i>0&&o<0||i<0&&o>0)&&(a>0&&s<0||a<0&&s>0)?!0:r?!!(i===0&&ht(A,t,e)||o===0&&ht(A,n,e)||a===0&&ht(t,A,n)||s===0&&ht(t,e,n)):!1}function ht(A,e,t){return e.x<=Math.max(A.x,t.x)&&e.x>=Math.min(A.x,t.x)&&e.y<=Math.max(A.y,t.y)&&e.y>=Math.min(A.y,t.y)}function bo(A,e){let t=Math.min(A.x,e.x),n=Math.max(A.x,e.x),r=Math.min(A.y,e.y),i=Math.max(A.y,e.y),o=A;do{let a=o.next;if(o.x>n&&a.x>n||o.x<t&&a.x<t||o.y>i&&a.y>i||o.y<r&&a.y<r){o=a;continue}if(o.i!==A.i&&a.i!==A.i&&o.i!==e.i&&a.i!==e.i&&Fr(o,a,A,e))return!0;o=a}while(o!==A);return!1}function Oe(A,e){return MA(A.prev,A,A.next)<0?MA(A,e,A.next)>=0&&MA(A,A.prev,e)>=0:MA(A,e,A.prev)<0||MA(A,A.next,e)<0}function wo(A,e){let t=A,n=!1,r=(A.x+e.x)/2,i=(A.y+e.y)/2;do{let o=t.next;t.y>i!=o.y>i&&r<(o.x-t.x)*(i-t.y)/(o.y-t.y)+t.x&&(n=!n),t=o}while(t!==A);return n}function Ur(A,e){let t=cn(A.i,A.x,A.y),n=cn(e.i,e.x,e.y),r=A.next,i=e.prev;return A.next=e,e.prev=A,t.next=r,r.prev=t,n.next=t,t.prev=n,i.next=n,n.prev=i,n}function xr(A,e,t,n){let r=cn(A,e,t);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function Ke(A){A.next.prev=A.prev,A.prev.next=A.next,A.prevZ&&(A.prevZ.nextZ=A.nextZ),A.nextZ&&(A.nextZ.prevZ=A.prevZ),gn&&Co(A.prev,A.next)}function cn(A,e,t){return{i:A,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function xo(A,e,t,n){let r=0;for(let i=e,o=t-n;i<t;i+=n)r+=(A[o]-A[i])*(A[i+1]+A[o+1]),o=i;return r}var vr=Hn(mi(),1);function Dt(A){let e=A.trim();if(e.startsWith("#")){let t=e.slice(1);if(t.length===3){let n=Number.parseInt(t[0]+t[0],16)/255,r=Number.parseInt(t[1]+t[1],16)/255,i=Number.parseInt(t[2]+t[2],16)/255;return[n,r,i,1]}if(t.length===6){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255;return[n,r,i,1]}if(t.length===8){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,o=Number.parseInt(t.slice(6,8),16)/255;return[n,r,i,o]}}if(e.startsWith("rgb")){let t=e.replace(/rgba?\(/,"").replace(/\)/,"").split(",").map(a=>Number.parseFloat(a.trim())),n=(t[0]??0)/255,r=(t[1]??0)/255,i=(t[2]??0)/255,o=t[3]!==void 0?t[3]:1;return[n,r,i,o]}return[1,1,1,1]}function Ye(A){let e=0,t=A.length;for(let n=0;n<t;n++){let r=(n+1)%t;e+=A[n].x*A[r].y-A[r].x*A[n].y}return e/2}function bt(A,e){let t=!1,n=e.length;for(let r=0,i=n-1;r<n;i=r++){let o=e[r].x,a=e[r].y,s=e[i].x,g=e[i].y;a>A.y!=g>A.y&&A.x<(s-o)*(A.y-a)/(g-a)+o&&(t=!t)}return t}var Mo=.1,Go=64;function Rr(A,e){if(e.segments!==void 0)return e.segments;let t=Math.ceil(Math.sqrt(A/(8*e.tolerance)));return Math.min(Go,Math.max(1,t))}function No(A,e,t,n,r){let i=Rr(2*Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),n);for(let o=1;o<=i;o++){let a=o/i,s=1-a;r.push({x:s*s*A.x+2*s*a*e.x+a*a*t.x,y:s*s*A.y+2*s*a*e.y+a*a*t.y})}}function Fo(A,e,t,n,r,i){let o=Rr(6*Math.max(Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),Math.hypot(e.x-2*t.x+n.x,e.y-2*t.y+n.y)),r);for(let a=1;a<=o;a++){let s=a/o,g=1-s;i.push({x:g*g*g*A.x+3*g*g*s*e.x+3*g*s*s*t.x+s*s*s*n.x,y:g*g*g*A.y+3*g*g*s*e.y+3*g*s*s*t.y+s*s*s*n.y})}}function Uo(A){try{let e=new vr.Path2D(A).simplify().edges;return Array.isArray(e)?e:null}catch{return null}}function So(A,e,t,n,r){let i=A.path?.toSVG();if(!i)return{contours:[],simplified:!0};let o=Uo(i),a=o!==null;o??=(A.path?.commands??[]).map(B=>[B.command,...B.args]);let s=[],g={x:0,y:0},l=[],I=()=>{if(l.length>=3){let B=l[0],E=l[l.length-1];Math.hypot(E.x-B.x,E.y-B.y)<1e-4&&l.pop(),l.length>=3&&s.push(l)}l=[]};for(let B of o){let E=B[0],Q=B.slice(1);if(E==="moveTo")I(),g={x:(e+Q[0])*n,y:-(t+Q[1])*n},l=[g];else if(E==="lineTo")g={x:(e+Q[0])*n,y:-(t+Q[1])*n},l.push(g);else if(E==="quadraticCurveTo"){let C={x:(e+Q[0])*n,y:-(t+Q[1])*n},p={x:(e+Q[2])*n,y:-(t+Q[3])*n};No(g,C,p,r,l),g=p}else if(E==="bezierCurveTo"){let C={x:(e+Q[0])*n,y:-(t+Q[1])*n},p={x:(e+Q[2])*n,y:-(t+Q[3])*n},h={x:(e+Q[4])*n,y:-(t+Q[5])*n};Fo(g,C,p,h,r,l),g=h}else E==="closePath"&&I()}return I(),{contours:s,simplified:a}}var vo=Math.cos(30*Math.PI/180);function Ro({contours:A,simplified:e}){if(!e)return Lo(A);let t=A.map(o=>({contour:o,area:Math.abs(Ye(o))}));t.sort((o,a)=>a.area-o.area);let n=t.map(()=>[]);for(let o=0;o<t.length;o++){let a=t[o].contour,s=a[Math.floor(a.length/2)];for(let g=0;g<o;g++){if(t[g].area<=t[o].area)continue;let l=t[g].contour;(bt(a[0],l)||bt(s,l))&&n[o].push(g)}}let r=[],i=new Map;for(let o=0;o<t.length;o++){let a=n[o];if(a.length%2===0){let s={outer:t[o].contour,holes:[]};r.push(s),i.set(o,s)}else i.get(a[a.length-1])?.holes.push(t[o].contour)}return r}function Lo(A){let e=A.map(r=>{let i=Ye(r);return{contour:r,signed:i,area:Math.abs(i)}});if(e.length===0)return[];e.sort((r,i)=>i.area-r.area);let t=Math.sign(e[0].signed),n=[];for(let r of e)Math.sign(r.signed)===t&&n.push({outer:r.contour,holes:[]});for(let r of e){if(Math.sign(r.signed)===t)continue;let i=r.contour[0],o=r.contour[Math.floor(r.contour.length/2)],a,s=Number.POSITIVE_INFINITY;for(let g of n){let l=Math.abs(Ye(g.outer));l>r.area&&l<s&&(bt(i,g.outer)||bt(o,g.outer))&&(a=g,s=l)}a?.holes.push(r.contour)}return n}var Sr=new WeakMap;function ko(A,e,t,n,r,i){let o=Sr.get(A);o||(o=new Map,Sr.set(A,o));let a=`${e.id}|${r}|${i.segments??""}|${i.tolerance}`,s=o.get(a);s||(s=Ro(So(e,0,0,r,i)),o.set(a,s));let g=t*r,l=-n*r,I=B=>B.map(E=>({x:E.x+g,y:E.y+l}));return s.map(B=>({outer:I(B.outer),holes:B.holes.map(I)}))}function El(A){let e=A.font,t=A.fontSize??48,n=A.depth??20,r=n/2,i={segments:A.curveSegments!==void 0?Math.max(2,A.curveSegments):void 0,tolerance:Math.max(.001,A.curveTolerance??Mo)},o=e.unitsPerEm||1e3,a=t/o,s=Vn(e,A.text.replace(/\n/g," "),{direction:A.direction,letterSpacing:A.letterSpacing?A.letterSpacing/a:0}),g=[];for(let X of s.glyphs){let V=e.getGlyph(X.glyphId),Z=ko(e,V,X.x,X.y,a,i);for(let mA of Z)g.push(mA)}let l=Number.POSITIVE_INFINITY,I=Number.NEGATIVE_INFINITY,B=Number.POSITIVE_INFINITY,E=Number.NEGATIVE_INFINITY;for(let X of g){for(let V of X.outer)V.x<l&&(l=V.x),V.x>I&&(I=V.x),V.y<B&&(B=V.y),V.y>E&&(E=V.y);for(let V of X.holes)for(let Z of V)Z.x<l&&(l=Z.x),Z.x>I&&(I=Z.x),Z.y<B&&(B=Z.y),Z.y>E&&(E=Z.y)}Number.isFinite(l)||(l=0,I=0,B=0,E=0);let Q=I-l,C=E-B,p=(s.baseLevel&1)===1,h=A.align==="start"?p?"right":"left":A.align==="end"?p?"left":"right":A.align,d=(l+I)/2;h==="left"&&(d=l),h==="right"&&(d=I);let D=(B+E)/2;A.verticalAlign==="top"&&(D=B),A.verticalAlign==="bottom"&&(D=E);for(let X of g){for(let V of X.outer)V.x-=d,V.y-=D;for(let V of X.holes)for(let Z of V)Z.x-=d,Z.y-=D}l-=d,I-=d,B-=D,E-=D;let x=[],G=[],M=[],w=[],b=[],N=[],U=[],L=[],F=(X,V,Z)=>{let mA=b.length/3;return b.push(X.x,X.y,r,X.x,X.y,-r),N.push(V.x,V.y,0,V.x,V.y,0),U.push(Z,0,Z,1),mA},J=X=>{let V=X.filter((k,eA)=>{let q=X[(eA+1)%X.length];return Math.hypot(q.x-k.x,q.y-k.y)>=1e-6}),Z=V.length;if(Z<2)return;let mA=[],$=V.map((k,eA)=>{let q=V[(eA+1)%Z],sA=Math.hypot(q.x-k.x,q.y-k.y);return mA.push(sA),{x:(q.y-k.y)/sA,y:-(q.x-k.x)/sA}}),lA=mA.reduce((k,eA)=>k+eA,0),IA=[],yA=[],AA=0;for(let k=0;k<Z;k++){let eA=$[(k-1+Z)%Z],q=$[k],sA=AA/lA,BA=eA.x+q.x,T=eA.y+q.y,oA=eA.x*q.x+eA.y*q.y>=vo?{x:BA/Math.hypot(BA,T),y:T/Math.hypot(BA,T)}:null;oA&&k>0?IA[k]=yA[k]=F(V[k],oA,sA):(yA[k]=F(V[k],oA??eA,k===0?1:sA),IA[k]=F(V[k],oA??q,sA)),AA+=mA[k]}for(let k=0;k<Z;k++){let eA=IA[k],q=yA[(k+1)%Z];L.push(eA,q+1,q),L.push(eA,eA+1,q+1)}};for(let X of g){let V=X.outer;Ye(V)<0&&V.reverse();for(let AA of X.holes)Ye(AA)>0&&AA.reverse();let Z=[],mA=[];for(let AA of V)Z.push(AA.x,AA.y);for(let AA of X.holes){mA.push(Z.length/2);for(let k of AA)Z.push(k.x,k.y)}let $=Bn(Z,mA,2),lA=Z.length/2,IA=x.length/3;for(let AA=0;AA<lA;AA++){let k=Z[AA*2],eA=Z[AA*2+1];x.push(k,eA,-r),G.push(0,0,-1),M.push((k-l)/(Q||1),(eA-B)/(C||1))}for(let AA=0;AA<$.length;AA+=3)w.push(IA+$[AA],IA+$[AA+2],IA+$[AA+1]);let yA=x.length/3;for(let AA=0;AA<lA;AA++){let k=Z[AA*2],eA=Z[AA*2+1];x.push(k,eA,r),G.push(0,0,1),M.push((k-l)/(Q||1),(eA-B)/(C||1))}for(let AA=0;AA<$.length;AA+=3)w.push(yA+$[AA],yA+$[AA+1],yA+$[AA+2]);J(V);for(let AA of X.holes)J(AA)}let W=Dt(A.fill??"#ffffff"),K=Dt(A.bevelColor??A.fill??"#ffffff"),aA={name:"front-material",diffuseColor:W,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},j={name:"side-material",diffuseColor:K,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},rA=[];return w.length>0&&rA.push({id:"text-front-mesh",name:"front",positions:new Float32Array(x),normals:new Float32Array(G),uvs:new Float32Array(M),indices:x.length/3>65535?new Uint32Array(w):new Uint16Array(w),materialName:"front-material"}),L.length>0&&rA.push({id:"text-side-mesh",name:"side",positions:new Float32Array(b),normals:new Float32Array(N),uvs:new Float32Array(U),indices:b.length/3>65535?new Uint32Array(L):new Uint16Array(L),materialName:"side-material"}),{modelData:{name:`extruded-text-${A.text}`,meshes:rA,materials:{"front-material":aA,"side-material":j},animations:[],bounds:{min:[l,B,-r],max:[I,E,r],center:[(l+I)/2,(B+E)/2,0],size:[Q,C,n],boundingSphereRadius:Math.hypot(Q,C,n)/2}},bounds:{minX:l,maxX:I,minY:B,maxY:E,width:Q,height:C,depth:n}}}var Qn=class{positions=[];normals=[];uvs=[];indices=[];vertex(e,t,n){return this.positions.push(e[0],e[1],e[2]),this.normals.push(t[0],t[1],t[2]),this.uvs.push(n[0],n[1]),this.positions.length/3-1}grid(e,t,n,r=!1){for(let i=0;i<n;i++)for(let o=0;o<t;o++){let a=e+i*(t+1)+o,s=a+1,g=a+t+1,l=g+1;r?this.indices.push(a,s,g,s,l,g):this.indices.push(a,g,s,s,g,l)}}build(e){let t=this.positions.length/3;return{id:`${e}-mesh`,name:e,positions:new Float32Array(this.positions),normals:new Float32Array(this.normals),uvs:new Float32Array(this.uvs),indices:t>65535?new Uint32Array(this.indices):new Uint16Array(this.indices),materialName:`${e}-material`}}};function Cn(A){let e=Math.hypot(A[0],A[1],A[2]);return e>1e-12?[A[0]/e,A[1]/e,A[2]/e]:[0,0,0]}function En(A,e,t){if(e<=0)return[-A,A];let n=A-e,r=[];for(let i=0;i<=t;i++)r.push(-n-e*Math.cos(i/t*Math.PI/2));for(let i=n>1e-9?0:1;i<=t;i++)r.push(n+e*Math.sin(i/t*Math.PI/2));return r}function Po(A,e){let t=A.width/2,n=A.height/2,r=A.depth/2,i=Math.max(0,Math.min(A.radius??0,t,n,r)),o=Math.max(1,Math.round(A.segments??4)),a=A.taper??1,s=t-i,g=n-i,l=r-i,I=En(t,i,o),B=En(n,i,o),E=En(r,i,o),Q=A.height>0?(1-a)/A.height:0,C=x=>a+Q*(x+n),p=(x,G)=>{let M=[Math.max(-s,Math.min(s,x[0])),Math.max(-g,Math.min(g,x[1])),Math.max(-l,Math.min(l,x[2]))],w=i>0?Cn([x[0]-M[0],x[1]-M[1],x[2]-M[2]]):G;w[0]===0&&w[1]===0&&w[2]===0&&(w=G);let b=[M[0]+w[0]*i,M[1]+w[1]*i,M[2]+w[2]*i];if(a===1)return{p:b,n:w};let N=C(b[1]);return{p:[b[0]*N,b[1],b[2]*N],n:Cn([w[0]/N,w[1]-b[0]*Q*w[0]/N-b[2]*Q*w[2]/N,w[2]/N])}},h=[{axis:2,sign:-1,u:0,v:1},{axis:2,sign:1,u:0,v:1},{axis:0,sign:-1,u:2,v:1},{axis:0,sign:1,u:2,v:1},{axis:1,sign:-1,u:0,v:2},{axis:1,sign:1,u:0,v:2}],d=[t,n,r],D=[I,B,E];for(let x of h){let G=D[x.u],M=D[x.v],w=[0,0,0];w[x.axis]=x.sign;let b=e.positions.length/3;for(let U=0;U<M.length;U++)for(let L=0;L<G.length;L++){let F=[0,0,0];F[x.axis]=x.sign*d[x.axis],F[x.u]=G[L],F[x.v]=M[U];let{p:J,n:W}=p(F,w);e.vertex(J,W,[(G[L]/d[x.u]+1)/2,(M[U]/d[x.v]+1)/2])}let N=(x.v+1)%3===x.u;e.grid(b,G.length-1,M.length-1,(N?1:-1)!==x.sign)}}function Ho(A,e){let t=Math.max(3,Math.round(A.segments??32)),n=Math.max(2,Math.round(t/2));for(let r=0;r<=n;r++){let i=r/n*Math.PI;for(let o=0;o<=t;o++){let a=o/t*Math.PI*2,s=[Math.sin(i)*Math.cos(a),-Math.cos(i),Math.sin(i)*Math.sin(a)];e.vertex([s[0]*A.radius,s[1]*A.radius,s[2]*A.radius],s,[o/t,r/n])}}e.grid(0,t,n)}function To(A,e){let t=Math.max(3,Math.round(A.segments??32)),n=A.radiusTop??A.radius??50,r=A.radiusBottom??A.radius??50,i=A.height/2,o=A.height>0?(r-n)/A.height:0;for(let a=0;a<=1;a++){let s=a===0?n:r,g=a===0?-i:i;for(let l=0;l<=t;l++){let I=l/t*Math.PI*2,B=Math.cos(I),E=Math.sin(I);e.vertex([B*s,g,E*s],Cn([B,-o,E]),[l/t,a])}}if(e.grid(0,t,1),!A.openEnded)for(let[a,s,g]of[[-i,n,-1],[i,r,1]]){if(s<=0)continue;let l=e.vertex([0,a,0],[0,g,0],[.5,.5]),I=e.positions.length/3;for(let B=0;B<=t;B++){let E=B/t*Math.PI*2,Q=Math.cos(E),C=Math.sin(E);e.vertex([Q*s,a,C*s],[0,g,0],[(Q+1)/2,(C+1)/2])}for(let B=0;B<t;B++)g<0?e.indices.push(l,I+B,I+B+1):e.indices.push(l,I+B+1,I+B)}}function Jo(A){let e=new Qn;if(A.type==="roundedBox")Po(A,e);else if(A.type==="sphere")Ho(A,e);else if(A.type==="cylinder")To(A,e);else throw new Error(`Unknown 3D primitive: ${A.type}`);let t=A.type,n=e.build(t),r={name:`${t}-material`,diffuseColor:Dt(A.color??"#ffffff"),shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic},i=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],o=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],a=n.positions;for(let g=0;g<a.length;g+=3)for(let l=0;l<3;l++){let I=a[g+l];I<i[l]&&(i[l]=I),I>o[l]&&(o[l]=I)}let s=[o[0]-i[0],o[1]-i[1],o[2]-i[2]];return{name:`primitive-${t}`,meshes:[n],materials:{[r.name]:r},animations:[],bounds:{min:i,max:o,center:[(i[0]+o[0])/2,(i[1]+o[1])/2,(i[2]+o[2])/2],size:s,boundingSphereRadius:Math.hypot(...s)/2}}}var wt=new Map;function dl(A){let e=JSON.stringify(A),t=wt.get(e);return t||(t=Jo(A),wt.size>512&&wt.clear(),wt.set(e,t)),t}var fn=new Map;function Oo(A,e){return JSON.stringify({text:A,...e})}function dn(A,e){let t=A?String(A):" ",n=Oo(t,e),r=fn.get(n);if(r)return r;let i=e.fontSize??48,o=e.fontFamily??"Inter";te.isFailed(o)&&(o="Inter");let a=e.letterSpacing??0,s=e.lineHeight!==void 0&&e.lineHeight<10?e.lineHeight*i:e.lineHeight??i*1.2,g=te.getFont(o,e.fontWeight,null,void 0,i),l=e.padding??0;if(!g){if(!te.isFailed(o)){let d=Jt(o);te.preloadSlugFont(null,o,d).catch(()=>{})}let E=t.split(`
1447
1447
  `),Q=0,C=e.width!==void 0?Math.max(10,e.width-l*2):0;for(let d of E)if(C>0){let D=d.length*i*.55+a*d.length,x=Math.max(1,Math.ceil(D/C));Q+=x}else Q+=1;let p=Math.max(0,t.length-1),h={width:e.width!==void 0?e.width:Math.ceil(t.length*i*.6+a*p)+l*2,height:e.height!==void 0?e.height:Math.ceil(Q*s)+l*2};return fn.set(n,h),h}let I=Wn.measure(t,g,i,a,s,e.width!==void 0?Math.max(0,e.width-l*2):void 0,e.spans,e.direction),B={width:e.width!==void 0&&!e.keepNaturalWidth?e.width:Math.ceil(I.width)+l*2,height:e.height!==void 0?e.height:Math.ceil(I.height)+l*2};return fn.set(n,B),B}function Dl(A,e){let t=e.fontFamily??"Inter";if(te.isFailed(t)&&(t="Inter"),te.isFailed(t))return Promise.resolve(dn(A,e));let n=Jt(t);return te.preloadSlugFont(null,t,n).then(()=>dn(A,e)).catch(()=>dn(A,e))}v();v();v();var Ko=(()=>{var A=import.meta.url;return(function(e){e=e||{};var t;t||(t=typeof e<"u"?e:{});var n,r;t.ready=new Promise(function(u,c){n=u,r=c});var i=Object.assign({},t),o="";typeof document<"u"&&document.currentScript&&(o=document.currentScript.src),A&&(o=A),o.indexOf("blob:")!==0?o=o.substr(0,o.replace(/[?#].*/,"").lastIndexOf("/")+1):o="";var a=t.print||console.log.bind(console),s=t.printErr||console.warn.bind(console);Object.assign(t,i),i=null;var g;t.wasmBinary&&(g=t.wasmBinary);var l=t.noExitRuntime||!0;typeof WebAssembly!="object"&&aA("no native wasm support detected");var I,B=!1;function E(u,c,f){f=c+f;for(var m="";!(c>=f);){var y=u[c++];if(!y)break;if(y&128){var S=u[c++]&63;if((y&224)==192)m+=String.fromCharCode((y&31)<<6|S);else{var P=u[c++]&63;y=(y&240)==224?(y&15)<<12|S<<6|P:(y&7)<<18|S<<12|P<<6|u[c++]&63,65536>y?m+=String.fromCharCode(y):(y-=65536,m+=String.fromCharCode(55296|y>>10,56320|y&1023))}}else m+=String.fromCharCode(y)}return m}var Q,C,p,h,d,D,x,G,M;function w(){var u=I.buffer;Q=u,t.HEAP8=C=new Int8Array(u),t.HEAP16=h=new Int16Array(u),t.HEAP32=D=new Int32Array(u),t.HEAPU8=p=new Uint8Array(u),t.HEAPU16=d=new Uint16Array(u),t.HEAPU32=x=new Uint32Array(u),t.HEAPF32=G=new Float32Array(u),t.HEAPF64=M=new Float64Array(u)}var b,N=[],U=[],L=[];function F(){var u=t.preRun.shift();N.unshift(u)}var J=0,W=null,K=null;function aA(u){throw t.onAbort&&t.onAbort(u),u="Aborted("+u+")",s(u),B=!0,u=new WebAssembly.RuntimeError(u+". Build with -sASSERTIONS for more info."),r(u),u}function j(u){return u.startsWith("data:application/octet-stream;base64,")}var rA;if(rA="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!j(rA)){var fA=rA;rA=t.locateFile?t.locateFile(fA,o):o+fA}function X(){var u=rA;try{if(u==rA&&g)return new Uint8Array(g);if(j(u))try{var c=Ci(u.slice(37)),f=new Uint8Array(c.length);for(u=0;u<c.length;++u)f[u]=c.charCodeAt(u);var m=f}catch{throw Error("Converting base64 string to bytes failed.")}else m=void 0;var y=m;if(y)return y;throw"both async and sync fetching of the wasm failed"}catch(S){aA(S)}}function V(){return g||typeof fetch!="function"?Promise.resolve().then(function(){return X()}):fetch(rA,{credentials:"same-origin"}).then(function(u){if(!u.ok)throw"failed to load wasm binary file at '"+rA+"'";return u.arrayBuffer()}).catch(function(){return X()})}function Z(u){for(;0<u.length;)u.shift()(t)}function mA(u){if(u===void 0)return"_unknown";u=u.replace(/[^a-zA-Z0-9_]/g,"$");var c=u.charCodeAt(0);return 48<=c&&57>=c?"_"+u:u}function $(u,c){return u=mA(u),function(){return c.apply(this,arguments)}}var lA=[{},{value:void 0},{value:null},{value:!0},{value:!1}],IA=[];function yA(u){var c=Error,f=$(u,function(m){this.name=u,this.message=m,m=Error(m).stack,m!==void 0&&(this.stack=this.toString()+`
1448
1448
  `+m.replace(/^Error(:[^\n]*)?\n/,""))});return f.prototype=Object.create(c.prototype),f.prototype.constructor=f,f.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},f}var AA=void 0;function k(u){throw new AA(u)}var eA=u=>(u||k("Cannot use deleted val. handle = "+u),lA[u].value),q=u=>{switch(u){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var c=IA.length?IA.pop():lA.length;return lA[c]={ga:1,value:u},c}},sA=void 0,BA=void 0;function T(u){for(var c="";p[u];)c+=BA[p[u++]];return c}var iA=[];function oA(){for(;iA.length;){var u=iA.pop();u.M.$=!1,u.delete()}}var uA=void 0,QA={};function cA(u,c){for(c===void 0&&k("ptr should not be undefined");u.R;)c=u.ba(c),u=u.R;return c}var gA={};function bA(u){u=Rn(u);var c=T(u);return XA(u),c}function DA(u,c){var f=gA[u];return f===void 0&&k(c+" has unknown type "+bA(u)),f}function hA(){}var pA=!1;function UA(u){--u.count.value,u.count.value===0&&(u.T?u.U.W(u.T):u.P.N.W(u.O))}function SA(u,c,f){return c===f?u:f.R===void 0?null:(u=SA(u,c,f.R),u===null?null:f.na(u))}var LA={};function Nt(u,c){return c=cA(u,c),QA[c]}var vA=void 0;function ze(u){throw new vA(u)}function Xe(u,c){return c.P&&c.O||ze("makeClassHandle requires ptr and ptrType"),!!c.U!=!!c.T&&ze("Both smartPtrType and smartPtr must be specified"),c.count={value:1},ge(Object.create(u,{M:{value:c}}))}function ge(u){return typeof FinalizationRegistry>"u"?(ge=c=>c,u):(pA=new FinalizationRegistry(c=>{UA(c.M)}),ge=c=>{var f=c.M;return f.T&&pA.register(c,{M:f},c),c},hA=c=>{pA.unregister(c)},ge(u))}var Ze={};function Ft(u){for(;u.length;){var c=u.pop();u.pop()(c)}}function we(u){return this.fromWireType(D[u>>2])}var le={},qe={};function Ae(u,c,f){function m(H){H=f(H),H.length!==u.length&&ze("Mismatched type converter count");for(var Y=0;Y<u.length;++Y)WA(u[Y],H[Y])}u.forEach(function(H){qe[H]=c});var y=Array(c.length),S=[],P=0;c.forEach((H,Y)=>{gA.hasOwnProperty(H)?y[Y]=gA[H]:(S.push(H),le.hasOwnProperty(H)||(le[H]=[]),le[H].push(()=>{y[Y]=gA[H],++P,P===S.length&&m(y)}))}),S.length===0&&m(y)}function Ut(u){switch(u){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+u)}}function WA(u,c,f={}){if(!("argPackAdvance"in c))throw new TypeError("registerType registeredInstance requires argPackAdvance");var m=c.name;if(u||k('type "'+m+'" must have a positive integer typeid pointer'),gA.hasOwnProperty(u)){if(f.ua)return;k("Cannot register type '"+m+"' twice")}gA[u]=c,delete qe[u],le.hasOwnProperty(u)&&(c=le[u],delete le[u],c.forEach(y=>y()))}function St(u){k(u.M.P.N.name+" instance already deleted")}function ee(){}function vt(u,c,f){if(u[c].S===void 0){var m=u[c];u[c]=function(){return u[c].S.hasOwnProperty(arguments.length)||k("Function '"+f+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+u[c].S+")!"),u[c].S[arguments.length].apply(this,arguments)},u[c].S=[],u[c].S[m.Z]=m}}function jr(u,c){t.hasOwnProperty(u)?(k("Cannot register public name '"+u+"' twice"),vt(t,u,u),t.hasOwnProperty(void 0)&&k("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),t[u].S[void 0]=c):t[u]=c}function $r(u,c,f,m,y,S,P,H){this.name=u,this.constructor=c,this.X=f,this.W=m,this.R=y,this.pa=S,this.ba=P,this.na=H,this.ja=[]}function Rt(u,c,f){for(;c!==f;)c.ba||k("Expected null or instance of "+f.name+", got an instance of "+c.name),u=c.ba(u),c=c.R;return u}function Ai(u,c){return c===null?(this.ea&&k("null is not a valid "+this.name),0):(c.M||k('Cannot pass "'+Ht(c)+'" as a '+this.name),c.M.O||k("Cannot pass deleted object as a pointer of type "+this.name),Rt(c.M.O,c.M.P.N,this.N))}function ei(u,c){if(c===null){if(this.ea&&k("null is not a valid "+this.name),this.da){var f=this.fa();return u!==null&&u.push(this.W,f),f}return 0}if(c.M||k('Cannot pass "'+Ht(c)+'" as a '+this.name),c.M.O||k("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&c.M.P.ca&&k("Cannot convert argument of type "+(c.M.U?c.M.U.name:c.M.P.name)+" to parameter type "+this.name),f=Rt(c.M.O,c.M.P.N,this.N),this.da)switch(c.M.T===void 0&&k("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:c.M.U===this?f=c.M.T:k("Cannot convert argument of type "+(c.M.U?c.M.U.name:c.M.P.name)+" to parameter type "+this.name);break;case 1:f=c.M.T;break;case 2:if(c.M.U===this)f=c.M.T;else{var m=c.clone();f=this.xa(f,q(function(){m.delete()})),u!==null&&u.push(this.W,f)}break;default:k("Unsupporting sharing policy")}return f}function ti(u,c){return c===null?(this.ea&&k("null is not a valid "+this.name),0):(c.M||k('Cannot pass "'+Ht(c)+'" as a '+this.name),c.M.O||k("Cannot pass deleted object as a pointer of type "+this.name),c.M.P.ca&&k("Cannot convert argument of type "+c.M.P.name+" to parameter type "+this.name),Rt(c.M.O,c.M.P.N,this.N))}function zA(u,c,f,m){this.name=u,this.N=c,this.ea=f,this.ca=m,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,c.R!==void 0?this.toWireType=ei:(this.toWireType=m?Ai:ti,this.V=null)}function ni(u,c){t.hasOwnProperty(u)||ze("Replacing nonexistant public symbol"),t[u]=c,t[u].Z=void 0}function ri(u,c){var f=[];return function(){if(f.length=0,Object.assign(f,arguments),u.includes("j")){var m=t["dynCall_"+u];m=f&&f.length?m.apply(null,[c].concat(f)):m.call(null,c)}else m=b.get(c).apply(null,f);return m}}function kA(u,c){u=T(u);var f=u.includes("j")?ri(u,c):b.get(c);return typeof f!="function"&&k("unknown function pointer with signature "+u+": "+c),f}var Fn=void 0;function _e(u,c){function f(S){y[S]||gA[S]||(qe[S]?qe[S].forEach(f):(m.push(S),y[S]=!0))}var m=[],y={};throw c.forEach(f),new Fn(u+": "+m.map(bA).join([", "]))}function Lt(u,c,f,m,y){var S=c.length;2>S&&k("argTypes array size mismatch! Must at least get return value and 'this' types!");var P=c[1]!==null&&f!==null,H=!1;for(f=1;f<c.length;++f)if(c[f]!==null&&c[f].V===void 0){H=!0;break}var Y=c[0].name!=="void",O=S-2,z=Array(O),tA=[],EA=[];return function(){if(arguments.length!==O&&k("function "+u+" called with "+arguments.length+" arguments, expected "+O+" args!"),EA.length=0,tA.length=P?2:1,tA[0]=y,P){var xA=c[1].toWireType(EA,this);tA[1]=xA}for(var dA=0;dA<O;++dA)z[dA]=c[dA+2].toWireType(EA,arguments[dA]),tA.push(z[dA]);if(dA=m.apply(null,tA),H)Ft(EA);else for(var NA=P?1:2;NA<c.length;NA++){var PA=NA===1?xA:z[NA-2];c[NA].V!==null&&c[NA].V(PA)}return xA=Y?c[0].fromWireType(dA):void 0,xA}}function kt(u,c){for(var f=[],m=0;m<u;m++)f.push(x[c+4*m>>2]);return f}function Pt(u){4<u&&--lA[u].ga===0&&(lA[u]=void 0,IA.push(u))}function Ht(u){if(u===null)return"null";var c=typeof u;return c==="object"||c==="array"||c==="function"?u.toString():""+u}function ii(u,c){switch(c){case 2:return function(f){return this.fromWireType(G[f>>2])};case 3:return function(f){return this.fromWireType(M[f>>3])};default:throw new TypeError("Unknown float type: "+u)}}function oi(u,c,f){switch(c){case 0:return f?function(m){return C[m]}:function(m){return p[m]};case 1:return f?function(m){return h[m>>1]}:function(m){return d[m>>1]};case 2:return f?function(m){return D[m>>2]}:function(m){return x[m>>2]};default:throw new TypeError("Unknown integer type: "+u)}}function ai(u,c){for(var f="",m=0;!(m>=c/2);++m){var y=h[u+2*m>>1];if(y==0)break;f+=String.fromCharCode(y)}return f}function si(u,c,f){if(f===void 0&&(f=2147483647),2>f)return 0;f-=2;var m=c;f=f<2*u.length?f/2:u.length;for(var y=0;y<f;++y)h[c>>1]=u.charCodeAt(y),c+=2;return h[c>>1]=0,c-m}function gi(u){return 2*u.length}function li(u,c){for(var f=0,m="";!(f>=c/4);){var y=D[u+4*f>>2];if(y==0)break;++f,65536<=y?(y-=65536,m+=String.fromCharCode(55296|y>>10,56320|y&1023)):m+=String.fromCharCode(y)}return m}function Ii(u,c,f){if(f===void 0&&(f=2147483647),4>f)return 0;var m=c;f=m+f-4;for(var y=0;y<u.length;++y){var S=u.charCodeAt(y);if(55296<=S&&57343>=S){var P=u.charCodeAt(++y);S=65536+((S&1023)<<10)|P&1023}if(D[c>>2]=S,c+=4,c+4>f)break}return D[c>>2]=0,c-m}function ui(u){for(var c=0,f=0;f<u.length;++f){var m=u.charCodeAt(f);55296<=m&&57343>=m&&++f,c+=4}return c}var ci={};function Un(u){var c=ci[u];return c===void 0?T(u):c}var je=[];function Bi(u){var c=je.length;return je.push(u),c}function Ei(u,c){for(var f=Array(u),m=0;m<u;++m)f[m]=DA(x[c+4*m>>2],"parameter "+m);return f}var Sn=[],Qi=[null,[],[]];AA=t.BindingError=yA("BindingError"),t.count_emval_handles=function(){for(var u=0,c=5;c<lA.length;++c)lA[c]!==void 0&&++u;return u},t.get_first_emval=function(){for(var u=5;u<lA.length;++u)if(lA[u]!==void 0)return lA[u];return null},sA=t.PureVirtualError=yA("PureVirtualError");for(var vn=Array(256),$e=0;256>$e;++$e)vn[$e]=String.fromCharCode($e);BA=vn,t.getInheritedInstanceCount=function(){return Object.keys(QA).length},t.getLiveInheritedInstances=function(){var u=[],c;for(c in QA)QA.hasOwnProperty(c)&&u.push(QA[c]);return u},t.flushPendingDeletes=oA,t.setDelayFunction=function(u){uA=u,iA.length&&uA&&uA(oA)},vA=t.InternalError=yA("InternalError"),ee.prototype.isAliasOf=function(u){if(!(this instanceof ee&&u instanceof ee))return!1;var c=this.M.P.N,f=this.M.O,m=u.M.P.N;for(u=u.M.O;c.R;)f=c.ba(f),c=c.R;for(;m.R;)u=m.ba(u),m=m.R;return c===m&&f===u},ee.prototype.clone=function(){if(this.M.O||St(this),this.M.aa)return this.M.count.value+=1,this;var u=ge,c=Object,f=c.create,m=Object.getPrototypeOf(this),y=this.M;return u=u(f.call(c,m,{M:{value:{count:y.count,$:y.$,aa:y.aa,O:y.O,P:y.P,T:y.T,U:y.U}}})),u.M.count.value+=1,u.M.$=!1,u},ee.prototype.delete=function(){this.M.O||St(this),this.M.$&&!this.M.aa&&k("Object already scheduled for deletion"),hA(this),UA(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},ee.prototype.isDeleted=function(){return!this.M.O},ee.prototype.deleteLater=function(){return this.M.O||St(this),this.M.$&&!this.M.aa&&k("Object already scheduled for deletion"),iA.push(this),iA.length===1&&uA&&uA(oA),this.M.$=!0,this},zA.prototype.qa=function(u){return this.ka&&(u=this.ka(u)),u},zA.prototype.ha=function(u){this.W&&this.W(u)},zA.prototype.argPackAdvance=8,zA.prototype.readValueFromPointer=we,zA.prototype.deleteObject=function(u){u!==null&&u.delete()},zA.prototype.fromWireType=function(u){function c(){return this.da?Xe(this.N.X,{P:this.wa,O:f,U:this,T:u}):Xe(this.N.X,{P:this,O:u})}var f=this.qa(u);if(!f)return this.ha(u),null;var m=Nt(this.N,f);if(m!==void 0)return m.M.count.value===0?(m.M.O=f,m.M.T=u,m.clone()):(m=m.clone(),this.ha(u),m);if(m=this.N.pa(f),m=LA[m],!m)return c.call(this);m=this.ca?m.la:m.pointerType;var y=SA(f,this.N,m.N);return y===null?c.call(this):this.da?Xe(m.N.X,{P:m,O:y,U:this,T:u}):Xe(m.N.X,{P:m,O:y})},Fn=t.UnboundTypeError=yA("UnboundTypeError");var Ci=typeof atob=="function"?atob:function(u){var c="",f=0;u=u.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(u.charAt(f++)),y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(u.charAt(f++)),S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(u.charAt(f++)),P="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(u.charAt(f++));m=m<<2|y>>4,y=(y&15)<<4|S>>2;var H=(S&3)<<6|P;c+=String.fromCharCode(m),S!==64&&(c+=String.fromCharCode(y)),P!==64&&(c+=String.fromCharCode(H))}while(f<u.length);return c},fi={l:function(u,c,f,m){aA("Assertion failed: "+(u?E(p,u):"")+", at: "+[c?c?E(p,c):"":"unknown filename",f,m?m?E(p,m):"":"unknown function"])},q:function(u,c,f){u=T(u),c=DA(c,"wrapper"),f=eA(f);var m=[].slice,y=c.N,S=y.X,P=y.R.X,H=y.R.constructor;u=$(u,function(){y.R.ja.forEach(function(O){if(this[O]===P[O])throw new sA("Pure virtual function "+O+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:S}),this.__construct.apply(this,m.call(arguments))}),S.__construct=function(){this===S&&k("Pass correct 'this' to __construct");var O=H.implement.apply(void 0,[this].concat(m.call(arguments)));hA(O);var z=O.M;O.notifyOnDestruction(),z.aa=!0,Object.defineProperties(this,{M:{value:z}}),ge(this),O=z.O,O=cA(y,O),QA.hasOwnProperty(O)?k("Tried to register registered instance: "+O):QA[O]=this},S.__destruct=function(){this===S&&k("Pass correct 'this' to __destruct"),hA(this);var O=this.M.O;O=cA(y,O),QA.hasOwnProperty(O)?delete QA[O]:k("Tried to unregister unregistered instance: "+O)},u.prototype=Object.create(S);for(var Y in f)u.prototype[Y]=f[Y];return q(u)},j:function(u){var c=Ze[u];delete Ze[u];var f=c.fa,m=c.W,y=c.ia,S=y.map(P=>P.ta).concat(y.map(P=>P.za));Ae([u],S,P=>{var H={};return y.forEach((Y,O)=>{var z=P[O],tA=Y.ra,EA=Y.sa,xA=P[O+y.length],dA=Y.ya,NA=Y.Aa;H[Y.oa]={read:PA=>z.fromWireType(tA(EA,PA)),write:(PA,xe)=>{var ZA=[];dA(NA,PA,xA.toWireType(ZA,xe)),Ft(ZA)}}}),[{name:c.name,fromWireType:function(Y){var O={},z;for(z in H)O[z]=H[z].read(Y);return m(Y),O},toWireType:function(Y,O){for(var z in H)if(!(z in O))throw new TypeError('Missing field: "'+z+'"');var tA=f();for(z in H)H[z].write(tA,O[z]);return Y!==null&&Y.push(m,tA),tA},argPackAdvance:8,readValueFromPointer:we,V:m}]})},v:function(){},B:function(u,c,f,m,y){var S=Ut(f);c=T(c),WA(u,{name:c,fromWireType:function(P){return!!P},toWireType:function(P,H){return H?m:y},argPackAdvance:8,readValueFromPointer:function(P){if(f===1)var H=C;else if(f===2)H=h;else if(f===4)H=D;else throw new TypeError("Unknown boolean type size: "+c);return this.fromWireType(H[P>>S])},V:null})},f:function(u,c,f,m,y,S,P,H,Y,O,z,tA,EA){z=T(z),S=kA(y,S),H&&(H=kA(P,H)),O&&(O=kA(Y,O)),EA=kA(tA,EA);var xA=mA(z);jr(xA,function(){_e("Cannot construct "+z+" due to unbound types",[m])}),Ae([u,c,f],m?[m]:[],function(dA){if(dA=dA[0],m)var NA=dA.N,PA=NA.X;else PA=ee.prototype;dA=$(xA,function(){if(Object.getPrototypeOf(this)!==xe)throw new AA("Use 'new' to construct "+z);if(ZA.Y===void 0)throw new AA(z+" has no accessible constructor");var Pn=ZA.Y[arguments.length];if(Pn===void 0)throw new AA("Tried to invoke ctor of "+z+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ZA.Y).toString()+") parameters instead!");return Pn.apply(this,arguments)});var xe=Object.create(PA,{constructor:{value:dA}});dA.prototype=xe;var ZA=new $r(z,dA,xe,EA,NA,S,H,O);NA=new zA(z,ZA,!0,!1),PA=new zA(z+"*",ZA,!1,!1);var kn=new zA(z+" const*",ZA,!1,!0);return LA[u]={pointerType:PA,la:kn},ni(xA,dA),[NA,PA,kn]})},d:function(u,c,f,m,y,S,P){var H=kt(f,m);c=T(c),S=kA(y,S),Ae([],[u],function(Y){function O(){_e("Cannot call "+z+" due to unbound types",H)}Y=Y[0];var z=Y.name+"."+c;c.startsWith("@@")&&(c=Symbol[c.substring(2)]);var tA=Y.N.constructor;return tA[c]===void 0?(O.Z=f-1,tA[c]=O):(vt(tA,c,z),tA[c].S[f-1]=O),Ae([],H,function(EA){return EA=Lt(z,[EA[0],null].concat(EA.slice(1)),null,S,P),tA[c].S===void 0?(EA.Z=f-1,tA[c]=EA):tA[c].S[f-1]=EA,[]}),[]})},p:function(u,c,f,m,y,S){0<c||aA();var P=kt(c,f);y=kA(m,y),Ae([],[u],function(H){H=H[0];var Y="constructor "+H.name;if(H.N.Y===void 0&&(H.N.Y=[]),H.N.Y[c-1]!==void 0)throw new AA("Cannot register multiple constructors with identical number of parameters ("+(c-1)+") for class '"+H.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return H.N.Y[c-1]=()=>{_e("Cannot construct "+H.name+" due to unbound types",P)},Ae([],P,function(O){return O.splice(1,0,null),H.N.Y[c-1]=Lt(Y,O,null,y,S),[]}),[]})},a:function(u,c,f,m,y,S,P,H){var Y=kt(f,m);c=T(c),S=kA(y,S),Ae([],[u],function(O){function z(){_e("Cannot call "+tA+" due to unbound types",Y)}O=O[0];var tA=O.name+"."+c;c.startsWith("@@")&&(c=Symbol[c.substring(2)]),H&&O.N.ja.push(c);var EA=O.N.X,xA=EA[c];return xA===void 0||xA.S===void 0&&xA.className!==O.name&&xA.Z===f-2?(z.Z=f-2,z.className=O.name,EA[c]=z):(vt(EA,c,tA),EA[c].S[f-2]=z),Ae([],Y,function(dA){return dA=Lt(tA,dA,O,S,P),EA[c].S===void 0?(dA.Z=f-2,EA[c]=dA):EA[c].S[f-2]=dA,[]}),[]})},A:function(u,c){c=T(c),WA(u,{name:c,fromWireType:function(f){var m=eA(f);return Pt(f),m},toWireType:function(f,m){return q(m)},argPackAdvance:8,readValueFromPointer:we,V:null})},n:function(u,c,f){f=Ut(f),c=T(c),WA(u,{name:c,fromWireType:function(m){return m},toWireType:function(m,y){return y},argPackAdvance:8,readValueFromPointer:ii(c,f),V:null})},e:function(u,c,f,m,y){c=T(c),y===-1&&(y=4294967295),y=Ut(f);var S=H=>H;if(m===0){var P=32-8*f;S=H=>H<<P>>>P}f=c.includes("unsigned")?function(H,Y){return Y>>>0}:function(H,Y){return Y},WA(u,{name:c,fromWireType:S,toWireType:f,argPackAdvance:8,readValueFromPointer:oi(c,y,m!==0),V:null})},b:function(u,c,f){function m(S){S>>=2;var P=x;return new y(Q,P[S+1],P[S])}var y=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][c];f=T(f),WA(u,{name:f,fromWireType:m,argPackAdvance:8,readValueFromPointer:m},{ua:!0})},o:function(u,c){c=T(c);var f=c==="std::string";WA(u,{name:c,fromWireType:function(m){var y=x[m>>2],S=m+4;if(f)for(var P=S,H=0;H<=y;++H){var Y=S+H;if(H==y||p[Y]==0){if(P=P?E(p,P,Y-P):"",O===void 0)var O=P;else O+="\0",O+=P;P=Y+1}}else{for(O=Array(y),H=0;H<y;++H)O[H]=String.fromCharCode(p[S+H]);O=O.join("")}return XA(m),O},toWireType:function(m,y){y instanceof ArrayBuffer&&(y=new Uint8Array(y));var S,P=typeof y=="string";if(P||y instanceof Uint8Array||y instanceof Uint8ClampedArray||y instanceof Int8Array||k("Cannot pass non-string to std::string"),f&&P){var H=0;for(S=0;S<y.length;++S){var Y=y.charCodeAt(S);127>=Y?H++:2047>=Y?H+=2:55296<=Y&&57343>=Y?(H+=4,++S):H+=3}S=H}else S=y.length;if(H=Tt(4+S+1),Y=H+4,x[H>>2]=S,f&&P){if(P=Y,Y=S+1,S=p,0<Y){Y=P+Y-1;for(var O=0;O<y.length;++O){var z=y.charCodeAt(O);if(55296<=z&&57343>=z){var tA=y.charCodeAt(++O);z=65536+((z&1023)<<10)|tA&1023}if(127>=z){if(P>=Y)break;S[P++]=z}else{if(2047>=z){if(P+1>=Y)break;S[P++]=192|z>>6}else{if(65535>=z){if(P+2>=Y)break;S[P++]=224|z>>12}else{if(P+3>=Y)break;S[P++]=240|z>>18,S[P++]=128|z>>12&63}S[P++]=128|z>>6&63}S[P++]=128|z&63}}S[P]=0}}else if(P)for(P=0;P<S;++P)O=y.charCodeAt(P),255<O&&(XA(Y),k("String has UTF-16 code units that do not fit in 8 bits")),p[Y+P]=O;else for(P=0;P<S;++P)p[Y+P]=y[P];return m!==null&&m.push(XA,H),H},argPackAdvance:8,readValueFromPointer:we,V:function(m){XA(m)}})},i:function(u,c,f){if(f=T(f),c===2)var m=ai,y=si,S=gi,P=()=>d,H=1;else c===4&&(m=li,y=Ii,S=ui,P=()=>x,H=2);WA(u,{name:f,fromWireType:function(Y){for(var O=x[Y>>2],z=P(),tA,EA=Y+4,xA=0;xA<=O;++xA){var dA=Y+4+xA*c;(xA==O||z[dA>>H]==0)&&(EA=m(EA,dA-EA),tA===void 0?tA=EA:(tA+="\0",tA+=EA),EA=dA+c)}return XA(Y),tA},toWireType:function(Y,O){typeof O!="string"&&k("Cannot pass non-string to C++ string type "+f);var z=S(O),tA=Tt(4+z+c);return x[tA>>2]=z>>H,y(O,tA+4,z+c),Y!==null&&Y.push(XA,tA),tA},argPackAdvance:8,readValueFromPointer:we,V:function(Y){XA(Y)}})},k:function(u,c,f,m,y,S){Ze[u]={name:T(c),fa:kA(f,m),W:kA(y,S),ia:[]}},h:function(u,c,f,m,y,S,P,H,Y,O){Ze[u].ia.push({oa:T(c),ta:f,ra:kA(m,y),sa:S,za:P,ya:kA(H,Y),Aa:O})},C:function(u,c){c=T(c),WA(u,{va:!0,name:c,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(u,c,f,m,y){u=je[u],c=eA(c),f=Un(f);var S=[];return x[m>>2]=q(S),u(c,f,S,y)},t:function(u,c,f,m){u=je[u],c=eA(c),f=Un(f),u(c,f,null,m)},g:Pt,m:function(u,c){var f=Ei(u,c),m=f[0];c=m.name+"_$"+f.slice(1).map(function(P){return P.name}).join("_")+"$";var y=Sn[c];if(y!==void 0)return y;var S=Array(u-1);return y=Bi((P,H,Y,O)=>{for(var z=0,tA=0;tA<u-1;++tA)S[tA]=f[tA+1].readValueFromPointer(O+z),z+=f[tA+1].argPackAdvance;for(P=P[H].apply(P,S),tA=0;tA<u-1;++tA)f[tA+1].ma&&f[tA+1].ma(S[tA]);if(!m.va)return m.toWireType(Y,P)}),Sn[c]=y},D:function(u){4<u&&(lA[u].ga+=1)},r:function(u){var c=eA(u);Ft(c),Pt(u)},c:function(){aA("")},x:function(u,c,f){p.copyWithin(u,c,c+f)},w:function(u){var c=p.length;if(u>>>=0,2147483648<u)return!1;for(var f=1;4>=f;f*=2){var m=c*(1+.2/f);m=Math.min(m,u+100663296);var y=Math;m=Math.max(u,m),y=y.min.call(y,2147483648,m+(65536-m%65536)%65536);A:{try{I.grow(y-Q.byteLength+65535>>>16),w();var S=1;break A}catch{}S=void 0}if(S)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(u,c,f,m){for(var y=0,S=0;S<f;S++){var P=x[c>>2],H=x[c+4>>2];c+=8;for(var Y=0;Y<H;Y++){var O=p[P+Y],z=Qi[u];O===0||O===10?((u===1?a:s)(E(z,0)),z.length=0):z.push(O)}y+=H}return x[m>>2]=y,0}};(function(){function u(y){t.asm=y.exports,I=t.asm.E,w(),b=t.asm.J,U.unshift(t.asm.F),J--,t.monitorRunDependencies&&t.monitorRunDependencies(J),J==0&&(W!==null&&(clearInterval(W),W=null),K&&(y=K,K=null,y()))}function c(y){u(y.instance)}function f(y){return V().then(function(S){return WebAssembly.instantiate(S,m)}).then(function(S){return S}).then(y,function(S){s("failed to asynchronously prepare wasm: "+S),aA(S)})}var m={a:fi};if(J++,t.monitorRunDependencies&&t.monitorRunDependencies(J),t.instantiateWasm)try{return t.instantiateWasm(m,u)}catch(y){s("Module.instantiateWasm callback failed with error: "+y),r(y)}return(function(){return g||typeof WebAssembly.instantiateStreaming!="function"||j(rA)||typeof fetch!="function"?f(c):fetch(rA,{credentials:"same-origin"}).then(function(y){return WebAssembly.instantiateStreaming(y,m).then(c,function(S){return s("wasm streaming compile failed: "+S),s("falling back to ArrayBuffer instantiation"),f(c)})})})().catch(r),{}})(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.F).apply(null,arguments)};var Rn=t.___getTypeName=function(){return(Rn=t.___getTypeName=t.asm.G).apply(null,arguments)};t.__embind_initialize_bindings=function(){return(t.__embind_initialize_bindings=t.asm.H).apply(null,arguments)};var Tt=t._malloc=function(){return(Tt=t._malloc=t.asm.I).apply(null,arguments)},XA=t._free=function(){return(XA=t._free=t.asm.K).apply(null,arguments)};t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.L).apply(null,arguments)};var At;K=function u(){At||Ln(),At||(K=u)};function Ln(){function u(){if(!At&&(At=!0,t.calledRun=!0,!B)){if(Z(U),n(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;){var c=t.postRun.shift();L.unshift(c)}Z(L)}}if(!(0<J)){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)F();Z(N),0<J||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),u()},1)):u())}}if(t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.pop()();return Ln(),e.ready})})(),Lr=Ko;v();v();var jA=(function(A){return A[A.Auto=0]="Auto",A[A.FlexStart=1]="FlexStart",A[A.Center=2]="Center",A[A.FlexEnd=3]="FlexEnd",A[A.Stretch=4]="Stretch",A[A.Baseline=5]="Baseline",A[A.SpaceBetween=6]="SpaceBetween",A[A.SpaceAround=7]="SpaceAround",A[A.SpaceEvenly=8]="SpaceEvenly",A})({}),kr=(function(A){return A[A.BorderBox=0]="BorderBox",A[A.ContentBox=1]="ContentBox",A})({}),Pr=(function(A){return A[A.Width=0]="Width",A[A.Height=1]="Height",A})({}),Ve=(function(A){return A[A.Inherit=0]="Inherit",A[A.LTR=1]="LTR",A[A.RTL=2]="RTL",A})({}),mn=(function(A){return A[A.Flex=0]="Flex",A[A.None=1]="None",A[A.Contents=2]="Contents",A})({}),$A=(function(A){return A[A.Left=0]="Left",A[A.Top=1]="Top",A[A.Right=2]="Right",A[A.Bottom=3]="Bottom",A[A.Start=4]="Start",A[A.End=5]="End",A[A.Horizontal=6]="Horizontal",A[A.Vertical=7]="Vertical",A[A.All=8]="All",A})({}),ye=(function(A){return A[A.None=0]="None",A[A.StretchFlexBasis=1]="StretchFlexBasis",A[A.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",A[A.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",A[A.All=2147483647]="All",A[A.Classic=2147483646]="Classic",A})({}),Yo=(function(A){return A[A.WebFlexBasis=0]="WebFlexBasis",A})({}),xt=(function(A){return A[A.Column=0]="Column",A[A.ColumnReverse=1]="ColumnReverse",A[A.Row=2]="Row",A[A.RowReverse=3]="RowReverse",A})({}),hn=(function(A){return A[A.Column=0]="Column",A[A.Row=1]="Row",A[A.All=2]="All",A})({}),De=(function(A){return A[A.FlexStart=0]="FlexStart",A[A.Center=1]="Center",A[A.FlexEnd=2]="FlexEnd",A[A.SpaceBetween=3]="SpaceBetween",A[A.SpaceAround=4]="SpaceAround",A[A.SpaceEvenly=5]="SpaceEvenly",A})({}),be=(function(A){return A[A.Error=0]="Error",A[A.Warn=1]="Warn",A[A.Info=2]="Info",A[A.Debug=3]="Debug",A[A.Verbose=4]="Verbose",A[A.Fatal=5]="Fatal",A})({}),pn=(function(A){return A[A.Undefined=0]="Undefined",A[A.Exactly=1]="Exactly",A[A.AtMost=2]="AtMost",A})({}),Hr=(function(A){return A[A.Default=0]="Default",A[A.Text=1]="Text",A})({}),yn=(function(A){return A[A.Visible=0]="Visible",A[A.Hidden=1]="Hidden",A[A.Scroll=2]="Scroll",A})({}),Dn=(function(A){return A[A.Static=0]="Static",A[A.Relative=1]="Relative",A[A.Absolute=2]="Absolute",A})({}),HA=(function(A){return A[A.Undefined=0]="Undefined",A[A.Point=1]="Point",A[A.Percent=2]="Percent",A[A.Auto=3]="Auto",A})({}),bn=(function(A){return A[A.NoWrap=0]="NoWrap",A[A.Wrap=1]="Wrap",A[A.WrapReverse=2]="WrapReverse",A})({}),Vo={ALIGN_AUTO:jA.Auto,ALIGN_FLEX_START:jA.FlexStart,ALIGN_CENTER:jA.Center,ALIGN_FLEX_END:jA.FlexEnd,ALIGN_STRETCH:jA.Stretch,ALIGN_BASELINE:jA.Baseline,ALIGN_SPACE_BETWEEN:jA.SpaceBetween,ALIGN_SPACE_AROUND:jA.SpaceAround,ALIGN_SPACE_EVENLY:jA.SpaceEvenly,BOX_SIZING_BORDER_BOX:kr.BorderBox,BOX_SIZING_CONTENT_BOX:kr.ContentBox,DIMENSION_WIDTH:Pr.Width,DIMENSION_HEIGHT:Pr.Height,DIRECTION_INHERIT:Ve.Inherit,DIRECTION_LTR:Ve.LTR,DIRECTION_RTL:Ve.RTL,DISPLAY_FLEX:mn.Flex,DISPLAY_NONE:mn.None,DISPLAY_CONTENTS:mn.Contents,EDGE_LEFT:$A.Left,EDGE_TOP:$A.Top,EDGE_RIGHT:$A.Right,EDGE_BOTTOM:$A.Bottom,EDGE_START:$A.Start,EDGE_END:$A.End,EDGE_HORIZONTAL:$A.Horizontal,EDGE_VERTICAL:$A.Vertical,EDGE_ALL:$A.All,ERRATA_NONE:ye.None,ERRATA_STRETCH_FLEX_BASIS:ye.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:ye.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:ye.AbsolutePercentAgainstInnerSize,ERRATA_ALL:ye.All,ERRATA_CLASSIC:ye.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:Yo.WebFlexBasis,FLEX_DIRECTION_COLUMN:xt.Column,FLEX_DIRECTION_COLUMN_REVERSE:xt.ColumnReverse,FLEX_DIRECTION_ROW:xt.Row,FLEX_DIRECTION_ROW_REVERSE:xt.RowReverse,GUTTER_COLUMN:hn.Column,GUTTER_ROW:hn.Row,GUTTER_ALL:hn.All,JUSTIFY_FLEX_START:De.FlexStart,JUSTIFY_CENTER:De.Center,JUSTIFY_FLEX_END:De.FlexEnd,JUSTIFY_SPACE_BETWEEN:De.SpaceBetween,JUSTIFY_SPACE_AROUND:De.SpaceAround,JUSTIFY_SPACE_EVENLY:De.SpaceEvenly,LOG_LEVEL_ERROR:be.Error,LOG_LEVEL_WARN:be.Warn,LOG_LEVEL_INFO:be.Info,LOG_LEVEL_DEBUG:be.Debug,LOG_LEVEL_VERBOSE:be.Verbose,LOG_LEVEL_FATAL:be.Fatal,MEASURE_MODE_UNDEFINED:pn.Undefined,MEASURE_MODE_EXACTLY:pn.Exactly,MEASURE_MODE_AT_MOST:pn.AtMost,NODE_TYPE_DEFAULT:Hr.Default,NODE_TYPE_TEXT:Hr.Text,OVERFLOW_VISIBLE:yn.Visible,OVERFLOW_HIDDEN:yn.Hidden,OVERFLOW_SCROLL:yn.Scroll,POSITION_TYPE_STATIC:Dn.Static,POSITION_TYPE_RELATIVE:Dn.Relative,POSITION_TYPE_ABSOLUTE:Dn.Absolute,UNIT_UNDEFINED:HA.Undefined,UNIT_POINT:HA.Point,UNIT_PERCENT:HA.Percent,UNIT_AUTO:HA.Auto,WRAP_NO_WRAP:bn.NoWrap,WRAP_WRAP:bn.Wrap,WRAP_WRAP_REVERSE:bn.WrapReverse},Tr=Vo;function wn(A){function e(r,i,o){let a=r[i];r[i]=function(){for(var s=arguments.length,g=new Array(s),l=0;l<s;l++)g[l]=arguments[l];return o.call(this,a,...g)}}for(let r of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let i={[HA.Point]:A.Node.prototype[r],[HA.Percent]:A.Node.prototype[`${r}Percent`],[HA.Auto]:A.Node.prototype[`${r}Auto`]};e(A.Node.prototype,r,function(o){for(var a=arguments.length,s=new Array(a>1?a-1:0),g=1;g<a;g++)s[g-1]=arguments[g];let l=s.pop(),I,B;if(l==="auto")I=HA.Auto,B=void 0;else if(typeof l=="object")I=l.unit,B=l.valueOf();else if(I=typeof l=="string"&&l.endsWith("%")?HA.Percent:HA.Point,B=parseFloat(l),l!==void 0&&!Number.isNaN(l)&&Number.isNaN(B))throw new Error(`Invalid value ${l} for ${r}`);if(!i[I])throw new Error(`Failed to execute "${r}": Unsupported unit '${l}'`);return B!==void 0?i[I].call(this,...s,B):i[I].call(this,...s)})}function t(r){return A.MeasureCallback.implement({measure:function(){let{width:i,height:o}=r(...arguments);return{width:i??NaN,height:o??NaN}}})}e(A.Node.prototype,"setMeasureFunc",function(r,i){return i?r.call(this,t(i)):this.unsetMeasureFunc()});function n(r){return A.DirtiedCallback.implement({dirtied:r})}return e(A.Node.prototype,"setDirtiedFunc",function(r,i){r.call(this,n(i))}),e(A.Config.prototype,"free",function(){A.Config.destroy(this)}),e(A.Node,"create",(r,i)=>i?A.Node.createWithConfig(i):A.Node.createDefault()),e(A.Node.prototype,"free",function(){A.Node.destroy(this)}),e(A.Node.prototype,"freeRecursive",function(){for(let r=0,i=this.getChildCount();r<i;++r)this.getChild(0).freeRecursive();this.free()}),e(A.Node.prototype,"calculateLayout",function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Ve.LTR;return r.call(this,i,o,a)}),{Config:A.Config,Node:A.Node,...Tr}}async function Jr(){return wn(await Lr())}var Mt=null;async function Wo(){return Mt||(Mt=await Jr(),Mt)}function zo(A,e){switch(e){case"center":return A.JUSTIFY_CENTER;case"end":return A.JUSTIFY_FLEX_END;case"space-between":return A.JUSTIFY_SPACE_BETWEEN;case"space-around":return A.JUSTIFY_SPACE_AROUND;default:return A.JUSTIFY_FLEX_START}}function Xo(A,e){switch(e){case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;default:return A.ALIGN_FLEX_START}}function Zo(A,e){switch(e){case"start":return A.ALIGN_FLEX_START;case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;case"baseline":return A.ALIGN_BASELINE;default:return A.ALIGN_AUTO}}function se(A){if(A!=null){if(typeof A=="number"||typeof A=="string")return A;if(typeof A=="object"){if("unit"in A&&typeof A.unit=="number")return A;let e=Number(A);if(!Number.isNaN(e))return e}}}function qo(A){switch(A.kind){case"flex":return A.dir??"row";case"block":return"column";case"box":return A.children&&A.children.length>0?"column":null;default:return null}}function _o(A){if(A.kind==="block")return"fill"}function jo(A){let e=0;if(A.kind==="flex"||A.kind==="block"){let o=se(A.gap);e=typeof o=="number"?o:0}let t=0;if(A.kind==="flex"||A.kind==="block"||A.kind==="box"||A.kind==="text"){let o=se(A.padding);t=typeof o=="number"?o:0}let n="start";A.kind==="flex"&&(n=A.justify??"start");let r="start";(A.kind==="flex"||A.kind==="block")&&(r=A.align??"start");let i=!1;return A.kind==="flex"&&(i=typeof A.wrap=="boolean"?A.wrap:!1),{gap:e,padding:t,justify:n,align:r,wrap:i}}function We(A){let e=A;return e.position==="absolute"||e.position===void 0&&(e.x!==void 0||e.y!==void 0)}function $o(A){return"children"in A&&A.children?A.children.filter(e=>!We(e)):[]}function Aa(A){return"children"in A&&A.children?A.children.filter(e=>We(e)):[]}function Kr(A,e,t,n,r){let i=e,o=A.Node.create(),a=qo(i),s=a!==null,g=[];if(We(i)){o.setPositionType(A.POSITION_TYPE_ABSOLUTE);let h=se(i.x),d=se(i.y);h!==void 0&&o.setPosition(A.EDGE_LEFT,h),d!==void 0&&o.setPosition(A.EDGE_TOP,d)}else o.setPositionType(A.POSITION_TYPE_RELATIVE);let I=se(i.grow);I!==void 0&&o.setFlexGrow(typeof I=="number"?I:parseFloat(I));let B=se(i.flexShrink);B!==void 0?o.setFlexShrink(typeof B=="number"?B:parseFloat(B)):o.setFlexShrink(r!==null?1:0),i.flexBasis!==void 0&&o.setFlexBasis(i.flexBasis),i.alignSelf!==void 0&&o.setAlignSelf(Zo(A,i.alignSelf));let E=i.width??_o(i),Q=i.height,C=r==="row",p=r==="column";if(Or(o,"width",E,t?.width,C),Or(o,"height",Q,t?.height,p),s){let h=jo(i);o.setFlexDirection(a==="row"?A.FLEX_DIRECTION_ROW:A.FLEX_DIRECTION_COLUMN),o.setJustifyContent(zo(A,h.justify)),o.setAlignItems(Xo(A,h.align)),o.setFlexWrap(h.wrap?A.WRAP_WRAP:A.WRAP_NO_WRAP),h.padding>0&&o.setPadding(A.EDGE_ALL,h.padding),h.gap>0&&o.setGap(A.GUTTER_ALL,h.gap);let d=$o(i),D=Aa(i),x=[...d,...D];for(let G=0;G<x.length;G++){let M=Kr(A,x[G],void 0,n,We(i)?null:a);o.insertChild(M.yogaNode,G),g.push(M)}}else if(i.kind==="text"||i.kind==="media"&&i.dataType==="Caption")o.setMeasureFunc((h,d,D,x)=>{let G;(d===1||d===2)&&(G=h);let M=n?.(i,G)??{width:0,height:0},w=M.width,b=M.height;return d===1&&(w=h),x===1&&(b=D),{width:w,height:b}});else{let h=n?.(i)??null;if(h){let d=i.aspectRatio!==void 0,D=i.dataType==="Caption",x=h.height>0?h.width/h.height:1;i.kind==="media"&&!D&&!d&&o.setAspectRatio(x);let G=E===void 0||E==="auto"||E==="fit",M=Q===void 0||Q==="auto"||Q==="fit";if(G&&M){let w=i.aspectRatio??(i.kind==="media"?x:void 0)??1;o.setMeasureFunc((b,N,U,L)=>{let F=h.width,J=h.height;if(N===1&&L===1)F=b,J=U;else if(N===1)F=b,J=w>0?Math.round(b/w):h.height;else if(L===1)J=U,F=w>0?Math.round(U*w):h.width;else if(N===2&&L===2){let W=Math.min(1,b/h.width,U/h.height);F=Math.round(h.width*W),J=Math.round(h.height*W)}else N===2?h.width>b&&(F=b,J=w>0?Math.round(b/w):h.height):L===2&&h.height>U&&(J=U,F=w>0?Math.round(U*w):h.width);return{width:F,height:J}})}else if(G){let w=i.aspectRatio??(i.kind==="media"?x:void 0);(w===void 0||w<=0)&&o.setWidth(h.width)}else if(M){let w=i.aspectRatio??(i.kind==="media"?x:void 0);(w===void 0||w<=0)&&o.setHeight(h.height)}}}return{yogaNode:o,layoutNode:i,children:g}}function Or(A,e,t,n,r){if(t===void 0||t==="auto"||t==="fit")return;let i=se(t);if(typeof i=="number"){e==="width"?A.setWidth(i):A.setHeight(i);return}if(i==="fill"){if(r){A.getFlexGrow()===0&&A.setFlexGrow(1),A.setFlexBasis(0);return}n!==void 0?e==="width"?A.setWidth(n):A.setHeight(n):e==="width"?A.setWidthPercent(100):A.setHeightPercent(100)}}function Yr(A,e,t,n,r){let i=A.yogaNode.getComputedLayout(),o=e+i.left,a=t+i.top,s=i.width,g=i.height,l=A.layoutNode;We(l)||(o+=Number(l.x??0),a+=Number(l.y??0)),n[A.layoutNode.id]={x:Math.round(o*1e3)/1e3,y:Math.round(a*1e3)/1e3,width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3},r[A.layoutNode.id]={width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3};for(let I of A.children)Yr(I,o,a,n,r)}function Vr(A){for(let e of A.children)Vr(e);A.yogaNode.free()}function ea(A,e){let{layout:t,viewport:n,measure:r}=e,i={},o={};for(let a of t){let s=A.Node.create();s.setWidth(n.width),s.setHeight(n.height),s.setFlexDirection(A.FLEX_DIRECTION_COLUMN);let g=Kr(A,a,{width:n.width,height:n.height},r,null);s.insertChild(g.yogaNode,0),s.calculateLayout(n.width,n.height);let l=g.yogaNode.getComputedLayout(),I=a.position==="absolute"||a.position===void 0&&(a.x!==void 0||a.y!==void 0),B=I?l.left:Number(a.x??0),E=I?l.top:Number(a.y??0);i[a.id]={x:Math.round(B*1e3)/1e3,y:Math.round(E*1e3)/1e3,width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3},o[a.id]={width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3};for(let Q of g.children)Yr(Q,B,E,i,o);Vr(g),s.free()}return{rects:i,sizes:o}}async function Jl(A){let e=await Wo();return ea(e,A)}v();function Wr(A,e){let t=Math.floor(A)^e*1013|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967295*2-1}function ta(A,e){let t=Math.floor(A),n=t+1,r=A-t,i=r*r*(3-2*r),o=Wr(t,e),a=Wr(n,e),s=o*r,g=a*(r-1);return(s*(1-i)+g*i)*2}function na(A,e,t=0){let n=A.frequency??2,r=A.amplitude??50,i=Math.max(1,Math.min(4,A.octaves??1)),o=A.seed??1234,a=0,s=0,g=1,l=n;for(let B=0;B<i;B++){let E=ta(e*l,o+B*7919);a+=E*g,s+=g,g*=.5,l*=2}let I=s>0?a/s:0;return t+I*r}function ra(A,e,t,n){if(e<=0)return t;let r=Math.max(.001,A.mass??1),i=Math.max(.001,A.stiffness??180),o=Math.max(.001,A.damping??12),a=Math.sqrt(i/r),s=o/(2*Math.sqrt(i*r)),g=1;if(s<1){let l=a*Math.sqrt(1-s*s),I=-1,B=-s*a/l;g=1+Math.exp(-s*a*e)*(I*Math.cos(l*e)+B*Math.sin(l*e))}else if(Math.abs(s-1)<1e-4)g=1+Math.exp(-a*e)*(-1-a*e);else{let l=Math.sqrt(s*s-1),I=-a*(s-l),B=-a*(s+l),E=-1/(1-I/B),Q=-1-E;g=1+E*Math.exp(I*e)+Q*Math.exp(B*e)}return t+(n-t)*g}function RA(A,e,t){if(A==null)return 0;if(typeof A=="number")return A;if(typeof A=="function")return Number(A(e,t))||0;if(Array.isArray(A)||ArrayBuffer.isView(A)){let n=A;if(n.length===0)return 0;let r=Math.max(0,Math.min(n.length-1,Math.round(e)));return Number(n[r])||0}if(typeof A=="object"){let n=A;if(typeof n.get=="function")return Number(n.get({frame:e,fps:t,time:t>0?e/t:0}))||0;if(n.type==="Signal"&&n.data)return RA(n.data,e,t);let r=n.samples??(typeof n.channel=="string"&&n[n.channel]!==void 0?n[n.channel]:void 0);if(Array.isArray(r)||ArrayBuffer.isView(r)){let i=r;if(i.length===0)return 0;let o=Number(n.fps)||24,a=t>0?t:24,s=e/a,g=Math.max(0,Math.min(i.length-1,Math.round(s*o)));return Number(i[g])||0}if(n.type==="audio_extractor"||n.extractionMode!==void 0){let i=n.nodeId;if(i){let o=n.channel??"primary",a=Yn.getChannelSamples(i,o);if(a&&a.length>0){let s=Number(n.fps)||24,g=t>0?t:24,l=e/g,I=Math.max(0,Math.min(a.length-1,Math.round(l*s)));return Number(a[I])||0}}return 0}if(n.type==="generator"){let i=typeof n.amplitude=="number"?n.amplitude:1,o=typeof n.frequency=="number"?n.frequency:1;if(n.syncToBpm&&typeof n.bpm=="number"&&n.bpm>0){let h=typeof n.bars=="number"&&n.bars>0?n.bars:1;o=n.bpm/60/h}let a=typeof n.phase=="number"?n.phase:0,s=typeof n.offset=="number"?n.offset:0,g=e/(t>0?t:24),l=n.baseType??"sine",I=!!n.fmEnabled,B=g;if(I){let h=Number(n.fmAmplitude)||1,d=Number(n.fmFrequency)||.5;B=g+Math.sin(g*d*Math.PI*2)*h}let E=0,Q=(B*o+a/(Math.PI*2))%1,C=Q<0?Q+1:Q,p=h=>(h%1+1)%1;switch(l){case"triangle":E=4*Math.abs(C-.5)-1;break;case"sawtooth":E=2*C-1;break;case"square":E=C<.5?1:-1;break;case"constant":E=1;break;case"noise_smooth":{let h=B*o+a,d=Math.floor(h),D=h-d,x=D*D*(3-2*D),G=p(Math.sin(d*12.9898)*43758.5453),M=p(Math.sin((d+1)*12.9898)*43758.5453);E=(G*(1-x)+M*x)*2-1;break}case"noise_white":E=p(Math.sin(B*12.9898+a)*43758.5453)*2-1;break;case"pulse":{let h=a===0?.5:Math.max(.01,Math.min(.99,a));E=p(B*o)<h?1:-1;break}case"bounce":E=Math.abs(Math.sin(B*o*Math.PI+a));break;case"staircase":E=Math.floor(C*8)/7*2-1;break;default:E=Math.sin(B*o*Math.PI*2+a);break}return E*i+s}if(n.type==="gate"){let i=n.sourceSignal??n.signal,o=typeof n.threshold=="number"?n.threshold:.5,a=n.mode??"gate",s=!!n.invert,g=typeof n.debounceMs=="number"?n.debounceMs:0,l=Math.max(1,Math.round(g/1e3*t)),I=Math.max(1,Number(n.holdFrames)||4),B=0;if(a==="gate")B=RA(i,e,t)>=o?1:0;else if(a==="trigger"){let E=-1/0,Q=Math.max(0,e-300);for(let C=Q;C<=e;C++){let p=RA(i,C,t),h=C>0?RA(i,C-1,t):0;p>=o&&h<o&&C-E>=l&&(E=C)}B=e>=E&&e<E+I?1:0}else if(a==="toggle"){let E=0,Q=-1/0;for(let C=0;C<=e;C++){let p=RA(i,C,t),h=C>0?RA(i,C-1,t):0;p>=o&&h<o&&C-Q>=l&&(E++,Q=C)}B=E%2===1?1:0}return s?1-B:B}if(n.type==="signal_math"){let i=RA(n.signalA,e,t),a=n.signalB!==void 0?RA(n.signalB,e,t):Number(n.bValue)||0;switch(n.operation){case"add":return i+a;case"subtract":return i-a;case"multiply":return i*a;case"divide":return a!==0?i/a:0;case"min":return Math.min(i,a);case"max":return Math.max(i,a);case"clamp":{let s=Number(n.clampMin)||0,g=Number(n.clampMax)||1;return Math.max(s,Math.min(g,i))}case"abs":return Math.abs(i);case"negate":return-i;case"invert":return 1-i;case"power":return i**(Number(n.exponent)||2);case"modulo":return a!==0?i%a:0;case"remap":{let s=Number(n.inMin)||0,g=Number(n.inMax)||1,l=Number(n.outMin)||0,I=Number(n.outMax)||1,B=g-s,E=B!==0?(i-s)/B:0;return l+E*(I-l)}case"normalize":{let s=Number(n.aMin??n.inMin)||0,l=(Number(n.aMax??n.inMax)||1)-s;return l!==0?Math.max(0,Math.min(1,(i-s)/l)):0}case"smoothstep":{let s=Number(n.edge0)||0,l=(Number(n.edge1)||1)-s,I=l!==0?Math.max(0,Math.min(1,(i-s)/l)):0;return I*I*(3-2*I)}case"custom":return i;default:return i}}if(typeof n.value=="number")return n.value}return 0}function ia(A,e,t,n=.15,r=2){if(e<0||!A)return 0;let i=A,o=0,a=-1/0;for(let s=0;s<=e;s++){let g=RA(i,s,t),l=s>0?RA(i,s-1,t):0;g>=n&&l<n&&s-a>=r&&(o++,a=s)}return o}function oa(A,e,t,n={}){let r=n[A.inputHandleId];if(r===void 0&&n){let B=Object.keys(n);if(B.length===1)r=n[B[0]];else if(B.length>1){let E=B.find(Q=>Q===A.inputHandleId);r=E?n[E]:n[B[0]]}}if(A.channel&&r&&typeof r=="object"){let B=r[A.channel];B!==void 0?r=B:typeof r.get!="function"&&(r={...r,channel:A.channel})}if(A.signalMode==="accumulate"){let B=A.threshold??A.accumulateThreshold??.15,E=A.debounceFrames??2,Q=ia(r,e,t,B,E),C=A.multiplier??1,p=A.offset??0;return Q*C+p}let i=A.multiplier??1,o=A.offset??0,a=Math.max(0,Math.round(A.smoothingWindowFrames??0));if(a<=1)return RA(r,e,t)*i+o;let s=0,g=0,l=Math.max(0,e-a+1);for(let B=l;B<=e;B++)s+=RA(r,B,t),g++;return(g>0?s/g:0)*i+o}function aa(A,e,t){return A+(e-A)*t}function sa(A){let e=A.trim().replace("#","");if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===6){let t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255,1]}if(e.length===8){let t=parseInt(e,16);return[t>>24&255,t>>16&255,t>>8&255,(t&255)/255]}return[255,255,255,1]}function zr(A,e,t){return Kn(A,e,t)}function xn(A,e,t){let n=t;return n<0&&(n+=1),n>1&&(n-=1),n<1/6?A+(e-A)*6*n:n<1/2?e:n<2/3?A+(e-A)*(2/3-n)*6:A}function ga(A,e){let[t,n,r,i]=sa(A),o=t/255,a=n/255,s=r/255,g=Math.max(o,a,s),l=Math.min(o,a,s),I=0,B=0,E=(g+l)/2;if(g!==l){let d=g-l;switch(B=E>.5?d/(2-g-l):d/(g+l),g){case o:I=(a-s)/d+(a<s?6:0);break;case a:I=(s-o)/d+2;break;case s:I=(o-a)/d+4;break}I/=6}I=(I+e%1+1)%1;let Q=E,C=E,p=E;if(B!==0){let d=E<.5?E*(1+B):E+B-E*B,D=2*E-d;Q=xn(D,d,I+1/3),C=xn(D,d,I),p=xn(D,d,I-1/3)}let h=d=>Math.round(Math.max(0,Math.min(255,d*255))).toString(16).padStart(2,"0");return i>=.999?`#${h(Q)}${h(C)}${h(p)}`:`rgba(${Math.round(Q*255)}, ${Math.round(C*255)}, ${Math.round(p*255)}, ${Math.round(i*100)/100})`}var la=new Set(["fill","fillColor","strokeColor","textBackgroundColor","color"]);function Mn(A,e){let t=A.keyframes??[];if(t.length===0)return 0;if(t.length===1||e<=t[0].frame)return t[0].value;if(e>=t[t.length-1].frame)return t[t.length-1].value;for(let n=0;n<t.length-1;n++){let r=t[n],i=t[n+1];if(e>=r.frame&&e<=i.frame){let o=i.frame-r.frame,a=o>0?(e-r.frame)/o:0;if(typeof r.value=="boolean")return a>=1?i.value:r.value;if(typeof r.value=="string"&&typeof i.value=="string")return zr(r.value,i.value,a);let s=Number(r.value)||0,g=Number(i.value)||0;return aa(s,g,a)}}return t[t.length-1].value}function Ia(A,e,t=24,n={}){let r=n.startFrame??0,i=e-r,o=A.source??{type:"keyframe"},a=n.baseValues?.[A.prop];switch(o.type){case"keyframe":return Mn(A,i);case"wiggle":{let s=typeof a=="number"?a:0,g=A.keyframes&&A.keyframes.length>0?Number(Mn(A,i))||0:s,l=i/(t>0?t:24);return na(o,l,g)}case"springOvershoot":{let s=0,g=1;A.keyframes&&A.keyframes.length>=2?(s=Number(A.keyframes[0].value)||0,g=Number(A.keyframes[1].value)||1):A.keyframes&&A.keyframes.length===1?(s=Number(a)||0,g=Number(A.keyframes[0].value)||0):typeof a=="number"&&(s=a,g=a);let l=i/(t>0?t:24);return ra(o,l,s,g)}case"signal":{let s=oa(o,e,t,n.signals);if(la.has(A.prop)){let g=o,l=g.colorA??"#ffffff",I=g.colorB??"#ffffff",B=g.colorMode??"interpolate";if(B==="threshold"){let Q=g.colorThreshold??.5;return s>=Q?I:l}if(B==="hueRotate")return ga(l,s);let E=Math.max(0,Math.min(1,s));return zr(l,I,E)}return s}default:return Mn(A,i)}}function Wl(A,e,t=24,n={}){let r={};if(!A?.tracks)return r;for(let i of A.tracks)r[i.prop]=Ia(i,e,t,n);return r}v();var Xr=["x","y","width","height"];function ua(A){let e=A.matte,{matte:t,...n}=A,r={...n};if(Array.isArray(r.children)&&(r.children=Gt(r.children)),!e?.node)return[r];let i=e.node,o=i.id??`${String(A.id)}__matte`,a={position:"absolute",...i,id:o,matteOf:String(A.id),matteMode:e.mode??"alpha"};if(Xr.every(g=>i[g]===void 0))for(let g of Xr)typeof A[g]=="number"&&(a[g]=A[g]);let s=typeof A.startFrame=="number"?A.startFrame:0;return a.startFrame=s+(typeof i.startFrame=="number"?i.startFrame:0),i.durationFrames===void 0&&A.durationFrames!==void 0&&(a.durationFrames=A.durationFrames),Array.isArray(a.children)&&(a.children=Gt(a.children)),r.matteId=o,[r,a]}function Gt(A){return A.flatMap(e=>ua(e))}v();function Gn(A,e,t,n="forward"){if(t<=0||e<=1)return 0;switch(n){case"reverse":return(e-1-A)*t;case"center-out":{let r=(e-1)/2,i=Math.abs(A-r);return Math.round(i*t)}default:return A*t}}function _l(A,e,t="forward",n=0){return!A||A.length===0?[]:e<=0&&n===0?[...A]:A.map((r,i)=>{let o=Gn(i,A.length,e,t),a=r.startFrame??0;return{...r,startFrame:a+o+n}})}v();v();var qr=Symbol.for("framefields.inlineSignal"),Zr=new WeakMap,ca=0;function Ba(A){let e=Zr.get(A);return e===void 0&&(e=`inline_signal_${ca++}`,Zr.set(A,e)),e}function AI(A){if(typeof A=="string")return{handleId:A};if(A===null||typeof A!="object"&&typeof A!="function")throw new TypeError(`LayerAnimation.signal: expected a signal object or a signal name, got ${String(A)}. Pass a signal (Signal.fromArray / Signal.builder / an audio channel \u2026) or register it with comp.addSignal(name, signal) and pass the name.`);let e=A;return typeof e.inputHandleId=="string"?{handleId:e.inputHandleId}:typeof e.gpuBinding?.nodeId=="string"?typeof e.get=="function"?{handleId:e.gpuBinding.nodeId,inline:A}:{handleId:e.gpuBinding.nodeId}:{handleId:Ba(A),inline:A}}function eI(A,e){Object.defineProperty(A,qr,{value:e,enumerable:!1,configurable:!0,writable:!0})}function Ea(A){if(!(!A||typeof A!="object"))return A[qr]}function Nn(A,e={}){for(let t of A){if(!t||typeof t!="object")continue;let{animation:n,children:r}=t,i=n?.tracks;if(Array.isArray(i))for(let o of i){let a=o?.source,s=Ea(a);s&&typeof a?.inputHandleId=="string"&&(e[a.inputHandleId]=s)}Array.isArray(r)&&Nn(r,e)}return e}function _r(A,e,t,n=0,r,i){let o=[],a=A.src??A.inputHandleId,s=d=>typeof d=="string"&&(d.startsWith("http://")||d.startsWith("https://")||d.startsWith("file://")||d.startsWith("/")||d.startsWith("./")||d.startsWith("blob:")||d.startsWith("data:")||/\.(png|jpe?g|webp|gif|svg|mp4|webm|mov|mkv|mp3|wav|ogg|m4a|srt|vtt|json|lottie)$/i.test(d)),g;if(A.kind==="media"){if(e&&(g=e(A.inputHandleId)),!g&&a&&(s(a)||A.src)&&(g=Tn(a,A.dataType??"Video")),!g&&!e&&a&&(a.includes(".")||a.includes("/"))&&console.warn(`[Compositor] Media layer '${A.id??"?"}' source '${a}' could not be resolved.`),g&&A.crop){let d=A.crop,D=typeof d.toOperation=="function"?d.toOperation():d;g={metadata:{...g.metadata},operation:{op:"Crop",...D,dataType:g.operation.dataType},children:[g]}}if(g&&Array.isArray(A.effects))for(let d of A.effects){let D=typeof d.toOperation=="function"?d.toOperation():d;g={metadata:{...g.metadata},operation:{id:A.id?`${A.id}-${D.op??"effect"}`:void 0,effect:d,...D,dataType:g.operation.dataType},children:[g]}}if(g&&A.vision){let d=A.vision,D=typeof d.toOperation=="function"?d.toOperation():d;g={metadata:{...g.metadata},operation:{op:"Vision",id:A.id,effect:d,...D,dataType:g.operation.dataType},children:[g]}}}if(A.kind==="media")o=g?[g]:[];else if("children"in A&&A.children){let d="staggerFrames"in A&&typeof A.staggerFrames=="number"?A.staggerFrames:0,D="staggerDirection"in A&&typeof A.staggerDirection=="string"?A.staggerDirection:"forward",x=typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)?Math.round(A.startFrame):0,G=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)?Math.round(A.durationFrames):i;o=A.children.map((M,w)=>{let b=Gn(w,A.children.length,d,D),N=n+x+b;return _r(M,e,t,N,r,M.durationFrames===void 0?G:void 0)})}let l="Image",I;if(g){l=g.operation?.dataType??"Image";let D=l==="Image"||l==="SVG"?void 0:Jn(g)?.durationMs;D!=null&&(I=Math.max(1,Math.round(D/1e3*t)))}let B=g?.operation?.dataType==="Caption",E=A.kind==="flex"||A.kind==="block"||A.kind==="box",Q=(typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)&&A.startFrame>=0?Math.round(A.startFrame):0)+n,C=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)&&A.durationFrames>0?Math.round(A.durationFrames):void 0,p=i??Math.round((r??1e4)/1e3*t);if(E&&o.length>0){if(C===void 0){let d=o.map(D=>(D.operation?.startFrame??0)+(D.operation?.durationFrames??p));C=Math.max(1,Math.max(...d)-Q)}}else B&&I!==void 0&&I>0?C=I:C!==void 0?(l==="Video"||l==="Audio")&&I!==void 0&&I>0&&(C=Math.min(C,I)):C=I??i??Math.round((r??1e4)/1e3*t);let h=C/t*1e3;if(A.kind==="media"&&g){let d=g;for(;d;)(!d.metadata?.durationMs||d.metadata.durationMs<=0)&&(d.metadata||(d.metadata={}),d.metadata.durationMs=h),d.operation?.sourceMeta&&!d.operation.sourceMeta.durationMs&&(d.operation.sourceMeta.durationMs=h),d=d.children?.[0]}return{metadata:{durationMs:h},operation:{op:"CompositorLayer",...A,startFrame:Q,durationFrames:C,dataType:l},children:o}}function sI(A,e){let{isVideoMode:t,fps:n,durationMs:r,resolveMedia:i,signals:o}=e,a={metadata:{width:A.width,height:A.height,fps:n,...r!==void 0&&{durationMs:r}},operation:{op:"Compositor",width:A.width,height:A.height,fps:n,mode:A.mode??"Video",backgroundColor:A.backgroundColor,...A.antialias3d!==void 0&&{antialias3d:A.antialias3d},volume:A.volume??1,dataType:t?"Video":"Image",layout:A.layout,signals:{...Nn(A.layout),...o??A.signals??{}},...(A.onRequestFrame||e.onRequestFrame)&&{onRequestFrame:A.onRequestFrame??e.onRequestFrame}},children:Gt(A.layout).map(l=>_r(l,i,n,0,r))},s=Array.isArray(e.effects)?e.effects:Array.isArray(A.effects)?A.effects:[];for(let l of s){let I=typeof l.toOperation=="function"?l.toOperation():l;a={metadata:{...a.metadata},operation:{...I,dataType:a.operation.dataType},children:[a]}}let g=A.vision??e.vision;if(g){let l=typeof g.toOperation=="function"?g.toOperation():g;a={metadata:{...a.metadata},operation:{op:"Vision",...l,dataType:a.operation.dataType},children:[a]}}return a}function gI(A){let e=[],t=n=>{n?.operation?.op==="CompositorLayer"&&e.push(n);for(let r of n?.children??[])t(r)};for(let n of A)t(n);return e}export{nt as a,qn as b,R as c,_ as d,Ie as e,pi as f,er as g,it as h,Kt as i,Ot as j,qA as k,Pa as l,Ha as m,Ne as n,Wa as o,Fe as p,sr as q,Bs as r,at as s,ct as t,El as u,dl as v,mr as w,hr as x,pr as y,rl as z,yr as A,Dr as B,so as C,sl as D,dn as E,Dl as F,Wo as G,ea as H,Jl as I,AI as J,eI as K,Ia as L,Wl as M,Gt as N,Gn as O,_l as P,sI as Q,gI as R};