@uptimizr/dashboard 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/out/404.html +1 -1
  2. package/out/__next.__PAGE__.txt +4 -4
  3. package/out/__next._full.txt +11 -11
  4. package/out/__next._head.txt +4 -4
  5. package/out/__next._index.txt +4 -4
  6. package/out/__next._tree.txt +2 -2
  7. package/out/_next/static/chunks/002cjeoit6-up.js +1 -0
  8. package/out/_next/static/chunks/02n1uiltexy3w.js +1 -0
  9. package/out/_next/static/chunks/03ab2khhe8-x5.js +1 -0
  10. package/out/_next/static/chunks/04_yytpc2paxy.js +1 -0
  11. package/out/_next/static/chunks/06qot1qvlsqaz.js +1 -0
  12. package/out/_next/static/chunks/07eeopuufsqp-.js +1501 -0
  13. package/out/_next/static/chunks/08a5xek662n8n.js +1 -0
  14. package/out/_next/static/chunks/08wuc9--s8zn_.js +1 -0
  15. package/out/_next/static/chunks/09510356f0lad.js +1 -0
  16. package/out/_next/static/chunks/0_eu72k69lxj7.js +1 -0
  17. package/out/_next/static/chunks/0beajlqy8p8b5.js +1 -0
  18. package/out/_next/static/chunks/0c83pe1mpx456.js +1 -0
  19. package/out/_next/static/chunks/0echnagbkyx79.js +1198 -0
  20. package/out/_next/static/chunks/0eh1ml86u8dh7.js +1 -0
  21. package/out/_next/static/chunks/0fh-9h9ylxskr.js +674 -0
  22. package/out/_next/static/chunks/0fzmc1up21g1i.js +1 -0
  23. package/out/_next/static/chunks/0grlb9lo8e502.js +1 -0
  24. package/out/_next/static/chunks/0h22pg-0xrxnm.js +1 -0
  25. package/out/_next/static/chunks/0j6p1pmc14t96.js +1 -0
  26. package/out/_next/static/chunks/0j_6dx-sttgsy.js +1 -0
  27. package/out/_next/static/chunks/0j__xaq_8_di1.js +1 -0
  28. package/out/_next/static/chunks/0kfd-cvj5fvtz.js +1 -0
  29. package/out/_next/static/chunks/0o_mp98xzqfyf.js +1 -0
  30. package/out/_next/static/chunks/0otsec99kdkt7.js +213 -0
  31. package/out/_next/static/chunks/0ql-s-tsmel_u.js +151 -0
  32. package/out/_next/static/chunks/0r47gs_e93cka.js +1 -0
  33. package/out/_next/static/chunks/0sqys6o2pbe1q.js +1328 -0
  34. package/out/_next/static/chunks/0titqrn1qmcsv.js +1 -0
  35. package/out/_next/static/chunks/0tnlbw78tgaxp.js +4 -0
  36. package/out/_next/static/chunks/0tw4dyl-cp-hd.js +1 -0
  37. package/out/_next/static/chunks/0vbce-8omgurc.js +1 -0
  38. package/out/_next/static/chunks/0vfsg5byzep_0.js +1 -0
  39. package/out/_next/static/chunks/{0gv7mblzv3dl3.js → 0w8_1yjvol1f0.js} +20 -20
  40. package/out/_next/static/chunks/0xh144a5fz58h.js +1 -0
  41. package/out/_next/static/chunks/0xjltg_pph0c8.js +1 -0
  42. package/out/_next/static/chunks/0yeqgh0dnas8d.js +1 -0
  43. package/out/_next/static/chunks/101-7e_7up7rk.js +1 -0
  44. package/out/_next/static/chunks/128e51hj_04r0.js +1 -0
  45. package/out/_next/static/chunks/{10fnxpln_5xfd.js → 12kv810lohbsx.js} +2 -2
  46. package/out/_next/static/chunks/137xbvd4nd41j.js +3 -0
  47. package/out/_next/static/chunks/14bws-suyy5zu.js +1 -0
  48. package/out/_next/static/chunks/14ggsmqwej_tt.js +1656 -0
  49. package/out/_next/static/chunks/17genz6pkmty_.js +1 -0
  50. package/out/_next/static/chunks/17xd8hnazzr0g.js +1454 -0
  51. package/out/_next/static/chunks/18dczy9ylt2s_.js +1 -0
  52. package/out/_next/static/chunks/18xs_kvsaolb0.js +1 -0
  53. package/out/_next/static/chunks/19016f8-ry0z6.js +1 -0
  54. package/out/_next/static/chunks/1_6oejyxj39li.js +1 -0
  55. package/out/_next/static/chunks/1_aon8nz9p1fr.js +1 -0
  56. package/out/_next/static/chunks/1_qzlkuxukhpq.js +779 -0
  57. package/out/_next/static/chunks/1akaj5rhgitn3.js +1 -0
  58. package/out/_next/static/chunks/1bvl1ws7b_3gn.js +1 -0
  59. package/out/_next/static/chunks/1cdbk6kxyr1c9.js +1 -0
  60. package/out/_next/static/chunks/1fbjkk55uu4_g.js +1 -0
  61. package/out/_next/static/chunks/1furcfsgrw_3g.js +1 -0
  62. package/out/_next/static/chunks/1g0-f1g3gn_rs.js +1 -0
  63. package/out/_next/static/chunks/1g7emwu85bifo.js +557 -0
  64. package/out/_next/static/chunks/{37vzwr3ciejf1.js → 1gs-5722l4u59.js} +1 -1
  65. package/out/_next/static/chunks/1gt4kh0_xmigy.js +1 -0
  66. package/out/_next/static/chunks/1h8xzuuhhglu9.js +1 -0
  67. package/out/_next/static/chunks/1hatz-jlztrn0.js +1 -0
  68. package/out/_next/static/chunks/1iioifo7i0t0_.js +1 -0
  69. package/out/_next/static/chunks/{0impkpmxx3ttp.js → 1iiz7jqgj20z0.js} +1 -1
  70. package/out/_next/static/chunks/1kujmd5n0j9nk.js +1 -0
  71. package/out/_next/static/chunks/{2kazjq29jeamx.js → 1ltux4lwz7muf.js} +160 -372
  72. package/out/_next/static/chunks/1m_buecgcq67j.js +740 -0
  73. package/out/_next/static/chunks/1n9sy0yt5d2vq.js +1 -0
  74. package/out/_next/static/chunks/1p1gz6dseck--.js +1 -0
  75. package/out/_next/static/chunks/1p1xtsfwvpuqo.js +1 -0
  76. package/out/_next/static/chunks/1p8f6okk2ewbz.js +1 -0
  77. package/out/_next/static/chunks/1qg_etglhvp9h.js +740 -0
  78. package/out/_next/static/chunks/1th_t5ujeqlkf.js +1 -0
  79. package/out/_next/static/chunks/1thr-mdzbu96v.js +1 -0
  80. package/out/_next/static/chunks/1tta1a064979p.js +1 -0
  81. package/out/_next/static/chunks/1u_riwm0nfww7.js +1 -0
  82. package/out/_next/static/chunks/1ua15kzid0_8p.js +2560 -0
  83. package/out/_next/static/chunks/1uu-rt_8p1edp.js +2712 -0
  84. package/out/_next/static/chunks/1uu93wuxigx4k.js +1 -0
  85. package/out/_next/static/chunks/{1flb8adpj6_2o.js → 1xpwp4m1tqugp.js} +1 -1
  86. package/out/_next/static/chunks/1ynju1jqfrcv0.js +1 -0
  87. package/out/_next/static/chunks/1zfojlgb15okk.js +1 -0
  88. package/out/_next/static/chunks/1zj8x5wbgnzz-.js +1 -0
  89. package/out/_next/static/chunks/1zl6t15gh34nn.js +1 -0
  90. package/out/_next/static/chunks/{1thjncpj7u6pq.js → 223vrr_4sfhsj.js} +1 -1
  91. package/out/_next/static/chunks/22cr2b04btguf.js +1 -0
  92. package/out/_next/static/chunks/242xhzxxetctz.js +1 -0
  93. package/out/_next/static/chunks/24essz5mmvx-6.js +1 -0
  94. package/out/_next/static/chunks/256k1jw1m--l7.js +146 -0
  95. package/out/_next/static/chunks/259obyrpxcv6r.js +1 -0
  96. package/out/_next/static/chunks/26v9yqicofqba.js +1 -0
  97. package/out/_next/static/chunks/290d93hmm_e8b.js +1 -0
  98. package/out/_next/static/chunks/2_2fk7iddrs43.js +1 -0
  99. package/out/_next/static/chunks/{00k_j_r7bv_eb.js → 2bjlls8-qe05r.js} +9 -9
  100. package/out/_next/static/chunks/2ckd7f1wbfod-.js +1 -0
  101. package/out/_next/static/chunks/{163fa70v4mgxj.js → 2d6hru4qo23tt.js} +1 -1
  102. package/out/_next/static/chunks/2ejvntxtvf5o9.js +1 -0
  103. package/out/_next/static/chunks/2f7_3tzf7xhps.js +1 -0
  104. package/out/_next/static/chunks/2gxd_o1g89_bv.js +1 -0
  105. package/out/_next/static/chunks/2hd2txb4-m9k1.js +1 -0
  106. package/out/_next/static/chunks/2hpxou_cnp4f_.js +1 -0
  107. package/out/_next/static/chunks/2izioctrfc0s5.js +1 -0
  108. package/out/_next/static/chunks/2jhnk4h4n0udv.js +1 -0
  109. package/out/_next/static/chunks/2jpkhkk9zi8-f.js +1 -0
  110. package/out/_next/static/chunks/2kpet_l1kq2sx.js +1 -0
  111. package/out/_next/static/chunks/2mdbvf1b5h00_.css +3 -0
  112. package/out/_next/static/chunks/2nck5w4c7leb7.js +1 -0
  113. package/out/_next/static/chunks/2our10fwtj87e.js +1 -0
  114. package/out/_next/static/chunks/2qq3uzsbiicw3.js +1194 -0
  115. package/out/_next/static/chunks/2qqqpu0ahfdda.js +1 -0
  116. package/out/_next/static/chunks/2u-f7mmxvk8wj.js +1 -0
  117. package/out/_next/static/chunks/2ue1wo4ryk87z.js +1 -0
  118. package/out/_next/static/chunks/2uk-vwlxe9-xr.js +1 -0
  119. package/out/_next/static/chunks/2ur5-lxdvv1jm.js +1 -0
  120. package/out/_next/static/chunks/2veqsohwfhfqc.js +1 -0
  121. package/out/_next/static/chunks/2vqlv9wnewhu9.js +1 -0
  122. package/out/_next/static/chunks/{1zvc1tv--w8nn.js → 2wzshintp5lf8.js} +1 -1
  123. package/out/_next/static/chunks/2x-00glogc485.js +1 -0
  124. package/out/_next/static/chunks/2yfxy0f5fqs4o.js +1 -0
  125. package/out/_next/static/chunks/2z88mt3ixktu3.js +1 -0
  126. package/out/_next/static/chunks/2z_jn9ud28fk7.js +1 -0
  127. package/out/_next/static/chunks/3-eswqjobiqk1.js +1 -0
  128. package/out/_next/static/chunks/30-tbi7pys6fp.js +4 -0
  129. package/out/_next/static/chunks/30c-nsedy_ce0.js +1 -0
  130. package/out/_next/static/chunks/31u5lbu1vxznh.js +1 -0
  131. package/out/_next/static/chunks/{2feca0xcipcyt.js → 32ahba5ezp467.js} +156 -156
  132. package/out/_next/static/chunks/337hn35kts7ud.js +1 -0
  133. package/out/_next/static/chunks/33dgpebv-tf73.js +1 -0
  134. package/out/_next/static/chunks/36jkdhq6kb-cf.js +1 -0
  135. package/out/_next/static/chunks/37epa8fz59vba.js +1166 -0
  136. package/out/_next/static/chunks/3833xfnz0a-ub.js +1 -0
  137. package/out/_next/static/chunks/38awrh_qxn22k.js +1 -0
  138. package/out/_next/static/chunks/{0wrm9jr-9bw0e.js → 38x3c1ra5slhe.js} +383 -913
  139. package/out/_next/static/chunks/39idqlqlcp5b9.js +1 -0
  140. package/out/_next/static/chunks/{2a3spdq-m8drh.js → 3_gku1pwluoo0.js} +1 -1
  141. package/out/_next/static/chunks/3_mu-4rdjajna.js +1450 -0
  142. package/out/_next/static/chunks/3coacc4-g-g5c.js +1 -0
  143. package/out/_next/static/chunks/3e00fzdfkclzq.js +1 -0
  144. package/out/_next/static/chunks/3e8fmlq0k5wkg.js +1 -0
  145. package/out/_next/static/chunks/3e9tzyrt4_98z.js +1 -0
  146. package/out/_next/static/chunks/3edelqkq92pil.js +1 -0
  147. package/out/_next/static/chunks/3figbil1t4ssj.js +593 -0
  148. package/out/_next/static/chunks/3gimb3z_mteou.js +1 -0
  149. package/out/_next/static/chunks/{2p2vv6cc9i-3q.js → 3idaz_s77e-j_.js} +9 -9
  150. package/out/_next/static/chunks/3j-4wuhs5weba.js +1 -0
  151. package/out/_next/static/chunks/3jjfnwvybayy7.js +1 -0
  152. package/out/_next/static/chunks/3jwm5dfk_78gc.js +1 -0
  153. package/out/_next/static/chunks/3k9d4ylc3li2t.js +1352 -0
  154. package/out/_next/static/chunks/3l3_0ack3gy4k.js +1 -0
  155. package/out/_next/static/chunks/3lwhs5ja7tun3.js +1 -0
  156. package/out/_next/static/chunks/3m6nmp2dca6un.js +1342 -0
  157. package/out/_next/static/chunks/3mbnfpufs2-7e.js +7 -0
  158. package/out/_next/static/chunks/3mcd08gmt038z.js +1 -0
  159. package/out/_next/static/chunks/3mt5th7b1i_u9.js +1 -0
  160. package/out/_next/static/chunks/3ne77mjdz2y7o.js +1 -0
  161. package/out/_next/static/chunks/3puhrqtujktyv.js +1 -0
  162. package/out/_next/static/chunks/3rdifucupcgkg.js +1 -0
  163. package/out/_next/static/chunks/3riekaxl3uxfb.js +1195 -0
  164. package/out/_next/static/chunks/3sdoskq_buttj.js +1 -0
  165. package/out/_next/static/chunks/3tg-ma9tv9xu4.js +1 -0
  166. package/out/_next/static/chunks/3tm-pqpmq_ppw.js +1 -0
  167. package/out/_next/static/chunks/3w9go565cjhq3.js +1636 -0
  168. package/out/_next/static/chunks/3wi9gzq2mtr_q.js +8 -0
  169. package/out/_next/static/chunks/3xagd_2_9zft2.js +1 -0
  170. package/out/_next/static/chunks/3xsq_anpad-fb.js +1 -0
  171. package/out/_next/static/chunks/3ycv2qq7vpbua.js +1 -0
  172. package/out/_next/static/chunks/3z84au-mitjjw.js +1 -0
  173. package/out/_next/static/chunks/4030dhur2h70-.js +1 -0
  174. package/out/_next/static/chunks/40ffffml4h_3r.js +4 -0
  175. package/out/_next/static/chunks/{3-shckrcpvbxu.js → 41wt50z9tx9cx.js} +108 -711
  176. package/out/_next/static/chunks/431slrqh0wa0g.js +1 -0
  177. package/out/_next/static/chunks/43s_lbd1i2krj.js +1 -0
  178. package/out/_next/static/chunks/{0-2y-_oomza2l.js → 44nxswtahaq4w.js} +18 -18
  179. package/out/_next/static/chunks/45bwefvdpztfs.js +1 -0
  180. package/out/_next/static/chunks/{turbopack-0sgd6pfbe1fy6.js → turbopack-19105pdhzxp1x.js} +1 -1
  181. package/out/_not-found/__next._full.txt +9 -9
  182. package/out/_not-found/__next._head.txt +4 -4
  183. package/out/_not-found/__next._index.txt +4 -4
  184. package/out/_not-found/__next._not-found.__PAGE__.txt +2 -2
  185. package/out/_not-found/__next._not-found.txt +3 -3
  186. package/out/_not-found/__next._tree.txt +2 -2
  187. package/out/_not-found.html +1 -1
  188. package/out/_not-found.txt +9 -9
  189. package/out/index.html +1 -1
  190. package/out/index.txt +11 -11
  191. package/package.json +5 -4
  192. package/out/_next/static/chunks/068j6934u8j16.js +0 -1
  193. package/out/_next/static/chunks/09e4adtr6w0xe.js +0 -1
  194. package/out/_next/static/chunks/0_rf76jneiwal.js +0 -176
  195. package/out/_next/static/chunks/0aznt7717miff.js +0 -1
  196. package/out/_next/static/chunks/0cu-q5q3a7uf3.js +0 -1
  197. package/out/_next/static/chunks/0fskcfh9vbhtv.js +0 -1
  198. package/out/_next/static/chunks/0o_tpe5tlugtr.js +0 -3
  199. package/out/_next/static/chunks/0pj9pajm2xz97.css +0 -3
  200. package/out/_next/static/chunks/0ufbyo1x3qkmo.js +0 -1
  201. package/out/_next/static/chunks/0wwcfw8i3j_zx.js +0 -1
  202. package/out/_next/static/chunks/0ys9-ozuluawt.js +0 -1
  203. package/out/_next/static/chunks/1-61zh4waha61.js +0 -1
  204. package/out/_next/static/chunks/10r_824wzt8hj.js +0 -1
  205. package/out/_next/static/chunks/11v6j6q59u-f_.js +0 -1
  206. package/out/_next/static/chunks/123xxske5c9na.js +0 -1
  207. package/out/_next/static/chunks/13isnf0--pmx1.js +0 -1
  208. package/out/_next/static/chunks/157d9euci08yu.js +0 -1
  209. package/out/_next/static/chunks/18u58lorfahxi.js +0 -4
  210. package/out/_next/static/chunks/1_aahautsz2v_.js +0 -1
  211. package/out/_next/static/chunks/1o1d0p-v1z8ty.js +0 -1
  212. package/out/_next/static/chunks/1vdjn0pkoyypn.js +0 -1
  213. package/out/_next/static/chunks/1yehxf-fmeicg.js +0 -1
  214. package/out/_next/static/chunks/1zx2q-r32thv1.js +0 -4
  215. package/out/_next/static/chunks/2-sjjedfr0kfq.js +0 -1
  216. package/out/_next/static/chunks/25b9x-li-tvk2.js +0 -1
  217. package/out/_next/static/chunks/2aelw3far6rii.js +0 -1
  218. package/out/_next/static/chunks/2aor7m-wbis85.js +0 -1
  219. package/out/_next/static/chunks/2fh-_9b6tqhvb.js +0 -1
  220. package/out/_next/static/chunks/2g5gecypj0rqe.js +0 -1
  221. package/out/_next/static/chunks/2szdcpl41-kzv.js +0 -1
  222. package/out/_next/static/chunks/2u6shh3oeycm-.js +0 -1
  223. package/out/_next/static/chunks/2unhhuv0arlcv.js +0 -1
  224. package/out/_next/static/chunks/310uz81hnnzsu.js +0 -1
  225. package/out/_next/static/chunks/3i3gbhccmhu7j.js +0 -210
  226. package/out/_next/static/chunks/3mqy-84_ul3t2.js +0 -1
  227. package/out/_next/static/chunks/3nz-dh9d7cehk.js +0 -1
  228. package/out/_next/static/chunks/3pufs8g4ui943.js +0 -1
  229. package/out/_next/static/chunks/3t06schbtqonl.js +0 -1
  230. package/out/_next/static/chunks/3v3-7fio3nw_t.js +0 -1
  231. package/out/_next/static/chunks/3v5ha25nxo43j.js +0 -1
  232. package/out/_next/static/chunks/3zskk1hxu3-_o.js +0 -1
  233. /package/out/_next/static/{yttuijl-0Cn9k8uTCfhIM → M9ZSIaKJeBgkjz1qktYio}/_buildManifest.js +0 -0
  234. /package/out/_next/static/{yttuijl-0Cn9k8uTCfhIM → M9ZSIaKJeBgkjz1qktYio}/_clientMiddlewareManifest.js +0 -0
  235. /package/out/_next/static/{yttuijl-0Cn9k8uTCfhIM → M9ZSIaKJeBgkjz1qktYio}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,13379,e=>{"use strict";class t{static _CheckLimit(e,r){let a=t._LogLimitOutputs[e];return a?a.current++:(a={limit:r,current:1},t._LogLimitOutputs[e]=a),a.current<=a.limit}static _GenerateLimitMessage(e,r=1){let a=t._LogLimitOutputs[e];if(!a||!t.MessageLimitReached)return;let o=this._Levels[r];a.current===a.limit&&t[o.name](t.MessageLimitReached.replace(/%LIMIT%/g,""+a.limit).replace(/%TYPE%/g,o.name??""))}static _AddLogEntry(e){t._LogCache=e+t._LogCache,t.OnNewCacheEntry&&t.OnNewCacheEntry(e)}static _FormatMessage(e){let t=e=>e<10?"0"+e:""+e,r=new Date;return"["+t(r.getHours())+":"+t(r.getMinutes())+":"+t(r.getSeconds())+"]: "+e}static _LogDisabled(e,t){}static _LogEnabled(e=1,r,a){let o=Array.isArray(r)?r[0]:r;if(void 0!==a&&!t._CheckLimit(o,a))return;let s=t._FormatMessage(o),n=this._Levels[e],i=Array.isArray(r)?r.slice(1):[];n.logFunc&&n.logFunc("BJS - "+s,...i);let l=`<div style='color:${n.color}'>${s}</div><br>`;t._AddLogEntry(l),t._GenerateLimitMessage(o,e)}static get LogCache(){return t._LogCache}static ClearLogCache(){t._LogCache="",t._LogLimitOutputs={},t.errorsCount=0}static set LogLevels(e){for(let r of(t.Log=t._LogDisabled,t.Warn=t._LogDisabled,t.Error=t._LogDisabled,[t.MessageLogLevel,t.WarningLogLevel,t.ErrorLogLevel]))(e&r)===r&&(t[this._Levels[r].name]=t._LogEnabled.bind(t,r))}}t.NoneLogLevel=0,t.MessageLogLevel=1,t.WarningLogLevel=2,t.ErrorLogLevel=4,t.AllLogLevel=7,t.MessageLimitReached="Too many %TYPE%s (%LIMIT%), no more %TYPE%s will be reported for this message.",t._LogCache="",t._LogLimitOutputs={},t._Levels=[{},{color:"white",logFunc:console.log,name:"Log"},{color:"orange",logFunc:console.warn,name:"Warn"},{},{color:"red",logFunc:console.error,name:"Error"}],t.errorsCount=0,t.Log=t._LogEnabled.bind(t,t.MessageLogLevel),t.Warn=t._LogEnabled.bind(t,t.WarningLogLevel),t.Error=t._LogEnabled.bind(t,t.ErrorLogLevel),e.s(["Logger",0,t])},96704,e=>{"use strict";let t=null;function r(){if(t)return t;let e=new ArrayBuffer(4),r=new Float32Array(e),a=new Uint32Array(e),o=new Uint32Array(512),s=new Uint32Array(512);for(let e=0;e<256;++e){let t=e-127;t<-24?(o[e]=0,o[256|e]=32768,s[e]=24,s[256|e]=24):t<-14?(o[e]=1024>>-t-14,o[256|e]=1024>>-t-14|32768,s[e]=-t-1,s[256|e]=-t-1):t<=15?(o[e]=t+15<<10,o[256|e]=t+15<<10|32768,s[e]=13,s[256|e]=13):t<128?(o[e]=31744,o[256|e]=64512,s[e]=24,s[256|e]=24):(o[e]=31744,o[256|e]=64512,s[e]=13,s[256|e]=13)}let n=new Uint32Array(2048),i=new Uint32Array(64),l=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,r=0;for(;(8388608&t)==0;)t<<=1,r-=8388608;t&=-8388609,r+=0x38800000,n[e]=t|r}for(let e=1024;e<2048;++e)n[e]=0x38000000+(e-1024<<13);for(let e=1;e<31;++e)i[e]=e<<23;i[31]=0x47800000,i[32]=0x80000000;for(let e=33;e<63;++e)i[e]=0x80000000+(e-32<<23);i[63]=0xc7800000;for(let e=1;e<64;++e)32!==e&&(l[e]=1024);return t={floatView:r,uint32View:a,baseTable:o,shiftTable:s,mantissaTable:n,exponentTable:i,offsetTable:l}}e.s(["FromHalfFloat",0,function(e){let t=r();return t.uint32View[0]=t.mantissaTable[t.offsetTable[e>>10]+(1023&e)]+t.exponentTable[e>>10],t.floatView[0]},"MaxHalfFloat",0,65504,"ToHalfFloat",0,function(e){let t=r();t.floatView[0]=e;let a=t.uint32View[0],o=a>>23&511;return t.baseTable[o]+((8388607&a)>>t.shiftTable[o])}])},64545,e=>{"use strict";e.s(["GetDOMTextContent",0,function(e){let t="",r=e.firstChild;for(;r;)3===r.nodeType&&(t+=r.textContent),r=r.nextSibling;return t},"IsDocumentAvailable",0,function(){return"u">typeof document},"IsNavigatorAvailable",0,function(){return"u">typeof navigator},"IsWindowObjectExist",0,function(){return"u">typeof window}])},36395,e=>{"use strict";var t=e.i(64545);e.s(["PrecisionDate",0,class{static get Now(){return(0,t.IsWindowObjectExist)()&&window.performance&&window.performance.now?window.performance.now():Date.now()}}])},65295,e=>{"use strict";class t{constructor(){this._xhr="u">typeof _native&&_native.XMLHttpRequest?new _native.XMLHttpRequest:new XMLHttpRequest,this._requestURL=""}static get IsCustomRequestAvailable(){return Object.keys(t.CustomRequestHeaders).length>0||t.CustomRequestModifiers.length>0}static _CleanUrl(e){return e=(e=e.replace("file:http:","http:")).replace("file:https:","https:")}static _ShouldSkipRequestModifications(e){return t.SkipRequestModificationForBabylonCDN&&(e.includes("preview.babylonjs.com")||e.includes("cdn.babylonjs.com"))}static _CollectCustomizations(e,r={}){let a={...r};if(t._ShouldSkipRequestModifications(e))return{url:e,headers:a};for(let e in t.CustomRequestHeaders){let r=t.CustomRequestHeaders[e];r&&(a[e]=r)}let o={setRequestHeader:(e,t)=>{a[e]=t}};for(let r of t.CustomRequestModifiers){if(t._ShouldSkipRequestModifications(e))break;let a=r(o,e);"string"==typeof a&&(e=a)}return{url:e,headers:a}}static async FetchAsync(e,r={}){let a=r.method??"GET";if("u">typeof fetch){let{url:o,headers:s}=t._CollectCustomizations(t._CleanUrl(e),r.headers??{});return await fetch(o,{method:a,headers:s,body:r.body??void 0})}return await new Promise((o,s)=>{let n=new t;n.responseType="arraybuffer",n.addEventListener("readystatechange",()=>{if(4===n.readyState)if(n.status>=200&&n.status<300){let e="u">typeof Headers?new Headers:void 0,t=n.getResponseHeader("Content-Type");t&&e&&e.set("Content-Type",t),"u">typeof Response?o(new Response(n.response,{status:n.status,statusText:n.statusText,headers:e})):o({ok:!0,status:n.status,statusText:n.statusText,headers:{get:e=>n.getResponseHeader(e)},arrayBuffer:async()=>await Promise.resolve(n.response)})}else s(Error(`HTTP ${n.status} loading '${n.requestURL}': ${n.statusText}`))}),n.open(a,e,r.headers),n.send(r.body??null)})}get requestURL(){return this._requestURL}get onprogress(){return this._xhr.onprogress}set onprogress(e){this._xhr.onprogress=e}get readyState(){return this._xhr.readyState}get status(){return this._xhr.status}get statusText(){return this._xhr.statusText}get response(){return this._xhr.response}get responseURL(){return this._xhr.responseURL}get responseText(){return this._xhr.responseText}get responseType(){return this._xhr.responseType}set responseType(e){this._xhr.responseType=e}get timeout(){return this._xhr.timeout}set timeout(e){this._xhr.timeout=e}addEventListener(e,t,r){this._xhr.addEventListener(e,t,r)}removeEventListener(e,t,r){this._xhr.removeEventListener(e,t,r)}abort(){this._xhr.abort()}send(e){this._xhr.send(e)}open(e,r,a){let{url:o,headers:s}=t._CollectCustomizations(r,a);for(let r in this._requestURL=t._CleanUrl(o),this._xhr.open(e,this._requestURL,!0),s)this._xhr.setRequestHeader(r,s[r])}setRequestHeader(e,t){this._xhr.setRequestHeader(e,t)}getResponseHeader(e){return this._xhr.getResponseHeader(e)}}t.CustomRequestHeaders={},t.CustomRequestModifiers=[],t.SkipRequestModificationForBabylonCDN=!0,e.s(["WebRequest",0,t])},29822,6805,92605,49311,23240,e=>{"use strict";class t{}t.FilesToLoad={},e.s(["FilesInputStore",0,t],29822),e.s(["RetryStrategy",0,class{static ExponentialBackoff(e=3,t=500){return(r,a,o)=>0!==a.status||o>=e||-1!==r.indexOf("file:")?-1:Math.pow(2,o)*t}}],6805);class r extends Error{}r._setPrototypeOf=Object.setPrototypeOf||((e,t)=>(e.__proto__=t,e));class a extends r{constructor(e,t,o){super(e),this.errorCode=t,this.innerError=o,this.name="RuntimeError",r._setPrototypeOf(this,a.prototype)}}e.s(["BaseError",0,r,"ErrorCodes",0,{MeshInvalidPositionsError:0,UnsupportedTextureError:1e3,GLTFLoaderUnexpectedMagicError:2e3,SceneLoaderError:3e3,LoadFileError:4e3,RequestFileError:4001,ReadFileError:4002},"RuntimeError",0,a],92605);let o=e=>atob(e);e.s(["DecodeBase64ToBinary",0,e=>"function"==typeof Uint8Array.fromBase64?Uint8Array.fromBase64(e).buffer:function(e){let t=o(e),r=t.length,a=new Uint8Array(new ArrayBuffer(r));for(let e=0;e<r;e++)a[e]=t.charCodeAt(e);return a.buffer}(e),"DecodeBase64ToString",0,o,"EncodeArrayBufferToBase64",0,e=>{let t=ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e);return"function"==typeof t.toBase64?t.toBase64():function(e){let t,r,a,o,s,n,i,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c="",u=0;for(;u<e.length;)t=e[u++],r=u<e.length?e[u++]:NaN,a=u<e.length?e[u++]:NaN,o=t>>2,s=(3&t)<<4|r>>4,n=(15&r)<<2|a>>6,i=63&a,isNaN(r)?n=i=64:isNaN(a)&&(i=64),c+=l.charAt(o)+l.charAt(s)+l.charAt(n)+l.charAt(i);return c}(t)}],49311);let s=[];function n(e,t,r){try{if(e())return t(),!0}catch(e){return r?.(e),!0}return!1}e.s(["TimingTools",0,class{static SetImmediate(e){0===s.length&&setTimeout(()=>{let e=s;for(let t of(s=[],e))t()},1),s.push(e)}},"_RetryWithInterval",0,(e,t,r,a=16,o=3e4,s=!0,i)=>{if(s&&n(e,t,r))return null;let l=setInterval(()=>{n(e,t,r)?clearInterval(l):(o-=a)<0&&(clearInterval(l),r?.(Error("Operation timed out after maximum retries. "+(i||"")),!0))},a);return()=>clearInterval(l)}],23240)},38118,e=>{"use strict";var t=e.i(13379),r=e.i(96704);function a(e){switch(e){case 5120:case 5121:return 1;case 5122:case 5123:case 5131:return 2;case 5124:case 5125:case 5126:return 4;default:throw Error(`Invalid type '${e}'`)}}function o(e,t,o,s,n,i,l,c){let u=Array(s),f=Array(s);if(e instanceof Array){let r=t/4,a=o/4;for(let t=0;t<i;t+=s){for(let t=0;t<s;t++)u[t]=f[t]=e[r+t];c(f,t);for(let t=0;t<s;t++)u[t]!==f[t]&&(e[r+t]=f[t]);r+=a}}else{let d=ArrayBuffer.isView(e)?new DataView(e.buffer,e.byteOffset,e.byteLength):new DataView(e),g=a(n);for(let e=0;e<i;e+=s){for(let e=0,a=t;e<s;e++,a+=g)u[e]=f[e]=function(e,t,a,o){switch(t){case 5120:{let t=e.getInt8(a);return o&&(t=Math.max(t/127,-1)),t}case 5121:{let t=e.getUint8(a);return o&&(t/=255),t}case 5122:{let t=e.getInt16(a,!0);return o&&(t=Math.max(t/32767,-1)),t}case 5123:{let t=e.getUint16(a,!0);return o&&(t/=65535),t}case 5131:return(0,r.FromHalfFloat)(e.getUint16(a,!0));case 5124:return e.getInt32(a,!0);case 5125:return e.getUint32(a,!0);case 5126:return e.getFloat32(a,!0);default:throw Error(`Invalid component type ${t}`)}}(d,n,a,l);c(f,e);for(let e=0,a=t;e<s;e++,a+=g)u[e]!==f[e]&&function(e,t,a,o,s){switch(t){case 5120:o&&(s=Math.round(127*s)),e.setInt8(a,s);break;case 5121:o&&(s=Math.round(255*s)),e.setUint8(a,s);break;case 5122:o&&(s=Math.round(32767*s)),e.setInt16(a,s,!0);break;case 5123:o&&(s=Math.round(65535*s)),e.setUint16(a,s,!0);break;case 5131:e.setUint16(a,(0,r.ToHalfFloat)(s),!0);break;case 5124:e.setInt32(a,s,!0);break;case 5125:e.setUint32(a,s,!0);break;case 5126:e.setFloat32(a,s,!0);break;default:throw Error(`Invalid component type ${t}`)}}(d,n,a,l,f[e]);t+=o}}}e.s(["CopyFloatData",0,function(e,r,s,n,i,l,c,u){let f=r*a(s),d=c*r;if(u.length!==d)throw Error("Output length is not valid");if(5126!==s||i!==f)return void o(e,n,i,r,s,d,l,(e,t)=>{for(let a=0;a<r;a++)u[t+a]=e[a]});if(e instanceof Array){let t=n/4;u.set(e,t)}else if(ArrayBuffer.isView(e)){let r=e.byteOffset+n;if((3&r)!=0){t.Logger.Warn("Float array must be aligned to 4-bytes border"),u.set(new Float32Array(e.buffer.slice(r,r+d*Float32Array.BYTES_PER_ELEMENT)));return}let a=new Float32Array(e.buffer,r,d);u.set(a)}else{let t=new Float32Array(e,n,d);u.set(t)}},"EnumerateFloatValues",0,o,"GetBlobBufferSource",0,function(e){let t=e.buffer;if(t instanceof ArrayBuffer)return e;let r=new ArrayBuffer(e.byteLength);return new Uint8Array(r).set(new Uint8Array(t,e.byteOffset,e.byteLength)),r},"GetFloatData",0,function(e,r,s,n,i,l,c,u){let f=r*a(s),d=c*r;if(5126!==s||i!==f){let t=new Float32Array(d);return o(e,n,i,r,s,d,l,(e,a)=>{for(let o=0;o<r;o++)t[a+o]=e[o]}),t}if(!(e instanceof Array||e instanceof Float32Array)||0!==n||e.length!==d)if(e instanceof Array){let t=n/4;return e.slice(t,t+d)}else{if(!ArrayBuffer.isView(e))return new Float32Array(e,n,d);let r=e.byteOffset+n;return((3&r)!=0&&(t.Logger.Warn("Float array must be aligned to 4-bytes border"),u=!0),u)?new Float32Array(e.buffer.slice(r,r+d*Float32Array.BYTES_PER_ELEMENT)):new Float32Array(e.buffer,r,d)}return u?e.slice():e},"GetTypeByteLength",0,a,"GetTypedArrayData",0,function(e,r,s,n,i,l,c){let u,f=a(s),d=function(e){switch(e){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:case 5131:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array;default:throw Error(`Invalid component type '${e}'`)}}(s),g=l*r;if(Array.isArray(e)){if((3&n)!=0||(3&i)!=0)throw Error("byteOffset and byteStride must be a multiple of 4 for number[] data.");let t=n/4,a=i/4;if(t+(l-1)*a+r>e.length)throw Error("Last accessed index is out of bounds.");if(a<r)throw Error("Data stride cannot be smaller than the component size.");if(a!==r){let t=new d(g);return o(e,n,i,r,s,g,!1,(e,a)=>{for(let o=0;o<r;o++)t[a+o]=e[o]}),t}return new d(e.slice(t,t+g))}let p=n;if(ArrayBuffer.isView(e)?(u=e.buffer,p+=e.byteOffset):u=e,p+(l-1)*i+r*f>u.byteLength)throw Error("Last accessed byte is out of bounds.");let m=r*f;if(i<m)throw Error("Byte stride cannot be smaller than the component's byte size.");if(i!==m){let e=new d(g),t=new Uint8Array(u,p),a=new Uint8Array(e.buffer),o=r*f;for(let e=0,r=0,s=0;e<l;e++,r+=i,s+=o)a.set(t.subarray(r,r+o),s);return e}return(1!==f&&(p&f-1)!=0&&(t.Logger.Warn("Array must be aligned to border of element size. Data will be copied."),c=!0),c)?new d(u.slice(p,p+g*f)):new d(u,p,g)}])},46712,e=>{"use strict";var t=e.i(65295),r=e.i(64545),a=e.i(99267),o=e.i(29822),s=e.i(6805),n=e.i(92605),i=e.i(49311),l=e.i(81623),c=e.i(13379),u=e.i(23240),f=e.i(38118);let d=new RegExp(/^data:([^,]+\/[^,]+)?;base64,/i);class g extends n.RuntimeError{constructor(e,r){super(e,n.ErrorCodes.LoadFileError),this.name="LoadFileError",n.BaseError._setPrototypeOf(this,g.prototype),r instanceof t.WebRequest?this.request=r:this.file=r}}class p extends n.RuntimeError{constructor(e,t){super(e,n.ErrorCodes.RequestFileError),this.request=t,this.name="RequestFileError",n.BaseError._setPrototypeOf(this,p.prototype)}}class m extends n.RuntimeError{constructor(e,t){super(e,n.ErrorCodes.ReadFileError),this.file=t,this.name="ReadFileError",n.BaseError._setPrototypeOf(this,m.prototype)}}let h={DefaultRetryStrategy:s.RetryStrategy.ExponentialBackoff(),BaseUrl:"",CorsBehavior:"anonymous",PreprocessUrl:e=>e,ScriptBaseUrl:"",ScriptPreprocessUrl:e=>e,CleanUrl:e=>e=e.replace(/#/gm,"%23")},y=(e,t)=>{if((!e||0!==e.indexOf("data:"))&&h.CorsBehavior)if("string"==typeof h.CorsBehavior||h.CorsBehavior instanceof String)t.crossOrigin=h.CorsBehavior;else{let r=h.CorsBehavior(e);r&&(t.crossOrigin=r)}},b=(e,t,r,o,s)=>{let n=new FileReader,i={onCompleteObservable:new a.Observable,abort:()=>n.abort()};return n.onloadend=()=>i.onCompleteObservable.notifyObservers(i),s&&(n.onerror=()=>{s(new m(`Unable to read ${e.name}`,e))}),n.onload=e=>{t(e.target.result)},r&&(n.onprogress=r),o?n.readAsArrayBuffer(e):n.readAsText(e),i},L=(e,t,r,s,n,i,l)=>{if(e.name)return b(e,t,r,n,i?e=>{i(void 0,e)}:void 0);if(-1!==e.indexOf("file:")){let a=decodeURIComponent(e.substring(5).toLowerCase());0===a.indexOf("./")&&(a=a.substring(2));let s=o.FilesInputStore.FilesToLoad[a];if(s)return b(s,t,r,n,i?e=>i(void 0,new g(e.message,e.file)):void 0)}let{match:f,type:d}=U(e);if(f){let r={onCompleteObservable:new a.Observable,abort:()=>()=>{}};try{let r=n?w(e):_(e);t(r,void 0,d)}catch(e){i?i(void 0,e):c.Logger.Error(e.message||"Failed to parse the Data URL")}return u.TimingTools.SetImmediate(()=>{r.onCompleteObservable.notifyObservers(r)}),r}return v(e,(e,r)=>{t(e,r?.responseURL,r?.getResponseHeader("content-type"))},r,s,n,i?e=>{i(e.request,new g(e.message,e.request))}:void 0,l)},v=(e,o,s,n,i,u,f)=>{null!==n&&(n??(n=l.EngineStore.LastCreatedScene?.offlineProvider)),e=h.CleanUrl(e),e=h.PreprocessUrl(e);let d=h.BaseUrl+e,g=!1,m={onCompleteObservable:new a.Observable,abort:()=>g=!0},y=()=>{let e,a=new t.WebRequest,n=null,l=()=>{a&&(s&&a.removeEventListener("progress",s),e&&a.removeEventListener("readystatechange",e),a.removeEventListener("loadend",y))},y=()=>{l(),m.onCompleteObservable.notifyObservers(m),m.onCompleteObservable.clear(),s=void 0,e=null,y=null,u=void 0,f=void 0,o=void 0};m.abort=()=>{g=!0,y&&y(),a&&a.readyState!==(XMLHttpRequest.DONE||4)&&a.abort(),null!==n&&(clearTimeout(n),n=null),a=null};let b=e=>{let t=e.message||"Unknown error";u&&a?u(new p(t,a)):c.Logger.Error(t)},L=c=>{if(a){if(a.open("GET",d),f)try{f(a)}catch(e){b(e);return}i&&(a.responseType="arraybuffer"),s&&a.addEventListener("progress",s),y&&a.addEventListener("loadend",y),e=()=>{if(!g&&a&&a.readyState===(XMLHttpRequest.DONE||4)){if(e&&a.removeEventListener("readystatechange",e),a.status>=200&&a.status<300||0===a.status&&(!(0,r.IsWindowObjectExist)()||C())){let e=i?a.response:a.responseText;if(null!==e){try{o&&o(e,a)}catch(e){b(e)}return}}let s=h.DefaultRetryStrategy;if(s){let e=s(d,a,c);if(-1!==e){l(),a=new t.WebRequest,n=setTimeout(()=>L(c+1),e);return}}let f=new p("Error status: "+a.status+" "+a.statusText+" - Unable to load "+d,a);u&&u(f)}},a.addEventListener("readystatechange",e),a.send()}};L(0)};if(n&&n.enableSceneOffline&&!e.startsWith("blob:")){let t=e=>{e&&e.status>400?u&&u(e):y()};n.open(()=>{n&&n.loadFile(h.BaseUrl+e,e=>{!g&&o&&o(e),m.onCompleteObservable.notifyObservers(m)},s?e=>{!g&&s&&s(e)}:void 0,t,i)},t)}else y();return m},C=()=>"u">typeof location&&"file:"===location.protocol,U=e=>{let t=d.exec(e);return null===t||0===t.length?{match:!1,type:""}:{match:!0,type:t[0].replace("data:","").replace(";base64,","")}};function w(e){return(0,i.DecodeBase64ToBinary)(e.split(",")[1])}let _=e=>(0,i.DecodeBase64ToString)(e.split(",")[1]);e.s(["DecodeBase64UrlToBinary",0,w,"FileToolsOptions",0,h,"IsBase64DataUrl",0,e=>d.test(e),"LoadFile",0,L,"LoadImage",0,(e,r,a,s,n="",c,u=l.EngineStore.LastCreatedEngine)=>{let d;if("u"<typeof HTMLImageElement&&!u?._features.forceBitmapOverHTMLImageElement)return a("LoadImage is only supported in web or BabylonNative environments."),null;let g=!1;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))if("u">typeof Blob&&"u">typeof URL){let t;t=e instanceof ArrayBuffer?e:(0,f.GetBlobBufferSource)(e),d=URL.createObjectURL(new Blob([t],{type:n})),g=!0}else d=`data:${n};base64,`+(0,i.EncodeArrayBufferToBase64)(e);else e instanceof Blob?(d=URL.createObjectURL(e),g=!0):(d=h.CleanUrl(e),d=h.PreprocessUrl(d));let p=t=>{if(a){let r=d||e.toString();a(`Error while trying to load image: ${0===r.indexOf("http")||r.length<=128?r:r.slice(0,128)+"..."}`,t)}};if(u?._features.forceBitmapOverHTMLImageElement)return L(d,t=>{u.createImageBitmap(new Blob([t],{type:n}),{premultiplyAlpha:"none",colorSpaceConversion:"none",...c}).then(e=>{r(e),g&&URL.revokeObjectURL(d)}).catch(t=>{a&&a("Error while trying to load image: "+e,t)})},void 0,s||void 0,!0,(e,t)=>{p(t)}),null;let m=new Image;!1;y(d,m);let b=[],v=()=>{for(let e of b)e.target.removeEventListener(e.name,e.handler);b.length=0};for(let e of(b.push({target:m,name:"load",handler:()=>{v(),r(m),g&&m.src&&URL.revokeObjectURL(m.src)}}),b.push({target:m,name:"error",handler:e=>{v(),p(e),g&&m.src&&URL.revokeObjectURL(m.src)}}),b.push({target:document,name:"securitypolicyviolation",handler:e=>{if(e.blockedURI!==m.src||"report"===e.disposition)return;v();let t=Error(`CSP violation of policy ${e.effectiveDirective} ${e.blockedURI}. Current policy is ${e.originalPolicy}`);l.EngineStore.UseFallbackTexture=!1,p(t),g&&m.src&&URL.revokeObjectURL(m.src),m.src=""}}),b))e.target.addEventListener(e.name,e.handler);let C="blob:"===d.substring(0,5),U="data:"===d.substring(0,5),w=()=>{C||U||!t.WebRequest.IsCustomRequestAvailable?m.src=d:L(d,(e,t,r)=>{let a=new Blob([e],{type:!n&&r?r:n}),o=URL.createObjectURL(a);g=!0,m.src=o},void 0,s||void 0,!0,(e,t)=>{p(t)})};if(!C&&!U&&s&&s.enableTexturesOffline)s.open(()=>{s&&s.loadImage(d,m)},w);else{if(-1!==d.indexOf("file:")){let e=decodeURIComponent(d.substring(5).toLowerCase());if(o.FilesInputStore.FilesToLoad[e]&&"u">typeof URL){try{let t;try{t=URL.createObjectURL(o.FilesInputStore.FilesToLoad[e])}catch(r){t=URL.createObjectURL(o.FilesInputStore.FilesToLoad[e])}m.src=t,g=!0}catch(e){m.src=""}return m}}w()}return m},"ReadFile",0,b,"RequestFile",0,v,"SetCorsBehavior",0,y])},84768,e=>{"use strict";e.s(["RandomGUID",0,function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}])},98105,e=>{"use strict";var t=e.i(13379),r=e.i(77052);class a{static Instantiate(e){if(this.RegisteredExternalClasses&&this.RegisteredExternalClasses[e])return this.RegisteredExternalClasses[e];let a=(0,r.GetClass)(e);if(a)return a;t.Logger.Warn(e+" not found, you may have missed an import.");let o=e.split("."),s="u">typeof window?window:"u">typeof globalThis?globalThis:this;for(let e=0,t=o.length;e<t;e++)s=s[o[e]];return"function"!=typeof s?null:s}}a.RegisteredExternalClasses={},e.s(["InstantiationTools",0,a])},65740,71265,e=>{"use strict";var t,r=e.i(99267),a=e.i(64545),o=e.i(13379);let s=(e,t,r)=>!e||e.getClassName&&"Mesh"===e.getClassName()?null:e.getClassName&&("SubMesh"===e.getClassName()||"PhysicsBody"===e.getClassName())?e.clone(t):e.clone?e.clone():Array.isArray(e)?e.slice():r&&"object"==typeof e?{...e}:null;class n{static DeepCopy(e,t,r,a,n=!1){for(let i of function(e){let t=[];do for(let r of Object.getOwnPropertyNames(e))-1===t.indexOf(r)&&t.push(r);while(e=Object.getPrototypeOf(e))return t}(e)){if("_"===i[0]&&(!a||-1===a.indexOf(i))||i.endsWith("Observable")||r&&-1!==r.indexOf(i))continue;let l=e[i],c=typeof l;if("function"!==c)try{if("object"===c)if(l instanceof Uint8Array)t[i]=Uint8Array.from(l);else if(l instanceof Array){if(t[i]=[],l.length>0)if("object"==typeof l[0])for(let e=0;e<l.length;e++){let r=s(l[e],t,n);-1===t[i].indexOf(r)&&t[i].push(r)}else t[i]=l.slice(0)}else t[i]=s(l,t,n);else t[i]=l}catch(e){o.Logger.Warn(e.message)}}}}e.s(["DeepCopier",0,n],71265);var i=e.i(36395),l=e.i(75405),c=e.i(65295),u=e.i(81623),f=e.i(46712),d=e.i(23240),g=e.i(98105),p=e.i(84768);class m{static get BaseUrl(){return f.FileToolsOptions.BaseUrl}static set BaseUrl(e){f.FileToolsOptions.BaseUrl=e}static get CleanUrl(){return f.FileToolsOptions.CleanUrl}static set CleanUrl(e){f.FileToolsOptions.CleanUrl=e}static IsAbsoluteUrl(e){return 0===e.indexOf("//")||!(-1===e.indexOf("://")||-1===e.indexOf(".")||-1===e.indexOf("/")||e.indexOf(":")>e.indexOf("/"))&&(!!(e.indexOf("://")<e.indexOf("."))||0===e.indexOf("data:")||0===e.indexOf("blob:"))}static set ScriptBaseUrl(e){f.FileToolsOptions.ScriptBaseUrl=e}static get ScriptBaseUrl(){return f.FileToolsOptions.ScriptBaseUrl}static set CDNBaseUrl(e){t.ScriptBaseUrl=e,t.AssetBaseUrl=e}static set ScriptPreprocessUrl(e){f.FileToolsOptions.ScriptPreprocessUrl=e}static get ScriptPreprocessUrl(){return f.FileToolsOptions.ScriptPreprocessUrl}static get DefaultRetryStrategy(){return f.FileToolsOptions.DefaultRetryStrategy}static set DefaultRetryStrategy(e){f.FileToolsOptions.DefaultRetryStrategy=e}static get CorsBehavior(){return f.FileToolsOptions.CorsBehavior}static set CorsBehavior(e){f.FileToolsOptions.CorsBehavior=e}static get UseFallbackTexture(){return u.EngineStore.UseFallbackTexture}static set UseFallbackTexture(e){u.EngineStore.UseFallbackTexture=e}static get RegisteredExternalClasses(){return g.InstantiationTools.RegisteredExternalClasses}static set RegisteredExternalClasses(e){g.InstantiationTools.RegisteredExternalClasses=e}static get fallbackTexture(){return u.EngineStore.FallbackTexture}static set fallbackTexture(e){u.EngineStore.FallbackTexture=e}static FetchToRef(e,t,r,a,o,s){let n=((Math.abs(e)*r%r|0)+(Math.abs(t)*a%a|0)*r)*4;s.r=o[n]/255,s.g=o[n+1]/255,s.b=o[n+2]/255,s.a=o[n+3]/255}static Mix(e,t,r){return 0}static Instantiate(e){return g.InstantiationTools.Instantiate(e)}static SetImmediate(e){d.TimingTools.SetImmediate(e)}static IsExponentOfTwo(e){return!0}static FloatRound(e){return Math.fround(e)}static GetFilename(e){let t=e.lastIndexOf("/");return t<0?e:e.substring(t+1)}static GetFolderPath(e,t=!1){let r=e.lastIndexOf("/");return r<0?t?e:"":e.substring(0,r+1)}static ToDegrees(e){return 180*e/Math.PI}static ToRadians(e){return e*Math.PI/180}static SmoothAngleChange(e,t,r=.9){let a=this.ToRadians(e),o=this.ToRadians(t);return this.ToDegrees(Math.atan2((1-r)*Math.sin(o)+r*Math.sin(a),(1-r)*Math.cos(o)+r*Math.cos(a)))}static MakeArray(e,t){return!0!==t&&(void 0===e||null==e)?null:Array.isArray(e)?e:[e]}static GetPointerPrefix(e){return(0,a.IsWindowObjectExist)()&&!window.PointerEvent?"mouse":"pointer"}static SetCorsBehavior(e,t){(0,f.SetCorsBehavior)(e,t)}static SetReferrerPolicyBehavior(e,t){t.referrerPolicy=e}static get PreprocessUrl(){return f.FileToolsOptions.PreprocessUrl}static set PreprocessUrl(e){f.FileToolsOptions.PreprocessUrl=e}static LoadImage(e,t,r,a,o,s){return(0,f.LoadImage)(e,t,r,a,o,s)}static LoadFile(e,t,r,a,o,s){return(0,f.LoadFile)(e,t,r,a,o,s)}static async LoadFileAsync(e,t=!0){return await new Promise((r,a)=>{(0,f.LoadFile)(e,e=>{r(e)},void 0,void 0,t,(e,t)=>{a(t)})})}static GetAssetUrl(e){if(!e)return"";if(t.AssetBaseUrl&&e.startsWith(t._DefaultAssetsUrl)){let r=t.AssetBaseUrl.endsWith("/")?t.AssetBaseUrl.slice(0,-1):t.AssetBaseUrl;return e.replace(t._DefaultAssetsUrl,r)}return e}static GetBabylonScriptURL(e,r){if(!e)return"";if(e.startsWith(t._DefaultCdnUrl)){if(t.ScriptBaseUrl){let r=t.ScriptBaseUrl.endsWith("/")?t.ScriptBaseUrl.slice(0,-1):t.ScriptBaseUrl;e=e.replace(t._DefaultCdnUrl,r)}else if(t._CdnVersion){let r=`${t._DefaultCdnUrl}/v${t._CdnVersion}`;e.startsWith(r)||(e=e.replace(t._DefaultCdnUrl,r))}}return e=t.ScriptPreprocessUrl(e),r&&!t.IsAbsoluteUrl(e)&&(e=t.GetAbsoluteUrl(e)),e}static LoadBabylonScript(e,r,a,o){e=t.GetBabylonScriptURL(e),t.LoadScript(e,r,a)}static async LoadBabylonScriptAsync(e){return e=t.GetBabylonScriptURL(e),await t.LoadScriptAsync(e)}static _LoadScriptNative(e,r,a){_native&&t.LoadFile(e,e=>{try{Function(e).apply(null),r&&r()}catch(e){a&&a("LoadScript Error",e)}},void 0,void 0,!1,(e,t)=>{a&&a("LoadScript Error",t)})}static _LoadScriptWeb(e,t,r,o,s=!1){if("function"==typeof importScripts){try{importScripts(e),t&&t()}catch(t){r?.(`Unable to load script '${e}' in worker`,t)}return}if(!(0,a.IsWindowObjectExist)())return void r?.(`Cannot load script '${e}' outside of a window or a worker`);let n=document.getElementsByTagName("head")[0],i=document.createElement("script");s?(i.setAttribute("type","module"),i.innerText=e):(i.setAttribute("type","text/javascript"),i.setAttribute("src",e)),o&&(i.id=o),i.onload=()=>{t&&t()},i.onerror=t=>{r&&r(`Unable to load script '${e}'`,t)},n.appendChild(i)}static async LoadScriptAsync(e,t){return await new Promise((r,a)=>{this.LoadScript(e,()=>{r()},(e,t)=>{a(t||Error(e))},t)})}static ReadFileAsDataURL(e,t,a){let o=new FileReader,s={onCompleteObservable:new r.Observable,abort:()=>o.abort()};return o.onloadend=()=>{s.onCompleteObservable.notifyObservers(s)},o.onload=e=>{t(e.target.result)},o.onprogress=a,o.readAsDataURL(e),s}static ReadFile(e,t,r,a,o){return(0,f.ReadFile)(e,t,r,a,o)}static FileAsURL(e){let t=new Blob([e]);return window.URL.createObjectURL(t)}static Format(e,t=2){return e.toFixed(t)}static DeepCopy(e,t,r,a){n.DeepCopy(e,t,r,a)}static IsEmpty(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}static RegisterTopRootEvents(e,t){for(let r=0;r<t.length;r++){let a=t[r];e.addEventListener(a.name,a.handler,!1);try{window.parent&&window.parent.addEventListener(a.name,a.handler,!1)}catch(e){}}}static UnregisterTopRootEvents(e,t){for(let r=0;r<t.length;r++){let a=t[r];e.removeEventListener(a.name,a.handler);try{e.parent&&e.parent.removeEventListener(a.name,a.handler)}catch(e){}}}static async DumpFramebuffer(e,t,r,a,o="image/png",s,n){throw(0,l._WarnImport)("DumpTools")}static DumpData(e,t,r,a,o="image/png",s,n=!1,i=!1,c){throw(0,l._WarnImport)("DumpTools")}static async DumpDataAsync(e,t,r,a="image/png",o,s=!1,n=!1,i){throw(0,l._WarnImport)("DumpTools")}static _IsOffScreenCanvas(e){return void 0!==e.convertToBlob}static ToBlob(e,r,a="image/png",o){t._IsOffScreenCanvas(e)||e.toBlob||(e.toBlob=function(e,t,r){setTimeout(()=>{let a=atob(this.toDataURL(t,r).split(",")[1]),o=a.length,s=new Uint8Array(o);for(let e=0;e<o;e++)s[e]=a.charCodeAt(e);e(new Blob([s]))})}),t._IsOffScreenCanvas(e)?e.convertToBlob({type:a,quality:o}).then(e=>r(e)):e.toBlob(function(e){r(e)},a,o)}static DownloadBlob(e,r){if("download"in document.createElement("a")){if(!r){let e=new Date;r="screenshot_"+((e.getFullYear()+"-"+(e.getMonth()+1)).slice(2)+"-"+e.getDate()+"_"+e.getHours()+"-")+("0"+e.getMinutes()).slice(-2)+".png"}t.Download(e,r)}else if(e&&"u">typeof URL){let t=URL.createObjectURL(e),r=window.open("");if(!r)return;let a=r.document.createElement("img");a.onload=function(){URL.revokeObjectURL(t)},a.src=t,r.document.body.appendChild(a)}}static EncodeScreenshotCanvasData(e,r,a="image/png",o,s){if("string"!=typeof o&&r){if(r){if(t._IsOffScreenCanvas(e))return void e.convertToBlob({type:a,quality:s}).then(e=>{let t=new FileReader;t.readAsDataURL(e),t.onloadend=()=>{r(t.result)}});r(e.toDataURL(a,s))}}else this.ToBlob(e,function(e){e&&t.DownloadBlob(e,o),r&&r("")},a,s)}static Download(e,t){if("u"<typeof URL)return;let r=window.URL.createObjectURL(e),a=document.createElement("a");document.body.appendChild(a),a.style.display="none",a.href=r,a.download=t,a.addEventListener("click",()=>{a.parentElement&&a.parentElement.removeChild(a)}),a.click(),window.URL.revokeObjectURL(r)}static BackCompatCameraNoPreventDefault(e){return"boolean"==typeof e[0]?e[0]:"boolean"==typeof e[1]&&e[1]}static CreateScreenshot(e,t,r,a,o="image/png",s=!1,n){throw(0,l._WarnImport)("ScreenshotTools")}static async CreateScreenshotAsync(e,t,r,a="image/png",o){throw(0,l._WarnImport)("ScreenshotTools")}static CreateScreenshotUsingRenderTarget(e,t,r,a,o="image/png",s=1,n=!1,i,c=!1,u=!1,f=!0,d,g){throw(0,l._WarnImport)("ScreenshotTools")}static async CreateScreenshotUsingRenderTargetAsync(e,t,r,a="image/png",o=1,s=!1,n,i=!1,c=!1,u=!0,f,d){throw(0,l._WarnImport)("ScreenshotTools")}static RandomId(){return(0,p.RandomGUID)()}static IsBase64(e){return(0,f.IsBase64DataUrl)(e)}static DecodeBase64(e){return(0,f.DecodeBase64UrlToBinary)(e)}static get errorsCount(){return o.Logger.errorsCount}static Log(e){o.Logger.Log(e)}static Warn(e){o.Logger.Warn(e)}static Error(e){o.Logger.Error(e)}static get LogCache(){return o.Logger.LogCache}static ClearLogCache(){o.Logger.ClearLogCache()}static set LogLevels(e){o.Logger.LogLevels=e}static set PerformanceLogLevel(e){(e&t.PerformanceUserMarkLogLevel)===t.PerformanceUserMarkLogLevel?_native?.enablePerformanceLogging?(_native.enablePerformanceLogging(1),t.StartPerformanceCounter=t._StartMarkNative,t.EndPerformanceCounter=t._EndMarkNative):(t.StartPerformanceCounter=t._StartUserMark,t.EndPerformanceCounter=t._EndUserMark):(e&t.PerformanceConsoleLogLevel)===t.PerformanceConsoleLogLevel?_native?.enablePerformanceLogging?(_native.enablePerformanceLogging(2),t.StartPerformanceCounter=t._StartMarkNative,t.EndPerformanceCounter=t._EndMarkNative):(t.StartPerformanceCounter=t._StartPerformanceConsole,t.EndPerformanceCounter=t._EndPerformanceConsole):(t.StartPerformanceCounter=t._StartPerformanceCounterDisabled,t.EndPerformanceCounter=t._EndPerformanceCounterDisabled,_native?.disablePerformanceLogging?.())}static _StartPerformanceCounterDisabled(e,t){}static _EndPerformanceCounterDisabled(e,t){}static _StartUserMark(e,r=!0){if(!t._Performance){if(!(0,a.IsWindowObjectExist)())return;t._Performance=window.performance}r&&t._Performance.mark&&t._Performance.mark(e+"-Begin")}static _EndUserMark(e,r=!0){r&&t._Performance.mark&&(t._Performance.mark(e+"-End"),t._Performance.measure(e,e+"-Begin",e+"-End"))}static _StartPerformanceConsole(e,r=!0){r&&(t._StartUserMark(e,r),console.time&&console.time(e))}static _EndPerformanceConsole(e,r=!0){r&&(t._EndUserMark(e,r),console.timeEnd(e))}static _StartMarkNative(e,r=!0){if(r&&_native?.startPerformanceCounter)if(t._NativePerformanceCounterHandles.has(e))t.Warn(`Performance counter with name ${e} is already started.`);else{let r=_native.startPerformanceCounter(e);t._NativePerformanceCounterHandles.set(e,r)}}static _EndMarkNative(e,r=!0){if(r&&_native?.endPerformanceCounter){let r=t._NativePerformanceCounterHandles.get(e);r?(_native.endPerformanceCounter(r),t._NativePerformanceCounterHandles.delete(e)):t.Warn(`Performance counter with name ${e} was not started.`)}}static get Now(){return i.PrecisionDate.Now}static GetClassName(e,t=!1){let r=null;return!t&&e.getClassName?r=e.getClassName():(e instanceof Object&&(r=(t?e:Object.getPrototypeOf(e)).constructor.__bjsclassName__),r||(r=typeof e)),r}static First(e,t){for(let r of e)if(t(r))return r;return null}static getFullClassName(e,t=!1){let r=null,a=null;if(!t&&e.getClassName)r=e.getClassName();else{if(e instanceof Object){let o=t?e:Object.getPrototypeOf(e);r=o.constructor.__bjsclassName__,a=o.constructor.__bjsmoduleName__}r||(r=typeof e)}return r?(null!=a?a+".":"")+r:null}static async DelayAsync(e){await new Promise(t=>{setTimeout(()=>{t()},e)})}static IsSafari(){return!!(0,a.IsNavigatorAvailable)()&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}}t=m,m.AssetBaseUrl="",m.UseCustomRequestHeaders=!1,m.CustomRequestHeaders=c.WebRequest.CustomRequestHeaders,m.GetDOMTextContent=a.GetDOMTextContent,m._DefaultCdnUrl="https://cdn.babylonjs.com",m._CdnVersion="9.13.0",m._DefaultAssetsUrl="https://assets.babylonjs.com/core",m.LoadScript="u"<typeof _native?t._LoadScriptWeb:t._LoadScriptNative,m.GetAbsoluteUrl="object"==typeof document?e=>{let t=document.createElement("a");return t.href=e,t.href}:"function"==typeof URL&&"object"==typeof location?e=>new URL(e,location.origin).href:()=>{throw Error("Unable to get absolute URL. Override BABYLON.Tools.GetAbsoluteUrl to a custom implementation for the current context.")},m.NoneLogLevel=o.Logger.NoneLogLevel,m.MessageLogLevel=o.Logger.MessageLogLevel,m.WarningLogLevel=o.Logger.WarningLogLevel,m.ErrorLogLevel=o.Logger.ErrorLogLevel,m.AllLogLevel=o.Logger.AllLogLevel,m.IsWindowObjectExist=a.IsWindowObjectExist,m.PerformanceNoneLogLevel=0,m.PerformanceUserMarkLogLevel=1,m.PerformanceConsoleLogLevel=2,m._NativePerformanceCounterHandles=new Map,m.StartPerformanceCounter=t._StartPerformanceCounterDisabled,m.EndPerformanceCounter=t._EndPerformanceCounterDisabled;class h{constructor(e,t,r,a=0){this.iterations=e,this.index=a-1,this._done=!1,this._fn=t,this._successCallback=r}executeNext(){this._done||(this.index+1<this.iterations?(++this.index,this._fn(this)):this.breakLoop())}breakLoop(){this._done=!0,this._successCallback()}static Run(e,t,r,a=0){let o=new h(e,t,r,a);return o.executeNext(),o}static SyncAsyncForLoop(e,t,r,a,o,s=0){return h.Run(Math.ceil(e/t),a=>{o&&o()?a.breakLoop():setTimeout(()=>{for(let s=0;s<t;++s){let n=a.index*t+s;if(n>=e)break;if(r(n),o&&o()){a.breakLoop();break}}a.executeNext()},s)},a)}}e.s(["AsyncLoop",0,h,"Tools",0,m],65740)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18662,t=>{"use strict";var e,i,a=t.i(10272),s=t.i(37143),n=t.i(99267),o=t.i(96265),r=t.i(46703),h=t.i(34548),l=t.i(40408),u=t.i(21222),c=t.i(36395),_=t.i(89030);class p{constructor(){this._zoomStopsAnimation=!1,this._idleRotationSpeed=.05,this._idleRotationWaitTime=2e3,this._idleRotationSpinupTime=2e3,this.targetAlpha=null,this._attachedCamera=null,this._isPointerDown=!1,this._lastFrameTime=null,this._lastInteractionTime=-1/0,this._cameraRotationSpeed=0,this._lastFrameRadius=0}get name(){return"AutoRotation"}set zoomStopsAnimation(t){this._zoomStopsAnimation=t}get zoomStopsAnimation(){return this._zoomStopsAnimation}set idleRotationSpeed(t){this._idleRotationSpeed=t}get idleRotationSpeed(){return this._idleRotationSpeed}set idleRotationWaitTime(t){this._idleRotationWaitTime=t}get idleRotationWaitTime(){return this._idleRotationWaitTime}set idleRotationSpinupTime(t){this._idleRotationSpinupTime=t}get idleRotationSpinupTime(){return this._idleRotationSpinupTime}get rotationInProgress(){return Math.abs(this._cameraRotationSpeed)>0}get attachedNode(){return this._attachedCamera}init(){}attach(t){this._attachedCamera=t;let e=this._attachedCamera.getScene();this._onPrePointerObservableObserver=e.onPrePointerObservable.add(t=>{if(t.type===u.PointerEventTypes.POINTERDOWN){this._isPointerDown=!0;return}t.type===u.PointerEventTypes.POINTERUP&&(this._isPointerDown=!1)}),this._onAfterCheckInputsObserver=t.onAfterCheckInputsObservable.add(()=>{if(this._reachTargetAlpha())return;let t=c.PrecisionDate.Now,e=0;null!=this._lastFrameTime&&(e=t-this._lastFrameTime),this._lastFrameTime=t,this._applyUserInteraction();let i=Math.max(Math.min((t-this._lastInteractionTime-this._idleRotationWaitTime)/this._idleRotationSpinupTime,1),0);this._cameraRotationSpeed=this._idleRotationSpeed*i,this._attachedCamera&&(this._attachedCamera.alpha-=this._cameraRotationSpeed*(e/1e3))})}detach(){if(!this._attachedCamera)return;let t=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&t.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._attachedCamera=null,this._lastFrameTime=null}resetLastInteractionTime(t){this._lastInteractionTime=t??c.PrecisionDate.Now}_reachTargetAlpha(){return!!this._attachedCamera&&!!this.targetAlpha&&Math.abs(this._attachedCamera.alpha-this.targetAlpha)<_.Epsilon}_userIsZooming(){return!!this._attachedCamera&&0!==this._attachedCamera.inertialRadiusOffset}_shouldAnimationStopForInteraction(){if(!this._attachedCamera)return!1;let t=!1;return this._lastFrameRadius===this._attachedCamera.radius&&0!==this._attachedCamera.inertialRadiusOffset&&(t=!0),this._lastFrameRadius=this._attachedCamera.radius,this._zoomStopsAnimation?t:this._userIsZooming()}_applyUserInteraction(){this._userIsMoving()&&!this._shouldAnimationStopForInteraction()&&(this._lastInteractionTime=c.PrecisionDate.Now)}_userIsMoving(){return!!this._attachedCamera&&(0!==this._attachedCamera.inertialAlphaOffset||0!==this._attachedCamera.inertialBetaOffset||0!==this._attachedCamera.inertialRadiusOffset||0!==this._attachedCamera.inertialPanningX||0!==this._attachedCamera.inertialPanningY||this._isPointerDown)}}t.i(75991);class d{constructor(){this._easingMode=d.EASINGMODE_EASEIN}setEasingMode(t){let e=Math.min(Math.max(t,0),2);this._easingMode=e}getEasingMode(){return this._easingMode}easeInCore(t){throw Error("You must implement this method")}ease(t){switch(this._easingMode){case d.EASINGMODE_EASEIN:return this.easeInCore(t);case d.EASINGMODE_EASEOUT:return 1-this.easeInCore(1-t)}return t>=.5?(1-this.easeInCore((1-t)*2))*.5+.5:.5*this.easeInCore(2*t)}}d.EASINGMODE_EASEIN=0,d.EASINGMODE_EASEOUT=1,d.EASINGMODE_EASEINOUT=2;var m=t.i(70653);class g{constructor(t,e,i){this.name=t,this.from=e,this.to=i}clone(){return new g(this.name,this.from,this.to)}}var O=t.i(54361);t.i(65295);let f=Object.freeze(new o.Quaternion(0,0,0,0)),T=Object.freeze(o.Vector3.Zero()),A=Object.freeze(o.Vector2.Zero()),I=Object.freeze(O.Size.Zero()),y=Object.freeze(m.Color3.Black()),M=Object.freeze(new m.Color4(0,0,0,0)),v={key:0,repeatCount:0,loopMode:2};class P{static _PrepareAnimation(t,e,i,a,s,n,r,h){let l;if(!isNaN(parseFloat(s))&&isFinite(s)?l=P.ANIMATIONTYPE_FLOAT:s instanceof o.Quaternion?l=P.ANIMATIONTYPE_QUATERNION:s instanceof o.Vector3?l=P.ANIMATIONTYPE_VECTOR3:s instanceof o.Vector2?l=P.ANIMATIONTYPE_VECTOR2:s instanceof m.Color3?l=P.ANIMATIONTYPE_COLOR3:s instanceof m.Color4?l=P.ANIMATIONTYPE_COLOR4:s instanceof O.Size&&(l=P.ANIMATIONTYPE_SIZE),void 0==l)return null;let u=new P(t,e,i,l,r);return u.setKeys([{frame:0,value:s},{frame:a,value:n}]),void 0!==h&&u.setEasingFunction(h),u}get runtimeAnimations(){return this._runtimeAnimations}get hasRunningRuntimeAnimations(){for(let t of this._runtimeAnimations)if(!t.isStopped())return!0;return!1}constructor(t,e,i,a,s,n){this.name=t,this.targetProperty=e,this.framePerSecond=i,this.dataType=a,this.loopMode=s,this.enableBlending=n,this._easingFunction=null,this._runtimeAnimations=[],this._events=[],this.blendingSpeed=.01,this._ranges={},this._coreAnimation=null,this.targetPropertyPath=e.split("."),this.dataType=a,this.loopMode=void 0===s?P.ANIMATIONLOOPMODE_CYCLE:s,this.uniqueId=P._UniqueIdGenerator++}toString(t){let e="Name: "+this.name+", property: "+this.targetProperty;if(e+=", datatype: "+["Float","Vector3","Quaternion","Matrix","Color3","Vector2"][this.dataType],e+=", nKeys: "+(this._keys?this._keys.length:"none"),e+=", nRanges: "+(this._ranges?Object.keys(this._ranges).length:"none"),t){e+=", Ranges: {";let t=!0;for(let i in this._ranges)t||(e+=", "),t=!1,e+=i;e+="}"}return e}addEvent(t){this._events.push(t),this._events.sort((t,e)=>t.frame-e.frame)}removeEvents(t){for(let e=0;e<this._events.length;e++)this._events[e].frame===t&&(this._events.splice(e,1),e--)}getEvents(){return this._events}createRange(t,e,i){this._ranges[t]||(this._ranges[t]=new g(t,e,i))}deleteRange(t,e=!0){let i=this._ranges[t];if(i){if(e){let t=i.from,e=i.to;for(let i=this._keys.length-1;i>=0;i--)this._keys[i].frame>=t&&this._keys[i].frame<=e&&this._keys.splice(i,1)}this._ranges[t]=null}}getRange(t){return this._ranges[t]}getKeys(){return this._keys}getHighestFrame(){let t=0;for(let e=0,i=this._keys.length;e<i;e++)t<this._keys[e].frame&&(t=this._keys[e].frame);return t}getEasingFunction(){return this._easingFunction}setEasingFunction(t){this._easingFunction=t}floatInterpolateFunction(t,e,i){return(0,r.Lerp)(t,e,i)}floatInterpolateFunctionWithTangents(t,e,i,a,s){return(0,r.Hermite)(t,e,i,a,s)}quaternionInterpolateFunction(t,e,i){return o.Quaternion.Slerp(t,e,i)}quaternionInterpolateFunctionWithTangents(t,e,i,a,s){return o.Quaternion.Hermite(t,e,i,a,s).normalize()}vector3InterpolateFunction(t,e,i){return o.Vector3.Lerp(t,e,i)}vector3InterpolateFunctionWithTangents(t,e,i,a,s){return o.Vector3.Hermite(t,e,i,a,s)}vector2InterpolateFunction(t,e,i){return o.Vector2.Lerp(t,e,i)}vector2InterpolateFunctionWithTangents(t,e,i,a,s){return o.Vector2.Hermite(t,e,i,a,s)}sizeInterpolateFunction(t,e,i){return O.Size.Lerp(t,e,i)}color3InterpolateFunction(t,e,i){return m.Color3.Lerp(t,e,i)}color3InterpolateFunctionWithTangents(t,e,i,a,s){return m.Color3.Hermite(t,e,i,a,s)}color4InterpolateFunction(t,e,i){return m.Color4.Lerp(t,e,i)}color4InterpolateFunctionWithTangents(t,e,i,a,s){return m.Color4.Hermite(t,e,i,a,s)}_getKeyValue(t){return"function"==typeof t?t():t}evaluate(t){return v.key=0,this._interpolate(t,v)}_interpolate(t,e,i=!1){let a;if(e.loopMode===P.ANIMATIONLOOPMODE_CONSTANT&&e.repeatCount>0)return e.highLimitValue.clone?e.highLimitValue.clone():e.highLimitValue;let s=this._keys;if(this._coreAnimation)a=this._coreAnimation._key;else{let n=s.length;for(a=e.key;a>=0&&t<s[a].frame;)--a;for(;a+1<=n-1&&t>=s[a+1].frame;)++a;if(e.key=a,a<0)return i?void 0:this._getKeyValue(s[0].value);if(a+1>n-1)return i?void 0:this._getKeyValue(s[n-1].value);this._key=a}let n=s[a],o=s[a+1];if(i&&(t===n.frame||t===o.frame))return;let r=this._getKeyValue(n.value),h=this._getKeyValue(o.value);if(1===n.interpolation)if(o.frame>t)return r;else return h;let l=void 0!==n.outTangent&&void 0!==o.inTangent,u=o.frame-n.frame,c=(t-n.frame)/u,_=n.easingFunction||this.getEasingFunction();switch(_&&(c=_.ease(c)),this.dataType){case P.ANIMATIONTYPE_FLOAT:{let t=l?this.floatInterpolateFunctionWithTangents(r,n.outTangent*u,h,o.inTangent*u,c):this.floatInterpolateFunction(r,h,c);switch(e.loopMode){case P.ANIMATIONLOOPMODE_CYCLE:case P.ANIMATIONLOOPMODE_CONSTANT:case P.ANIMATIONLOOPMODE_YOYO:return t;case P.ANIMATIONLOOPMODE_RELATIVE:case P.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return(e.offsetValue??0)*e.repeatCount+t}break}case P.ANIMATIONTYPE_QUATERNION:{let t=l?this.quaternionInterpolateFunctionWithTangents(r,n.outTangent.scale(u),h,o.inTangent.scale(u),c):this.quaternionInterpolateFunction(r,h,c);switch(e.loopMode){case P.ANIMATIONLOOPMODE_CYCLE:case P.ANIMATIONLOOPMODE_CONSTANT:case P.ANIMATIONLOOPMODE_YOYO:break;case P.ANIMATIONLOOPMODE_RELATIVE:case P.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return t.addInPlace((e.offsetValue||f).scale(e.repeatCount))}return t}case P.ANIMATIONTYPE_VECTOR3:{let t=l?this.vector3InterpolateFunctionWithTangents(r,n.outTangent.scale(u),h,o.inTangent.scale(u),c):this.vector3InterpolateFunction(r,h,c);switch(e.loopMode){case P.ANIMATIONLOOPMODE_CYCLE:case P.ANIMATIONLOOPMODE_CONSTANT:case P.ANIMATIONLOOPMODE_YOYO:return t;case P.ANIMATIONLOOPMODE_RELATIVE:case P.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return t.add((e.offsetValue||T).scale(e.repeatCount))}break}case P.ANIMATIONTYPE_VECTOR2:{let t=l?this.vector2InterpolateFunctionWithTangents(r,n.outTangent.scale(u),h,o.inTangent.scale(u),c):this.vector2InterpolateFunction(r,h,c);switch(e.loopMode){case P.ANIMATIONLOOPMODE_CYCLE:case P.ANIMATIONLOOPMODE_CONSTANT:case P.ANIMATIONLOOPMODE_YOYO:return t;case P.ANIMATIONLOOPMODE_RELATIVE:case P.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return t.add((e.offsetValue||A).scale(e.repeatCount))}break}case P.ANIMATIONTYPE_SIZE:switch(e.loopMode){case P.ANIMATIONLOOPMODE_CYCLE:case P.ANIMATIONLOOPMODE_CONSTANT:case P.ANIMATIONLOOPMODE_YOYO:return this.sizeInterpolateFunction(r,h,c);case P.ANIMATIONLOOPMODE_RELATIVE:case P.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return this.sizeInterpolateFunction(r,h,c).add((e.offsetValue||I).scale(e.repeatCount))}break;case P.ANIMATIONTYPE_COLOR3:{let t=l?this.color3InterpolateFunctionWithTangents(r,n.outTangent.scale(u),h,o.inTangent.scale(u),c):this.color3InterpolateFunction(r,h,c);switch(e.loopMode){case P.ANIMATIONLOOPMODE_CYCLE:case P.ANIMATIONLOOPMODE_CONSTANT:case P.ANIMATIONLOOPMODE_YOYO:return t;case P.ANIMATIONLOOPMODE_RELATIVE:case P.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return t.add((e.offsetValue||y).scale(e.repeatCount))}break}case P.ANIMATIONTYPE_COLOR4:{let t=l?this.color4InterpolateFunctionWithTangents(r,n.outTangent.scale(u),h,o.inTangent.scale(u),c):this.color4InterpolateFunction(r,h,c);switch(e.loopMode){case P.ANIMATIONLOOPMODE_CYCLE:case P.ANIMATIONLOOPMODE_CONSTANT:case P.ANIMATIONLOOPMODE_YOYO:return t;case P.ANIMATIONLOOPMODE_RELATIVE:case P.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return t.add((e.offsetValue||M).scale(e.repeatCount))}break}case P.ANIMATIONTYPE_MATRIX:switch(e.loopMode){case P.ANIMATIONLOOPMODE_CYCLE:case P.ANIMATIONLOOPMODE_CONSTANT:case P.ANIMATIONLOOPMODE_YOYO:if(P.AllowMatricesInterpolation)return this.matrixInterpolateFunction(r,h,c,e.workValue);return r;case P.ANIMATIONLOOPMODE_RELATIVE:case P.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return r}}return 0}matrixInterpolateFunction(t,e,i,a){return P.AllowMatrixDecomposeForInterpolation?a?(o.Matrix.DecomposeLerpToRef(t,e,i,a),a):o.Matrix.DecomposeLerp(t,e,i):a?(o.Matrix.LerpToRef(t,e,i,a),a):o.Matrix.Lerp(t,e,i)}clone(t=!1){let e=new P(this.name,this.targetPropertyPath.join("."),this.framePerSecond,this.dataType,this.loopMode);if(e.enableBlending=this.enableBlending,e.blendingSpeed=this.blendingSpeed,this._keys&&e.setKeys(this._keys,!1,t),this._ranges)for(let t in e._ranges={},this._ranges){let i=this._ranges[t];i&&(e._ranges[t]=i.clone())}return e}setKeys(t,e=!1,i=!1){if(e)this._keys=t;else if(this._keys=t.slice(0),i)for(let t=0;t<this._keys.length;t++){let e=this._keys[t];this._keys[t]={frame:e.frame,value:e.value.clone?e.value.clone():e.value,inTangent:e.inTangent&&e.inTangent.clone?e.inTangent.clone():e.inTangent,outTangent:e.outTangent&&e.outTangent.clone?e.outTangent.clone():e.outTangent,interpolation:e.interpolation,lockedTangent:e.lockedTangent,easingFunction:e.easingFunction}}}createKeyForFrame(t){v.key=0;let e=this._interpolate(t,v,!0);if(!e)return this._keys[v.key].frame===t?v.key:v.key+1;let i={frame:t,value:e.clone?e.clone():e};return this._keys.splice(v.key+1,0,i),v.key+1}serialize(){let t={};t.name=this.name,t.property=this.targetProperty,t.framePerSecond=this.framePerSecond,t.dataType=this.dataType,t.loopBehavior=this.loopMode,t.enableBlending=this.enableBlending,t.blendingSpeed=this.blendingSpeed;let e=this.dataType;t.keys=[];let i=this.getKeys();for(let a=0;a<i.length;a++){let s=i[a],n={};switch(n.frame=s.frame,e){case P.ANIMATIONTYPE_FLOAT:n.values=[s.value],void 0!==s.inTangent&&n.values.push(s.inTangent),void 0!==s.outTangent&&(void 0===s.inTangent&&n.values.push(void 0),n.values.push(s.outTangent)),void 0!==s.interpolation&&(void 0===s.inTangent&&n.values.push(void 0),void 0===s.outTangent&&n.values.push(void 0),n.values.push(s.interpolation));break;case P.ANIMATIONTYPE_QUATERNION:case P.ANIMATIONTYPE_MATRIX:case P.ANIMATIONTYPE_VECTOR3:case P.ANIMATIONTYPE_COLOR3:case P.ANIMATIONTYPE_COLOR4:n.values=s.value.asArray(),void 0!=s.inTangent&&n.values.push(s.inTangent.asArray()),void 0!=s.outTangent&&(void 0===s.inTangent&&n.values.push(void 0),n.values.push(s.outTangent.asArray())),void 0!==s.interpolation&&(void 0===s.inTangent&&n.values.push(void 0),void 0===s.outTangent&&n.values.push(void 0),n.values.push(s.interpolation))}t.keys.push(n)}for(let e in t.ranges=[],this._ranges){let i=this._ranges[e];if(!i)continue;let a={};a.name=e,a.from=i.from,a.to=i.to,t.ranges.push(a)}return t}static _UniversalLerp(t,e,i){let a=t.constructor;return a.Lerp?a.Lerp(t,e,i):a.Slerp?a.Slerp(t,e,i):t.toFixed?t*(1-i)+i*e:e}}P._UniqueIdGenerator=0,P.AllowMatricesInterpolation=!1,P.AllowMatrixDecomposeForInterpolation=!0,P.InheritOriginalValueFromActiveAnimations=!1,P.SnippetUrl="https://snippet.babylonjs.com",P.ANIMATIONTYPE_FLOAT=0,P.ANIMATIONTYPE_VECTOR3=1,P.ANIMATIONTYPE_QUATERNION=2,P.ANIMATIONTYPE_MATRIX=3,P.ANIMATIONTYPE_COLOR3=4,P.ANIMATIONTYPE_COLOR4=7,P.ANIMATIONTYPE_VECTOR2=5,P.ANIMATIONTYPE_SIZE=6,P.ANIMATIONLOOPMODE_RELATIVE=0,P.ANIMATIONLOOPMODE_CYCLE=1,P.ANIMATIONLOOPMODE_CONSTANT=2,P.ANIMATIONLOOPMODE_YOYO=4,P.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT=5;class C{constructor(){this.transitionDuration=450,this.lowerRadiusTransitionRange=2,this.upperRadiusTransitionRange=-2,this._autoTransitionRange=!1,this._attachedCamera=null,this._radiusIsAnimating=!1,this._radiusBounceTransition=null,this._animatables=[]}get name(){return"Bouncing"}get autoTransitionRange(){return this._autoTransitionRange}set autoTransitionRange(t){if(this._autoTransitionRange===t)return;this._autoTransitionRange=t;let e=this._attachedCamera;e&&(t?this._onMeshTargetChangedObserver=e.onMeshTargetChangedObservable.add(t=>{if(t&&(t.computeWorldMatrix(!0),t.getBoundingInfo)){let e=t.getBoundingInfo().diagonalLength;this.lowerRadiusTransitionRange=.05*e,this.upperRadiusTransitionRange=.05*e}}):this._onMeshTargetChangedObserver&&e.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver))}get attachedNode(){return this._attachedCamera}init(){}attach(t){this._attachedCamera=t,this._onAfterCheckInputsObserver=t.onAfterCheckInputsObservable.add(()=>{this._attachedCamera&&(this._isRadiusAtLimit(this._attachedCamera.lowerRadiusLimit)&&this._applyBoundRadiusAnimation(this.lowerRadiusTransitionRange),this._isRadiusAtLimit(this._attachedCamera.upperRadiusLimit)&&this._applyBoundRadiusAnimation(this.upperRadiusTransitionRange))})}detach(){this._attachedCamera&&(this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null)}_isRadiusAtLimit(t){return!!this._attachedCamera&&this._attachedCamera.radius===t&&!this._radiusIsAnimating}_applyBoundRadiusAnimation(t){if(!this._attachedCamera)return;this._radiusBounceTransition||(C.EasingFunction.setEasingMode(C.EasingMode),this._radiusBounceTransition=P.CreateAnimation("radius",P.ANIMATIONTYPE_FLOAT,60,C.EasingFunction)),this._cachedWheelPrecision=this._attachedCamera.wheelPrecision,this._attachedCamera.wheelPrecision=1/0,this._attachedCamera.inertialRadiusOffset=0,this.stopAllAnimations(),this._radiusIsAnimating=!0;let e=P.TransitionTo("radius",this._attachedCamera.radius+t,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusBounceTransition,this.transitionDuration,()=>this._clearAnimationLocks());e&&this._animatables.push(e)}_clearAnimationLocks(){this._radiusIsAnimating=!1,this._attachedCamera&&(this._attachedCamera.wheelPrecision=this._cachedWheelPrecision)}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0].onAnimationEnd=null,this._animatables[0].stop(),this._animatables.shift()}}C.EasingFunction=new class extends d{constructor(t=1){super(),this.amplitude=t}easeInCore(t){return Math.pow(t,3)-t*Math.max(0,this.amplitude)*Math.sin(3.141592653589793*t)}}(.3),C.EasingMode=d.EASINGMODE_EASEOUT;class R{constructor(){this.onTargetFramingAnimationEndObservable=new n.Observable,this._mode=R.FitFrustumSidesMode,this._radiusScale=1,this._positionScale=.5,this._defaultElevation=.3,this._elevationReturnTime=1500,this._elevationReturnWaitTime=1e3,this._zoomStopsAnimation=!1,this._framingTime=1500,this.autoCorrectCameraLimitsAndSensibility=!0,this._attachedCamera=null,this._isPointerDown=!1,this._lastInteractionTime=-1/0,this._animatables=[],this._betaIsAnimating=!1}get name(){return"Framing"}set mode(t){this._mode=t}get mode(){return this._mode}set radiusScale(t){this._radiusScale=t}get radiusScale(){return this._radiusScale}set positionScale(t){this._positionScale=t}get positionScale(){return this._positionScale}set defaultElevation(t){this._defaultElevation=t}get defaultElevation(){return this._defaultElevation}set elevationReturnTime(t){this._elevationReturnTime=t}get elevationReturnTime(){return this._elevationReturnTime}set elevationReturnWaitTime(t){this._elevationReturnWaitTime=t}get elevationReturnWaitTime(){return this._elevationReturnWaitTime}set zoomStopsAnimation(t){this._zoomStopsAnimation=t}get zoomStopsAnimation(){return this._zoomStopsAnimation}set framingTime(t){this._framingTime=t}get framingTime(){return this._framingTime}get attachedNode(){return this._attachedCamera}init(){}attach(t){this._attachedCamera=t;let e=this._attachedCamera.getScene();R.EasingFunction.setEasingMode(R.EasingMode),this._onPrePointerObservableObserver=e.onPrePointerObservable.add(t=>{if(t.type===u.PointerEventTypes.POINTERDOWN){this._isPointerDown=!0;return}t.type===u.PointerEventTypes.POINTERUP&&(this._isPointerDown=!1)}),this._onMeshTargetChangedObserver=t.onMeshTargetChangedObservable.add(t=>{t&&t.getBoundingInfo&&this.zoomOnMesh(t,void 0,()=>{this.onTargetFramingAnimationEndObservable.notifyObservers()})}),this._onAfterCheckInputsObserver=t.onAfterCheckInputsObservable.add(()=>{this._applyUserInteraction(),this._maintainCameraAboveGround()})}detach(){if(!this._attachedCamera)return;let t=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&t.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null}zoomOnMesh(t,e=!1,i=null){t.computeWorldMatrix(!0);let a=t.getBoundingInfo().boundingBox;this.zoomOnBoundingInfo(a.minimumWorld,a.maximumWorld,e,i)}zoomOnMeshHierarchy(t,e=!1,i=null){t.computeWorldMatrix(!0);let a=t.getHierarchyBoundingVectors(!0);this.zoomOnBoundingInfo(a.min,a.max,e,i)}zoomOnMeshesHierarchy(t,e=!1,i=null){let a=new o.Vector3(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new o.Vector3(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let e=0;e<t.length;e++){let i=t[e].getHierarchyBoundingVectors(!0);o.Vector3.CheckExtends(i.min,a,s),o.Vector3.CheckExtends(i.max,a,s)}this.zoomOnBoundingInfo(a,s,e,i)}zoomOnBoundingInfo(t,e,i=!1,a=null){let s;if(!this._attachedCamera)return!1;let n=t.y,r=n+(e.y-n)*this._positionScale,h=e.subtract(t).scale(.5);if(!isFinite(r))return!1;if(i)s=new o.Vector3(0,r,0);else{let e=t.add(h);s=new o.Vector3(e.x,r,e.z)}this._vectorTransition||(this._vectorTransition=P.CreateAnimation("target",P.ANIMATIONTYPE_VECTOR3,60,R.EasingFunction)),this._betaIsAnimating=!0;let l=P.TransitionTo("target",s,this._attachedCamera,this._attachedCamera.getScene(),60,this._vectorTransition,this._framingTime);l&&this._animatables.push(l);let u=0;if(this._mode===R.FitFrustumSidesMode){let i=this._calculateLowerRadiusFromModelBoundingSphere(t,e);this.autoCorrectCameraLimitsAndSensibility&&(this._attachedCamera.lowerRadiusLimit=h.length()+this._attachedCamera.minZ),u=i}else this._mode===R.IgnoreBoundsSizeMode&&(u=this._calculateLowerRadiusFromModelBoundingSphere(t,e),this.autoCorrectCameraLimitsAndSensibility&&null===this._attachedCamera.lowerRadiusLimit&&(this._attachedCamera.lowerRadiusLimit=this._attachedCamera.minZ));if(this.autoCorrectCameraLimitsAndSensibility){let i=e.subtract(t).length();this._attachedCamera.panningSensibility=5e3/i,this._attachedCamera.wheelPrecision=100/u}return this._radiusTransition||(this._radiusTransition=P.CreateAnimation("radius",P.ANIMATIONTYPE_FLOAT,60,R.EasingFunction)),(l=P.TransitionTo("radius",u,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusTransition,this._framingTime,()=>{this.stopAllAnimations(),a&&a(),this._attachedCamera&&this._attachedCamera.useInputToRestoreState&&this._attachedCamera.storeState()}))&&this._animatables.push(l),!0}_calculateLowerRadiusFromModelBoundingSphere(t,e){let i=this._attachedCamera;if(!i)return 0;let a=i._calculateLowerRadiusFromModelBoundingSphere(t,e,this._radiusScale);return i.lowerRadiusLimit&&this._mode===R.IgnoreBoundsSizeMode&&(a=a<i.lowerRadiusLimit?i.lowerRadiusLimit:a),i.upperRadiusLimit&&(a=a>i.upperRadiusLimit?i.upperRadiusLimit:a),a}_maintainCameraAboveGround(){if(this._elevationReturnTime<0)return;let t=c.PrecisionDate.Now-this._lastInteractionTime,e=.5*Math.PI-this._defaultElevation,i=.5*Math.PI;if(this._attachedCamera&&!this._betaIsAnimating&&this._attachedCamera.beta>i&&t>=this._elevationReturnWaitTime){this._betaIsAnimating=!0,this.stopAllAnimations(),this._betaTransition||(this._betaTransition=P.CreateAnimation("beta",P.ANIMATIONTYPE_FLOAT,60,R.EasingFunction));let t=P.TransitionTo("beta",e,this._attachedCamera,this._attachedCamera.getScene(),60,this._betaTransition,this._elevationReturnTime,()=>{this._clearAnimationLocks(),this.stopAllAnimations()});t&&this._animatables.push(t)}}_clearAnimationLocks(){this._betaIsAnimating=!1}_applyUserInteraction(){this.isUserIsMoving&&(this._lastInteractionTime=c.PrecisionDate.Now,this.stopAllAnimations(),this._clearAnimationLocks())}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0]&&(this._animatables[0].onAnimationEnd=null,this._animatables[0].stop()),this._animatables.shift()}get isUserIsMoving(){return!!this._attachedCamera&&(0!==this._attachedCamera.inertialAlphaOffset||0!==this._attachedCamera.inertialBetaOffset||0!==this._attachedCamera.inertialRadiusOffset||0!==this._attachedCamera.inertialPanningX||0!==this._attachedCamera.inertialPanningY||this._isPointerDown)}}R.EasingFunction=new class extends d{constructor(t=2){super(),this.exponent=t}easeInCore(t){return this.exponent<=0?t:(Math.exp(this.exponent*t)-1)/(Math.exp(this.exponent)-1)}},R.EasingMode=d.EASINGMODE_EASEINOUT,R.IgnoreBoundsSizeMode=0,R.FitFrustumSidesMode=1;var E=t.i(59576),b=t.i(58302),N=t.i(95190),S=t.i(65740);class L{constructor(){this._currentMousePointerIdDown=-1,this.buttons=[0,1,2]}attachControl(t){t=S.Tools.BackCompatCameraNoPreventDefault(arguments);let e=this.camera.getEngine(),i=e.getInputElement(),a=0,s=null;this._pointA=null,this._pointB=null,this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._pointerInput=n=>{let o=n.event,r="touch"===o.pointerType;if(n.type!==u.PointerEventTypes.POINTERMOVE&&-1===this.buttons.indexOf(o.button))return;let h=o.target;if(this._altKey=o.altKey,this._ctrlKey=o.ctrlKey,this._metaKey=o.metaKey,this._shiftKey=o.shiftKey,this._buttonsPressed=o.buttons,e.isPointerLock){let t=o.movementX,e=o.movementY;this.onTouch(null,t,e),this._pointA=null,this._pointB=null}else if(n.type!==u.PointerEventTypes.POINTERDOWN&&n.type!==u.PointerEventTypes.POINTERDOUBLETAP&&r&&this._pointA?.pointerId!==o.pointerId&&this._pointB?.pointerId!==o.pointerId)return;else if(n.type===u.PointerEventTypes.POINTERDOWN&&(-1===this._currentMousePointerIdDown||r)){try{h?.setPointerCapture(o.pointerId)}catch(t){}if(null===this._pointA)this._pointA={x:o.clientX,y:o.clientY,pointerId:o.pointerId,type:o.pointerType,button:o.button};else{if(null!==this._pointB)return;this._pointB={x:o.clientX,y:o.clientY,pointerId:o.pointerId,type:o.pointerType,button:o.button}}-1!==this._currentMousePointerIdDown||r||(this._currentMousePointerIdDown=o.pointerId),this.onButtonDown(o),!t&&(o.preventDefault(),i&&i.focus())}else if(n.type===u.PointerEventTypes.POINTERDOUBLETAP)this.onDoubleTap(o.pointerType);else if(n.type===u.PointerEventTypes.POINTERUP&&(this._currentMousePointerIdDown===o.pointerId||r)){try{h?.releasePointerCapture(o.pointerId)}catch(t){}r||(this._pointB=null),e._badOS?this._pointA=this._pointB=null:this._pointB&&this._pointA&&this._pointA.pointerId==o.pointerId?(this._pointA=this._pointB,this._pointB=null):this._pointA&&this._pointB&&this._pointB.pointerId==o.pointerId?this._pointB=null:this._pointA=this._pointB=null,(0!==a||s)&&(this.onMultiTouch(this._pointA,this._pointB,a,0,s,null),a=0,s=null),this._currentMousePointerIdDown=-1,this.onButtonUp(o),t||o.preventDefault()}else if(n.type===u.PointerEventTypes.POINTERMOVE){if(t||o.preventDefault(),this._pointA&&null===this._pointB){let t=o.clientX-this._pointA.x,e=o.clientY-this._pointA.y;this._pointA.x=o.clientX,this._pointA.y=o.clientY,this.onTouch(this._pointA,t,e)}else if(this._pointA&&this._pointB){let t=this._pointA.pointerId===o.pointerId?this._pointA:this._pointB;t.x=o.clientX,t.y=o.clientY;let e=this._pointA.x-this._pointB.x,i=this._pointA.y-this._pointB.y,r=e*e+i*i,h={x:(this._pointA.x+this._pointB.x)/2,y:(this._pointA.y+this._pointB.y)/2,pointerId:o.pointerId,type:n.type};this.onMultiTouch(this._pointA,this._pointB,a,r,s,h),s=h,a=r}}},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,u.PointerEventTypes.POINTERDOWN|u.PointerEventTypes.POINTERUP|u.PointerEventTypes.POINTERMOVE|u.PointerEventTypes.POINTERDOUBLETAP),this._onLostFocus=()=>{this._pointA=this._pointB=null,a=0,s=null,this.onLostFocus()},this._contextMenuBind=t=>this.onContextMenu(t),i&&i.addEventListener("contextmenu",this._contextMenuBind,!1);let n=this.camera.getScene().getEngine().getHostWindow();n&&S.Tools.RegisterTopRootEvents(n,[{name:"blur",handler:this._onLostFocus}])}detachControl(){if(this._onLostFocus){let t=this.camera.getScene().getEngine().getHostWindow();t&&S.Tools.UnregisterTopRootEvents(t,[{name:"blur",handler:this._onLostFocus}])}if(this._observer){if(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._contextMenuBind){let t=this.camera.getScene().getEngine().getInputElement();t&&t.removeEventListener("contextmenu",this._contextMenuBind)}this._onLostFocus=null}this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._currentMousePointerIdDown=-1}getClassName(){return"BaseCameraPointersInput"}getSimpleName(){return"pointers"}onDoubleTap(t){}onTouch(t,e,i){}onMultiTouch(t,e,i,a,s,n){}onContextMenu(t){t.preventDefault()}onButtonDown(t){}onButtonUp(t){}onLostFocus(){}}(0,a.__decorate)([(0,s.serialize)()],L.prototype,"buttons",void 0);class D extends L{constructor(){super(...arguments),this.pinchZoom=!0,this.multiTouchPanning=!0,this.multiTouchPanAndZoom=!0,this._isPinching=!1,this._twoFingerActivityCount=0,this._shouldStartPinchZoom=!1}_computePinchZoom(t,e){}_computeMultiTouchPanning(t,e){}onMultiTouch(t,e,i,a,s,n){0===i&&null===s||(0!==a||null!==n)&&(this.multiTouchPanAndZoom?(this._computePinchZoom(i,a),this._computeMultiTouchPanning(s,n)):this.multiTouchPanning&&this.pinchZoom?(this._twoFingerActivityCount++,this._isPinching||this._shouldStartPinchZoom?(this._computePinchZoom(i,a),this._isPinching=!0):this._computeMultiTouchPanning(s,n)):this.multiTouchPanning?this._computeMultiTouchPanning(s,n):this.pinchZoom&&this._computePinchZoom(i,a))}onButtonUp(t){this._twoFingerActivityCount=0,this._isPinching=!1}onLostFocus(){this._twoFingerActivityCount=0,this._isPinching=!1}}(0,a.__decorate)([(0,s.serialize)()],D.prototype,"pinchZoom",void 0),(0,a.__decorate)([(0,s.serialize)()],D.prototype,"multiTouchPanning",void 0),(0,a.__decorate)([(0,s.serialize)()],D.prototype,"multiTouchPanAndZoom",void 0);class w extends D{constructor(){super(...arguments),this.buttons=[0,1,2],this.angularSensibilityX=1e3,this.angularSensibilityY=1e3,this.pinchPrecision=12,this.pinchDeltaPercentage=0,this.useNaturalPinchZoom=!1,this.panningSensibility=1e3,this.pinchInwards=!0,this._activeEntry=null,this._pointerLockConditions={button:0,modifiers:{}},this._pointerModifiers={ctrl:!1,alt:!1,shift:!1},this._pointerConditions={modifiers:this._pointerModifiers}}getClassName(){return"ArcRotateCameraPointersInput"}_computeMultiTouchPanning(t,e){if(t&&e){let i=e.x-t.x,a=e.y-t.y,s=this.camera.movement.input.getEntry("pointer","pan"),n=s?.sensitivity??(0!==this.panningSensibility?1/this.panningSensibility:0);0!==n&&(this.camera.movement.activeInput=!0,this.camera.movement.panAccumulatedPixels.x+=-i*n,this.camera.movement.panAccumulatedPixels.y+=a*n)}}_computePinchZoom(t,e){let i=this.camera.radius||w.MinimumRadiusForPinch;if(this.useNaturalPinchZoom)this.camera.radius=i*Math.sqrt(t)/Math.sqrt(e);else if(this.pinchDeltaPercentage){let a=(e-t)*.001*i*this.pinchDeltaPercentage;this.camera.movement.activeInput=!0,this.camera.movement.zoomAccumulatedPixels+=a}else{let i=(e-t)/(this.pinchPrecision*(this.pinchInwards?1:-1)*(this.angularSensibilityX+this.angularSensibilityY)/2);this.camera.movement.activeInput=!0,this.camera.movement.zoomAccumulatedPixels+=i}}onTouch(t,e,i){let a=this._activeEntry??(this.camera.getEngine().isPointerLock?this.camera.movement.input.resolveInteraction("pointer",this._pointerLockConditions):null);if(a){if("pan"===a.interaction){let t=a.sensitivity??(0!==this.panningSensibility?1/this.panningSensibility:0);0!==t&&(this.camera.movement.activeInput=!0,this.camera.movement.panAccumulatedPixels.x+=-e*t,this.camera.movement.panAccumulatedPixels.y+=i*t)}else if("rotate"===a.interaction){let t=a.sensitivityX??a.sensitivity??1/this.angularSensibilityX,s=a.sensitivityY??a.sensitivity??1/this.angularSensibilityY;this.camera.movement.activeInput=!0,this.camera.movement.rotationAccumulatedPixels.x+=-e*t,this.camera.movement.rotationAccumulatedPixels.y+=-i*s}}}onDoubleTap(){this.camera.useInputToRestoreState&&this.camera.restoreState()}onMultiTouch(t,e,i,a,s,n){this._shouldStartPinchZoom=this._twoFingerActivityCount<20&&Math.abs(Math.sqrt(a)-Math.sqrt(i))>this.camera.pinchToPanMaxDistance,super.onMultiTouch(t,e,i,a,s,n)}onButtonDown(t){this._pointerConditions.button=t.button,this._pointerModifiers.ctrl=t.ctrlKey,this._pointerModifiers.alt=t.altKey,this._pointerModifiers.shift=t.shiftKey,this._activeEntry=this.camera.movement.input.resolveInteraction("pointer",this._pointerConditions),super.onButtonDown(t)}onButtonUp(t){this._activeEntry=null,super.onButtonUp(t)}onLostFocus(){this._activeEntry=null,super.onLostFocus()}}w.MinimumRadiusForPinch=.001,(0,a.__decorate)([(0,s.serialize)()],w.prototype,"buttons",void 0),(0,a.__decorate)([(0,s.serialize)()],w.prototype,"angularSensibilityX",void 0),(0,a.__decorate)([(0,s.serialize)()],w.prototype,"angularSensibilityY",void 0),(0,a.__decorate)([(0,s.serialize)()],w.prototype,"pinchPrecision",void 0),(0,a.__decorate)([(0,s.serialize)()],w.prototype,"pinchDeltaPercentage",void 0),(0,a.__decorate)([(0,s.serialize)()],w.prototype,"useNaturalPinchZoom",void 0),(0,a.__decorate)([(0,s.serialize)()],w.prototype,"panningSensibility",void 0),N.CameraInputTypes.ArcRotateCameraPointersInput=w;var B=t.i(36365);class x{constructor(){this.keysUp=[38],this.keysDown=[40],this.keysLeft=[37],this.keysRight=[39],this.keysReset=[220],this.keysZoomIn=[187,107],this.keysZoomOut=[189,109],this.panningSensibility=50,this.zoomingSensibility=25,this.angularSpeed=.01,this._useAltToZoom=!0,this._keys=[],this._keyboardModifiers={ctrl:!1,alt:!1},this._keyboardConditions={modifiers:this._keyboardModifiers}}get useAltToZoom(){return this._useAltToZoom}set useAltToZoom(t){this._useAltToZoom=t,this._applyUseAltToZoomToInputMap()}_applyUseAltToZoomToInputMap(){if(!this.camera?.movement)return;let t=this.camera.movement.input,e=t.getEntry("keyboard","zoom",{modifiers:{alt:!0}});!this._useAltToZoom&&e?t.inputMap.splice(t.inputMap.indexOf(e),1):this._useAltToZoom&&!e&&t.addEntry({source:"keyboard",modifiers:{alt:!0},interaction:"zoom"})}attachControl(t){t=S.Tools.BackCompatCameraNoPreventDefault(arguments),this._onCanvasBlurObserver||(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._applyUseAltToZoomToInputMap(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(()=>{this._keys.length=0}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(e=>{let i=e.event;if(!i.metaKey){if(e.type===B.KeyboardEventTypes.KEYDOWN)this._ctrlPressed=i.ctrlKey,this._altPressed=i.altKey,(-1!==this.keysUp.indexOf(i.keyCode)||-1!==this.keysDown.indexOf(i.keyCode)||-1!==this.keysLeft.indexOf(i.keyCode)||-1!==this.keysRight.indexOf(i.keyCode)||-1!==this.keysReset.indexOf(i.keyCode)||-1!==this.keysZoomIn.indexOf(i.keyCode)||-1!==this.keysZoomOut.indexOf(i.keyCode))&&(-1===this._keys.indexOf(i.keyCode)&&this._keys.push(i.keyCode),i.preventDefault&&!t&&i.preventDefault());else if(-1!==this.keysUp.indexOf(i.keyCode)||-1!==this.keysDown.indexOf(i.keyCode)||-1!==this.keysLeft.indexOf(i.keyCode)||-1!==this.keysRight.indexOf(i.keyCode)||-1!==this.keysReset.indexOf(i.keyCode)||-1!==this.keysZoomIn.indexOf(i.keyCode)||-1!==this.keysZoomOut.indexOf(i.keyCode)){let e=this._keys.indexOf(i.keyCode);e>=0&&this._keys.splice(e,1),i.preventDefault&&!t&&i.preventDefault()}}}))}detachControl(){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys.length=0}checkInputs(){if(this._onKeyboardObserver){let t=this.camera,e=t.movement.input;this._keyboardModifiers.ctrl=this._ctrlPressed,this._keyboardModifiers.alt=this._altPressed;for(let i=0;i<this._keys.length;i++){let a=this._keys[i];if(this._keyboardConditions.key=a,-1===this.keysReset.indexOf(a)){let t=e.resolveInteraction("keyboard",this._keyboardConditions);if(t){if("pan"===t.interaction){let i=t.sensitivity??1/this.panningSensibility;-1!==this.keysLeft.indexOf(a)?e.handlers.pan(-i,0):-1!==this.keysRight.indexOf(a)?e.handlers.pan(i,0):-1!==this.keysUp.indexOf(a)?e.handlers.pan(0,i):-1!==this.keysDown.indexOf(a)&&e.handlers.pan(0,-i)}else if("zoom"===t.interaction){let i=t.sensitivity??1/this.zoomingSensibility;-1!==this.keysUp.indexOf(a)||-1!==this.keysZoomIn.indexOf(a)?e.handlers.zoom(i):(-1!==this.keysDown.indexOf(a)||-1!==this.keysZoomOut.indexOf(a))&&e.handlers.zoom(-i)}else if("rotate"===t.interaction){let i=t.sensitivity??this.angularSpeed;-1!==this.keysLeft.indexOf(a)?e.handlers.rotate(-i,0):-1!==this.keysRight.indexOf(a)?e.handlers.rotate(i,0):-1!==this.keysUp.indexOf(a)?e.handlers.rotate(0,-i):-1!==this.keysDown.indexOf(a)&&e.handlers.rotate(0,i)}}}-1!==this.keysReset.indexOf(a)&&t.useInputToRestoreState&&t.restoreState()}}}getClassName(){return"ArcRotateCameraKeyboardMoveInput"}getSimpleName(){return"keyboard"}}(0,a.__decorate)([(0,s.serialize)()],x.prototype,"keysUp",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"keysDown",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"keysLeft",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"keysRight",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"keysReset",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"keysZoomIn",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"keysZoomOut",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"panningSensibility",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"zoomingSensibility",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"angularSpeed",void 0),(0,a.__decorate)([(0,s.serialize)()],x.prototype,"useAltToZoom",null),N.CameraInputTypes.ArcRotateCameraKeyboardMoveInput=x;var k=t.i(65002),V=t.i(76696);class F{constructor(){this.wheelPrecision=3,this.zoomToMouseLocation=!1,this.wheelDeltaPercentage=0,this.customComputeDeltaFromMouseWheel=null,this._viewOffset=new o.Vector3(0,0,0),this._globalOffset=new o.Vector3(0,0,0),this._inertialPanning=o.Vector3.Zero(),this._zoomToMouseRadiusOffset=0}_computeDeltaFromMouseWheelLegacyEvent(t,e){let i=.01*t*this.wheelDeltaPercentage*e;return t>0?i/(1+this.wheelDeltaPercentage):i*(1+this.wheelDeltaPercentage)}attachControl(t){t=S.Tools.BackCompatCameraNoPreventDefault(arguments),this._wheel=e=>{let i;if(e.type!==u.PointerEventTypes.POINTERWHEEL)return;let a=e.event,s=a.deltaMode===V.EventConstants.DOM_DELTA_LINE?40:1,n=-(a.deltaY*s);if(this.customComputeDeltaFromMouseWheel)i=this.customComputeDeltaFromMouseWheel(n,this,a);else if(this.wheelDeltaPercentage){if((i=this._computeDeltaFromMouseWheelLegacyEvent(n,this.camera.radius))>0){let t=this.zoomToMouseLocation?this._zoomToMouseRadiusOffset:this.camera.inertialRadiusOffset,e=this.camera.radius,a=t+i;for(let t=0;t<20&&!(e<=a)&&!(.001>Math.abs(a*this.camera.inertia));t++)e-=a,a*=this.camera.inertia;e=(0,r.Clamp)(e,0,Number.MAX_VALUE),i=this._computeDeltaFromMouseWheelLegacyEvent(n,e)}}else{let t=this.camera.movement.input.getEntry("wheel","zoom");i=n*(t?.sensitivity??1/(40*this.wheelPrecision))}i&&(this.zoomToMouseLocation?(this._hitPlane||this._updateHitPlane(),this._zoomToMouse(i)):this.camera.movement.zoomAccumulatedPixels+=i),a.preventDefault&&!t&&a.preventDefault()},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel,u.PointerEventTypes.POINTERWHEEL),this.zoomToMouseLocation&&this._inertialPanning.setAll(0)}detachControl(){this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._wheel=null)}checkInputs(){if(!this.zoomToMouseLocation)return;let t=this.camera;if(Math.abs(this._zoomToMouseRadiusOffset)+this._inertialPanning.lengthSquared()+Math.abs(t.inertialAlphaOffset)+Math.abs(t.inertialBetaOffset)+Math.abs(t.inertialRadiusOffset)){this._updateHitPlane(),t.target.addInPlace(this._inertialPanning),t.radius-=this._zoomToMouseRadiusOffset;let e=t.movement.getFrameIndependentDecay(t.inertia);this._inertialPanning.scaleInPlace(e),this._zoomToMouseRadiusOffset*=e,this._zeroIfClose(this._inertialPanning),Math.abs(this._zoomToMouseRadiusOffset)<_.Epsilon&&(this._zoomToMouseRadiusOffset=0)}}getClassName(){return"ArcRotateCameraMouseWheelInput"}getSimpleName(){return"mousewheel"}_updateHitPlane(){let t=this.camera,e=t.target.subtract(t.position);this._hitPlane=k.Plane.FromPositionAndNormal(t.target,e)}_getPosition(){let t=this.camera,e=t.getScene(),i=e.createPickingRay(e.pointerX,e.pointerY,o.Matrix.Identity(),t,!1);(0!==t.targetScreenOffset.x||0!==t.targetScreenOffset.y)&&(this._viewOffset.set(t.targetScreenOffset.x,t.targetScreenOffset.y,0),t.getViewMatrix().invertToRef(t._cameraTransformMatrix),this._globalOffset=o.Vector3.TransformNormal(this._viewOffset,t._cameraTransformMatrix),i.origin.addInPlace(this._globalOffset));let a=0;return this._hitPlane&&(a=i.intersectsPlane(this._hitPlane)??0),i.origin.addInPlace(i.direction.scaleInPlace(a))}_zoomToMouse(t){let e=this.camera,i=1-e.inertia,a=e.movement.getFrameIndependentInputScale(e.inertia);if(e.lowerRadiusLimit){let s=e.lowerRadiusLimit??0;e.radius-(this._zoomToMouseRadiusOffset+t*a)/i<s&&(t=((e.radius-s)*i-this._zoomToMouseRadiusOffset)/a)}if(e.upperRadiusLimit){let s=e.upperRadiusLimit??0;e.radius-(this._zoomToMouseRadiusOffset+t*a)/i>s&&(t=((e.radius-s)*i-this._zoomToMouseRadiusOffset)/a)}let s=t/i/e.radius,n=this._getPosition(),r=o.TmpVectors.Vector3[6];n.subtractToRef(e.target,r),r.scaleInPlace(s),r.scaleInPlace(i),r.scaleInPlace(a),this._inertialPanning.addInPlace(r),this._zoomToMouseRadiusOffset+=t*a}_zeroIfClose(t){Math.abs(t.x)<_.Epsilon&&(t.x=0),Math.abs(t.y)<_.Epsilon&&(t.y=0),Math.abs(t.z)<_.Epsilon&&(t.z=0)}}(0,a.__decorate)([(0,s.serialize)()],F.prototype,"wheelPrecision",void 0),(0,a.__decorate)([(0,s.serialize)()],F.prototype,"zoomToMouseLocation",void 0),(0,a.__decorate)([(0,s.serialize)()],F.prototype,"wheelDeltaPercentage",void 0),N.CameraInputTypes.ArcRotateCameraMouseWheelInput=F;var z=N,Y=t.i(75405);class U extends z.CameraInputsManager{constructor(t){super(t)}addMouseWheel(){return this.add(new F),this}addPointers(){return this.add(new w),this}addKeyboard(){return this.add(new x),this}}(e=U.prototype).addVRDeviceOrientation??(e.addVRDeviceOrientation=(0,Y._MissingSideEffect)("ArcRotateCameraInputsManager","addVRDeviceOrientation")),(i=U.prototype).addGamepad??(i.addGamepad=(0,Y._MissingSideEffect)("ArcRotateCameraInputsManager","addGamepad"));var Z=t.i(77052),W=t.i(16074),K=t.i(63764);class X extends W.CameraMovement{constructor(t,e,i){super(t,e,i),this.input=new K.InputMapper({pan:(t,e)=>{this.panAccumulatedPixels.x+=t,this.panAccumulatedPixels.y+=e},rotate:(t,e)=>{this.rotationAccumulatedPixels.x+=t,this.rotationAccumulatedPixels.y+=e},zoom:t=>{this.zoomAccumulatedPixels+=t}},()=>this._createDefaultInputMap())}_createDefaultInputMap(){return[{source:"pointer",button:0,modifiers:{ctrl:!0},interaction:"pan"},{source:"pointer",button:0,interaction:"rotate"},{source:"pointer",button:2,interaction:"pan"},{source:"wheel",interaction:"zoom"},{source:"keyboard",key:[187,107,189,109],interaction:"zoom"},{source:"keyboard",modifiers:{ctrl:!0},interaction:"pan"},{source:"keyboard",modifiers:{alt:!0},interaction:"zoom"},{source:"keyboard",interaction:"rotate"}]}}function H(t){let e=Math.PI/2;return(0!==t.x||0!==t.z)&&(e=Math.acos(t.x/Math.sqrt(Math.pow(t.x,2)+Math.pow(t.z,2)))),t.z<0&&(e=2*Math.PI-e),e}function G(t,e){return Math.acos(t/e)}function q(t,e){return isNaN(t)?e:t}class Q extends b.TargetCamera{get target(){return this._target}set target(t){this.setTarget(t)}get targetHost(){return this._targetHost}set targetHost(t){t&&this.setTarget(t)}getTarget(){return this.target}get position(){return this._position}set position(t){this.setPosition(t)}set upVector(t){this._upToYMatrix||(this._yToUpMatrix=new o.Matrix,this._upToYMatrix=new o.Matrix,this._upVector=o.Vector3.Zero()),t.normalize(),this._upVector.copyFrom(t),this.setMatUp()}get upVector(){return this._upVector}setMatUp(){o.Matrix.RotationAlignToRef(o.Vector3.UpReadOnly,this._upVector,this._yToUpMatrix),o.Matrix.RotationAlignToRef(this._upVector,o.Vector3.UpReadOnly,this._upToYMatrix)}get inertialAlphaOffset(){if(0!==this._inertialAlphaOffset)return this._inertialAlphaOffset;if(0!==this.movement.rotationAccumulatedPixels.x)return this.movement.rotationAccumulatedPixels.x;let t=this.movement.rotationDeltaCurrentFrame.x;return Math.abs(t)<this._rotationEpsilon?0:t}set inertialAlphaOffset(t){this._inertialAlphaOffset=t,0===t&&this.movement.resetRotationVelocity()}get inertialBetaOffset(){if(0!==this._inertialBetaOffset)return this._inertialBetaOffset;if(0!==this.movement.rotationAccumulatedPixels.y)return this.movement.rotationAccumulatedPixels.y;let t=this.movement.rotationDeltaCurrentFrame.y;return Math.abs(t)<this._rotationEpsilon?0:t}set inertialBetaOffset(t){this._inertialBetaOffset=t,0===t&&this.movement.resetRotationVelocity()}get inertialRadiusOffset(){if(0!==this._inertialRadiusOffset)return this._inertialRadiusOffset;if(0!==this.movement.zoomAccumulatedPixels)return this.movement.zoomAccumulatedPixels;let t=this.movement.zoomDeltaCurrentFrame;return Math.abs(t)<this.speed*this._rotationEpsilon?0:t}set inertialRadiusOffset(t){this._inertialRadiusOffset=t,0===t&&this.movement.resetZoomVelocity()}get panningInertia(){return this._panningInertia}set panningInertia(t){this._panningInertia=t,this.movement&&(this.movement.panInertia=t)}get inertia(){return this._inertia}set inertia(t){this._inertia=t,this.movement&&(this.movement.rotationInertia=t,this.movement.zoomInertia=t)}get angularSensibilityX(){let t=this.inputs.attached.pointers;return t?t.angularSensibilityX:0}set angularSensibilityX(t){let e=this.inputs.attached.pointers;e&&(e.angularSensibilityX=t)}get angularSensibilityY(){let t=this.inputs.attached.pointers;return t?t.angularSensibilityY:0}set angularSensibilityY(t){let e=this.inputs.attached.pointers;e&&(e.angularSensibilityY=t)}get pinchPrecision(){let t=this.inputs.attached.pointers;return t?t.pinchPrecision:0}set pinchPrecision(t){let e=this.inputs.attached.pointers;e&&(e.pinchPrecision=t)}get pinchDeltaPercentage(){let t=this.inputs.attached.pointers;return t?t.pinchDeltaPercentage:0}set pinchDeltaPercentage(t){let e=this.inputs.attached.pointers;e&&(e.pinchDeltaPercentage=t)}get useNaturalPinchZoom(){let t=this.inputs.attached.pointers;return!!t&&t.useNaturalPinchZoom}set useNaturalPinchZoom(t){let e=this.inputs.attached.pointers;e&&(e.useNaturalPinchZoom=t)}get panningSensibility(){let t=this.inputs.attached.pointers;return t?t.panningSensibility:0}set panningSensibility(t){let e=this.inputs.attached.pointers;e&&(e.panningSensibility=t)}get keysUp(){let t=this.inputs.attached.keyboard;return t?t.keysUp:[]}set keysUp(t){let e=this.inputs.attached.keyboard;e&&(e.keysUp=t)}get keysDown(){let t=this.inputs.attached.keyboard;return t?t.keysDown:[]}set keysDown(t){let e=this.inputs.attached.keyboard;e&&(e.keysDown=t)}get keysLeft(){let t=this.inputs.attached.keyboard;return t?t.keysLeft:[]}set keysLeft(t){let e=this.inputs.attached.keyboard;e&&(e.keysLeft=t)}get keysRight(){let t=this.inputs.attached.keyboard;return t?t.keysRight:[]}set keysRight(t){let e=this.inputs.attached.keyboard;e&&(e.keysRight=t)}get wheelPrecision(){let t=this.inputs.attached.mousewheel;return t?t.wheelPrecision:0}set wheelPrecision(t){let e=this.inputs.attached.mousewheel;e&&(e.wheelPrecision=t)}get zoomToMouseLocation(){let t=this.inputs.attached.mousewheel;return!!t&&t.zoomToMouseLocation}set zoomToMouseLocation(t){let e=this.inputs.attached.mousewheel;e&&(e.zoomToMouseLocation=t)}get wheelDeltaPercentage(){let t=this.inputs.attached.mousewheel;return t?t.wheelDeltaPercentage:0}set wheelDeltaPercentage(t){let e=this.inputs.attached.mousewheel;e&&(e.wheelDeltaPercentage=t)}get _useCtrlForPanning(){return this._useCtrlForPanningInternal}set _useCtrlForPanning(t){this._useCtrlForPanningInternal=t;let e=this.movement.input,i=e.getEntry("keyboard","pan",{modifiers:{ctrl:!0}});!t&&i?e.inputMap.splice(e.inputMap.indexOf(i),1):t&&!i&&e.addEntry({source:"keyboard",modifiers:{ctrl:!0},interaction:"pan"});let a=e.getEntry("pointer","pan",{modifiers:{ctrl:!0}});!t&&a?e.inputMap.splice(e.inputMap.indexOf(a),1):t&&!a&&e.addEntry({source:"pointer",button:0,modifiers:{ctrl:!0},interaction:"pan"})}get _panningMouseButton(){return this._panningMouseButtonInternal}set _panningMouseButton(t){this._panningMouseButtonInternal=t;let e=this.movement.input.getEntry("pointer","pan",{modifiers:{}});e&&(e.button=t)}get isInterpolating(){return this._isInterpolating}get bouncingBehavior(){return this._bouncingBehavior}get useBouncingBehavior(){return null!=this._bouncingBehavior}set useBouncingBehavior(t){t!==this.useBouncingBehavior&&(t?(this._bouncingBehavior=new C,this.addBehavior(this._bouncingBehavior)):this._bouncingBehavior&&(this.removeBehavior(this._bouncingBehavior),this._bouncingBehavior=null))}get framingBehavior(){return this._framingBehavior}get useFramingBehavior(){return null!=this._framingBehavior}set useFramingBehavior(t){t!==this.useFramingBehavior&&(t?(this._framingBehavior=new R,this.addBehavior(this._framingBehavior)):this._framingBehavior&&(this.removeBehavior(this._framingBehavior),this._framingBehavior=null))}get autoRotationBehavior(){return this._autoRotationBehavior}get useAutoRotationBehavior(){return null!=this._autoRotationBehavior}set useAutoRotationBehavior(t){t!==this.useAutoRotationBehavior&&(t?(this._autoRotationBehavior=new p,this.addBehavior(this._autoRotationBehavior)):this._autoRotationBehavior&&(this.removeBehavior(this._autoRotationBehavior),this._autoRotationBehavior=null))}constructor(t,e,i,a,s,r,h=!0){super(t,o.Vector3.Zero(),r,h),this._inertialAlphaOffset=0,this._inertialBetaOffset=0,this._inertialRadiusOffset=0,this.lowerAlphaLimit=null,this.upperAlphaLimit=null,this.lowerBetaLimit=.01,this.upperBetaLimit=Math.PI-.01,this.lowerRadiusLimit=null,this.upperRadiusLimit=null,this.lowerTargetYLimit=-1/0,this.inertialPanningX=0,this.inertialPanningY=0,this.pinchToPanMaxDistance=20,this.panningDistanceLimit=null,this.panningOriginTarget=o.Vector3.Zero(),this._panningInertia=.9,this._inertia=.9,this.zoomOnFactor=1,this.targetScreenOffset=o.Vector2.Zero(),this.allowUpsideDown=!0,this.useInputToRestoreState=!0,this.restoreStateInterpolationFactor=0,this._currentInterpolationFactor=0,this._viewMatrix=new o.Matrix,this._useCtrlForPanningInternal=!0,this._panningMouseButtonInternal=2,this.panningAxis=new o.Vector3(1,1,0),this._transformedDirection=new o.Vector3,this.mapPanning=!1,this._isInterpolating=!1,this.onMeshTargetChangedObservable=new n.Observable,this.checkCollisions=!1,this.collisionRadius=new o.Vector3(.5,.5,.5),this._previousPosition=o.Vector3.Zero(),this._collisionVelocity=o.Vector3.Zero(),this._newPosition=o.Vector3.Zero(),this._computationVector=o.Vector3.Zero(),this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget=new o.Vector3(NaN,NaN,NaN),this._goalTargetScreenOffset=new o.Vector2(NaN,NaN),this._onCollisionPositionChange=(t,e,i=null)=>{i?(this.setPosition(e),this.onCollide&&this.onCollide(i)):this._previousPosition.copyFrom(this._position);let a=Math.cos(this.alpha),s=Math.sin(this.alpha),n=Math.cos(this.beta),o=Math.sin(this.beta);0===o&&(o=1e-4);let r=this._getTargetPosition();this._computationVector.copyFromFloats(this.radius*a*o,this.radius*n,this.radius*s*o),r.addToRef(this._computationVector,this._newPosition),this._position.copyFrom(this._newPosition);let h=this.upVector;this.allowUpsideDown&&this.beta<0&&(h=(h=h.clone()).negate()),this._computeViewMatrix(this._position,r,h),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y),this._collisionTriggered=!1},this._target=o.Vector3.Zero(),s&&this.setTarget(s),this.alpha=e,this.beta=i,this.radius=a,this.getViewMatrix(),this.inputs=new U(this),this.inputs.addKeyboard().addMouseWheel().addPointers(),this.movement=new X(this.getScene(),this._position),this.movement.rotationInertia=this._inertia,this.movement.zoomInertia=this._inertia,this.movement.panInertia=this._panningInertia}_initCache(){super._initCache(),this._cache._target=new o.Vector3(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.alpha=void 0,this._cache.beta=void 0,this._cache.radius=void 0,this._cache.targetScreenOffset=o.Vector2.Zero()}_updateCache(t){t||super._updateCache(),this._cache._target.copyFrom(this._getTargetPosition()),this._cache.alpha=this.alpha,this._cache.beta=this.beta,this._cache.radius=this.radius,this._cache.targetScreenOffset.copyFrom(this.targetScreenOffset)}_getTargetPosition(){if(this._targetHost&&this._targetHost.getAbsolutePosition){let t=this._targetHost.getAbsolutePosition();this._targetBoundingCenter?t.addToRef(this._targetBoundingCenter,this._target):this._target.copyFrom(t)}let t=this._getLockedTargetPosition();return t||this._target}storeState(){return this._storedAlpha=this.alpha,this._storedBeta=this.beta,this._storedRadius=this.radius,this._storedTarget=this._getTargetPosition().clone(),this._storedTargetScreenOffset=this.targetScreenOffset.clone(),super.storeState()}_restoreStateValues(){return this.hasStateStored()&&this.restoreStateInterpolationFactor>_.Epsilon&&this.restoreStateInterpolationFactor<1?(this.interpolateTo(this._storedAlpha,this._storedBeta,this._storedRadius,this._storedTarget,this._storedTargetScreenOffset,this.restoreStateInterpolationFactor),!0):!!super._restoreStateValues()&&(this.setTarget(this._storedTarget.clone()),this.alpha=this._storedAlpha,this.beta=this._storedBeta,this.radius=this._storedRadius,this.targetScreenOffset=this._storedTargetScreenOffset.clone(),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,!0)}stopInterpolation(){this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget.set(NaN,NaN,NaN),this._goalTargetScreenOffset.set(NaN,NaN)}interpolateTo(t=this.alpha,e=this.beta,i=this.radius,a=this.target,s=this.targetScreenOffset,n){this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,null!=n?this._currentInterpolationFactor=n:0!==this.restoreStateInterpolationFactor?this._currentInterpolationFactor=this.restoreStateInterpolationFactor:this._currentInterpolationFactor=.1,this._goalAlpha=q(t,this._goalAlpha),this._goalBeta=q(e,this._goalBeta),this._goalRadius=q(i,this._goalRadius),this._goalTarget.set(q(a.x,this._goalTarget.x),q(a.y,this._goalTarget.y),q(a.z,this._goalTarget.z)),this._goalTargetScreenOffset.set(q(s.x,this._goalTargetScreenOffset.x),q(s.y,this._goalTargetScreenOffset.y)),this._goalAlpha=(0,r.Clamp)(this._goalAlpha,this.lowerAlphaLimit??-1/0,this.upperAlphaLimit??1/0),this._goalBeta=(0,r.Clamp)(this._goalBeta,this.lowerBetaLimit??-1/0,this.upperBetaLimit??1/0),this._goalRadius=(0,r.Clamp)(this._goalRadius,this.lowerRadiusLimit??-1/0,this.upperRadiusLimit??1/0),this._goalTarget.y=(0,r.Clamp)(this._goalTarget.y,this.lowerTargetYLimit??-1/0,1/0),this._isInterpolating=!0}_isSynchronizedViewMatrix(){return!!super._isSynchronizedViewMatrix()&&this._cache._target.equals(this._getTargetPosition())&&this._cache.alpha===this.alpha&&this._cache.beta===this.beta&&this._cache.radius===this.radius&&this._cache.targetScreenOffset.equals(this.targetScreenOffset)}attachControl(t,e,i=!0,a=2){let s=arguments;e=S.Tools.BackCompatCameraNoPreventDefault(s),this._useCtrlForPanning=i,this._panningMouseButton=a,"boolean"==typeof s[0]&&(s.length>1&&(this._useCtrlForPanning=s[1]),s.length>2&&(this._panningMouseButton=s[2])),this.inputs.attachElement(e),this._reset=()=>{this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0}}detachControl(){this.inputs.detachElement(),this._reset&&this._reset()}_applyRotationAndZoomDelta(t,e,i){let a=this.invertRotation?-1:1,s=t*this._calculateHandednessMultiplier();this.beta<0&&(s*=-1),this.alpha+=s*a,this.beta+=e*a,this.radius-=i}_applyPanDelta(t,e){let i=o.TmpVectors.Vector3[0].copyFromFloats(t,e,e);if(this._viewMatrix.invertToRef(this._cameraTransformMatrix),i.multiplyInPlace(this.panningAxis),o.Vector3.TransformNormalToRef(i,this._cameraTransformMatrix,this._transformedDirection),this.mapPanning){let t=this.upVector,e=o.Vector3.CrossToRef(this._transformedDirection,t,this._transformedDirection);o.Vector3.CrossToRef(t,e,this._transformedDirection)}else this.panningAxis.y||(this._transformedDirection.y=0);if(!this._targetHost)if(this.panningDistanceLimit)this._transformedDirection.addInPlace(this._target),o.Vector3.DistanceSquared(this._transformedDirection,this.panningOriginTarget)<=this.panningDistanceLimit*this.panningDistanceLimit&&this._target.copyFrom(this._transformedDirection);else{if(this.parent){let t=o.TmpVectors.Matrix[0];this.parent.getWorldMatrix().getRotationMatrixToRef(t),t.transposeToRef(t),o.Vector3.TransformCoordinatesToRef(this._transformedDirection,t,this._transformedDirection)}this._target.addInPlace(this._transformedDirection)}}_checkInputs(){if(this._collisionTriggered)return;this.inputs.checkInputs();let t=!1;this.movement.computeCurrentFrameDeltas();let e=this.movement.rotationDeltaCurrentFrame,i=this.movement.zoomDeltaCurrentFrame,a=this.movement.panDeltaCurrentFrame;if((0!==e.x||0!==e.y||0!==i||0!==a.x||0!==a.y)&&(t=!0,(0!==e.x||0!==e.y||0!==i)&&this._applyRotationAndZoomDelta(e.x,e.y,i),(0!==a.x||0!==a.y)&&this._applyPanDelta(a.x,a.y)),(0!==this._inertialAlphaOffset||0!==this._inertialBetaOffset||0!==this._inertialRadiusOffset)&&(this._applyRotationAndZoomDelta(this._inertialAlphaOffset,this._inertialBetaOffset,this._inertialRadiusOffset),this._inertialAlphaOffset*=this.inertia,this._inertialBetaOffset*=this.inertia,this._inertialRadiusOffset*=this.inertia,Math.abs(this._inertialAlphaOffset)<this._rotationEpsilon&&(this._inertialAlphaOffset=0),Math.abs(this._inertialBetaOffset)<this._rotationEpsilon&&(this._inertialBetaOffset=0),Math.abs(this._inertialRadiusOffset)<this.speed*this._rotationEpsilon&&(this._inertialRadiusOffset=0),t=!0),0!==this.inertialPanningX||0!==this.inertialPanningY){this._applyPanDelta(this.inertialPanningX,this.inertialPanningY),this.inertialPanningX*=this.panningInertia,this.inertialPanningY*=this.panningInertia;let e=this.speed*this._panningEpsilon;Math.abs(this.inertialPanningX)<e&&(this.inertialPanningX=0),Math.abs(this.inertialPanningY)<e&&(this.inertialPanningY=0),t=!0}if(t)this.stopInterpolation();else if(this._isInterpolating){let t=!1,e=1-Math.pow(2,-(this._scene.getEngine().getDeltaTime()/1e3)/this._currentInterpolationFactor),i=q(this._goalRadius,this.radius);if(!isNaN(this._goalTarget.x)||!isNaN(this._goalTarget.y)||!isNaN(this._goalTarget.z)){let a=o.TmpVectors.Vector3[0].set(q(this._goalTarget.x,this._target.x),q(this._goalTarget.y,this._target.y),q(this._goalTarget.z,this._target.z));o.Vector3.LerpToRef(this.target,a,e,this._target),10*o.Vector3.Distance(this.target,a)/i<_.Epsilon?(this._goalTarget.set(NaN,NaN,NaN),this.target.copyFrom(a),this.setTarget(this.target,!1,!0,!0)):t=!0}if(!isNaN(this._goalAlpha)||!isNaN(this._goalBeta)){let i=o.Quaternion.RotationAlphaBetaGammaToRef(q(this._goalAlpha,this.alpha),q(this._goalBeta,this.beta),0,o.TmpVectors.Quaternion[0]),a=o.Quaternion.RotationAlphaBetaGammaToRef(this.alpha,this.beta,0,o.TmpVectors.Quaternion[1]),s=o.Quaternion.SlerpToRef(a,i,e,o.TmpVectors.Quaternion[2]);s.normalize();let n=s.toAlphaBetaGammaToRef(o.TmpVectors.Vector3[0]);if(this.alpha=n.x,this.beta=n.y,s.isApprox(i,_.Epsilon/5)){this._goalAlpha=NaN,this._goalBeta=NaN;let t=i.toAlphaBetaGammaToRef(o.TmpVectors.Vector3[0]);this.alpha=t.x,this.beta=t.y}else t=!0}if(isNaN(this._goalRadius)||(this.radius+=(i-this.radius)*e,Math.abs(i/this.radius-1)<_.Epsilon?(this._goalRadius=NaN,this.radius=i):t=!0),!isNaN(this._goalTargetScreenOffset.x)||!isNaN(this._goalTargetScreenOffset.y)){let i=o.TmpVectors.Vector2[0].set(q(this._goalTargetScreenOffset.x,this.targetScreenOffset.x),q(this._goalTargetScreenOffset.y,this.targetScreenOffset.y));o.Vector2.LerpToRef(this.targetScreenOffset,i,e,this.targetScreenOffset),o.Vector2.Distance(this.targetScreenOffset,i)<_.Epsilon?(this._goalTargetScreenOffset.set(NaN,NaN),this.targetScreenOffset.copyFrom(i)):t=!0}this._isInterpolating=t}this._checkLimits(),super._checkInputs()}_checkLimits(){null===this.lowerBetaLimit||void 0===this.lowerBetaLimit?this.allowUpsideDown&&this.beta>Math.PI&&(this.beta=this.beta-2*Math.PI):this.beta<this.lowerBetaLimit&&(this.beta=this.lowerBetaLimit),null===this.upperBetaLimit||void 0===this.upperBetaLimit?this.allowUpsideDown&&this.beta<-Math.PI&&(this.beta=this.beta+2*Math.PI):this.beta>this.upperBetaLimit&&(this.beta=this.upperBetaLimit),null!==this.lowerAlphaLimit&&this.alpha<this.lowerAlphaLimit&&(this.alpha=this.lowerAlphaLimit),null!==this.upperAlphaLimit&&this.alpha>this.upperAlphaLimit&&(this.alpha=this.upperAlphaLimit),null!==this.lowerRadiusLimit&&this.radius<this.lowerRadiusLimit&&(this.radius=this.lowerRadiusLimit,this.inertialRadiusOffset=0),null!==this.upperRadiusLimit&&this.radius>this.upperRadiusLimit&&(this.radius=this.upperRadiusLimit,this.inertialRadiusOffset=0),this.target.y=Math.max(this.target.y,this.lowerTargetYLimit)}rebuildAnglesAndRadius(){this._position.subtractToRef(this._getTargetPosition(),this._computationVector),(0!==this._upVector.x||1!==this._upVector.y||0!==this._upVector.z)&&o.Vector3.TransformCoordinatesToRef(this._computationVector,this._upToYMatrix,this._computationVector),this.radius=this._computationVector.length(),0===this.radius&&(this.radius=1e-4);let t=this.alpha;this.alpha=H(this._computationVector),this.beta=G(this._computationVector.y,this.radius);let e=Math.round((t-this.alpha)/(2*Math.PI));this.alpha+=2*e*Math.PI,this._checkLimits()}setPosition(t){this._position.equals(t)||(this._position.copyFrom(t),this.rebuildAnglesAndRadius())}setTarget(t,e=!1,i=!1,a=!1){if(a=this.overrideCloneAlphaBetaRadius??a,t.computeWorldMatrix)e&&t.getBoundingInfo?this._targetBoundingCenter=t.getBoundingInfo().boundingBox.centerWorld.clone():this._targetBoundingCenter=null,t.computeWorldMatrix(),this._targetHost=t,this._target=this._getTargetPosition(),this.onMeshTargetChangedObservable.notifyObservers(this._targetHost);else{let e=this._getTargetPosition();if(e&&!i&&e.equals(t))return;this._targetHost=null,this._target=t,this._targetBoundingCenter=null,this.onMeshTargetChangedObservable.notifyObservers(null)}a||this.rebuildAnglesAndRadius()}_getViewMatrix(){let t=Math.cos(this.alpha),e=Math.sin(this.alpha),i=Math.cos(this.beta),a=Math.sin(this.beta);0===a&&(a=1e-4),0===this.radius&&(this.radius=1e-4);let s=this._getTargetPosition();if(this._computationVector.copyFromFloats(this.radius*t*a,this.radius*i,this.radius*e*a),(0!==this._upVector.x||1!==this._upVector.y||0!==this._upVector.z)&&o.Vector3.TransformCoordinatesToRef(this._computationVector,this._yToUpMatrix,this._computationVector),s.addToRef(this._computationVector,this._newPosition),this.getScene().collisionsEnabled&&this.checkCollisions){let t=this.getScene().collisionCoordinator;this._collider||(this._collider=t.createCollider()),this._collider._radius=this.collisionRadius,this._newPosition.subtractToRef(this._position,this._collisionVelocity),this._collisionTriggered=!0,t.getNewPosition(this._position,this._collisionVelocity,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}else{this._position.copyFrom(this._newPosition);let t=this.upVector;this.allowUpsideDown&&a<0&&(t=t.negate()),this._computeViewMatrix(this._position,s,t),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y)}return this._currentTarget.copyFrom(s),this._viewMatrix}zoomOn(t,e=!1){t=t||this.getScene().meshes;let i=l.Mesh.MinMax(t),a=this._calculateLowerRadiusFromModelBoundingSphere(i.min,i.max);if(a=Math.max(Math.min(a,this.upperRadiusLimit||Number.MAX_VALUE),this.lowerRadiusLimit||0),this.radius=a*this.zoomOnFactor,this.mode===E.Camera.ORTHOGRAPHIC_CAMERA){let t=this.getScene().getEngine().getAspectRatio(this),e=a*this.zoomOnFactor/2;this.orthoLeft=-e*t,this.orthoRight=e*t,this.orthoBottom=-e,this.orthoTop=e}this.focusOn({min:i.min,max:i.max,distance:a},e)}focusOn(t,e=!1){let i,a;if(void 0===t.min){let e=t||this.getScene().meshes;i=l.Mesh.MinMax(e),a=o.Vector3.Distance(i.min,i.max)}else i=t,a=t.distance;this._target=l.Mesh.Center(i),e||(this.maxZ=2*a)}createRigCamera(t,e){let i=0;switch(this.cameraRigMode){case E.Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case E.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case E.Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER:case E.Camera.RIG_MODE_STEREOSCOPIC_INTERLACED:case E.Camera.RIG_MODE_VR:i=this._cameraRigParams.stereoHalfAngle*(0===e?1:-1);break;case E.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:i=this._cameraRigParams.stereoHalfAngle*(0===e?-1:1)}let a=new Q(t,this.alpha+i,this.beta,this.radius,this._target,this.getScene());return a._cameraRigParams={},a.isRigCamera=!0,a.rigParent=this,a.upVector=this.upVector,a.mode=this.mode,a.orthoLeft=this.orthoLeft,a.orthoRight=this.orthoRight,a.orthoBottom=this.orthoBottom,a.orthoTop=this.orthoTop,a}_updateRigCameras(){let t=this._rigCameras[0],e=this._rigCameras[1];switch(t.beta=e.beta=this.beta,this.cameraRigMode){case E.Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case E.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case E.Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER:case E.Camera.RIG_MODE_STEREOSCOPIC_INTERLACED:case E.Camera.RIG_MODE_VR:t.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle,e.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle;break;case E.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:t.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle,e.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle}super._updateRigCameras()}_calculateLowerRadiusFromModelBoundingSphere(t,e,i=1){let a=o.Vector3.Distance(t,e),s=this.getScene().getEngine().getAspectRatio(this),n=Math.tan(this.fov/2),r=n*s,h=.5*a*i;return Math.max(h*Math.sqrt(1+1/(r*r)),h*Math.sqrt(1+1/(n*n)))}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"ArcRotateCamera"}}(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"alpha",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"beta",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"radius",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"overrideCloneAlphaBetaRadius",void 0),(0,a.__decorate)([(0,s.serializeAsVector3)("target")],Q.prototype,"_target",void 0),(0,a.__decorate)([(0,s.serializeAsMeshReference)("targetHost")],Q.prototype,"_targetHost",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"inertialAlphaOffset",null),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"inertialBetaOffset",null),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"inertialRadiusOffset",null),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"lowerAlphaLimit",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"upperAlphaLimit",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"lowerBetaLimit",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"upperBetaLimit",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"lowerRadiusLimit",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"upperRadiusLimit",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"lowerTargetYLimit",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"inertialPanningX",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"inertialPanningY",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"pinchToPanMaxDistance",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"panningDistanceLimit",void 0),(0,a.__decorate)([(0,s.serializeAsVector3)()],Q.prototype,"panningOriginTarget",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"panningInertia",null),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"zoomToMouseLocation",null),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"zoomOnFactor",void 0),(0,a.__decorate)([(0,s.serializeAsVector2)()],Q.prototype,"targetScreenOffset",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"allowUpsideDown",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"useInputToRestoreState",void 0),(0,a.__decorate)([(0,s.serialize)()],Q.prototype,"restoreStateInterpolationFactor",void 0);let j=!1;function J(){j||(j=!0,h.Node.AddNodeConstructor("ArcRotateCamera",(t,e)=>()=>new Q(t,0,0,1,o.Vector3.Zero(),e)),(0,Z.RegisterClass)("BABYLON.ArcRotateCamera",Q))}t.s(["ArcRotateCamera",0,Q,"ComputeAlpha",0,H,"ComputeBeta",0,G,"RegisterArcRotateCamera",0,J],35238),J(),t.s([],34273),t.i(34273),t.i(35238),t.s(["ArcRotateCamera",0,Q,"ComputeAlpha",0,H,"ComputeBeta",0,G,"RegisterArcRotateCamera",0,J],18662)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,24574,e=>{"use strict";class t{get underlyingResource(){return null}constructor(){this.references=0,this.capacity=0,this.is32Bits=!1,this.uniqueId=t._Counter++}}t._Counter=0,e.s(["DataBuffer",0,t])},18064,30419,29485,e=>{"use strict";e.s(["IsWrapper",0,function(e){return void 0===e.getPipelineContext}],18064),e.s(["WebGLShaderProcessor",0,class{constructor(){this.shaderLanguage=0}postProcessor(e,t,r,i,s){return s.drawBuffersExtensionDisabled&&(e=e.replace(/#extension.+GL_EXT_draw_buffers.+(enable|require)/g,"")),e}}],30419);let t=/(flat\s)?\s*varying\s*.*/;e.s(["WebGL2ShaderProcessor",0,class{constructor(){this.shaderLanguage=0}attributeProcessor(e){return e.replace("attribute","in")}varyingCheck(e,r){return t.test(e)}varyingProcessor(e,t){return e.replace("varying",t?"in":"out")}postProcessor(e,t,r){let i=-1!==e.search(/#extension.+GL_EXT_draw_buffers.+require/);if(e=(e=e.replace(/#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g,"")).replace(/texture2D\s*\(/g,"texture("),r){let r=-1!==e.search(/layout *\(location *= *0\) *out/g),s=-1!==t.indexOf("#define DUAL_SOURCE_BLENDING");s&&(e="#extension GL_EXT_blend_func_extended : require\n"+e),e=(e=(e=(e=(e=(e=(e=e.replace(/texture2DLodEXT\s*\(/g,"textureLod(")).replace(/textureCubeLodEXT\s*\(/g,"textureLod(")).replace(/textureCube\s*\(/g,"texture(")).replace(/gl_FragDepthEXT/g,"gl_FragDepth")).replace(/gl_FragColor/g,"glFragColor")).replace(/gl_FragData/g,"glFragData")).replace(/void\s+?main\s*\(/g,(i||r?"":s?"layout(location = 0, index = 0) out vec4 glFragColor;\nlayout(location = 0, index = 1) out vec4 glFragColor2;\n":"layout(location = 0) out vec4 glFragColor;\n")+"void main(")}else if(t.indexOf("#define VERTEXOUTPUT_INVARIANT")>=0&&(e="invariant gl_Position;\n"+e),-1!==t.indexOf("#define MULTIVIEW"))return"#extension GL_OVR_multiview2 : require\nlayout (num_views = 2) in;\n"+e;return e}}],29485)},20483,e=>{"use strict";var t=e.i(24574);class r extends t.DataBuffer{constructor(e){super(),this._buffer=e}get underlyingResource(){return this._buffer}}e.s(["WebGLDataBuffer",0,r])},68179,e=>{"use strict";function t(e){let t=r(e),s=i(e);return t-e>e-s?s:t}function r(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e}function i(e){return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,(e|=e>>16)-(e>>1)}e.s(["FloorPOT",0,i,"GetExponentOfTwo",0,function(e,s,a=2){let n;switch(a){case 1:n=i(e);break;case 2:n=t(e);break;default:n=r(e)}return Math.min(n,s)},"IsExponentOfTwo",0,function(e){let t=1;do t*=2;while(t<e)return t===e},"Mix",0,function(e,t,r){return e*(1-r)+t*r},"NearestPOT",0,t])},71379,40462,79814,e=>{"use strict";var t,r,i,s,a,n,_,l,h=e.i(99904),u=e.i(8881),o=e.i(76535),c=e.i(18064),g=e.i(13379),f=e.i(64545),d=e.i(30419),E=e.i(29485),T=e.i(20483),R=e.i(68179);class p{get underlyingResource(){return this._webGLTexture}constructor(e=null,t){if(this._MSAARenderBuffers=null,this._context=t,!e&&!(e=t.createTexture()))throw Error("Unable to create webGL texture");this.set(e)}setUsage(){}set(e){this._webGLTexture=e}reset(){this._webGLTexture=null,this._MSAARenderBuffers=null}addMSAARenderBuffer(e){this._MSAARenderBuffers||(this._MSAARenderBuffers=[]),this._MSAARenderBuffers.push(e)}releaseMSAARenderBuffers(){if(this._MSAARenderBuffers){for(let e of this._MSAARenderBuffers)this._context.deleteRenderbuffer(e);this._MSAARenderBuffers=null}}getMSAARenderBuffer(e=0){return this._MSAARenderBuffers?.[e]??null}release(){this.releaseMSAARenderBuffers(),this._webGLTexture&&this._context.deleteTexture(this._webGLTexture),this.reset()}}e.s(["WebGLHardwareTexture",0,p],40462);var A=e.i(84201),x=e.i(75017),S=e.i(28799);function b(e){return 13===e||14===e||15===e||16===e||17===e||18===e||19===e}function m(e){return 13===e||17===e||18===e||19===e}e.s(["HasStencilAspect",0,m,"IsDepthTexture",0,b],79814);var B=e.i(41520),C=e.i(75405);class P{}class L extends o.AbstractEngine{get name(){return this._name}set name(e){this._name=e}get version(){return this._webGLVersion}static get ShadersRepository(){return h.Effect.ShadersRepository}static set ShadersRepository(e){h.Effect.ShadersRepository=e}get supportsUniformBuffers(){return this.webGLVersion>1&&!this.disableUniformBuffers}get needPOTTextures(){return this._webGLVersion<2||this.forcePOTTextures}get _supportsHardwareTextureRescaling(){return!1}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e}snapshotRenderingReset(){this.snapshotRendering=!1}constructor(e,t,r,i){let s;if(r=r||{},super(t??r.antialias,r,i),this._name="WebGL",this.forcePOTTextures=!1,this.validateShaderPrograms=!1,this.disableUniformBuffers=!1,this._webGLVersion=1,this._vertexAttribArraysEnabled=[],this._uintIndicesCurrentlySet=!1,this._currentBoundBuffer=[],this._currentFramebuffer=null,this._dummyFramebuffer=null,this._currentBufferPointers=[],this._currentInstanceLocations=[],this._currentInstanceBuffers=[],this._vaoRecordInProgress=!1,this._mustWipeVertexAttributes=!1,this._nextFreeTextureSlots=[],this._maxSimultaneousTextures=0,this._maxMSAASamplesOverride=null,this._unpackFlipYCached=null,this.enableUnpackFlipYCached=!0,this._boundUniforms={},!e)return;if(e.getContext){if(s=e,void 0===r.preserveDrawingBuffer&&(r.preserveDrawingBuffer=!1),void 0===r.xrCompatible&&(r.xrCompatible=!1),navigator&&navigator.userAgent){this._setupMobileChecks();const e=navigator.userAgent;for(const t of L.ExceptionList){const i=t.key,s=t.targets;if(new RegExp(i).test(e)){if(t.capture&&t.captureConstraint){const r=t.capture,i=t.captureConstraint,s=new RegExp(r).exec(e);if(s&&s.length>0&&parseInt(s[s.length-1])>=i)continue}for(const e of s)switch(e){case"uniformBuffer":this.disableUniformBuffers=!0;break;case"vao":this.disableVertexArrayObjects=!0;break;case"antialias":r.antialias=!1;break;case"maxMSAASamples":this._maxMSAASamplesOverride=1}}}}if(this._doNotHandleContextLost?this._onContextLost=()=>{(0,u.deleteStateObject)(this._gl)}:(this._onContextLost=e=>{e.preventDefault(),this._contextWasLost=!0,(0,u.deleteStateObject)(this._gl),g.Logger.Warn("WebGL context lost."),this.onContextLostObservable.notifyObservers(this)},this._onContextRestored=()=>{this._restoreEngineAfterContextLost(()=>this._initGLContext())},s.addEventListener("webglcontextrestored",this._onContextRestored,!1),r.powerPreference=r.powerPreference||"high-performance"),s.addEventListener("webglcontextlost",this._onContextLost,!1),this._badDesktopOS&&(r.xrCompatible=!1),!r.disableWebGL2Support)try{this._gl=s.getContext("webgl2",r)||s.getContext("experimental-webgl2",r),this._gl&&(this._webGLVersion=2,this._shaderPlatformName="WEBGL2",this._gl.deleteQuery||(this._webGLVersion=1,this._shaderPlatformName="WEBGL1"))}catch(e){}if(!this._gl){if(!s)throw Error("The provided canvas is null or undefined.");try{this._gl=s.getContext("webgl",r)||s.getContext("experimental-webgl",r)}catch(e){throw Error("WebGL not supported",{cause:e})}}if(!this._gl)throw Error("WebGL not supported")}else{this._gl=e,s=this._gl.canvas,this._gl.renderbufferStorageMultisample?(this._webGLVersion=2,this._shaderPlatformName="WEBGL2"):this._shaderPlatformName="WEBGL1";const t=this._gl.getContextAttributes();t&&(r.stencil=t.stencil)}this._sharedInit(s),this._gl.pixelStorei(this._gl.UNPACK_COLORSPACE_CONVERSION_WEBGL,this._gl.NONE),void 0!==r.useHighPrecisionFloats&&(this._highPrecisionShadersAllowed=r.useHighPrecisionFloats),this.resize(),this._initGLContext(),this._initFeatures();for(let e=0;e<this._caps.maxVertexAttribs;e++)this._currentBufferPointers[e]=new P;this._shaderProcessor=this.webGLVersion>1?new E.WebGL2ShaderProcessor:new d.WebGLShaderProcessor;const a=`Babylon.js v${L.Version}`;g.Logger.Log(a+` - ${this.description}`),this._renderingCanvas&&this._renderingCanvas.setAttribute&&this._renderingCanvas.setAttribute("data-engine",a);const n=(0,u.getStateObject)(this._gl);n.validateShaderPrograms=this.validateShaderPrograms,n.parallelShaderCompile=this._caps.parallelShaderCompile}_clearEmptyResources(){this._dummyFramebuffer=null,super._clearEmptyResources()}_getShaderProcessingContext(e){return null}areAllEffectsReady(){for(let e in this._compiledEffects)if(!this._compiledEffects[e].isReady())return!1;return!0}_initGLContext(){this._caps={maxTexturesImageUnits:this._gl.getParameter(this._gl.MAX_TEXTURE_IMAGE_UNITS),maxCombinedTexturesImageUnits:this._gl.getParameter(this._gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),maxVertexTextureImageUnits:this._gl.getParameter(this._gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS),maxTextureSize:this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),maxSamples:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_SAMPLES):1,maxCubemapTextureSize:this._gl.getParameter(this._gl.MAX_CUBE_MAP_TEXTURE_SIZE),maxRenderTextureSize:this._gl.getParameter(this._gl.MAX_RENDERBUFFER_SIZE),maxVertexAttribs:this._gl.getParameter(this._gl.MAX_VERTEX_ATTRIBS),maxVaryingVectors:this._gl.getParameter(this._gl.MAX_VARYING_VECTORS),maxFragmentUniformVectors:this._gl.getParameter(this._gl.MAX_FRAGMENT_UNIFORM_VECTORS),maxVertexUniformVectors:this._gl.getParameter(this._gl.MAX_VERTEX_UNIFORM_VECTORS),shaderFloatPrecision:0,parallelShaderCompile:this._gl.getExtension("KHR_parallel_shader_compile")||void 0,standardDerivatives:this._webGLVersion>1||null!==this._gl.getExtension("OES_standard_derivatives"),maxAnisotropy:1,astc:this._gl.getExtension("WEBGL_compressed_texture_astc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_astc"),bptc:this._gl.getExtension("EXT_texture_compression_bptc")||this._gl.getExtension("WEBKIT_EXT_texture_compression_bptc"),s3tc:this._gl.getExtension("WEBGL_compressed_texture_s3tc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"),s3tc_srgb:this._gl.getExtension("WEBGL_compressed_texture_s3tc_srgb")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc_srgb"),pvrtc:this._gl.getExtension("WEBGL_compressed_texture_pvrtc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:this._gl.getExtension("WEBGL_compressed_texture_etc1")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc1"),etc2:this._gl.getExtension("WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBGL_compressed_texture_es3_0"),textureAnisotropicFilterExtension:this._gl.getExtension("EXT_texture_filter_anisotropic")||this._gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic")||this._gl.getExtension("MOZ_EXT_texture_filter_anisotropic"),uintIndices:this._webGLVersion>1||null!==this._gl.getExtension("OES_element_index_uint"),fragmentDepthSupported:this._webGLVersion>1||null!==this._gl.getExtension("EXT_frag_depth"),highPrecisionShaderSupported:!1,timerQuery:this._gl.getExtension("EXT_disjoint_timer_query_webgl2")||this._gl.getExtension("EXT_disjoint_timer_query"),supportOcclusionQuery:this._webGLVersion>1,canUseTimestampForTimerQuery:!1,drawBuffersExtension:!1,maxMSAASamples:1,colorBufferFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_float")),blendFloat:null!==this._gl.getExtension("EXT_float_blend"),supportFloatTexturesResolve:!1,rg11b10ufColorRenderable:!1,colorBufferHalfFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_half_float")),textureFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_float")),textureHalfFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_half_float")),textureHalfFloatRender:!1,textureFloatLinearFiltering:!1,textureFloatRender:!1,textureHalfFloatLinearFiltering:!1,vertexArrayObject:!1,instancedArrays:!1,textureLOD:!!(this._webGLVersion>1||this._gl.getExtension("EXT_shader_texture_lod")),texelFetch:1!==this._webGLVersion,blendMinMax:!1,multiview:this._gl.getExtension("OVR_multiview2"),oculusMultiview:this._gl.getExtension("OCULUS_multiview"),depthTextureExtension:!1,canUseGLInstanceID:this._webGLVersion>1,canUseGLVertexID:this._webGLVersion>1,supportComputeShaders:!1,supportSRGBBuffers:!1,supportTransformFeedbacks:this._webGLVersion>1,textureMaxLevel:this._webGLVersion>1,texture2DArrayMaxLayerCount:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_ARRAY_TEXTURE_LAYERS):128,disableMorphTargetTexture:!1,textureNorm16:!!this._gl.getExtension("EXT_texture_norm16"),blendParametersPerTarget:!1,dualSourceBlending:!1,supportReadWriteStorageTextures:!1},this._caps.supportFloatTexturesResolve=this._caps.colorBufferFloat,this._caps.rg11b10ufColorRenderable=this._caps.colorBufferFloat,this._glVersion=this._gl.getParameter(this._gl.VERSION);let e=this._gl.getExtension("WEBGL_debug_renderer_info");null!=e&&(this._glRenderer=this._gl.getParameter(e.UNMASKED_RENDERER_WEBGL),this._glVendor=this._gl.getParameter(e.UNMASKED_VENDOR_WEBGL)),this._glVendor||(this._glVendor=this._gl.getParameter(this._gl.VENDOR)||"Unknown vendor"),this._glRenderer||(this._glRenderer=this._gl.getParameter(this._gl.RENDERER)||"Unknown renderer"),36193!==this._gl.HALF_FLOAT_OES&&(this._gl.HALF_FLOAT_OES=36193),34842!==this._gl.RGBA16F&&(this._gl.RGBA16F=34842),34836!==this._gl.RGBA32F&&(this._gl.RGBA32F=34836),35056!==this._gl.DEPTH24_STENCIL8&&(this._gl.DEPTH24_STENCIL8=35056),this._caps.timerQuery&&(1===this._webGLVersion&&(this._gl.getQuery=this._caps.timerQuery.getQueryEXT.bind(this._caps.timerQuery)),this._caps.canUseTimestampForTimerQuery=(this._gl.getQuery(this._caps.timerQuery.TIMESTAMP_EXT,this._caps.timerQuery.QUERY_COUNTER_BITS_EXT)??0)>0),this._caps.maxAnisotropy=this._caps.textureAnisotropicFilterExtension?this._gl.getParameter(this._caps.textureAnisotropicFilterExtension.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,this._caps.textureFloatLinearFiltering=!!(this._caps.textureFloat&&this._gl.getExtension("OES_texture_float_linear")),this._caps.textureFloatRender=!!(this._caps.textureFloat&&this._canRenderToFloatFramebuffer()),this._caps.textureHalfFloatLinearFiltering=!!(this._webGLVersion>1||this._caps.textureHalfFloat&&this._gl.getExtension("OES_texture_half_float_linear")),this._caps.textureNorm16&&(this._gl.R16_EXT=33322,this._gl.RG16_EXT=33324,this._gl.RGB16_EXT=32852,this._gl.RGBA16_EXT=32859,this._gl.R16_SNORM_EXT=36760,this._gl.RG16_SNORM_EXT=36761,this._gl.RGB16_SNORM_EXT=36762,this._gl.RGBA16_SNORM_EXT=36763);let t=this._gl.getExtension("OES_draw_buffers_indexed");if(this._caps.blendParametersPerTarget=!!t,this._alphaState=new B.AlphaState(this._caps.blendParametersPerTarget),t&&(this._gl.blendEquationSeparateIndexed=t.blendEquationSeparateiOES.bind(t),this._gl.blendEquationIndexed=t.blendEquationiOES.bind(t),this._gl.blendFuncSeparateIndexed=t.blendFuncSeparateiOES.bind(t),this._gl.blendFuncIndexed=t.blendFunciOES.bind(t),this._gl.colorMaskIndexed=t.colorMaskiOES.bind(t),this._gl.disableIndexed=t.disableiOES.bind(t),this._gl.enableIndexed=t.enableiOES.bind(t)),this._caps.dualSourceBlending=!!this._gl.getExtension("WEBGL_blend_func_extended"),this._caps.astc&&(this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR),this._caps.bptc&&(this._gl.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=this._caps.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT),this._caps.s3tc_srgb&&(this._gl.COMPRESSED_SRGB_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT),this._caps.etc2&&(this._gl.COMPRESSED_SRGB8_ETC2=this._caps.etc2.COMPRESSED_SRGB8_ETC2,this._gl.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=this._caps.etc2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC),this._webGLVersion>1&&5131!==this._gl.HALF_FLOAT_OES&&(this._gl.HALF_FLOAT_OES=5131),this._caps.textureHalfFloatRender=this._caps.textureHalfFloat&&this._canRenderToHalfFloatFramebuffer(),this._webGLVersion>1)this._caps.drawBuffersExtension=!0,this._caps.maxMSAASamples=null!==this._maxMSAASamplesOverride?this._maxMSAASamplesOverride:this._gl.getParameter(this._gl.MAX_SAMPLES),this._caps.maxDrawBuffers=this._gl.getParameter(this._gl.MAX_DRAW_BUFFERS);else{let e=this._gl.getExtension("WEBGL_draw_buffers");if(null!==e){this._caps.drawBuffersExtension=!0,this._gl.drawBuffers=e.drawBuffersWEBGL.bind(e),this._caps.maxDrawBuffers=this._gl.getParameter(e.MAX_DRAW_BUFFERS_WEBGL),this._gl.DRAW_FRAMEBUFFER=this._gl.FRAMEBUFFER;for(let t=0;t<16;t++)this._gl["COLOR_ATTACHMENT"+t+"_WEBGL"]=e["COLOR_ATTACHMENT"+t+"_WEBGL"]}}if(this._webGLVersion>1)this._caps.depthTextureExtension=!0;else{let e=this._gl.getExtension("WEBGL_depth_texture");null!=e&&(this._caps.depthTextureExtension=!0,this._gl.UNSIGNED_INT_24_8=e.UNSIGNED_INT_24_8_WEBGL)}if(this.disableVertexArrayObjects)this._caps.vertexArrayObject=!1;else if(this._webGLVersion>1)this._caps.vertexArrayObject=!0;else{let e=this._gl.getExtension("OES_vertex_array_object");null!=e&&(this._caps.vertexArrayObject=!0,this._gl.createVertexArray=e.createVertexArrayOES.bind(e),this._gl.bindVertexArray=e.bindVertexArrayOES.bind(e),this._gl.deleteVertexArray=e.deleteVertexArrayOES.bind(e))}if(this._webGLVersion>1)this._caps.instancedArrays=!0;else{let e=this._gl.getExtension("ANGLE_instanced_arrays");null!=e?(this._caps.instancedArrays=!0,this._gl.drawArraysInstanced=e.drawArraysInstancedANGLE.bind(e),this._gl.drawElementsInstanced=e.drawElementsInstancedANGLE.bind(e),this._gl.vertexAttribDivisor=e.vertexAttribDivisorANGLE.bind(e)):this._caps.instancedArrays=!1}if(this._gl.getShaderPrecisionFormat){let e=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.HIGH_FLOAT),t=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.HIGH_FLOAT);if(e&&t&&(this._caps.highPrecisionShaderSupported=0!==e.precision&&0!==t.precision,this._caps.shaderFloatPrecision=Math.min(e.precision,t.precision)),!this._shouldUseHighPrecisionShader){let e=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.MEDIUM_FLOAT),t=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.MEDIUM_FLOAT);e&&t&&(this._caps.shaderFloatPrecision=Math.min(e.precision,t.precision))}this._caps.shaderFloatPrecision<10&&(this._caps.shaderFloatPrecision=10)}if(this._webGLVersion>1)this._caps.blendMinMax=!0;else{let e=this._gl.getExtension("EXT_blend_minmax");null!=e&&(this._caps.blendMinMax=!0,this._gl.MAX=e.MAX_EXT,this._gl.MIN=e.MIN_EXT)}if(!this._caps.supportSRGBBuffers){if(this._webGLVersion>1)this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:WebGL2RenderingContext.SRGB,SRGB8:WebGL2RenderingContext.SRGB8,SRGB8_ALPHA8:WebGL2RenderingContext.SRGB8_ALPHA8};else{let e=this._gl.getExtension("EXT_sRGB");null!=e&&(this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:e.SRGB_EXT,SRGB8:e.SRGB_ALPHA_EXT,SRGB8_ALPHA8:e.SRGB_ALPHA_EXT})}if(this._creationOptions){let e=this._creationOptions.forceSRGBBufferSupportState;void 0!==e&&(this._caps.supportSRGBBuffers=this._caps.supportSRGBBuffers&&e)}}this._depthCullingState.depthTest=!0,this._depthCullingState.depthFunc=this._gl.LEQUAL,this._depthCullingState.depthMask=!0,this._maxSimultaneousTextures=this._caps.maxCombinedTexturesImageUnits;for(let e=0;e<this._maxSimultaneousTextures;e++)this._nextFreeTextureSlots.push(e);"Mali-G72"===this._glRenderer&&(this._caps.disableMorphTargetTexture=!0)}_initFeatures(){this._features={forceBitmapOverHTMLImageElement:"u"<typeof HTMLImageElement,supportRenderAndCopyToLodForFloatTextures:1!==this._webGLVersion,supportDepthStencilTexture:1!==this._webGLVersion,supportShadowSamplers:1!==this._webGLVersion,uniformBufferHardCheckMatrix:!1,allowTexturePrefiltering:1!==this._webGLVersion,trackUbosInFrame:!1,checkUbosContentBeforeUpload:!1,supportCSM:1!==this._webGLVersion,basisNeedsPOT:1===this._webGLVersion,support3DTextures:1!==this._webGLVersion,needTypeSuffixInShaderConstants:1!==this._webGLVersion,supportMSAA:1!==this._webGLVersion,supportSSAO2:1!==this._webGLVersion,supportIBLShadows:1!==this._webGLVersion,supportExtendedTextureFormats:1!==this._webGLVersion,supportSwitchCaseInShader:1!==this._webGLVersion,supportSyncTextureRead:!0,needsInvertingBitmap:!0,useUBOBindingCache:!0,needShaderCodeInlining:!1,needToAlwaysBindUniformBuffers:!1,supportRenderPasses:!1,supportSpriteInstancing:!0,forceVertexBufferStrideAndOffsetMultiple4Bytes:!1,_checkNonFloatVertexBuffersDontRecreatePipelineContext:!1}}get webGLVersion(){return this._webGLVersion}getClassName(){return"ThinEngine"}_prepareWorkingCanvas(){if(this._workingCanvas)return;this._workingCanvas=this.createCanvas(1,1);let e=this._workingCanvas.getContext("2d");e&&(this._workingContext=e)}getInfo(){return this.getGlInfo()}getGlInfo(){return{vendor:this._glVendor,renderer:this._glRenderer,version:this._glVersion}}extractDriverInfo(){let e=this.getGlInfo();return e&&e.renderer?e.renderer:""}getRenderWidth(e=!1){return!e&&this._currentRenderTarget?this._currentRenderTarget.width:this._framebufferDimensionsObject?this._framebufferDimensionsObject.framebufferWidth:this._gl.drawingBufferWidth}getRenderHeight(e=!1){return!e&&this._currentRenderTarget?this._currentRenderTarget.height:this._framebufferDimensionsObject?this._framebufferDimensionsObject.framebufferHeight:this._gl.drawingBufferHeight}clear(e,t,r,i=!1,s=0){let a=this.stencilStateComposer.useStencilGlobalOnly;this.stencilStateComposer.useStencilGlobalOnly=!0,this.applyStates(),this.stencilStateComposer.useStencilGlobalOnly=a;let n=0;if(t&&e){let t=!0;if(this._currentRenderTarget){let r=this._currentRenderTarget.texture?.format;if(8===r||9===r||10===r||11===r){let r=this._currentRenderTarget.texture?.type;7===r||5===r?(L._TempClearColorUint32[0]=255*e.r,L._TempClearColorUint32[1]=255*e.g,L._TempClearColorUint32[2]=255*e.b,L._TempClearColorUint32[3]=255*e.a,this._gl.clearBufferuiv(this._gl.COLOR,0,L._TempClearColorUint32)):(L._TempClearColorInt32[0]=255*e.r,L._TempClearColorInt32[1]=255*e.g,L._TempClearColorInt32[2]=255*e.b,L._TempClearColorInt32[3]=255*e.a,this._gl.clearBufferiv(this._gl.COLOR,0,L._TempClearColorInt32)),t=!1}}t&&(this._gl.clearColor(e.r,e.g,e.b,void 0!==e.a?e.a:1),n|=this._gl.COLOR_BUFFER_BIT)}r&&(this.useReverseDepthBuffer?(this._depthCullingState.depthFunc=this._gl.GEQUAL,this._gl.clearDepth(0)):this._gl.clearDepth(1),n|=this._gl.DEPTH_BUFFER_BIT),i&&(this._gl.clearStencil(s),n|=this._gl.STENCIL_BUFFER_BIT),this._gl.clear(n)}_viewport(e,t,r,i){(e!==this._viewportCached.x||t!==this._viewportCached.y||r!==this._viewportCached.z||i!==this._viewportCached.w)&&(this._viewportCached.x=e,this._viewportCached.y=t,this._viewportCached.z=r,this._viewportCached.w=i,this._gl.viewport(e,t,r,i))}endFrame(){super.endFrame(),this._badOS&&this.flushFramebuffer()}get performanceMonitor(){throw Error("Not Supported by ThinEngine")}bindFramebuffer(e,t=0,r,i,s,a=0,n=0){this._currentRenderTarget&&this._resolveAndGenerateMipMapsFramebuffer(this._currentRenderTarget),this._currentRenderTarget=e,this._bindUnboundFramebuffer(e._framebuffer);let _=this._gl;e.isMulti||(e.is2DArray||e.is3D?(_.framebufferTextureLayer(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,e.texture._hardwareTexture?.underlyingResource,a,n),e._currentLOD=a):e.isCube?_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_CUBE_MAP_POSITIVE_X+t,e.texture._hardwareTexture?.underlyingResource,a):e._currentLOD!==a&&(_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_2D,e.texture._hardwareTexture?.underlyingResource,a),e._currentLOD=a));let l=e._depthStencilTexture;if(l){e.is3D&&(e.texture.width!==l.width||e.texture.height!==l.height||e.texture.depth!==l.depth)&&g.Logger.Warn("Depth/Stencil attachment for 3D target must have same dimensions as color attachment");let r=e._depthStencilTextureWithStencil?_.DEPTH_STENCIL_ATTACHMENT:_.DEPTH_ATTACHMENT;e.is2DArray||e.is3D?_.framebufferTextureLayer(_.FRAMEBUFFER,r,l._hardwareTexture?.underlyingResource,a,n):e.isCube?_.framebufferTexture2D(_.FRAMEBUFFER,r,_.TEXTURE_CUBE_MAP_POSITIVE_X+t,l._hardwareTexture?.underlyingResource,a):_.framebufferTexture2D(_.FRAMEBUFFER,r,_.TEXTURE_2D,l._hardwareTexture?.underlyingResource,a)}e._MSAAFramebuffer&&this._bindUnboundFramebuffer(e._MSAAFramebuffer),this._cachedViewport&&!s?this.setViewport(this._cachedViewport,r,i):(!r&&(r=e.width,a&&(r/=Math.pow(2,a))),!i&&(i=e.height,a&&(i/=Math.pow(2,a))),this._viewport(0,0,r,i)),this.wipeCaches()}setStateCullFaceType(e,t){let r=this.cullBackFaces??e??!0?this._gl.BACK:this._gl.FRONT;(this._depthCullingState.cullFace!==r||t)&&(this._depthCullingState.cullFace=r)}setState(e,t=0,r,i=!1,s,a,n=0){(this._depthCullingState.cull!==e||r)&&(this._depthCullingState.cull=e),this.setStateCullFaceType(s,r),this.setZOffset(t),this.setZOffsetUnits(n);let _=i?this._gl.CW:this._gl.CCW;(this._depthCullingState.frontFace!==_||r)&&(this._depthCullingState.frontFace=_),this._stencilStateComposer.stencilMaterial=a}_resolveAndGenerateMipMapsFramebuffer(e,t=!1){e.disableAutomaticMSAAResolve||(e.isMulti?this.resolveMultiFramebuffer(e):this.resolveFramebuffer(e)),t||(e.isMulti?this.generateMipMapsMultiFramebuffer(e):this.generateMipMapsFramebuffer(e))}_bindUnboundFramebuffer(e){this._currentFramebuffer!==e&&(this._gl.bindFramebuffer(this._gl.FRAMEBUFFER,e),this._currentFramebuffer=e)}_currentFrameBufferIsDefaultFrameBuffer(){return null===this._currentFramebuffer}generateMipmaps(e){let t=this._getTextureTarget(e);this._bindTextureDirectly(t,e,!0),this._gl.generateMipmap(t),this._bindTextureDirectly(t,null)}unBindFramebuffer(e,t,r){this._currentRenderTarget=null,this._resolveAndGenerateMipMapsFramebuffer(e,t),r&&(e._MSAAFramebuffer&&this._bindUnboundFramebuffer(e._framebuffer),r()),this._bindUnboundFramebuffer(null)}generateMipMapsFramebuffer(e){!e.isMulti&&e.texture?.generateMipMaps&&!e.isCube&&this.generateMipmaps(e.texture)}resolveFramebuffer(e){let t=this._gl;if(!e._MSAAFramebuffer||e.isMulti)return;let r=e.resolveMSAAColors?t.COLOR_BUFFER_BIT:0;r|=e._generateDepthBuffer&&e.resolveMSAADepth?t.DEPTH_BUFFER_BIT:0,r|=e._generateStencilBuffer&&e.resolveMSAAStencil?t.STENCIL_BUFFER_BIT:0,t.bindFramebuffer(t.READ_FRAMEBUFFER,e._MSAAFramebuffer),t.bindFramebuffer(t.DRAW_FRAMEBUFFER,e._framebuffer),t.blitFramebuffer(0,0,e.width,e.height,0,0,e.width,e.height,r,t.NEAREST)}flushFramebuffer(){this._gl.flush()}restoreDefaultFramebuffer(){this._currentRenderTarget?this.unBindFramebuffer(this._currentRenderTarget):this._bindUnboundFramebuffer(null),this._cachedViewport&&this.setViewport(this._cachedViewport),this.wipeCaches()}_resetVertexBufferBinding(){this.bindArrayBuffer(null),this._cachedVertexBuffers=null}createVertexBuffer(e,t,r){return this._createVertexBuffer(e,this._gl.STATIC_DRAW)}_createVertexBuffer(e,t){let r=this._gl.createBuffer();if(!r)throw Error("Unable to create vertex buffer");let i=new T.WebGLDataBuffer(r);return this.bindArrayBuffer(i),"number"!=typeof e?e instanceof Array?(this._gl.bufferData(this._gl.ARRAY_BUFFER,new Float32Array(e),t),i.capacity=4*e.length):(this._gl.bufferData(this._gl.ARRAY_BUFFER,e,t),i.capacity=e.byteLength):(this._gl.bufferData(this._gl.ARRAY_BUFFER,new Uint8Array(e),t),i.capacity=e),this._resetVertexBufferBinding(),i.references=1,i}createDynamicVertexBuffer(e,t){return this._createVertexBuffer(e,this._gl.DYNAMIC_DRAW)}_resetIndexBufferBinding(){this.bindIndexBuffer(null),this._cachedIndexBuffer=null}createIndexBuffer(e,t,r){let i=this._gl.createBuffer(),s=new T.WebGLDataBuffer(i);if(!i)throw Error("Unable to create index buffer");this.bindIndexBuffer(s);let a=this._normalizeIndexData(e);return this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,a,t?this._gl.DYNAMIC_DRAW:this._gl.STATIC_DRAW),this._resetIndexBufferBinding(),s.references=1,s.is32Bits=4===a.BYTES_PER_ELEMENT,s}_normalizeIndexData(e){if(2===e.BYTES_PER_ELEMENT)return e;if(this._caps.uintIndices){if(e instanceof Uint32Array)return e;else for(let t=0;t<e.length;t++)if(e[t]>=65535)return new Uint32Array(e)}return new Uint16Array(e)}bindArrayBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ARRAY_BUFFER)}bindUniformBlock(e,t,r){let i=e.program,s=this._gl.getUniformBlockIndex(i,t);this._gl.uniformBlockBinding(i,s,r)}bindIndexBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ELEMENT_ARRAY_BUFFER)}_bindBuffer(e,t){(this._vaoRecordInProgress||this._currentBoundBuffer[t]!==e)&&(this._gl.bindBuffer(t,e?e.underlyingResource:null),this._currentBoundBuffer[t]=e)}updateArrayBuffer(e){this._gl.bufferSubData(this._gl.ARRAY_BUFFER,0,e)}_vertexAttribPointer(e,t,r,i,s,a,n){let _=this._currentBufferPointers[t];if(!_)return;let l=!1;_.active?(_.buffer!==e&&(_.buffer=e,l=!0),_.size!==r&&(_.size=r,l=!0),_.type!==i&&(_.type=i,l=!0),_.normalized!==s&&(_.normalized=s,l=!0),_.stride!==a&&(_.stride=a,l=!0),_.offset!==n&&(_.offset=n,l=!0)):(l=!0,_.active=!0,_.index=t,_.size=r,_.type=i,_.normalized=s,_.stride=a,_.offset=n,_.buffer=e),(l||this._vaoRecordInProgress)&&(this.bindArrayBuffer(e),i===this._gl.UNSIGNED_INT||i===this._gl.INT?this._gl.vertexAttribIPointer(t,r,i,a,n):this._gl.vertexAttribPointer(t,r,i,s,a,n))}_bindIndexBufferWithCache(e){null!=e&&this._cachedIndexBuffer!==e&&(this._cachedIndexBuffer=e,this.bindIndexBuffer(e),this._uintIndicesCurrentlySet=e.is32Bits)}_bindVertexBuffersAttributes(e,t,r){let i=t.getAttributesNames();this._vaoRecordInProgress||this._unbindVertexArrayObject(),this.unbindAllAttributes();for(let s=0;s<i.length;s++){let a=t.getAttributeLocation(s);if(a>=0){let t=i[s],n=null;if(r&&(n=r[t]),n||(n=e[t]),!n)continue;this._gl.enableVertexAttribArray(a),this._vaoRecordInProgress||(this._vertexAttribArraysEnabled[a]=!0);let _=n.getBuffer();_&&(this._vertexAttribPointer(_,a,n.getSize(),n.type,n.normalized,n.byteStride,n.byteOffset),n.getIsInstanced()&&(this._gl.vertexAttribDivisor(a,n.getInstanceDivisor()),this._vaoRecordInProgress||(this._currentInstanceLocations.push(a),this._currentInstanceBuffers.push(_))))}}}recordVertexArrayObject(e,t,r,i){let s=this._gl.createVertexArray();if(!s)throw Error("Unable to create VAO");return this._vaoRecordInProgress=!0,this._gl.bindVertexArray(s),this._mustWipeVertexAttributes=!0,this._bindVertexBuffersAttributes(e,r,i),this.bindIndexBuffer(t),this._vaoRecordInProgress=!1,this._gl.bindVertexArray(null),s}bindVertexArrayObject(e,t){this._cachedVertexArrayObject!==e&&(this._cachedVertexArrayObject=e,this._gl.bindVertexArray(e),this._cachedVertexBuffers=null,this._cachedIndexBuffer=null,this._uintIndicesCurrentlySet=null!=t&&t.is32Bits,this._mustWipeVertexAttributes=!0)}bindBuffersDirectly(e,t,r,i,s){if(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==s){this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=s;let t=s.getAttributesCount();this._unbindVertexArrayObject(),this.unbindAllAttributes();let a=0;for(let n=0;n<t;n++)if(n<r.length){let t=s.getAttributeLocation(n);t>=0&&(this._gl.enableVertexAttribArray(t),this._vertexAttribArraysEnabled[t]=!0,this._vertexAttribPointer(e,t,r[n],this._gl.FLOAT,!1,i,a)),a+=4*r[n]}}this._bindIndexBufferWithCache(t)}_unbindVertexArrayObject(){this._cachedVertexArrayObject&&(this._cachedVertexArrayObject=null,this._gl.bindVertexArray(null))}bindBuffers(e,t,r,i){(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==r)&&(this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=r,this._bindVertexBuffersAttributes(e,r,i)),this._bindIndexBufferWithCache(t)}unbindInstanceAttributes(){let e;for(let t=0,r=this._currentInstanceLocations.length;t<r;t++){let r=this._currentInstanceBuffers[t];e!=r&&r.references&&(e=r,this.bindArrayBuffer(r));let i=this._currentInstanceLocations[t];this._gl.vertexAttribDivisor(i,0)}this._currentInstanceBuffers.length=0,this._currentInstanceLocations.length=0}releaseVertexArrayObject(e){this._gl.deleteVertexArray(e)}_releaseBuffer(e){return e.references--,0===e.references&&(this._deleteBuffer(e),!0)}_deleteBuffer(e){this._gl.deleteBuffer(e.underlyingResource)}updateAndBindInstancesBuffer(e,t,r){if(this.bindArrayBuffer(e),t&&this._gl.bufferSubData(this._gl.ARRAY_BUFFER,0,t),void 0!==r[0].index)this.bindInstancesBuffer(e,r,!0);else for(let t=0;t<4;t++){let i=r[t];this._vertexAttribArraysEnabled[i]||(this._gl.enableVertexAttribArray(i),this._vertexAttribArraysEnabled[i]=!0),this._vertexAttribPointer(e,i,4,this._gl.FLOAT,!1,64,16*t),this._gl.vertexAttribDivisor(i,1),this._currentInstanceLocations.push(i),this._currentInstanceBuffers.push(e)}}bindInstancesBuffer(e,t,r=!0){this.bindArrayBuffer(e);let i=0;if(r)for(let e=0;e<t.length;e++)i+=4*t[e].attributeSize;for(let r=0;r<t.length;r++){let s=t[r];void 0===s.index&&(s.index=this._currentEffect.getAttributeLocationByName(s.attributeName)),s.index<0||(this._vertexAttribArraysEnabled[s.index]||(this._gl.enableVertexAttribArray(s.index),this._vertexAttribArraysEnabled[s.index]=!0),this._vertexAttribPointer(e,s.index,s.attributeSize,s.attributeType||this._gl.FLOAT,s.normalized||!1,i,s.offset),this._gl.vertexAttribDivisor(s.index,void 0===s.divisor?1:s.divisor),this._currentInstanceLocations.push(s.index),this._currentInstanceBuffers.push(e))}}disableInstanceAttributeByName(e){if(!this._currentEffect)return;let t=this._currentEffect.getAttributeLocationByName(e);this.disableInstanceAttribute(t)}disableInstanceAttribute(e){let t,r=!1;for(;-1!==(t=this._currentInstanceLocations.indexOf(e));)this._currentInstanceLocations.splice(t,1),this._currentInstanceBuffers.splice(t,1),r=!0;r&&(this._gl.vertexAttribDivisor(e,0),this.disableAttributeByIndex(e))}disableAttributeByIndex(e){this._gl.disableVertexAttribArray(e),this._vertexAttribArraysEnabled[e]=!1,this._currentBufferPointers[e].active=!1}draw(e,t,r,i){this.drawElementsType(+!e,t,r,i)}drawPointClouds(e,t,r){this.drawArraysType(2,e,t,r)}drawUnIndexed(e,t,r,i){this.drawArraysType(+!e,t,r,i)}drawElementsType(e,t,r,i){this.applyStates(),this._reportDrawCall();let s=this._drawMode(e),a=this._uintIndicesCurrentlySet?this._gl.UNSIGNED_INT:this._gl.UNSIGNED_SHORT,n=this._uintIndicesCurrentlySet?4:2;i?this._gl.drawElementsInstanced(s,r,a,t*n,i):this._gl.drawElements(s,r,a,t*n)}drawArraysType(e,t,r,i){this.applyStates(),this._reportDrawCall();let s=this._drawMode(e);i?this._gl.drawArraysInstanced(s,t,r,i):this._gl.drawArrays(s,t,r)}_drawMode(e){switch(e){case 0:default:return this._gl.TRIANGLES;case 2:case 3:return this._gl.POINTS;case 1:case 4:return this._gl.LINES;case 5:return this._gl.LINE_LOOP;case 6:return this._gl.LINE_STRIP;case 7:return this._gl.TRIANGLE_STRIP;case 8:return this._gl.TRIANGLE_FAN}}_releaseEffect(e){this._compiledEffects[e._key]&&delete this._compiledEffects[e._key];let t=e.getPipelineContext();t&&this._deletePipelineContext(t)}_deletePipelineContext(e){e&&e.program&&(e.program.__SPECTOR_rebuildProgram=null,(0,S.resetCachedPipeline)(e),this._gl&&(this._currentProgram===e.program&&this._setProgram(null),this._gl.deleteProgram(e.program)))}_getGlobalDefines(e){return(0,x._GetGlobalDefines)(e,this.isNDCHalfZRange,this.useReverseDepthBuffer,this.useExactSrgbConversions)}createEffect(e,t,r,i,s,a,n,_,l,o=0,c){let g="string"==typeof e?e:e.vertexToken||e.vertexSource||e.vertexElement||e.vertex,f="string"==typeof e?e:e.fragmentToken||e.fragmentSource||e.fragmentElement||e.fragment,d=this._getGlobalDefines(),E=void 0!==t.attributes,T=s??t.defines??"";d&&(T+=d);let R=g+"+"+f+"@"+T;if(this._compiledEffects[R]){let e=this._compiledEffects[R];return n&&e.isReady()&&n(e),e._refCount++,e}this._gl&&(0,u.getStateObject)(this._gl);let p=new h.Effect(e,t,E?this:r,i,this,s,a,n,_,l,R,t.shaderLanguage??o,t.extraInitializationsAsync??c);return this._compiledEffects[R]=p,p}_getShaderSource(e){return this._gl.getShaderSource(e)}createRawShaderProgram(e,t,r,i,s=null){let a=(0,u.getStateObject)(this._gl);return a._contextWasLost=this._contextWasLost,a.validateShaderPrograms=this.validateShaderPrograms,(0,u.createRawShaderProgram)(e,t,r,i||this._gl,s)}createShaderProgram(e,t,r,i,s,a=null){let n=(0,u.getStateObject)(this._gl);return n._contextWasLost=this._contextWasLost,n.validateShaderPrograms=this.validateShaderPrograms,(0,u.createShaderProgram)(e,t,r,i,s||this._gl,a)}inlineShaderCode(e){return e}createPipelineContext(e){this._gl&&((0,u.getStateObject)(this._gl).parallelShaderCompile=this._caps.parallelShaderCompile);let t=(0,u.createPipelineContext)(this._gl,e);return t.engine=this,t}createMaterialContext(){}createDrawContext(){}_finalizePipelineContext(e){return(0,u._finalizePipelineContext)(e,this._gl,this.validateShaderPrograms)}_preparePipelineContextAsync(e,t,r,i,s,a,n,_,l,h,o){let c=(0,u.getStateObject)(this._gl);return c._contextWasLost=this._contextWasLost,c.validateShaderPrograms=this.validateShaderPrograms,c._createShaderProgramInjection=this._createShaderProgram.bind(this),c.createRawShaderProgramInjection=this.createRawShaderProgram.bind(this),c.createShaderProgramInjection=this.createShaderProgram.bind(this),c.loadFileInjection=this._loadFile.bind(this),(0,u._preparePipelineContext)(e,t,r,i,s,a,n,_,l,h,o)}_createShaderProgram(e,t,r,i,s=null){return(0,u._createShaderProgram)(e,t,r,i,s)}_isRenderingStateCompiled(e){return!this._isDisposed&&(0,u._isRenderingStateCompiled)(e,this._gl,this.validateShaderPrograms)}_executeWhenRenderingStateIsCompiled(e,t){(0,u._executeWhenRenderingStateIsCompiled)(e,t)}getUniforms(e,t){let r=[];for(let i=0;i<t.length;i++)r.push(this._gl.getUniformLocation(e.program,t[i]));return r}getAttributes(e,t){let r=[];for(let i=0;i<t.length;i++)try{r.push(this._gl.getAttribLocation(e.program,t[i]))}catch(e){r.push(-1)}return r}enableEffect(e){(e=null!==e&&(0,c.IsWrapper)(e)?e.effect:e)&&e!==this._currentEffect&&(this._stencilStateComposer.stencilMaterial=void 0,this.bindSamplers(e),this._currentEffect=e,e.onBind&&e.onBind(e),e._onBindObservable&&e._onBindObservable.notifyObservers(e))}setInt(e,t){return!!e&&(this._gl.uniform1i(e,t),!0)}setInt2(e,t,r){return!!e&&(this._gl.uniform2i(e,t,r),!0)}setInt3(e,t,r,i){return!!e&&(this._gl.uniform3i(e,t,r,i),!0)}setInt4(e,t,r,i,s){return!!e&&(this._gl.uniform4i(e,t,r,i,s),!0)}setIntArray(e,t){return!!e&&(this._gl.uniform1iv(e,t),!0)}setIntArray2(e,t){return!!e&&t.length%2==0&&(this._gl.uniform2iv(e,t),!0)}setIntArray3(e,t){return!!e&&t.length%3==0&&(this._gl.uniform3iv(e,t),!0)}setIntArray4(e,t){return!!e&&t.length%4==0&&(this._gl.uniform4iv(e,t),!0)}setUInt(e,t){return!!e&&(this._gl.uniform1ui(e,t),!0)}setUInt2(e,t,r){return!!e&&(this._gl.uniform2ui(e,t,r),!0)}setUInt3(e,t,r,i){return!!e&&(this._gl.uniform3ui(e,t,r,i),!0)}setUInt4(e,t,r,i,s){return!!e&&(this._gl.uniform4ui(e,t,r,i,s),!0)}setUIntArray(e,t){return!!e&&(this._gl.uniform1uiv(e,t),!0)}setUIntArray2(e,t){return!!e&&t.length%2==0&&(this._gl.uniform2uiv(e,t),!0)}setUIntArray3(e,t){return!!e&&t.length%3==0&&(this._gl.uniform3uiv(e,t),!0)}setUIntArray4(e,t){return!!e&&t.length%4==0&&(this._gl.uniform4uiv(e,t),!0)}setArray(e,t){return!!e&&!(t.length<1)&&(this._gl.uniform1fv(e,t),!0)}setArray2(e,t){return!!e&&t.length%2==0&&(this._gl.uniform2fv(e,t),!0)}setArray3(e,t){return!!e&&t.length%3==0&&(this._gl.uniform3fv(e,t),!0)}setArray4(e,t){return!!e&&t.length%4==0&&(this._gl.uniform4fv(e,t),!0)}setMatrices(e,t){return!!e&&(this._gl.uniformMatrix4fv(e,!1,t),!0)}setMatrix3x3(e,t){return!!e&&(this._gl.uniformMatrix3fv(e,!1,t),!0)}setMatrix2x2(e,t){return!!e&&(this._gl.uniformMatrix2fv(e,!1,t),!0)}setFloat(e,t){return!!e&&(this._gl.uniform1f(e,t),!0)}setFloat2(e,t,r){return!!e&&(this._gl.uniform2f(e,t,r),!0)}setFloat3(e,t,r,i){return!!e&&(this._gl.uniform3f(e,t,r,i),!0)}setFloat4(e,t,r,i,s){return!!e&&(this._gl.uniform4f(e,t,r,i,s),!0)}applyStates(){if(this._depthCullingState.apply(this._gl),this._stencilStateComposer.apply(this._gl),this._alphaState.apply(this._gl,this._currentRenderTarget&&this._currentRenderTarget.textures?this._currentRenderTarget.textures.length:1),this._colorWriteChanged){this._colorWriteChanged=!1;let e=this._colorWrite;this._gl.colorMask(e,e,e,e)}}wipeCaches(e){(!this.preventCacheWipeBetweenFrames||e)&&(this._currentEffect=null,this._viewportCached.x=0,this._viewportCached.y=0,this._viewportCached.z=0,this._viewportCached.w=0,this._unbindVertexArrayObject(),e&&(this._currentProgram=null,this.resetTextureCache(),this._stencilStateComposer.reset(),this._depthCullingState.reset(),this._depthCullingState.depthFunc=this._gl.LEQUAL,this._alphaState.reset(),this._resetAlphaMode(),this._colorWrite=!0,this._colorWriteChanged=!0,this._unpackFlipYCached=null,this._gl.pixelStorei(this._gl.UNPACK_COLORSPACE_CONVERSION_WEBGL,this._gl.NONE),this._gl.pixelStorei(this._gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),this._mustWipeVertexAttributes=!0,this.unbindAllAttributes()),this._resetVertexBufferBinding(),this._cachedIndexBuffer=null,this._cachedEffectForVertexBuffers=null,this.bindIndexBuffer(null))}_getSamplingParameters(e,t){let r=this._gl,i=r.NEAREST,s=r.NEAREST,a=!1;switch(e){case 11:i=r.LINEAR,s=t?r.LINEAR_MIPMAP_NEAREST:r.LINEAR;break;case 3:i=r.LINEAR,a=!0,s=t?r.LINEAR_MIPMAP_LINEAR:r.LINEAR;break;case 8:a=!0,i=r.NEAREST,s=t?r.NEAREST_MIPMAP_LINEAR:r.NEAREST;break;case 4:i=r.NEAREST,s=t?r.NEAREST_MIPMAP_NEAREST:r.NEAREST;break;case 5:i=r.NEAREST,s=t?r.LINEAR_MIPMAP_NEAREST:r.LINEAR;break;case 6:a=!0,i=r.NEAREST,s=t?r.LINEAR_MIPMAP_LINEAR:r.LINEAR;break;case 7:i=r.NEAREST,s=r.LINEAR;break;case 1:i=r.NEAREST,s=r.NEAREST;break;case 9:i=r.LINEAR,s=t?r.NEAREST_MIPMAP_NEAREST:r.NEAREST;break;case 10:a=!0,i=r.LINEAR,s=t?r.NEAREST_MIPMAP_LINEAR:r.NEAREST;break;case 2:i=r.LINEAR,s=r.LINEAR;break;case 12:i=r.LINEAR,s=r.NEAREST}return{min:s,mag:i,hasMipMaps:a}}_createTexture(){let e=this._gl.createTexture();if(!e)throw Error("Unable to create texture");return e}_createHardwareTexture(){return new p(this._createTexture(),this._gl)}_createInternalTexture(e,t,r=!0,i=0){let s,a,n=!1,_=0,l=3,h=5,u=!1,o=1,c=!1,f=0,d=!1;void 0!==t&&"object"==typeof t?(s=!!t.generateMipMaps,n=!!t.createMipMaps,_=void 0===t.type?0:t.type,l=void 0===t.samplingMode?3:t.samplingMode,h=void 0===t.format?5:t.format,u=void 0!==t.useSRGBBuffer&&t.useSRGBBuffer,o=t.samples??1,a=t.label,c=!!t.createMSAATexture,f=t.comparisonFunction||0,d=!!t.isCube):s=!!t,u&&(u=this._caps.supportSRGBBuffers&&(this.webGLVersion>1||this.isWebGPU)),(1!==_||this._caps.textureFloatLinearFiltering)&&(2!==_||this._caps.textureHalfFloatLinearFiltering)||(l=1),1!==_||this._caps.textureFloat||(_=0,g.Logger.Warn("Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE"));let E=b(h),T=m(h),R=this._gl,p=new A.InternalTexture(this,i),x=e.width||e,S=e.height||e,B=e.depth||0,C=e.layers||0,P=this._getSamplingParameters(l,(s||n)&&!E),L=0!==C?R.TEXTURE_2D_ARRAY:0!==B?R.TEXTURE_3D:d?R.TEXTURE_CUBE_MAP:R.TEXTURE_2D,M=E?this._getInternalFormatFromDepthTextureFormat(h,!0,T):this._getRGBABufferInternalSizedFormat(_,h,u),G=E?T?R.DEPTH_STENCIL:R.DEPTH_COMPONENT:this._getInternalFormat(h),I=E?this._getWebGLTextureTypeFromDepthTextureFormat(h):this._getWebGLTextureType(_);if(this._bindTextureDirectly(L,p),0!==C)p.is2DArray=!0,R.texImage3D(L,0,M,x,S,C,0,G,I,null);else if(0!==B)p.is3D=!0,R.texImage3D(L,0,M,x,S,B,0,G,I,null);else if(d){p.isCube=!0;for(let e=0;e<6;e++)R.texImage2D(R.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,M,x,S,0,G,I,null)}else R.texImage2D(L,0,M,x,S,0,G,I,null);if(R.texParameteri(L,R.TEXTURE_MAG_FILTER,P.mag),R.texParameteri(L,R.TEXTURE_MIN_FILTER,P.min),R.texParameteri(L,R.TEXTURE_WRAP_S,R.CLAMP_TO_EDGE),R.texParameteri(L,R.TEXTURE_WRAP_T,R.CLAMP_TO_EDGE),E&&this.webGLVersion>1&&(0===f?(R.texParameteri(L,R.TEXTURE_COMPARE_FUNC,515),R.texParameteri(L,R.TEXTURE_COMPARE_MODE,R.NONE)):(R.texParameteri(L,R.TEXTURE_COMPARE_FUNC,f),R.texParameteri(L,R.TEXTURE_COMPARE_MODE,R.COMPARE_REF_TO_TEXTURE))),(s||n)&&this._gl.generateMipmap(L),this._bindTextureDirectly(L,null),p._useSRGBBuffer=u,p.baseWidth=x,p.baseHeight=S,p.width=x,p.height=S,p.depth=C||B,p.isReady=!0,p.samples=o,p.generateMipMaps=s,p.samplingMode=l,p.type=_,p.format=h,p.label=a,p.comparisonFunction=f,this._internalTexturesCache.push(p),c){let e;if(!(e=b(p.format)?this._setupFramebufferDepthAttachments(m(p.format),19!==p.format,p.width,p.height,o,p.format,!0):this._createRenderBuffer(p.width,p.height,o,-1,this._getRGBABufferInternalSizedFormat(p.type,p.format,p._useSRGBBuffer),-1)))throw Error("Unable to create render buffer");p._autoMSAAManagement=!0;let t=p._hardwareTexture;t||(t=p._hardwareTexture=this._createHardwareTexture()),t.addMSAARenderBuffer(e)}return p}_getUseSRGBBuffer(e,t){return e&&this._caps.supportSRGBBuffers&&(this.webGLVersion>1||t)}createTexture(e,t,r,i,s=3,a=null,n=null,_=null,l=null,h=null,u=null,o,c,g,f){return this._createTextureBase(e,t,r,i,s,a,n,(...e)=>this._prepareWebGLTexture(...e,h),(e,t,r,s,a,n)=>{let _=this._gl,l=r.width===e&&r.height===t;a._creationFlags=g??0;let h=this._getTexImageParametersForCreateTexture(a.format,a._useSRGBBuffer);if(l)return _.texImage2D(_.TEXTURE_2D,0,h.internalFormat,h.format,h.type,r),!1;let u=this._caps.maxTextureSize;if(r.width>u||r.height>u||!this._supportsHardwareTextureRescaling)return this._prepareWorkingCanvas(),!!this._workingCanvas&&!!this._workingContext&&(this._workingCanvas.width=e,this._workingCanvas.height=t,this._workingContext.drawImage(r,0,0,r.width,r.height,0,0,e,t),_.texImage2D(_.TEXTURE_2D,0,h.internalFormat,h.format,h.type,this._workingCanvas),a.width=e,a.height=t,!1);{let e=new A.InternalTexture(this,2);this._bindTextureDirectly(_.TEXTURE_2D,e,!0),_.texImage2D(_.TEXTURE_2D,0,h.internalFormat,h.format,h.type,r),this._rescaleTexture(e,a,i,h.format,()=>{this._releaseTexture(e),this._bindTextureDirectly(_.TEXTURE_2D,a,!0),n()})}return!0},_,l,h,u,o,c,f)}_getTexImageParametersForCreateTexture(e,t){let r,i;return 1===this.webGLVersion?i=r=this._getInternalFormat(e,t):(r=this._getInternalFormat(e,!1),i=this._getRGBABufferInternalSizedFormat(0,e,t)),{internalFormat:i,format:r,type:this._gl.UNSIGNED_BYTE}}_rescaleTexture(e,t,r,i,s){}_unpackFlipY(e){this._unpackFlipYCached!==e&&(this._gl.pixelStorei(this._gl.UNPACK_FLIP_Y_WEBGL,+!!e),this.enableUnpackFlipYCached&&(this._unpackFlipYCached=e))}_getUnpackAlignement(){return this._gl.getParameter(this._gl.UNPACK_ALIGNMENT)}_getTextureTarget(e){return e.isCube?this._gl.TEXTURE_CUBE_MAP:e.is3D?this._gl.TEXTURE_3D:e.is2DArray||e.isMultiview?this._gl.TEXTURE_2D_ARRAY:this._gl.TEXTURE_2D}updateTextureSamplingMode(e,t,r=!1){let i=this._getTextureTarget(t),s=this._getSamplingParameters(e,t.useMipMaps||r);this._setTextureParameterInteger(i,this._gl.TEXTURE_MAG_FILTER,s.mag,t),this._setTextureParameterInteger(i,this._gl.TEXTURE_MIN_FILTER,s.min),r&&s.hasMipMaps&&(t.generateMipMaps=!0,this._gl.generateMipmap(i)),this._bindTextureDirectly(i,null),t.samplingMode=e}updateTextureDimensions(e,t,r,i=1){}updateTextureWrappingMode(e,t,r=null,i=null){let s=this._getTextureTarget(e);null!==t&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t),e),e._cachedWrapU=t),null!==r&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(r),e),e._cachedWrapV=r),(e.is2DArray||e.is3D)&&null!==i&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(i),e),e._cachedWrapR=i),this._bindTextureDirectly(s,null)}_uploadCompressedDataToTextureDirectly(e,t,r,i,s,a=0,n=0){let _=this._gl,l=_.TEXTURE_2D;if(e.isCube&&(l=_.TEXTURE_CUBE_MAP_POSITIVE_X+a),e._useSRGBBuffer)switch(t){case 37492:case 36196:this._caps.etc2?t=_.COMPRESSED_SRGB8_ETC2:e._useSRGBBuffer=!1;break;case 37496:this._caps.etc2?t=_.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:e._useSRGBBuffer=!1;break;case 36492:t=_.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT;break;case 37808:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR;break;case 37809:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR;break;case 37810:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR;break;case 37811:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR;break;case 37812:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR;break;case 37813:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR;break;case 37814:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR;break;case 37815:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR;break;case 37816:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR;break;case 37817:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR;break;case 37818:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR;break;case 37819:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR;break;case 37820:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR;break;case 37821:t=_.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR;break;case 33776:this._caps.s3tc_srgb?t=_.COMPRESSED_SRGB_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33777:this._caps.s3tc_srgb?t=_.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33779:this._caps.s3tc_srgb?t=_.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:e._useSRGBBuffer=!1;break;default:e._useSRGBBuffer=!1}if(e.generateMipMaps){let a=e._hardwareTexture;a.memoryAllocated||(_.texStorage2D(e.isCube?_.TEXTURE_CUBE_MAP:_.TEXTURE_2D,Math.floor(Math.log2(Math.max(r,i)))+1,t,e.width,e.height),a.memoryAllocated=!0),this._gl.compressedTexSubImage2D(l,n,0,0,r,i,t,s)}else this._gl.compressedTexImage2D(l,n,t,r,i,0,s)}_uploadDataToTextureDirectly(e,t,r=0,i=0,s,a=!1){let n=this._gl,_=this._getWebGLTextureType(e.type),l=this._getInternalFormat(e.format),h=void 0===s?this._getRGBABufferInternalSizedFormat(e.type,e.format,e._useSRGBBuffer):this._getInternalFormat(s,e._useSRGBBuffer);this._unpackFlipY(e.invertY);let u=n.TEXTURE_2D;e.isCube&&(u=n.TEXTURE_CUBE_MAP_POSITIVE_X+r);let o=Math.round(Math.log(e.width)*Math.LOG2E),c=Math.round(Math.log(e.height)*Math.LOG2E),g=a?e.width:Math.pow(2,Math.max(o-i,0)),f=a?e.height:Math.pow(2,Math.max(c-i,0));n.texImage2D(u,i,h,g,f,0,l,_,t)}updateTextureData(e,t,r,i,s,a,n=0,_=0,l=!1){let h=this._gl,u=this._getWebGLTextureType(e.type),o=this._getInternalFormat(e.format);this._unpackFlipY(e.invertY);let c=h.TEXTURE_2D,g=h.TEXTURE_2D;e.isCube&&(g=h.TEXTURE_CUBE_MAP_POSITIVE_X+n,c=h.TEXTURE_CUBE_MAP),this._bindTextureDirectly(c,e,!0),h.texSubImage2D(g,_,r,i,s,a,o,u,t),l&&this._gl.generateMipmap(g),this._bindTextureDirectly(c,null)}_uploadArrayBufferViewToTexture(e,t,r=0,i=0){let s=this._gl,a=e.isCube?s.TEXTURE_CUBE_MAP:s.TEXTURE_2D;this._bindTextureDirectly(a,e,!0),this._uploadDataToTextureDirectly(e,t,r,i),this._bindTextureDirectly(a,null,!0)}_prepareWebGLTextureContinuation(e,t,r,i,s){let a=this._gl;if(!a)return;let n=this._getSamplingParameters(s,!r);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,n.mag),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,n.min),r||i||a.generateMipmap(a.TEXTURE_2D),this._bindTextureDirectly(a.TEXTURE_2D,null),t&&t.removePendingData(e),e.onLoadedObservable.notifyObservers(e),e.onLoadedObservable.clear()}_prepareWebGLTexture(e,t,r,i,s,a,n,_,l,h){let u=this.getCaps().maxTextureSize,o=Math.min(u,this.needPOTTextures?(0,R.GetExponentOfTwo)(i.width,u):i.width),c=Math.min(u,this.needPOTTextures?(0,R.GetExponentOfTwo)(i.height,u):i.height),g=this._gl;if(g){if(!e._hardwareTexture){r&&r.removePendingData(e);return}this._bindTextureDirectly(g.TEXTURE_2D,e,!0),this._unpackFlipY(void 0===s||!!s),e.baseWidth=i.width,e.baseHeight=i.height,e.width=o,e.height=c,e.isReady=!0,e.type=-1!==e.type?e.type:0,e.format=-1!==e.format?e.format:h??(".jpg"!==t||e._useSRGBBuffer?5:4),_(o,c,i,t,e,()=>{this._prepareWebGLTextureContinuation(e,r,a,n,l)})||this._prepareWebGLTextureContinuation(e,r,a,n,l)}}_getInternalFormatFromDepthTextureFormat(e,t,r){let i=this._gl;if(!t)return i.STENCIL_INDEX8;let s=r?i.DEPTH_STENCIL:i.DEPTH_COMPONENT;return this.webGLVersion>1?15===e?s=i.DEPTH_COMPONENT16:16===e?s=i.DEPTH_COMPONENT24:17===e||13===e?s=r?i.DEPTH24_STENCIL8:i.DEPTH_COMPONENT24:14===e?s=i.DEPTH_COMPONENT32F:18===e&&(s=r?i.DEPTH32F_STENCIL8:i.DEPTH_COMPONENT32F):s=i.DEPTH_COMPONENT16,s}_getWebGLTextureTypeFromDepthTextureFormat(e){let t=this._gl,r=t.UNSIGNED_INT;return 15===e?r=t.UNSIGNED_SHORT:17===e||13===e?r=t.UNSIGNED_INT_24_8:14===e?r=t.FLOAT:18===e?r=t.FLOAT_32_UNSIGNED_INT_24_8_REV:19===e&&(r=t.UNSIGNED_BYTE),r}_setupFramebufferDepthAttachments(e,t,r,i,s=1,a,n=!1){let _=this._gl;a=a??(e?13:14);let l=this._getInternalFormatFromDepthTextureFormat(a,t,e);return e&&t?this._createRenderBuffer(r,i,s,_.DEPTH_STENCIL,l,n?-1:_.DEPTH_STENCIL_ATTACHMENT):t?this._createRenderBuffer(r,i,s,l,l,n?-1:_.DEPTH_ATTACHMENT):e?this._createRenderBuffer(r,i,s,l,l,n?-1:_.STENCIL_ATTACHMENT):null}_createRenderBuffer(e,t,r,i,s,a,n=!0){let _=this._gl.createRenderbuffer();return this._updateRenderBuffer(_,e,t,r,i,s,a,n)}_updateRenderBuffer(e,t,r,i,s,a,n,_=!0){let l=this._gl;return l.bindRenderbuffer(l.RENDERBUFFER,e),i>1&&l.renderbufferStorageMultisample?l.renderbufferStorageMultisample(l.RENDERBUFFER,i,a,t,r):l.renderbufferStorage(l.RENDERBUFFER,s,t,r),-1!==n&&l.framebufferRenderbuffer(l.FRAMEBUFFER,n,l.RENDERBUFFER,e),_&&l.bindRenderbuffer(l.RENDERBUFFER,null),e}_releaseTexture(e){this._deleteTexture(e._hardwareTexture),this.unbindAllTextures();let t=this._internalTexturesCache.indexOf(e);-1!==t&&this._internalTexturesCache.splice(t,1),e._lodTextureHigh&&e._lodTextureHigh.dispose(),e._lodTextureMid&&e._lodTextureMid.dispose(),e._lodTextureLow&&e._lodTextureLow.dispose(),e._irradianceTexture&&e._irradianceTexture.dispose()}_deleteTexture(e){e?.release()}_setProgram(e){this._currentProgram!==e&&((0,u._setProgram)(e,this._gl),this._currentProgram=e)}bindSamplers(e){let t=e.getPipelineContext();this._setProgram(t.program);let r=e.getSamplers();for(let t=0;t<r.length;t++){let i=e.getUniform(r[t]);i&&(this._boundUniforms[t]=i)}this._currentEffect=null}_activateCurrentTexture(){this._currentTextureChannel!==this._activeChannel&&(this._gl.activeTexture(this._gl.TEXTURE0+this._activeChannel),this._currentTextureChannel=this._activeChannel)}_bindTextureDirectly(e,t,r=!1,i=!1){let s=!1,a=t&&t._associatedChannel>-1;if(r&&a&&(this._activeChannel=t._associatedChannel),this._boundTexturesCache[this._activeChannel]!==t||i){if(this._activateCurrentTexture(),t&&t.isMultiview)throw g.Logger.Error(["_bindTextureDirectly called with a multiview texture!",e,t]),"_bindTextureDirectly called with a multiview texture!";this._gl.bindTexture(e,t?._hardwareTexture?.underlyingResource??null),this._boundTexturesCache[this._activeChannel]=t,t&&(t._associatedChannel=this._activeChannel)}else r&&(s=!0,this._activateCurrentTexture());return a&&!r&&this._bindSamplerUniformToChannel(t._associatedChannel,this._activeChannel),s}_bindTexture(e,t,r){if(void 0===e)return;t&&(t._associatedChannel=e),this._activeChannel=e;let i=t?this._getTextureTarget(t):this._gl.TEXTURE_2D;this._bindTextureDirectly(i,t)}unbindAllTextures(){for(let e=0;e<this._maxSimultaneousTextures;e++)this._activeChannel=e,this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),this.webGLVersion>1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))}setTexture(e,t,r,i){void 0!==e&&(t&&(this._boundUniforms[e]=t),this._setTexture(e,r))}_bindSamplerUniformToChannel(e,t){let r=this._boundUniforms[e];r&&r._currentState!==t&&(this._gl.uniform1i(r,t),r._currentState=t)}_getTextureWrapMode(e){switch(e){case 1:break;case 0:return this._gl.CLAMP_TO_EDGE;case 2:return this._gl.MIRRORED_REPEAT}return this._gl.REPEAT}_setTexture(e,t,r=!1,i=!1,s=""){let a;if(!t)return null!=this._boundTexturesCache[e]&&(this._activeChannel=e,this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),this.webGLVersion>1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))),!1;if(t.video){this._activeChannel=e;let r=t.getInternalTexture();r&&(r._associatedChannel=e),t.update()}else if(4===t.delayLoadState)return t.delayLoad(),!1;a=i?t.depthStencilTexture:t.isReady()?t.getInternalTexture():t.isCube?this.emptyCubeTexture:t.is3D?this.emptyTexture3D:t.is2DArray?this.emptyTexture2DArray:this.emptyTexture,!r&&a&&(a._associatedChannel=e);let n=!0;this._boundTexturesCache[e]===a&&(r||this._bindSamplerUniformToChannel(a._associatedChannel,e),n=!1),this._activeChannel=e;let _=this._getTextureTarget(a);if(n&&this._bindTextureDirectly(_,a,r),a&&!a.isMultiview){if(a.isCube&&a._cachedCoordinatesMode!==t.coordinatesMode){a._cachedCoordinatesMode=t.coordinatesMode;let e=+(3!==t.coordinatesMode&&5!==t.coordinatesMode);t.wrapU=e,t.wrapV=e}a._cachedWrapU!==t.wrapU&&(a._cachedWrapU=t.wrapU,this._setTextureParameterInteger(_,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t.wrapU),a)),a._cachedWrapV!==t.wrapV&&(a._cachedWrapV=t.wrapV,this._setTextureParameterInteger(_,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(t.wrapV),a)),a.is3D&&a._cachedWrapR!==t.wrapR&&(a._cachedWrapR=t.wrapR,this._setTextureParameterInteger(_,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(t.wrapR),a)),this._setAnisotropicLevel(_,a,t.anisotropicFilteringLevel)}return!0}setTextureArray(e,t,r,i){if(void 0!==e&&t){this._textureUnits&&this._textureUnits.length===r.length||(this._textureUnits=new Int32Array(r.length));for(let t=0;t<r.length;t++){let i=r[t].getInternalTexture();i?(this._textureUnits[t]=e+t,i._associatedChannel=e+t):this._textureUnits[t]=-1}this._gl.uniform1iv(t,this._textureUnits);for(let e=0;e<r.length;e++)this._setTexture(this._textureUnits[e],r[e],!0)}}_setAnisotropicLevel(e,t,r){let i=this._caps.textureAnisotropicFilterExtension;11!==t.samplingMode&&3!==t.samplingMode&&2!==t.samplingMode&&(r=1),i&&t._cachedAnisotropicFilteringLevel!==r&&(this._setTextureParameterFloat(e,i.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(r,this._caps.maxAnisotropy),t),t._cachedAnisotropicFilteringLevel=r)}_setTextureParameterFloat(e,t,r,i){this._bindTextureDirectly(e,i,!0,!0),this._gl.texParameterf(e,t,r)}_setTextureParameterInteger(e,t,r,i){i&&this._bindTextureDirectly(e,i,!0,!0),this._gl.texParameteri(e,t,r)}unbindAllAttributes(){if(this._mustWipeVertexAttributes){this._mustWipeVertexAttributes=!1;for(let e=0;e<this._caps.maxVertexAttribs;e++)this.disableAttributeByIndex(e);return}for(let e=0,t=this._vertexAttribArraysEnabled.length;e<t;e++)!(e>=this._caps.maxVertexAttribs)&&this._vertexAttribArraysEnabled[e]&&this.disableAttributeByIndex(e)}releaseEffects(){this._compiledEffects={},this.onReleaseEffectsObservable.notifyObservers(this)}dispose(){(0,f.IsWindowObjectExist)()&&this._renderingCanvas&&(this._renderingCanvas.removeEventListener("webglcontextlost",this._onContextLost),this._onContextRestored&&this._renderingCanvas.removeEventListener("webglcontextrestored",this._onContextRestored)),super.dispose(),this._dummyFramebuffer&&this._gl.deleteFramebuffer(this._dummyFramebuffer),this.unbindAllAttributes(),this._boundUniforms={},this._workingCanvas=null,this._workingContext=null,this._currentBufferPointers.length=0,this._currentProgram=null,this._creationOptions.loseContextOnDispose&&this._gl.getExtension("WEBGL_lose_context")?.loseContext(),(0,u.deleteStateObject)(this._gl)}attachContextLostEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextlost",e,!1)}attachContextRestoredEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextrestored",e,!1)}getError(){return this._gl.getError()}_canRenderToFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(1)}_canRenderToHalfFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(2)}_canRenderToFramebuffer(e){let t=this._gl;for(;t.getError()!==t.NO_ERROR;);let r=!0,i=t.createTexture();t.bindTexture(t.TEXTURE_2D,i),t.texImage2D(t.TEXTURE_2D,0,this._getRGBABufferInternalSizedFormat(e),1,1,0,t.RGBA,this._getWebGLTextureType(e),null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let s=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,s),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,i,0);let a=t.checkFramebufferStatus(t.FRAMEBUFFER);if((r=(r=r&&a===t.FRAMEBUFFER_COMPLETE)&&t.getError()===t.NO_ERROR)&&(t.clear(t.COLOR_BUFFER_BIT),r=r&&t.getError()===t.NO_ERROR),r){t.bindFramebuffer(t.FRAMEBUFFER,null);let e=t.RGBA,i=t.UNSIGNED_BYTE,s=new Uint8Array(4);t.readPixels(0,0,1,1,e,i,s),r=r&&t.getError()===t.NO_ERROR}for(t.deleteTexture(i),t.deleteFramebuffer(s),t.bindFramebuffer(t.FRAMEBUFFER,null);!r&&t.getError()!==t.NO_ERROR;);return r}_getWebGLTextureType(e){if(1===this._webGLVersion){switch(e){case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT_OES;case 0:break;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5}return this._gl.UNSIGNED_BYTE}switch(e){case 3:return this._gl.BYTE;case 0:break;case 4:return this._gl.SHORT;case 5:return this._gl.UNSIGNED_SHORT;case 6:return this._gl.INT;case 7:return this._gl.UNSIGNED_INT;case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5;case 11:return this._gl.UNSIGNED_INT_2_10_10_10_REV;case 12:return this._gl.UNSIGNED_INT_24_8;case 13:return this._gl.UNSIGNED_INT_10F_11F_11F_REV;case 14:return this._gl.UNSIGNED_INT_5_9_9_9_REV;case 15:return this._gl.FLOAT_32_UNSIGNED_INT_24_8_REV}return this._gl.UNSIGNED_BYTE}_getInternalFormat(e,t=!1){let r=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA;switch(e){case 0:r=this._gl.ALPHA;break;case 1:r=this._gl.LUMINANCE;break;case 2:r=this._gl.LUMINANCE_ALPHA;break;case 6:case 33322:case 36760:r=this._gl.RED;break;case 7:case 33324:case 36761:r=this._gl.RG;break;case 4:case 32852:case 36762:r=t?this._glSRGBExtensionValues.SRGB:this._gl.RGB;break;case 5:case 32859:case 36763:r=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA}if(this._webGLVersion>1)switch(e){case 8:r=this._gl.RED_INTEGER;break;case 9:r=this._gl.RG_INTEGER;break;case 10:r=this._gl.RGB_INTEGER;break;case 11:r=this._gl.RGBA_INTEGER}return r}_getRGBABufferInternalSizedFormat(e,t,r=!1){if(1===this._webGLVersion){if(void 0!==t)switch(t){case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;case 4:return r?this._glSRGBExtensionValues.SRGB:this._gl.RGB}return this._gl.RGBA}switch(e){case 3:switch(t){case 6:return this._gl.R8_SNORM;case 7:return this._gl.RG8_SNORM;case 4:return this._gl.RGB8_SNORM;case 8:return this._gl.R8I;case 9:return this._gl.RG8I;case 10:return this._gl.RGB8I;case 11:return this._gl.RGBA8I;default:return this._gl.RGBA8_SNORM}case 0:switch(t){case 6:return this._gl.R8;case 7:return this._gl.RG8;case 4:return r?this._glSRGBExtensionValues.SRGB8:this._gl.RGB8;case 5:return r?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8;case 8:return this._gl.R8UI;case 9:return this._gl.RG8UI;case 10:return this._gl.RGB8UI;case 11:return this._gl.RGBA8UI;case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;default:return this._gl.RGBA8}case 4:switch(t){case 8:return this._gl.R16I;case 36760:return this._gl.R16_SNORM_EXT;case 36761:return this._gl.RG16_SNORM_EXT;case 36762:return this._gl.RGB16_SNORM_EXT;case 36763:return this._gl.RGBA16_SNORM_EXT;case 9:return this._gl.RG16I;case 10:return this._gl.RGB16I;default:return this._gl.RGBA16I}case 5:switch(t){case 8:return this._gl.R16UI;case 33322:return this._gl.R16_EXT;case 33324:return this._gl.RG16_EXT;case 32852:return this._gl.RGB16_EXT;case 32859:return this._gl.RGBA16_EXT;case 9:return this._gl.RG16UI;case 10:return this._gl.RGB16UI;default:return this._gl.RGBA16UI}case 6:switch(t){case 8:return this._gl.R32I;case 9:return this._gl.RG32I;case 10:return this._gl.RGB32I;default:return this._gl.RGBA32I}case 7:switch(t){case 8:return this._gl.R32UI;case 9:return this._gl.RG32UI;case 10:return this._gl.RGB32UI;default:return this._gl.RGBA32UI}case 1:switch(t){case 6:return this._gl.R32F;case 7:return this._gl.RG32F;case 4:return this._gl.RGB32F;default:return this._gl.RGBA32F}case 2:switch(t){case 6:return this._gl.R16F;case 7:return this._gl.RG16F;case 4:return this._gl.RGB16F;default:return this._gl.RGBA16F}case 10:return this._gl.RGB565;case 13:return this._gl.R11F_G11F_B10F;case 14:return this._gl.RGB9_E5;case 8:return this._gl.RGBA4;case 9:return this._gl.RGB5_A1;case 11:switch(t){case 5:default:return this._gl.RGB10_A2;case 11:return this._gl.RGB10_A2UI}}return r?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8}readPixels(e,t,r,i,s=!0,a=!0,n=null){let _=s?this._gl.RGBA:this._gl.RGB,l=r*i*(s?4:3);if(n){if(n.length<l)return g.Logger.Error(`Data buffer is too small to store the read pixels (${n.length} should be more than ${l})`),Promise.resolve(n)}else n=new Uint8Array(l);return a&&this.flushFramebuffer(),this._gl.readPixels(e,t,r,i,_,this._gl.UNSIGNED_BYTE,n),Promise.resolve(n)}static get IsSupportedAsync(){return Promise.resolve(this.isSupported())}static get IsSupported(){return this.isSupported()}static isSupported(){if(null!==this._HasMajorPerformanceCaveat)return!this._HasMajorPerformanceCaveat;if(null===this._IsSupported)try{let e=o.AbstractEngine._CreateCanvas(1,1),t=e.getContext("webgl")||e.getContext("experimental-webgl");this._IsSupported=null!=t&&!!globalThis.WebGLRenderingContext}catch(e){this._IsSupported=!1}return this._IsSupported}static get HasMajorPerformanceCaveat(){if(null===this._HasMajorPerformanceCaveat)try{let e=o.AbstractEngine._CreateCanvas(1,1),t=e.getContext("webgl",{failIfMajorPerformanceCaveat:!0})||e.getContext("experimental-webgl",{failIfMajorPerformanceCaveat:!0});this._HasMajorPerformanceCaveat=!t}catch(e){this._HasMajorPerformanceCaveat=!1}return this._HasMajorPerformanceCaveat}}L._TempClearColorUint32=new Uint32Array(4),L._TempClearColorInt32=new Int32Array(4),L.ExceptionList=[{key:"Chrome/63.0",capture:"63\\.0\\.3239\\.(\\d+)",captureConstraint:108,targets:["uniformBuffer"]},{key:"Firefox/58",capture:null,captureConstraint:null,targets:["uniformBuffer"]},{key:"Firefox/59",capture:null,captureConstraint:null,targets:["uniformBuffer"]},{key:"Chrome/72.+?Mobile",capture:null,captureConstraint:null,targets:["vao"]},{key:"Chrome/73.+?Mobile",capture:null,captureConstraint:null,targets:["vao"]},{key:"Chrome/74.+?Mobile",capture:null,captureConstraint:null,targets:["vao"]},{key:"Mac OS.+Chrome/71",capture:null,captureConstraint:null,targets:["vao"]},{key:"Mac OS.+Chrome/72",capture:null,captureConstraint:null,targets:["vao"]},{key:"Mac OS.+Chrome",capture:null,captureConstraint:null,targets:["uniformBuffer"]},{key:"Chrome/12\\d\\..+?Mobile",capture:null,captureConstraint:null,targets:["uniformBuffer"]},{key:".*AppleWebKit.*(15.4).*Safari",capture:null,captureConstraint:null,targets:["antialias","maxMSAASamples"]},{key:".*(15.4).*AppleWebKit.*Safari",capture:null,captureConstraint:null,targets:["antialias","maxMSAASamples"]}],L._ConcatenateShader=x._ConcatenateShader,L._IsSupported=null,L._HasMajorPerformanceCaveat=null,(t=L.prototype).startTimeQuery??(t.startTimeQuery=(0,C._MissingSideEffect)("ThinEngine","startTimeQuery")),(r=L.prototype).endTimeQuery??(r.endTimeQuery=(0,C._MissingSideEffect)("ThinEngine","endTimeQuery")),(i=L.prototype).createUniformBuffer??(i.createUniformBuffer=(0,C._MissingSideEffect)("ThinEngine","createUniformBuffer")),(s=L.prototype).createDynamicUniformBuffer??(s.createDynamicUniformBuffer=(0,C._MissingSideEffect)("ThinEngine","createDynamicUniformBuffer")),(a=L.prototype).updateUniformBuffer??(a.updateUniformBuffer=(0,C._MissingSideEffect)("ThinEngine","updateUniformBuffer")),(n=L.prototype).bindUniformBuffer??(n.bindUniformBuffer=(0,C._MissingSideEffect)("ThinEngine","bindUniformBuffer")),(_=L.prototype).bindUniformBufferBase??(_.bindUniformBufferBase=(0,C._MissingSideEffect)("ThinEngine","bindUniformBufferBase")),(l=L.prototype).bindUniformBlock??(l.bindUniformBlock=(0,C._MissingSideEffect)("ThinEngine","bindUniformBlock")),e.s(["ThinEngine",0,L],71379)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,12423,t=>{"use strict";class e{static GetShadersRepository(t=0){return 0===t?e.ShadersRepository:e.ShadersRepositoryWGSL}static GetShadersStore(t=0){return 0===t?e.ShadersStore:e.ShadersStoreWGSL}static GetIncludesShadersStore(t=0){return 0===t?e.IncludesShadersStore:e.IncludesShadersStoreWGSL}}e.ShadersRepository="src/Shaders/",e.ShadersStore={},e.IncludesShadersStore={},e.ShadersRepositoryWGSL="src/ShadersWGSL/",e.ShadersStoreWGSL={},e.IncludesShadersStoreWGSL={},t.s(["ShaderStore",0,e])},21222,t=>{"use strict";var e=t.i(96265);class i{}i.POINTERDOWN=1,i.POINTERUP=2,i.POINTERMOVE=4,i.POINTERWHEEL=8,i.POINTERPICK=16,i.POINTERTAP=32,i.POINTERDOUBLETAP=64;class r{constructor(t,e){this.type=t,this.event=e}}t.s(["PointerEventTypes",0,i,"PointerInfo",0,class extends r{get pickInfo(){return this._pickInfo||this._generatePickInfo(),this._pickInfo}constructor(t,e,i,r=null){super(t,e),this._pickInfo=i,this._inputManager=r}_generatePickInfo(){this._inputManager&&(this._pickInfo=this._inputManager._pickMove(this.event),this._inputManager._setRayOnPointerInfo(this._pickInfo,this.event),this._inputManager=null)}},"PointerInfoPre",0,class extends r{constructor(t,i,r,s){super(t,i),this.ray=null,this.originalPickingInfo=null,this.skipOnPointerObservable=!1,this.localPosition=new e.Vector2(r,s)}}])},36365,t=>{"use strict";class e{}e.KEYDOWN=1,e.KEYUP=2;class i{constructor(t,e){this.type=t,this.event=e}}t.s(["KeyboardEventTypes",0,e,"KeyboardInfo",0,i,"KeyboardInfoPre",0,class extends i{get skipOnPointerObservable(){return this.skipOnKeyboardObservable}set skipOnPointerObservable(t){this.skipOnKeyboardObservable=t}constructor(t,e){super(t,e),this.type=t,this.event=e,this.skipOnKeyboardObservable=!1}}])},76696,t=>{"use strict";var e,i;(i=e||(e={}))[i.PointerMove=0]="PointerMove",i[i.PointerDown=1]="PointerDown",i[i.PointerUp=2]="PointerUp";class r{}r.DOM_DELTA_PIXEL=0,r.DOM_DELTA_LINE=1,r.DOM_DELTA_PAGE=2,t.s(["EventConstants",0,r])},1773,t=>{"use strict";t.s(["useOpenGLOrientationForUV",()=>!1])},54361,t=>{"use strict";class e{constructor(t,e){this.width=t,this.height=e}toString(){return`{W: ${this.width}, H: ${this.height}}`}getClassName(){return"Size"}getHashCode(){let t=0|this.width;return 397*t^this.height}copyFrom(t){this.width=t.width,this.height=t.height}copyFromFloats(t,e){return this.width=t,this.height=e,this}set(t,e){return this.copyFromFloats(t,e)}multiplyByFloats(t,i){return new e(this.width*t,this.height*i)}clone(){return new e(this.width,this.height)}equals(t){return!!t&&this.width===t.width&&this.height===t.height}get surface(){return this.width*this.height}static Zero(){return new e(0,0)}add(t){return new e(this.width+t.width,this.height+t.height)}subtract(t){return new e(this.width-t.width,this.height-t.height)}scale(t){return new e(this.width*t,this.height*t)}static Lerp(t,i,r){return new e(t.width+(i.width-t.width)*r,t.height+(i.height-t.height)*r)}}t.s(["Size",0,e])},25348,t=>{"use strict";class e{constructor(t,e,i,r){this.x=t,this.y=e,this.width=i,this.height=r}toGlobal(t,i){return new e(this.x*t,this.y*i,this.width*t,this.height*i)}toGlobalToRef(t,e,i){return i.x=this.x*t,i.y=this.y*e,i.width=this.width*t,i.height=this.height*e,this}clone(){return new e(this.x,this.y,this.width,this.height)}}t.s(["Viewport",0,e])},70247,t=>{"use strict";var e,i,r,s,o=t.i(96265);(e=r||(r={}))[e.LOCAL=0]="LOCAL",e[e.WORLD=1]="WORLD",e[e.BONE=2]="BONE";class a{}a.X=new o.Vector3(1,0,0),a.Y=new o.Vector3(0,1,0),a.Z=new o.Vector3(0,0,1),(i=s||(s={}))[i.X=0]="X",i[i.Y=1]="Y",i[i.Z=2]="Z",t.s(["Axis",0,a,"Coordinate",0,s,"Space",0,r])},44939,t=>{"use strict";var e=t.i(23240);t.s(["DrawWrapper",0,class{static GetEffect(t){return void 0===t.getPipelineContext?t.effect:t}constructor(t,e=!0){this._wasPreviouslyReady=!1,this._forceRebindOnNextCall=!0,this._wasPreviouslyUsingInstances=null,this.effect=null,this.defines=null,this.drawContext=t.createDrawContext(),e&&(this.materialContext=t.createMaterialContext())}setEffect(t,e,i=!0){this.effect=t,void 0!==e&&(this.defines=e),i&&this.drawContext?.reset()}dispose(t=!1){if(this.effect){let i=this.effect;t?i.dispose():e.TimingTools.SetImmediate(()=>{i.getEngine().onEndFrameObservable.addOnce(()=>{i.dispose()})}),this.effect=null}this.drawContext?.dispose()}}])},49007,t=>{"use strict";t.s(["IntersectionInfo",0,class{constructor(t,e,i){this.bu=t,this.bv=e,this.distance=i,this.faceId=0,this.subMeshId=0,this._internalSubMeshId=0}}])},75991,t=>{"use strict";var e,i,r=t.i(46703),s=t.i(96265),o=t.i(89030);(e=i||(i={}))[e.CW=0]="CW",e[e.CCW=1]="CCW";class a{constructor(t){this._radians=t,this._radians<0&&(this._radians+=2*Math.PI)}degrees(){return 180*this._radians/Math.PI}radians(){return this._radians}static BetweenTwoPoints(t,e){let i=e.subtract(t);return new a(Math.atan2(i.y,i.x))}static BetweenTwoVectors(t,e){let i=t.lengthSquared()*e.lengthSquared();if(0===i)return new a(Math.PI/2);i=Math.sqrt(i);let s=t.dot(e)/i;return new a(Math.acos(s=(0,r.Clamp)(s,-1,1)))}static FromRadians(t){return new a(t)}static FromDegrees(t){return new a(t*Math.PI/180)}}class n{constructor(t,e,i){this.startPoint=t,this.midPoint=e,this.endPoint=i;const r=Math.pow(e.x,2)+Math.pow(e.y,2),o=(Math.pow(t.x,2)+Math.pow(t.y,2)-r)/2,n=(r-Math.pow(i.x,2)-Math.pow(i.y,2))/2,h=(t.x-e.x)*(e.y-i.y)-(e.x-i.x)*(t.y-e.y);this.centerPoint=new s.Vector2((o*(e.y-i.y)-n*(t.y-e.y))/h,((t.x-e.x)*n-(e.x-i.x)*o)/h),this.radius=this.centerPoint.subtract(this.startPoint).length(),this.startAngle=a.BetweenTwoPoints(this.centerPoint,this.startPoint);const c=this.startAngle.degrees();let l=a.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),u=a.BetweenTwoPoints(this.centerPoint,this.endPoint).degrees();l-c>180&&(l-=360),l-c<-180&&(l+=360),u-l>180&&(u-=360),u-l<-180&&(u+=360),this.orientation=l-c<0?0:1,this.angle=a.FromDegrees(0===this.orientation?c-u:u-c)}}class h{constructor(t,e){this._points=[],this._length=0,this.closed=!1,this._points.push(new s.Vector2(t,e))}addLineTo(t,e){if(this.closed)return this;let i=new s.Vector2(t,e),r=this._points[this._points.length-1];return this._points.push(i),this._length+=i.subtract(r).length(),this}addArcTo(t,e,i,r,o=36){if(this.closed)return this;let a=new n(this._points[this._points.length-1],new s.Vector2(t,e),new s.Vector2(i,r)),h=a.angle.radians()/o;0===a.orientation&&(h*=-1);let c=a.startAngle.radians()+h;for(let t=0;t<o;t++){let t=Math.cos(c)*a.radius+a.centerPoint.x,e=Math.sin(c)*a.radius+a.centerPoint.y;this.addLineTo(t,e),c+=h}return this}addQuadraticCurveTo(t,e,i,r,s=36){if(this.closed)return this;let o=(t,e,i,r)=>(1-t)*(1-t)*e+2*t*(1-t)*i+t*t*r,a=this._points[this._points.length-1];for(let n=0;n<=s;n++){let h=n/s,c=o(h,a.x,t,i),l=o(h,a.y,e,r);this.addLineTo(c,l)}return this}addBezierCurveTo(t,e,i,r,s,o,a=36){if(this.closed)return this;let n=(t,e,i,r,s)=>(1-t)*(1-t)*(1-t)*e+3*t*(1-t)*(1-t)*i+3*t*t*(1-t)*r+t*t*t*s,h=this._points[this._points.length-1];for(let c=0;c<=a;c++){let l=c/a,u=n(l,h.x,t,i,s),d=n(l,h.y,e,r,o);this.addLineTo(u,d)}return this}isPointInside(t){let e=!1,i=this._points.length;for(let r=i-1,s=0;s<i;r=s++){let i=this._points[r],o=this._points[s],a=o.x-i.x,n=o.y-i.y;if(Math.abs(n)>Number.EPSILON){if(n<0&&(i=this._points[s],a=-a,o=this._points[r],n=-n),t.y<i.y||t.y>o.y)continue;if(t.y===i.y&&t.x===i.x)return!0;{let r=n*(t.x-i.x)-a*(t.y-i.y);if(0===r)return!0;if(r<0)continue;e=!e}}else{if(t.y!==i.y)continue;if(o.x<=t.x&&t.x<=i.x||i.x<=t.x&&t.x<=o.x)return!0}}return e}close(){return this.closed=!0,this}length(){let t=this._length;if(this.closed){let e=this._points[this._points.length-1];t+=this._points[0].subtract(e).length()}return t}area(){let t=this._points.length,e=0;for(let i=t-1,r=0;r<t;i=r++)e+=this._points[i].x*this._points[r].y-this._points[r].x*this._points[i].y;return .5*e}getPoints(){return this._points}getPointAtLengthPosition(t){if(t<0||t>1)return s.Vector2.Zero();let e=t*this.length(),i=0;for(let t=0;t<this._points.length;t++){let r=(t+1)%this._points.length,o=this._points[t],a=this._points[r].subtract(o),n=a.length()+i;if(e>=i&&e<=n){let t=a.normalize(),r=e-i;return new s.Vector2(o.x+t.x*r,o.y+t.y*r)}i=n}return s.Vector2.Zero()}static StartingAt(t,e){return new h(t,e)}}class c{constructor(t,e=null,i,r=!1){this.path=t,this._curve=[],this._distances=[],this._tangents=[],this._normals=[],this._binormals=[],this._pointAtData={id:0,point:s.Vector3.Zero(),previousPointArrayIndex:0,position:0,subPosition:0,interpolateReady:!1,interpolationMatrix:s.Matrix.Identity()};for(let e=0;e<t.length;e++)this._curve[e]=t[e].clone();this._raw=i||!1,this._alignTangentsWithPath=r,this._compute(e,r)}getCurve(){return this._curve}getPoints(){return this._curve}length(){return this._distances[this._distances.length-1]}getTangents(){return this._tangents}getNormals(){return this._normals}getBinormals(){return this._binormals}getDistances(){return this._distances}getPointAt(t){return this._updatePointAtData(t).point}getTangentAt(t,e=!1){return this._updatePointAtData(t,e),e?s.Vector3.TransformCoordinates(s.Vector3.Forward(),this._pointAtData.interpolationMatrix):this._tangents[this._pointAtData.previousPointArrayIndex]}getNormalAt(t,e=!1){return this._updatePointAtData(t,e),e?s.Vector3.TransformCoordinates(s.Vector3.Right(),this._pointAtData.interpolationMatrix):this._normals[this._pointAtData.previousPointArrayIndex]}getBinormalAt(t,e=!1){return this._updatePointAtData(t,e),e?s.Vector3.TransformCoordinates(s.Vector3.UpReadOnly,this._pointAtData.interpolationMatrix):this._binormals[this._pointAtData.previousPointArrayIndex]}getDistanceAt(t){return this.length()*t}getPreviousPointIndexAt(t){return this._updatePointAtData(t),this._pointAtData.previousPointArrayIndex}getSubPositionAt(t){return this._updatePointAtData(t),this._pointAtData.subPosition}getClosestPositionTo(t){let e=Number.MAX_VALUE,i=0;for(let r=0;r<this._curve.length-1;r++){let o=this._curve[r+0],a=this._curve[r+1].subtract(o).normalize(),n=this._distances[r+1]-this._distances[r+0],h=Math.min(Math.max(s.Vector3.Dot(a,t.subtract(o).normalize()),0)*s.Vector3.Distance(o,t)/n,1),c=s.Vector3.Distance(o.add(a.scale(h*n)),t);c<e&&(e=c,i=(this._distances[r+0]+n*h)/this.length())}return i}slice(t=0,e=1){if(t<0&&(t=1- -1*t%1),e<0&&(e=1- -1*e%1),t>e){let i=t;t=e,e=i}let i=this.getCurve(),r=this.getPointAt(t),s=this.getPreviousPointIndexAt(t),o=this.getPointAt(e),a=this.getPreviousPointIndexAt(e)+1,n=[];return 0!==t&&(s++,n.push(r)),n.push(...i.slice(s,a)),(1!==e||1===t)&&n.push(o),new c(n,this.getNormalAt(t),this._raw,this._alignTangentsWithPath)}update(t,e=null,i=!1){for(let e=0;e<t.length;e++)this._curve[e].x=t[e].x,this._curve[e].y=t[e].y,this._curve[e].z=t[e].z;return this._compute(e,i),this}_compute(t,e=!1){let i,r,o,a,n,h=this._curve.length;if(h<2)return;this._tangents[0]=this._getFirstNonNullVector(0),this._raw||this._tangents[0].normalize(),this._tangents[h-1]=this._curve[h-1].subtract(this._curve[h-2]),this._raw||this._tangents[h-1].normalize();let c=this._tangents[0],l=this._normalVector(c,t);this._normals[0]=l,this._raw||this._normals[0].normalize(),this._binormals[0]=s.Vector3.Cross(c,this._normals[0]),this._raw||this._binormals[0].normalize(),this._distances[0]=0;for(let t=1;t<h;t++)i=this._getLastNonNullVector(t),t<h-1&&(r=this._getFirstNonNullVector(t),this._tangents[t]=e?r:i.add(r),this._tangents[t].normalize()),this._distances[t]=this._distances[t-1]+this._curve[t].subtract(this._curve[t-1]).length(),o=this._tangents[t],n=this._binormals[t-1],this._normals[t]=s.Vector3.Cross(n,o),this._raw||(0===this._normals[t].length()?(a=this._normals[t-1],this._normals[t]=a.clone()):this._normals[t].normalize()),this._binormals[t]=s.Vector3.Cross(o,this._normals[t]),this._raw||this._binormals[t].normalize();this._pointAtData.id=NaN}_getFirstNonNullVector(t){let e=1,i=this._curve[t+e].subtract(this._curve[t]);for(;0===i.length()&&t+e+1<this._curve.length;)e++,i=this._curve[t+e].subtract(this._curve[t]);return i}_getLastNonNullVector(t){let e=1,i=this._curve[t].subtract(this._curve[t-e]);for(;0===i.length()&&t>e+1;)e++,i=this._curve[t].subtract(this._curve[t-e]);return i}_normalVector(t,e){let i,a=t.length();if(0===a&&(a=1),null==e){let e;e=(0,r.WithinEpsilon)(Math.abs(t.y)/a,1,o.Epsilon)?(0,r.WithinEpsilon)(Math.abs(t.x)/a,1,o.Epsilon)?(0,r.WithinEpsilon)(Math.abs(t.z)/a,1,o.Epsilon)?s.Vector3.Zero():new s.Vector3(0,0,1):new s.Vector3(1,0,0):new s.Vector3(0,-1,0),i=s.Vector3.Cross(t,e)}else i=s.Vector3.Cross(t,e),s.Vector3.CrossToRef(i,t,i);return i.normalize(),i}_updatePointAtData(t,e=!1){let i;if(this._pointAtData.id===t)return this._pointAtData.interpolateReady||this._updateInterpolationMatrix(),this._pointAtData;this._pointAtData.id=t;let r=this.getPoints();if(t<=0)return this._setPointAtData(0,0,r[0],0,e);if(t>=1)return this._setPointAtData(1,1,r[r.length-1],r.length-1,e);let o=r[0],a=0,n=t*this.length();for(let h=1;h<r.length;h++){i=r[h];let c=s.Vector3.Distance(o,i);if((a+=c)===n)return this._setPointAtData(t,1,i,h,e);if(a>n){let r=(a-n)/c,s=o.subtract(i),l=i.add(s.scaleInPlace(r));return this._setPointAtData(t,1-r,l,h-1,e)}o=i}return this._pointAtData}_setPointAtData(t,e,i,r,s){return this._pointAtData.point=i,this._pointAtData.position=t,this._pointAtData.subPosition=e,this._pointAtData.previousPointArrayIndex=r,this._pointAtData.interpolateReady=s,s&&this._updateInterpolationMatrix(),this._pointAtData}_updateInterpolationMatrix(){this._pointAtData.interpolationMatrix=s.Matrix.Identity();let t=this._pointAtData.previousPointArrayIndex;if(t!==this._tangents.length-1){let e=t+1,i=this._tangents[t].clone(),r=this._normals[t].clone(),o=this._binormals[t].clone(),a=this._tangents[e].clone(),n=this._normals[e].clone(),h=this._binormals[e].clone(),c=s.Quaternion.RotationQuaternionFromAxis(r,o,i),l=s.Quaternion.RotationQuaternionFromAxis(n,h,a);s.Quaternion.Slerp(c,l,this._pointAtData.subPosition).toRotationMatrix(this._pointAtData.interpolationMatrix)}}}class l{static CreateQuadraticBezier(t,e,i,r){r=r>2?r:3;let o=[],a=(t,e,i,r)=>(1-t)*(1-t)*e+2*t*(1-t)*i+t*t*r;for(let n=0;n<=r;n++)o.push(new s.Vector3(a(n/r,t.x,e.x,i.x),a(n/r,t.y,e.y,i.y),a(n/r,t.z,e.z,i.z)));return new l(o)}static CreateCubicBezier(t,e,i,r,o){o=o>3?o:4;let a=[],n=(t,e,i,r,s)=>(1-t)*(1-t)*(1-t)*e+3*t*(1-t)*(1-t)*i+3*t*t*(1-t)*r+t*t*t*s;for(let h=0;h<=o;h++)a.push(new s.Vector3(n(h/o,t.x,e.x,i.x,r.x),n(h/o,t.y,e.y,i.y,r.y),n(h/o,t.z,e.z,i.z,r.z)));return new l(a)}static CreateHermiteSpline(t,e,i,r,o){let a=[],n=1/o;for(let h=0;h<=o;h++)a.push(s.Vector3.Hermite(t,e,i,r,h*n));return new l(a)}static CreateCatmullRomSpline(t,e,i){let r=[],o=1/e,a=0;if(i){let i=t.length;for(let n=0;n<i;n++){a=0;for(let h=0;h<e;h++)r.push(s.Vector3.CatmullRom(t[n%i],t[(n+1)%i],t[(n+2)%i],t[(n+3)%i],a)),a+=o}r.push(r[0])}else{let i=[];i.push(t[0].clone()),i.push(...t),i.push(t[t.length-1].clone());let n=0;for(;n<i.length-3;n++){a=0;for(let t=0;t<e;t++)r.push(s.Vector3.CatmullRom(i[n],i[n+1],i[n+2],i[n+3],a)),a+=o}n--,r.push(s.Vector3.CatmullRom(i[n],i[n+1],i[n+2],i[n+3],a))}return new l(r)}static ArcThru3Points(t,e,i,r=32,o=!1,a=!1){let n=[],h=e.subtract(t),c=i.subtract(e),u=t.subtract(i),d=s.Vector3.Cross(h,c),p=d.length();if(p<1e-8)return new l(n);let _=h.lengthSquared(),m=c.lengthSquared(),g=u.lengthSquared(),f=d.lengthSquared(),y=.5*h.length()*c.length()*u.length()/p,x=s.Vector3.Dot(h,u),P=s.Vector3.Dot(h,c),M=s.Vector3.Dot(c,u),R=t.scale(-.5*m*x/f).add(e.scale(-.5*g*P/f)).add(i.scale(-.5*_*M/f)),A=t.subtract(R).normalize(),C=s.Vector3.Cross(d,A).normalize();if(a){let e=2*Math.PI/r;for(let t=0;t<=2*Math.PI;t+=e)n.push(R.add(A.scale(y*Math.cos(t)).add(C.scale(y*Math.sin(t)))));n.push(t)}else{let e,s=1/r,a=0;do e=R.add(A.scale(y*Math.cos(a)).add(C.scale(y*Math.sin(a)))),n.push(e),a+=s;while(!e.equalsWithEpsilon(i,y*s*1.1))n.push(i),o&&n.push(t)}return new l(n)}constructor(t){this._length=0,this._points=t,this._length=this._computeLength(t)}getPoints(){return this._points}length(){return this._length}continue(t){let e=this._points[this._points.length-1],i=this._points.slice(),r=t.getPoints();for(let t=1;t<r.length;t++)i.push(r[t].subtract(r[0]).add(e));return new l(i)}_computeLength(t){let e=0;for(let i=1;i<t.length;i++)e+=t[i].subtract(t[i-1]).length();return e}}t.s(["Angle",0,a,"Arc2",0,n,"BezierCurve",0,class{static Interpolate(t,e,i,r,s){if(0===t)return 0;let o=1-3*r+3*e,a=3*r-6*e,n=3*e,h=t;for(let e=0;e<5;e++){let e=h*h,i=e*h*o+a*e+n*h,r=1/(3*o*e+2*a*h+n);h-=(i-t)*r,h=Math.min(1,Math.max(0,h))}return 3*Math.pow(1-h,2)*h*i+3*(1-h)*Math.pow(h,2)*s+Math.pow(h,3)}},"Curve3",0,l,"Orientation",0,i,"Path2",0,h,"Path3D",0,c])},58302,16074,63764,95190,t=>{"use strict";var e=t.i(10272),i=t.i(37143),r=t.i(59576),s=t.i(96265),o=t.i(89030),a=t.i(70247);class n{constructor(t,e,i){this._cameraPosition=e,this._behavior=i,this.activeInput=!1,this.speed=1,this.zoomSpeed=1,this.panSpeed=1,this.rotationXSpeed=1,this.rotationYSpeed=1,this._zoomSpeedMultiplier=1,this._panSpeedMultiplier=1,this.zoomInertia=.9,this.panInertia=.9,this.rotationInertia=.9,this.zoomAccumulatedPixels=0,this.panAccumulatedPixels=new s.Vector3,this.rotationAccumulatedPixels=new s.Vector3,this.zoomDeltaCurrentFrame=0,this.panDeltaCurrentFrame=s.Vector3.Zero(),this.rotationDeltaCurrentFrame=s.Vector3.Zero(),this._zoomVelocity=0,this._panVelocity=new s.Vector3,this.referenceFrameRate=60,this._rotationVelocity=new s.Vector3,this._prevFrameTimeMs=0,this._scene=t}computeCurrentFrameDeltas(){let t=this._scene.getEngine().getDeltaTime(),e=this._getEffectiveDeltaMs(t);if(0===this._zoomVelocity&&0===this.zoomAccumulatedPixels&&0===this._panVelocity.x&&0===this._panVelocity.y&&0===this._panVelocity.z&&0===this.panAccumulatedPixels.x&&0===this.panAccumulatedPixels.y&&0===this.panAccumulatedPixels.z&&0===this._rotationVelocity.x&&0===this._rotationVelocity.y&&0===this._rotationVelocity.z&&0===this.rotationAccumulatedPixels.x&&0===this.rotationAccumulatedPixels.y&&0===this.rotationAccumulatedPixels.z&&!this.activeInput){this.panDeltaCurrentFrame.setAll(0),this.rotationDeltaCurrentFrame.setAll(0),this.zoomDeltaCurrentFrame=0,t>0&&(this._prevFrameTimeMs=t);return}this.panDeltaCurrentFrame.setAll(0),this.rotationDeltaCurrentFrame.setAll(0),this.zoomDeltaCurrentFrame=0,(this.panAccumulatedPixels.lengthSquared()>0||this.rotationAccumulatedPixels.lengthSquared()>0||0!==this.zoomAccumulatedPixels)&&this._behavior?.isInterpolating&&this._behavior.stopAllAnimations(),this._panVelocity.copyFromFloats(this._calculateCurrentVelocity(this._panVelocity.x,this.panAccumulatedPixels.x,this.panInertia),this._calculateCurrentVelocity(this._panVelocity.y,this.panAccumulatedPixels.y,this.panInertia),this._calculateCurrentVelocity(this._panVelocity.z,this.panAccumulatedPixels.z,this.panInertia)),this._panVelocity.scaleToRef(this.speed*this.panSpeed*this._panSpeedMultiplier*e,this.panDeltaCurrentFrame),this._rotationVelocity.copyFromFloats(this._calculateCurrentVelocity(this._rotationVelocity.x,this.rotationAccumulatedPixels.x,this.rotationInertia),this._calculateCurrentVelocity(this._rotationVelocity.y,this.rotationAccumulatedPixels.y,this.rotationInertia),this._calculateCurrentVelocity(this._rotationVelocity.z,this.rotationAccumulatedPixels.z,this.rotationInertia)),this.rotationDeltaCurrentFrame.copyFromFloats(this._rotationVelocity.x*this.speed*this.rotationXSpeed*e,this._rotationVelocity.y*this.speed*this.rotationYSpeed*e,0),this._zoomVelocity=this._calculateCurrentVelocity(this._zoomVelocity,this.zoomAccumulatedPixels,this.zoomInertia),this.zoomDeltaCurrentFrame=this._zoomVelocity*(this.speed*this.zoomSpeed*this._zoomSpeedMultiplier)*e,t>0&&(this._prevFrameTimeMs=t),this.zoomAccumulatedPixels=0,this.panAccumulatedPixels.setAll(0),this.rotationAccumulatedPixels.setAll(0),this.activeInput=!1}resetRotationVelocity(){this._rotationVelocity.setAll(0),this.rotationAccumulatedPixels.setAll(0)}resetPanVelocity(){this._panVelocity.setAll(0),this.panAccumulatedPixels.setAll(0)}resetZoomVelocity(){this._zoomVelocity=0,this.zoomAccumulatedPixels=0}get isInterpolating(){return!!this._behavior?.isInterpolating}getFrameIndependentDecay(t){let e=this._scene.getEngine().getDeltaTime();return Math.pow(t,this._getEffectiveDeltaMs(e)/(1e3/this.referenceFrameRate))}getFrameIndependentInputScale(t){let e=1-t;return e<=0?1:(1-this.getFrameIndependentDecay(t))/e}_getEffectiveDeltaMs(t){return t>0?t:this._prevFrameTimeMs>0?this._prevFrameTimeMs:1e3/this.referenceFrameRate}_calculateCurrentVelocity(t,e,i){let r=t,s=this._scene.getEngine().getDeltaTime(),o=this._getEffectiveDeltaMs(s);if(0===o)return r;let a=this.getFrameIndependentDecay(i);if(r*=a,0!==e||this.activeInput){let t=1-i;r+=e/o*(t>0?(1-a)/t:1)}else 1e-6>Math.abs(r)&&(r=0);return r}}t.s(["CameraMovement",0,n],16074);class h{constructor(t,e){this.inputMap=[],this.handlers=t,this._createDefaultEntries=e,this.resetInputMap()}resolveInteraction(t,e){for(let i of this.inputMap)if(i.source===t&&this._entryMatches(i,e))return i;return null}resetInputMap(){this.inputMap=this._createDefaultEntries?.()??[]}getEntry(t,e,i){let r=this.inputMap;for(let s=0;s<r.length;s++){let o=r[s];if(o.source===t&&o.interaction===e&&this._entryConditionsMatch(o,i))return o}}getEntries(t,e,i){let r=[],s=this.inputMap;for(let o=0;o<s.length;o++){let a=s[o];a.source===t&&a.interaction===e&&this._entryConditionsMatch(a,i)&&r.push(a)}return r}addEntry(t){let e=this._entrySpecificity(t),i=this.inputMap.length;for(let t=0;t<this.inputMap.length;t++)if(this._entrySpecificity(this.inputMap[t])<e){i=t;break}this.inputMap.splice(i,0,t)}setInteraction(t,e,i){let r=this.resolveInteraction(t,e);return r&&this._entryCoversAllConditionsOf(r,e)?r.interaction=i:this.addEntry({source:t,...e??{},interaction:i}),!0}_entryCoversAllConditionsOf(t,e){if(!e)return!0;for(let i of Object.keys(e)){let r=e[i];if(void 0!==r){if("modifiers"===i){let e=t.modifiers??{};for(let t of Object.keys(r))if(void 0!==r[t]&&void 0===e[t])return!1}else if(void 0===t[i])return!1}}return!0}setInteractions(t,e,i){let r=0,s=this.inputMap;for(let o=0;o<s.length;o++){let a=s[o];a.source===t&&this._entryMatches(a,e)&&(a.interaction=i,r++)}return r}_entryMatches(t,e){switch(t.source){case"pointer":if(void 0!==t.button&&t.button!==e?.button)return!1;return this._matchModifiers(t.modifiers,e?.modifiers);case"wheel":return this._matchModifiers(t.modifiers,e?.modifiers);case"touch":if(void 0!==t.touchCount&&t.touchCount!==e?.touchCount)return!1;return!0;case"keyboard":if(void 0!==t.key&&(Array.isArray(t.key)?-1===t.key.indexOf(e?.key??-1):t.key!==e?.key))return!1;return this._matchModifiers(t.modifiers,e?.modifiers)}}_entryConditionsMatch(t,e){if(!e)return!0;switch(t.source){case"pointer":if("button"in e&&t.button!==e.button)return!1;return!("modifiers"in e)||this._entryModifiersMatch(t.modifiers,e.modifiers);case"wheel":return!("modifiers"in e)||this._entryModifiersMatch(t.modifiers,e.modifiers);case"touch":return!("touchCount"in e)||t.touchCount===e.touchCount;case"keyboard":if("key"in e){if(void 0===t.key)return void 0===e.key;if(void 0===e.key||(Array.isArray(t.key)?-1===t.key.indexOf(e.key):t.key!==e.key))return!1}return!("modifiers"in e)||this._entryModifiersMatch(t.modifiers,e.modifiers)}}_entrySpecificity(t){let e=0;return"button"in t&&void 0!==t.button&&e++,"key"in t&&void 0!==t.key&&e++,"touchCount"in t&&void 0!==t.touchCount&&e++,"modifiers"in t&&t.modifiers&&e++,e}_matchModifiers(t,e){return!t||(void 0===t.ctrl||t.ctrl===(e?.ctrl??!1))&&(void 0===t.shift||t.shift===(e?.shift??!1))&&(void 0===t.alt||t.alt===(e?.alt??!1))}_entryModifiersMatch(t,e){return e?void 0===e.ctrl&&void 0===e.shift&&void 0===e.alt?!t||void 0===t.ctrl&&void 0===t.shift&&void 0===t.alt:(void 0===e.ctrl||t?.ctrl===e.ctrl)&&(void 0===e.shift||t?.shift===e.shift)&&(void 0===e.alt||t?.alt===e.alt):!t}}t.s(["InputMapper",0,h],63764);class c extends n{constructor(t,e,i){super(t,e,i),this.input=new h({translate:(t,e,i)=>{this.panAccumulatedPixels.x+=t,this.panAccumulatedPixels.y+=e,this.panAccumulatedPixels.z+=i},rotate:(t,e)=>{this.rotationAccumulatedPixels.x+=t,this.rotationAccumulatedPixels.y+=e}},()=>this._createDefaultInputMap())}_createDefaultInputMap(){return[{source:"pointer",interaction:"rotate"},{source:"keyboard",interaction:"translate"},{source:"keyboard",interaction:"rotate"},{source:"touch",interaction:"rotate"},{source:"touch",interaction:"translate"}]}}let l=s.Matrix.Zero(),u=s.Quaternion.Identity();class d extends r.Camera{get inertia(){return this._targetInertia}set inertia(t){this._targetInertia=t,this.movement&&(this.movement.panInertia=t,this.movement.rotationInertia=t)}constructor(t,e,i,r=!0){super(t,e,i,r),this.cameraDirection=new s.Vector3(0,0,0),this.cameraRotation=new s.Vector2(0,0),this._targetInertia=.9,this.updateUpVectorFromRotation=!1,this.speed=2,this.noRotationConstraint=!1,this.invertRotation=!1,this.inverseRotationSpeed=.2,this._panningEpsilon=o.Epsilon,this._rotationEpsilon=o.Epsilon,this.lockedTarget=null,this._currentTarget=s.Vector3.Zero(),this._initialFocalDistance=1,this._viewMatrix=s.Matrix.Zero(),this._cameraTransformMatrix=s.Matrix.Zero(),this._cameraRotationMatrix=s.Matrix.Zero(),this._transformedReferencePoint=s.Vector3.Zero(),this._deferredPositionUpdate=new s.Vector3,this._deferredRotationQuaternionUpdate=new s.Quaternion,this._deferredRotationUpdate=new s.Vector3,this._deferredUpdated=!1,this._deferOnly=!1,this._cachedRotationZ=0,this._cachedQuaternionRotationZ=0,this._referencePoint=s.Vector3.Forward(this.getScene().useRightHandedSystem),this.rotation=new s.Vector3(0,this.getScene().useRightHandedSystem?Math.PI:0,0),this.movement=new c(this.getScene(),this.position),this.movement.panInertia=this.inertia,this.movement.rotationInertia=this.inertia}getFrontPosition(t){this.getWorldMatrix();let e=s.TmpVectors.Vector3[0],i=s.TmpVectors.Vector3[1];return i.set(0,0,this._scene.useRightHandedSystem?-1:1),this.getDirectionToRef(i,e),e.scaleInPlace(t),this.globalPosition.add(e)}_getLockedTargetPosition(){if(!this.lockedTarget)return null;if(this.lockedTarget.absolutePosition){let t=this.lockedTarget;t.computeWorldMatrix().getTranslationToRef(t.absolutePosition)}return this.lockedTarget.absolutePosition||this.lockedTarget}storeState(){return this._storedPosition=this.position.clone(),this._storedRotation=this.rotation.clone(),this.rotationQuaternion&&(this._storedRotationQuaternion=this.rotationQuaternion.clone()),super.storeState()}_restoreStateValues(){return!!super._restoreStateValues()&&(this.position=this._storedPosition.clone(),this.rotation=this._storedRotation.clone(),this.rotationQuaternion&&this._storedRotationQuaternion&&(this.rotationQuaternion=this._storedRotationQuaternion.clone()),this.cameraDirection.copyFromFloats(0,0,0),this.cameraRotation.copyFromFloats(0,0),!0)}_initCache(){super._initCache(),this._cache.lockedTarget=new s.Vector3(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotation=new s.Vector3(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotationQuaternion=new s.Quaternion(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)}_updateCache(t){t||super._updateCache();let e=this._getLockedTargetPosition();e?this._cache.lockedTarget?this._cache.lockedTarget.copyFrom(e):this._cache.lockedTarget=e.clone():this._cache.lockedTarget=null,this._cache.rotation.copyFrom(this.rotation),this.rotationQuaternion&&this._cache.rotationQuaternion.copyFrom(this.rotationQuaternion)}_isSynchronizedViewMatrix(){if(!super._isSynchronizedViewMatrix())return!1;let t=this._getLockedTargetPosition();return(this._cache.lockedTarget?this._cache.lockedTarget.equals(t):!t)&&(this.rotationQuaternion?this.rotationQuaternion.equals(this._cache.rotationQuaternion):this._cache.rotation.equals(this.rotation))}_computeLocalCameraSpeed(){let t=this.getEngine();return this.speed*Math.sqrt(t.getDeltaTime()/(100*t.getFps()))}setTarget(t){this.upVector.normalize(),this._initialFocalDistance=t.subtract(this.position).length(),this.position.z===t.z&&(this.position.z+=o.Epsilon),this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance),this.getScene().useRightHandedSystem?s.Matrix.LookAtRHToRef(this.position,t,s.Vector3.UpReadOnly,l):s.Matrix.LookAtLHToRef(this.position,t,s.Vector3.UpReadOnly,l),l.invert();let e=this.rotationQuaternion||u;s.Quaternion.FromRotationMatrixToRef(l,e),e.toEulerAnglesToRef(this.rotation),this.rotation.z=0}get target(){return this.getTarget()}set target(t){this.setTarget(t)}getTarget(){return this._currentTarget}_decideIfNeedsToMove(){return Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0}_updatePosition(){if(this.parent){this.parent.getWorldMatrix().invertToRef(s.TmpVectors.Matrix[0]),s.Vector3.TransformNormalToRef(this.cameraDirection,s.TmpVectors.Matrix[0],s.TmpVectors.Vector3[0]),this._deferredPositionUpdate.addInPlace(s.TmpVectors.Vector3[0]),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate);return}this._deferredPositionUpdate.addInPlace(this.cameraDirection),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate)}_checkInputs(){let t=this.movement,e=0!==this.cameraDirection.x||0!==this.cameraDirection.y||0!==this.cameraDirection.z,i=0!==this.cameraRotation.x||0!==this.cameraRotation.y;t.panAccumulatedPixels.addInPlace(this.cameraDirection),t.rotationAccumulatedPixels.x+=this.cameraRotation.x,t.rotationAccumulatedPixels.y+=this.cameraRotation.y,t.computeCurrentFrameDeltas(),this.cameraDirection.copyFrom(t.panDeltaCurrentFrame),this.cameraRotation.set(t.rotationDeltaCurrentFrame.x,t.rotationDeltaCurrentFrame.y);let r=this.speed*this._panningEpsilon;!e&&Math.abs(this.cameraDirection.x)<r&&Math.abs(this.cameraDirection.y)<r&&Math.abs(this.cameraDirection.z)<r&&(this.cameraDirection.setAll(0),t.resetPanVelocity());let o=this.speed*this._rotationEpsilon;!i&&Math.abs(this.cameraRotation.x)<o&&Math.abs(this.cameraRotation.y)<o&&(this.cameraRotation.set(0,0),t.resetRotationVelocity());let a=this.invertRotation?-this.inverseRotationSpeed:1,n=this._decideIfNeedsToMove(),h=!!(this.cameraRotation.x||this.cameraRotation.y);this._deferredUpdated=!1,this._deferredRotationUpdate.copyFrom(this.rotation),this._deferredPositionUpdate.copyFrom(this.position),this.rotationQuaternion&&this._deferredRotationQuaternionUpdate.copyFrom(this.rotationQuaternion),n&&this._updatePosition(),h&&(this.rotationQuaternion&&this.rotationQuaternion.toEulerAnglesToRef(this._deferredRotationUpdate),this._deferredRotationUpdate.x+=this.cameraRotation.x*a,this._deferredRotationUpdate.y+=this.cameraRotation.y*a,!this.noRotationConstraint&&(this._deferredRotationUpdate.x>1.570796&&(this._deferredRotationUpdate.x=1.570796),this._deferredRotationUpdate.x<-1.570796&&(this._deferredRotationUpdate.x=-1.570796)),this._deferOnly?this._deferredUpdated=!0:this.rotation.copyFrom(this._deferredRotationUpdate),this.rotationQuaternion&&this._deferredRotationUpdate.lengthSquared()&&(s.Quaternion.RotationYawPitchRollToRef(this._deferredRotationUpdate.y,this._deferredRotationUpdate.x,this._deferredRotationUpdate.z,this._deferredRotationQuaternionUpdate),this._deferOnly?this._deferredUpdated=!0:this.rotationQuaternion.copyFrom(this._deferredRotationQuaternionUpdate))),this.cameraDirection.setAll(0),this.cameraRotation.set(0,0),super._checkInputs()}_updateCameraRotationMatrix(){this.rotationQuaternion?this.rotationQuaternion.toRotationMatrix(this._cameraRotationMatrix):s.Matrix.RotationYawPitchRollToRef(this.rotation.y,this.rotation.x,this.rotation.z,this._cameraRotationMatrix)}_rotateUpVectorWithCameraRotationMatrix(){return s.Vector3.TransformNormalToRef(s.Vector3.UpReadOnly,this._cameraRotationMatrix,this.upVector),this}_getViewMatrix(){return this.lockedTarget&&this.setTarget(this._getLockedTargetPosition()),this._updateCameraRotationMatrix(),this.rotationQuaternion&&this._cachedQuaternionRotationZ!=this.rotationQuaternion.z?(this._rotateUpVectorWithCameraRotationMatrix(),this._cachedQuaternionRotationZ=this.rotationQuaternion.z):this._cachedRotationZ!==this.rotation.z&&(this._rotateUpVectorWithCameraRotationMatrix(),this._cachedRotationZ=this.rotation.z),s.Vector3.TransformCoordinatesToRef(this._referencePoint,this._cameraRotationMatrix,this._transformedReferencePoint),this.position.addToRef(this._transformedReferencePoint,this._currentTarget),this.updateUpVectorFromRotation&&(this.rotationQuaternion?a.Axis.Y.rotateByQuaternionToRef(this.rotationQuaternion,this.upVector):(s.Quaternion.FromEulerVectorToRef(this.rotation,u),a.Axis.Y.rotateByQuaternionToRef(u,this.upVector))),this._computeViewMatrix(this.position,this._currentTarget,this.upVector),this._viewMatrix}_computeViewMatrix(t,e,i){if(this.getScene().useRightHandedSystem?s.Matrix.LookAtRHToRef(t,e,i,this._viewMatrix):s.Matrix.LookAtLHToRef(t,e,i,this._viewMatrix),this.parent){let t=this.parent.getWorldMatrix();this._viewMatrix.invert(),this._viewMatrix.multiplyToRef(t,this._viewMatrix),this._viewMatrix.invert(),this._markSyncedWithParent()}}createRigCamera(t,e){if(this.cameraRigMode!==r.Camera.RIG_MODE_NONE){let e=new d(t,this.position.clone(),this.getScene());return e.isRigCamera=!0,e.rigParent=this,this.cameraRigMode===r.Camera.RIG_MODE_VR&&(this.rotationQuaternion||(this.rotationQuaternion=new s.Quaternion),e._cameraRigParams={},e.rotationQuaternion=new s.Quaternion),e.mode=this.mode,e.orthoLeft=this.orthoLeft,e.orthoRight=this.orthoRight,e.orthoTop=this.orthoTop,e.orthoBottom=this.orthoBottom,e}return null}_updateRigCameras(){let t=this._rigCameras[0],e=this._rigCameras[1];switch(this.computeWorldMatrix(),this.cameraRigMode){case r.Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case r.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case r.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:case r.Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER:case r.Camera.RIG_MODE_STEREOSCOPIC_INTERLACED:{let i=this.cameraRigMode===r.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED?1:-1,s=this.cameraRigMode===r.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED?-1:1;this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle*i,t),this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle*s,e);break}case r.Camera.RIG_MODE_VR:t.rotationQuaternion&&e.rotationQuaternion&&this.rotationQuaternion?(t.rotationQuaternion.copyFrom(this.rotationQuaternion),e.rotationQuaternion.copyFrom(this.rotationQuaternion)):(t.rotation.copyFrom(this.rotation),e.rotation.copyFrom(this.rotation)),t.position.copyFrom(this.position),e.position.copyFrom(this.position)}super._updateRigCameras()}_getRigCamPositionAndTarget(t,e){this.getTarget().subtractToRef(this.position,d._TargetFocalPoint),d._TargetFocalPoint.normalize().scaleInPlace(this._initialFocalDistance);let i=d._TargetFocalPoint.addInPlace(this.position);s.Matrix.TranslationToRef(-i.x,-i.y,-i.z,d._TargetTransformMatrix),d._TargetTransformMatrix.multiplyToRef(s.Matrix.RotationAxis(e.upVector,t),d._RigCamTransformMatrix),s.Matrix.TranslationToRef(i.x,i.y,i.z,d._TargetTransformMatrix),d._RigCamTransformMatrix.multiplyToRef(d._TargetTransformMatrix,d._RigCamTransformMatrix),s.Vector3.TransformCoordinatesToRef(this.position,d._RigCamTransformMatrix,e.position),e.setTarget(i)}getClassName(){return"TargetCamera"}}d._RigCamTransformMatrix=new s.Matrix,d._TargetTransformMatrix=new s.Matrix,d._TargetFocalPoint=new s.Vector3,(0,e.__decorate)([(0,i.serialize)()],d.prototype,"updateUpVectorFromRotation",void 0),(0,e.__decorate)([(0,i.serializeAsVector3)()],d.prototype,"rotation",void 0),(0,e.__decorate)([(0,i.serialize)()],d.prototype,"speed",void 0),(0,e.__decorate)([(0,i.serializeAsMeshReference)("lockedTargetId")],d.prototype,"lockedTarget",void 0),t.s(["TargetCamera",0,d],58302);var p=t.i(13379),_=t.i(80871),m={};t.s(["CameraInputTypes",0,m,"CameraInputsManager",0,class{constructor(t){this.attachedToElement=!1,this.attached={},this.camera=t,this.checkInputs=()=>{}}add(t){let e=t.getSimpleName();this.attached[e]?p.Logger.Warn("camera input of type "+e+" already exists on camera"):(this.attached[e]=t,t.camera=this.camera,t.checkInputs&&(this.checkInputs=this._addCheckInputs(t.checkInputs.bind(t))),this.attachedToElement&&t.attachControl(this.noPreventDefault))}remove(t){for(let e in this.attached){let i=this.attached[e];if(i===t){i.detachControl(),i.camera=null,delete this.attached[e],this.rebuildInputCheck();return}}}removeByType(t){for(let e in this.attached){let i=this.attached[e];i.getClassName()===t&&(i.detachControl(),i.camera=null,delete this.attached[e],this.rebuildInputCheck())}}_addCheckInputs(t){let e=this.checkInputs;return()=>{e(),t()}}attachInput(t){this.attachedToElement&&t.attachControl(this.noPreventDefault)}attachElement(t=!1){if(!this.attachedToElement)for(let e in t=!r.Camera.ForceAttachControlToAlwaysPreventDefault&&t,this.attachedToElement=!0,this.noPreventDefault=t,this.attached)this.attached[e].attachControl(t)}detachElement(t=!1){for(let e in this.attached)this.attached[e].detachControl(),t&&(this.attached[e].camera=null);this.attachedToElement=!1}rebuildInputCheck(){for(let t in this.checkInputs=()=>{},this.attached){let e=this.attached[t];e.checkInputs&&(this.checkInputs=this._addCheckInputs(e.checkInputs.bind(e)))}}clear(){this.attachedToElement&&this.detachElement(!0),this.attached={},this.attachedToElement=!1,this.checkInputs=()=>{}}serialize(t){let e={};for(let t in this.attached){let i=this.attached[t],r=_.SerializationHelper.Serialize(i);e[i.getClassName()]=r}t.inputsmgr=e}parse(t){let e=t.inputsmgr;if(e)for(let t in this.clear(),e){let i=m[t];if(i){let r=e[t],s=_.SerializationHelper.Parse(()=>new i,r,null);this.add(s)}}else for(let e in this.attached){let i=m[this.attached[e].getClassName()];if(i){let r=_.SerializationHelper.Parse(()=>new i,t,null);this.remove(this.attached[e]),this.add(r)}}}}],95190)},42829,t=>{t.v(e=>Promise.all(["static/chunks/3l1dr_qm_x5kp.js"].map(e=>t.l(e))).then(()=>e(47786)))}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,12423,e=>{"use strict";class t{static GetShadersRepository(e=0){return 0===e?t.ShadersRepository:t.ShadersRepositoryWGSL}static GetShadersStore(e=0){return 0===e?t.ShadersStore:t.ShadersStoreWGSL}static GetIncludesShadersStore(e=0){return 0===e?t.IncludesShadersStore:t.IncludesShadersStoreWGSL}}t.ShadersRepository="src/Shaders/",t.ShadersStore={},t.IncludesShadersStore={},t.ShadersRepositoryWGSL="src/ShadersWGSL/",t.ShadersStoreWGSL={},t.IncludesShadersStoreWGSL={},e.s(["ShaderStore",0,t])},14960,e=>{"use strict";var t=e.i(68179),i=e.i(71379),s=e.i(84201);let a=!1;a=!0,i.ThinEngine.prototype.createDynamicTexture=function(e,i,a,r){let h=new s.InternalTexture(this,4);return h.baseWidth=e,h.baseHeight=i,a&&(e=this.needPOTTextures?(0,t.GetExponentOfTwo)(e,this._caps.maxTextureSize):e,i=this.needPOTTextures?(0,t.GetExponentOfTwo)(i,this._caps.maxTextureSize):i),h.width=e,h.height=i,h.isReady=!1,h.generateMipMaps=a,h.samplingMode=r,this.updateTextureSamplingMode(r,h),this._internalTexturesCache.push(h),h},i.ThinEngine.prototype.updateDynamicTexture=function(e,t,i,s=!1,a,r=!1,h=!1){if(!e)return;let n=this._gl,c=n.TEXTURE_2D,o=this._bindTextureDirectly(c,e,!0,r);this._unpackFlipY(void 0===i?e.invertY:i),s&&n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1);let l=this._getWebGLTextureType(e.type),d=this._getInternalFormat(a||e.format),u=this._getRGBABufferInternalSizedFormat(e.type,d);n.texImage2D(c,0,u,d,l,t),e.generateMipMaps&&n.generateMipmap(c),o||this._bindTextureDirectly(c,null),s&&n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),a&&(e.format=a),e._dynamicTextureSource=t,e._premulAlpha=s,e.invertY=i||!1,e.isReady=!0},e.s([],55976),e.i(55976);var r=e.i(13379),h=e.i(58720);class n extends h.Texture{constructor(e,t,i,s=!1,a=3,r=5,n){const c=!i||i._isScene;super(null,c?i:i?.scene,c?!s:i,n,a,void 0,void 0,void 0,void 0,r),this.name=e,this.wrapU=h.Texture.CLAMP_ADDRESSMODE,this.wrapV=h.Texture.CLAMP_ADDRESSMODE,this._generateMipMaps=s;const o=this._getEngine();if(!o)return;t.getContext?(this._canvas=t,this._ownCanvas=!1,this._texture=o.createDynamicTexture(this._canvas.width,this._canvas.height,s,a)):(this._canvas=o.createCanvas(1,1),this._ownCanvas=!0,t.width||0===t.width?this._texture=o.createDynamicTexture(t.width,t.height,s,a):this._texture=o.createDynamicTexture(t,t,s,a));const l=this.getSize();this._canvas.width!==l.width&&(this._canvas.width=l.width),this._canvas.height!==l.height&&(this._canvas.height=l.height),this._context=this._canvas.getContext("2d")}getClassName(){return"DynamicTexture"}get canRescale(){return!0}_recreate(e){this._canvas.width=e.width,this._canvas.height=e.height,this.releaseInternalTexture(),this._texture=this._getEngine().createDynamicTexture(e.width,e.height,this._generateMipMaps,this.samplingMode)}scale(e){let t=this.getSize();t.width*=e,t.height*=e,this._recreate(t)}scaleTo(e,t){let i=this.getSize();i.width=e,i.height=t,this._recreate(i)}getContext(){return this._context}clear(e){let t=this.getSize();e&&(this._context.fillStyle=e),this._context.clearRect(0,0,t.width,t.height)}update(e,t=!1,i=!1){this._texture&&this._getEngine().updateDynamicTexture(this._texture,this._canvas,void 0===e||e,t,this._format||void 0,void 0,i)}drawText(e,t,i,s,a,r,h,n=!0){let c=this.getSize();if(r&&(this._context.fillStyle=r,this._context.fillRect(0,0,c.width,c.height)),this._context.font=s,null==t){let i=this._context.measureText(e);t=(c.width-i.width)/2}if(null==i){let e=parseInt(s.replace(/\D/g,""));i=c.height/2+e/3.65}this._context.fillStyle=a||"",this._context.fillText(e,t,i),n&&this.update(h)}dispose(){super.dispose(),this._ownCanvas&&this._canvas?.remove?.(),this._canvas=null,this._context=null}clone(){let e=this.getScene();if(!e)return this;let t=this.getSize(),i=new n(this.name,t,e,this._generateMipMaps);return i.hasAlpha=this.hasAlpha,i.level=this.level,i.wrapU=this.wrapU,i.wrapV=this.wrapV,i}serialize(){let e=this.getScene();e&&!e.isReady()&&r.Logger.Warn("The scene must be ready before serializing the dynamic texture");let t=super.serialize();return n._IsCanvasElement(this._canvas)&&(t.base64String=this._canvas.toDataURL()),t.invertY=this._invertY,t.samplingMode=this.samplingMode,t}static _IsCanvasElement(e){return void 0!==e.toDataURL}_rebuild(){this.update()}}e.s(["DynamicTexture",0,n],72412),e.i(72412),e.s(["DynamicTexture",0,n],14960)}]);