From 7cd052abdbd9fb8de338d587d4ccf858df707e8d Mon Sep 17 00:00:00 2001 From: Satyam Mishra Date: Fri, 20 Dec 2024 17:54:28 +0530 Subject: [PATCH] Updates --- assets/Hi-783be2bb.webp | Bin 61172 -> 0 bytes assets/anon_exchange-3f3d612c.webp | Bin 129526 -> 0 bytes assets/banana_class-8925bee5.webp | Bin 58740 -> 0 bytes assets/convogen-ba953cbd.webp | Bin 74390 -> 0 bytes assets/csi-1f769921.webp | Bin 16296 -> 0 bytes assets/downloadtube-64b5de57.webp | Bin 64248 -> 0 bytes assets/facedetection-65dc0246.webp | Bin 63702 -> 0 bytes assets/index-0ba1600b.js | 3927 ---------------- assets/index-9b6fc05c.css | 1 + assets/index-d882bc87.css | 1 - assets/index-f681c7fa.js | 6976 ++++++++++++++++++++++++++++ assets/langgo-41707292.webp | Bin 37190 -> 0 bytes assets/lifeoverseas-fd137d40.webp | Bin 16770 -> 0 bytes assets/msc-abe50c5d.webp | Bin 13514 -> 0 bytes assets/nettv4u-35143e02.webp | Bin 32702 -> 0 bytes assets/shapeout-d15c331a.webp | Bin 52668 -> 0 bytes assets/velox-429d856c.webp | Bin 23006 -> 0 bytes assets/yolo-9ff20b51.webp | Bin 31874 -> 0 bytes index.html | 6 +- 19 files changed, 6980 insertions(+), 3931 deletions(-) delete mode 100644 assets/Hi-783be2bb.webp delete mode 100644 assets/anon_exchange-3f3d612c.webp delete mode 100644 assets/banana_class-8925bee5.webp delete mode 100644 assets/convogen-ba953cbd.webp delete mode 100644 assets/csi-1f769921.webp delete mode 100644 assets/downloadtube-64b5de57.webp delete mode 100644 assets/facedetection-65dc0246.webp delete mode 100644 assets/index-0ba1600b.js create mode 100644 assets/index-9b6fc05c.css delete mode 100644 assets/index-d882bc87.css create mode 100644 assets/index-f681c7fa.js delete mode 100644 assets/langgo-41707292.webp delete mode 100644 assets/lifeoverseas-fd137d40.webp delete mode 100644 assets/msc-abe50c5d.webp delete mode 100644 assets/nettv4u-35143e02.webp delete mode 100644 assets/shapeout-d15c331a.webp delete mode 100644 assets/velox-429d856c.webp delete mode 100644 assets/yolo-9ff20b51.webp diff --git a/assets/Hi-783be2bb.webp b/assets/Hi-783be2bb.webp deleted file mode 100644 index 56ccf48b2d30b4d8b54e31642e814df3a8d0ecdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61172 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 diff --git a/assets/anon_exchange-3f3d612c.webp b/assets/anon_exchange-3f3d612c.webp deleted file mode 100644 index 22aa0ca71fbce53a49484fd078849ea96a695eed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129526 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�#6Ch@V0{_xWalGuknTvP%k&JCc z$dyo2-MOaee}x)4Jskr4>7V@WY-2k;my!9?8R7o`h=3?F(1GdXl{E@(Pk&!$7`4O= z2pDYtf_3JKyw=ziqsWY5MAsj8#XZj-^V|GX4M3$p6aqv&O;E8h$xr!L>2vh_Fl~pc?6tf;aopP6vv zG4Opv<2aOgwH`A8;NLw`G!nkZ*{9TT&(rtV~(qkR|$2{>mfj&uOgRSMz+c7fE_l!i^U#e;oGoqz;DpO1E>%HN-I{ zdcj-4k>@E#e+d54vCRNXK(oKJ^dB?4wU>92`p+R9c!=0Y69IT? za+IBsbdReors2}%@3hD_xr=0nu8i%@8WEad7CT^sHa#wlHtit9cOpblY|tDbtQ-V@ zPhSX}9n1IIPAmL{c551Mz8?dNQ^$n=+MUwC0;!W~5w9s*VkQ+%3p5rm$79b7qc2L? zuHE7V$@iPqvAMU2%VS-ov2UoCm=b~InM+wgd{^1ezfD5a)*HLrYA`m9aRb_aR40tc3-)3tlQ}hD%P;A{aqDOI( zPJB9B$Z9DGGeIjmzXFB)t2@eRbop65`9@#yxt-hcVTG-HRub8GNz=NTD#2$A9 zX-f(pc{<|LuvNrmN{LaT(qNVZG>Aracw>j>9|mt)VT94SEHfaPb9O>*+oRJB zx@YOM2bV(BB!WdE2|2cy!H`eBt{;y1^}Mclmd;XrYpN^0E)5X#>gdszvXS z8OH(ud6Y^&@O*LRK#0nl5A0b;#dTPnur;>RAW|Er z!Atb|gd}#t9Q{-G%wW$855$W+|mYMNu$Cha@^Xz z134#EqKw5UP0{1dWLEnp|< zkidWQb>151`R-Aa|M`spS?{h&S}ra3$e<<^*89C1*P9SP*;AxR*FVo}pW# z#K!1Jjhv$vgeTR4Z@zcuV>h+ce?nD&0H&MGW3c3yYOCSL>l}ij^}2amAnVa3#S|-D zvWhP;a2$KxW9Job!Et?_M!h0oUEe;-`x6XiZzz6y!Y0dzjLsyqX)W~Ba)Q}Wehbjz zX>Dv`&?nPMSOWRL%Mch9pS~CztG=UP6*zkGIsK&ffzDYC6s_5}==$!yVdDCE7 zL<@tJ!D_eolJ;fT@>;?0P=xFy z8G(^)r5%`Q|!qsZ5O)R9TT zmMfV6Q}$AD`71FjENiC<^3-7@H}F4WE&jQ|Tcu={)V1EBu_VTxQKN**(3FomMm;|q zH*aVnZW!XqYOU2DVr9iOekV|SH6hKJwn0gxO~mOSS?dZqmjvxYqT{l=TX{)mSKovv z>aMi_fvmiOZCglT_~Bt?EZ=2eFDZ>@MYB1LB@ZK-6ordG55Q$(#SwlfnS%z`hgC}SoY{Bp6i)$RTe4C+ z4FDkT391$$WH6}hyNSu6p4W1ij_27K&}f2`-B#gp6m_qTPCKUBXsFh43Ws)`)=ibO z)pJqB0T&NYp%oFP77B*LCUdV0Y33z6+F2QD!8YYYZa@0#zFu=dXymA?JL1oTr|+mk zH*-p+m-I@qPT!|;ieF5e$ZoF{XHc?RK>41xhA1YwqVWY zdj_7zgZ49HC1;s!;*ZhNeL8b#5!8Y%?m)ivqO$1~H+}IRtQSInQY^u&n5X5( zBZNZD#F|wJeM9GK8l@?>ayUv4KO=Kw6w!SqfUCy%iAtZS<2ug>~0LB_YVY`sOJOEJIS*( z5Sb}$hnEXlZqu{o*aULO)tzuCULsn+qcV1-wVMA}tr4*kd|L^ZYgghrkA0re94rG*4N4B#TG>Lo>-xOJ~}~s*zEb#dSkIHMl5|dn6ypirPv+b z!=wbs_m#aKaj8HcXDugzRKD%R=gAdk+Lr>nn=fC<;q(znx44U(UX6I!8;@J5Y;v(( zCbhAz$W2wj=*|Qp>Li36G#4h|0g>8J@-lFInyY>3i)-y)$R=c!W2Vkpv5kuyoT-v; zEOHRj3MbdWu*4*_U7gdjvG$q5^EKJw8|PfJkDl5~Dw{z<;MUybV8Y7MhJNdo7T{n4 z)bw8$vwy%gsQof7K8q|r`paU>DC~4u}_8YC_V3nH^G{~ zWHV?Q6DIZ!#UOIc_2~_qMLb)5WruO5)i@-&ho^^%_s!h-@|lzV6m~<+Ozp&SKBRuu zZ}|QHx#WTk2SR^IKkRNbCjh8jcz=n%@>gaI z?xuTsvbfLls;aK>A^@xKBE54ovhMVDTk-U#GmyX==SPfl=Wk1~6r>k_1pknH?oCSR zzc(F7QO^3&XsChI=Wm-w{dS5>cftOO*$SQA zD2unq{2VxRQEwx+kU@fWBPwMD0Ow@NSB_dchN%h1+)96g)QGy(mp~Y7^6V*?@qT2_u|y-pupav`pjP4c3j`?rgXm6yvaZOBLc>wJAI-46#q) zk!y}bZ}LAnBt#yrEZ)zMHlDeTNm`qMG?`~FX)%AL28mRbDR!|s*VwZn;a@%oZpR#6tR8t48V}IYjcT2{s<_& z{QuG(58kn$0UCTyB|LX^ilyF$0OQ){$X~5FQp==KosT6%D-kQQo!e?k6dDIq+X*NR z&Pd>4;5UvnKD1Q_mop-jCmy8XFTgJ-^KKW{{rcxEN^-64&3CZ#=+p-hL2YHu8J_Q! z15L&rW7)Z9nK`Cq9ucjH5M2ln2JPx}>{l&J969amCTQV+n3dgbApL2BUK zm#=Cw(YD3iZp*YrMqC zxS5rQhPrT;u58ZYMXSti%T68NF_!F1qL{pJ2S&QaCDBYlBRI5BPl;2Xy2i!dJE>KW zz@a}I`4XJq8^{8gV?Y|CH%7lPbA<`o)IunG$o|x*L@A2LOP=wqs|F0HTVTL`azy>sPC3bXy_#_Hb zqzovxBUT>Llq28~l&!Vy=%xzjsc(ih+0}(v!<%1<9gI}hQrA1$+@&WIi^DTx;C+LxSholNzd8|@>+qQ8g z%ZNfX?SQjhFqK%H9y#5{fzKtP5)mWJUx<8u_F0uct~2vgghX3Sp2FfeVt( zfUs8PSqn`NW-H}QU2(AFn3+HGbymx9R2(ow3!+#F!S8o@ry!@jR(*GHO+{hOB0akS zF!DNx8b};Ha2HE{^~9M6Xf@?4IA46E4^L#MWP{vNKZHG4Vc)pqZ{VcF;nLAEWU((` z>2_p}Uzc|c%bd52$|V9RLi;_b)>@iDFUxILy}C|sk(!a!{OS24u%ERYGw32>`5ANh zzn9+6maFi}Bbd7n$Tp7IaP@{@^T$-dyeB%3xtG+(9Ci`_f|ML0?S6#j;M>`gm)kw% z28q8m_q`KR-M>LWv}fkQ*W*zM?9NftJasb3%c{H`R+2 za^#B^_y#^BQ9bfAgI|L`icwpse4g1oo6qvpWABmAQZI60IUjGr*wVhHf&J-OnvoK% zG%8)_{!f&ADQ{h(e@{wS06KBXf|0tg?)>=|Y@kaX<}w2!PXlY6aEb4BNBuZ&(#J7~ zF?j14C7uI7+T=pG_P2p#M0 z?K85_BA?)^#fyktdCv#(2|2r;pb)TyNbL!->*P{i->7WXSn1D=NKQ_+WV7lEfjm{v zh81_giOZ`yJwfD=4j6Ht_Fx)_r*KhjCc2>iiP_QrR-K2A|HQ~2x4xjlQsCa~Mu-f! zuLsQ1)7_m@9h{>M&?p3XuCR^?s@YrXOQTbN?0qvlxU2inHISKsJF34pwA+)pK_Koj zQNv|51Xcv`M0efd@1@2!v+Rl|&0v_L{PSo3H)o>zLRFqjH_c5wp&DrTmlD?w&m2xe ze{T=`sOP+A{)x^yfYS;2n`sIvhnRs-FU#Bf2Mz2s8950Hfe?2<4Z_ES*TvGK8WJ>h z%|lyD3_K0*majTBG(C0d$D6uiUR-_3cyMpq_oJ4=qHluY*b&Vzun2DFvbK7eP$9gB zqEg=_99?>y3 z2*JhTsEr|GX+dy??338Ae)0*E&;_H*eV88U2KAspjI(xDdx0r|EaH$Z!yDvXb}wn7 zR!h#43e_^Tp0TSIFu6NpIxm&xw-|pkK{-s|TkYp$-36JkyMbfl^u@We;fBz`0>W@z zpNBRPF%&&G3Kr$%_2kh@65f?9vkD0fj8C-&h00r^Ml3^l$?H^3>QHEwwSedYX_i)l zArq1#x%#N?N*Tsx=%2%3)Rdh|H3Wc4HvSBfSx)J0UDLGjvZsmjvR*}mRKP_Sg6S!i zV;Y|W`05<>_^5W0*5&Gp-!OtN0+m__`KtLy(B1=G<=KJ)Gl4(#9=eytHe;;W<><&x z)Coi~_X+vkkLcFO-F6Gq@3(16H;7I#P<&fKZdjWLh(c4*g_awD6mtC1#Y+hPV!o1{yABt!8SCxOC=&e5?5{9V*N>Bj-W+)557kcJ(EggUcB3}qp3v!Yv;hp*{!s2p%lXXvm6;ZON za`8g5(yJfcbZ5`g@*5-qq|^-RS^gdxjr7RBgr?=t9uwc&w4p(!d~2p7UvnsXmNu^J zQj6DVF=|P~x8<%v(xQ2{?cq;KdBnK2>O4x`5 zJA~&{?j*6I8F?o}+(W-@`NQK zEaN(YWiC59V4ko*7t`OqTak?1MBCZMO?~b#cZwxQWSs7^`b*|Vh!2)_h2R(!p&U#m zaqh|KJLVIQF|)p(hNKsM$20ZH{nOlj2XzL|dr)=gid)rVPZu}Ch59@4g(kt7hX`6> z`s+KdjKB$qNQpe8zhO}PGWG1CIa%t2KM3U-#k%6JS)kom;hGS|R~WpaGx=-7ia0g_ zaWSzUke8x?+m-U75FS)DsPPKCiIzSa`vvffh*ynG8?8UW(_VM5-VA=o5(jMfwM`T{YnlXY%c360UR4$3>^mLA_@uh z@t?CT&QBFR_)y#V1RpD!2!v~c68>!*#Pby@as_D=6xBS91jZ;!VquxW8Hg*|KCs-3 z7b9dFZBg$#!owXKj+Kz?u$Y+${h-*P8%kk*nv3+wgcSqH*o3lQ)`0;QA!6d&o&4*A zemk^bCunZEpJwf$s%%L(rzz2w$GC~1E%sF#Q4kdz6`LB^3VAC`|LI&*kuA61@8E_y z1u$7gA%<5_^gbVv1IvJ-#V2IMKE31a$m&sS4?j(=uJusJ?{9g2sI|9H2t3PMyS zfz4I33X;ufaw9d;S2K=FwlD{6x|+9d=H?)WOKT3MV1UA&>Qd^a}|s5@?sbafXUaBPfmY~ynueK zn%+nFnOA?-XjSJVQU^Fg2*U1-v!B{$?87QRTZwiK?7=p;>t^nlh6Wy#Wd zzwyHoM)PkwugLk*3zFn`zs0I`?uo`raow#R>BJ_|F)HI|UMPzuGfcK))uMzY46Td@ z(CJKXj8uLmf6{Sm;YLJ{j#|hipmaEmH9s4i@TqN&a2lEdx!L@6R zUjDaxgpi3fl#50+0Y6=P`RJWdV^N6EG@>guVFyn?jPz7mv`;@I2}g9(+tl5whFR{Y z@N%i3D=)K_S3Y(F?)g{FIY7Dqm(|oZJ$(<0(rb^>Ut*QHc7~h^$gJKg6~KdI z`c3{_^ASpjPWyc&w|igU-!?`HfaktWvRY~*RUD~Jc#J;2Z!7ZV)H!$eW3~_fMhO)t zrz$aQWeMWEMJ>R`n2u2!+XxHeOVr3dSX%5eHlubWL?mWvc{JUdnoeUb}~w#EBZ?wyZSA# z*~kpH-W&On#IfZjUj649t#yQ5VhfUc#+WHsBFktB7Ni$C{M!kytq6bFqFu?3`}*f} ziEG{t6(Q2xW$cum9r%dc{yyl1Zm_E=MTeSX(wrJzkkmMsb&`O#XfC4DWFXIj-m?{W z(l}tYcyzq{H>DB)uKC^1)$oJUOY>An#qr?To=XhKVKDZ4cU&fxQRp&Zs` z1YQiNn_=4Ydoi`6S-53tAp&W6&nLqu+(d-k%lrVl1+--wj5Q|h(8xKm`eKAQ_+CA% zVW4eq@LO|93FZj+K7tZW!=wR@StRj`U+OEzTmX#1yXI-ZDL*p5;OdRtckho)-3IG5 zk`vRuvXQYtK}KoM6V9dZ76MU+*Q`a_jpN{uMXURwbMbdw^!%KmsRF&>+(>SNDODRz!-xiT#XV zJ+PB`B+M7H zo)8x&M#h^a>CwsbDX=C@K>LMb7hZY_N0%F8Ux2fDO!zg?Bm7)bbFBMoVP}aHf()mh z24@7fMb^45DB<<3B;4WHE#@?Y3PbuC&ZD(zZjT3=K{)>!>Of<>BjzJC#R79XAs(O7T~S^=Z7JPw=|k-;$g~O4j;)PG@6EuSzR`+9K{L2# z*Tfpfp`EogDu`7|#1>rJ5-~M*dYV?vwCY@adR)62V@eUg9MRuH8qgov5-(ZI$i_Ky zm~g=Hp8IZ%xm$FCzS3$+-1fW?I%RUO4lJ^a8>>?$E@0bOq{p0g{z&hsxa2ab8l)5( zN3@eJ*XRUj`;1~{i-A9!p>v<4=@%O?Wa6_Lz*W;=!A{+)jkun5C1L|m$30y~#!{ff zI+_dc01!jMIG{h=f8;t%q$@}jVvH4xm@NCG>a{lx&?Y}~5OMY4i2brr20<)$9dr}n zh!>hjM556cm?Q!M;~vDjsu%Us_P;E3l$kTnO4Zk&Pj+)(*J&Idvao1V$9gV9>RMzm zsDetNrWlInETc-9bN$Wc)=(2;#4N1 z8?AEoG;b5Nq^&RWLd1|47so05aeDBQ`m??>x-8x2|Kap)hjOkXfQXKpAVCF~Y$?m2f@(XTE z_Q`v1ZGHwx$Ff8Wvw(VsmtZsl-;1Xl{H_cJcM1+7S=D$2N;bm`f*h5C1H78_#4&vj zqx0Aoe8y@YZ~>|5c#zUb2=3-O2xKUnvF6nt7B z(fH5DC1-Tr4NU!b^^-vjT*tf##f9qPx+h;8fYXco@GcEd_1JjtXXD`gaKOJfV{Tr; z576sb_MWm;0cA@CofOvX?a_EhN8+H{a{(M-a}`m-H)V#G3nKbIxGm9oK5w%vd~`!sOzag#R&9i2a%EZJMedWki~VW$BS`dk;UL4}eWRxt!MZV@Eq116 zSMdIQ!#`Bb`+f0o5Ll#37XUZ}O{tYK)Wjnp`46w*2@C}3f#WDpBCJvR&vv(bn>Zg4 z2E9Ktv@@HYy7}@RO*^A#^TuWAEp2hTmzYK`xwB{pAf9%`)Fm!2Bh zj`m~nfn6khL%4VK7w=?k&6*@fcr*gCvtqZ@8gU`Y&Va@|ZF=7rq05_EUPcR=gf;Fr z1V0`r*m7*9QA?TUW8>l(!(fix=L6a)5lf*@n;WRXjM4U9 z^+BBO(>QxVe$b8{wnj67kSLET$^B+5k=HJCPoRQ{C0b0HL=pW?ZXW|cWH>QL4&UkgfE{W^16Z)8JVBfBPsDLW1Q3R{pP^&_W3crkrsn4;b8CUhHN!0hQ`|^EP3k^~eG<3B> zCuMx+hqiH#N}L5*nYxryKbRjWJQLmF%Od)fq8g+~rO*(Z-(#=ISjA~mNbex0{MXJ7 zn5)oO%((4>o4G{|IH+upLIZ6%*)KRDQH4 zF&~Y{b9O{zYaVRp^=B*y2mzka{1p|S?P8!_Su@+=isV_*5j3$Y=D7+lcC$J*d+9s4v zx5%QQsx|eZpNkCoi2cZ$TkAU~S1#3|%$qgnz*W211AIrt2u04c#OV4zIUnL?8gi+U5*}GSOLR&-@PUs7pbe@wbj`vnA4g|sLUhT3 z&2RtCm_fRnc~*@>;j$v6o7w+p;xpf?#H-yvum404lU0n9>;ihw+4U`i8yrsz#Q64( zgR8?b)v*c6ZPkX#k;dyCxv%L3={s#>BL3mY@M`++SMN}{+4g;+RNo}bgVm$t0+^Vk z2=bkk-71ym%1d9<+ziyXY9Y=fzSa)%7eL4x9DqlTBU7>Yl!U<}3SYpwgMg~~MZIH+ zoUp5XS>l{F1`v&_{Y3x*vM5vcIMz_aI6y3?vr_y&In(rxT!eJ_8_FG)9FK12*Ri^Z z|HU%JRG?BhxiXb5SlAs*U&E=|4CDA6e(SqZ3~JWZD!^l8wI(_~13tbtD;`YpptwVn z9nZ%}c0O%*45S(54#1(^9)!FGIpF%{CrxGFC3l(IE{$>=>4%$&LCKl?Mr%(hm;$x+ zID$qPv_9n(a*B~#}=^*;h%P??}laemF@-sge3(JW`n+>VTWY@7^1uj;r^{% z8~aHn{O~H1L>U$YBIvcMW0_ZgwCR7DtbABM*NgReP9s7P;iq!6N^3Tv4A_M z7{{}qxGeS(>NoI9Fg$(#c3xoa7VnunzK|5TK3+RdHCv~E1|Dx@p!^E)EqgOA*w`OT zN&wjcejij&Phx^czNmszcUZ3qoQa@&<_4uJl zAwt=st329YnOv655YM?6R&Dg%Qp6}?D%muMwH7^+_c$@aLfIT(_g(=J6EjTe@2r@_ z)A*s1{|g$EQXNVe#FR=2y9{U7OC;Ja?tgaoOhx*I6fSb8qZX?qU;9)*+#B0Y{t(8u z$6!O^sAWq8La{~#jzDl20U*3qiiBCMI4sz6HTo%oTh0zh9Zw}xfRY6M=B#HEgg7~T zWATJaLvRA?;05>S@j+^cTUTm*`}o{4c3#_zkx-RN;p3z>A;ugbWP$I96=q~6H7O1) z-xDV!<&J#4Nyv*`-cAn{$imWth#BXPy6R-Mxo!E%DnDzo0Q7ha@sV1p@{D&jD=LpW zDo3}p(lI!ofcPXlB&}HQw@2xSH=}Ee_Zq<;6^)~x6(dqC{H$cbEkIi&`?`oev`gD3C+pfxvC^?ncZ+i zmlOOJStiZ|s2Znoz6h)^=XXVznfblN8DpMr*0Dfpb5h~fpq-r=eFgnY$Hg&37VB>Q z>HxLP>?M+fL&{z$9RQQe{-N~QC3gkcSqzPYs*MmlHq?`1NAIp0R}JaqO?8@eoWIW8 z6Jc?t1$18OjrNWqsO=Ni>n(fvteP(W&AQ7|PPHf&eR8SB#e55dlol4jKWc&SzC`K+ z=G+#s>RKeTK+<**4k{_}ip_clVxPa}zBn>7ICq^+9W!X*bGd+;_4O+uQjK5=x>72s zubf!}oY*5_11seSvEZb1E-iO%eTuPWElq(>ZZ;Ug_N9nBk{%sn3-**P$66*BH5Ys+0B2|&<24^FFA-*WLf2 zOLL9*`>vMD%n%7QrHGaH6LjS;AU6S}4OYa+W^Nht+5STll-$Ph7>y?^xtYtx3Y zVm?vZj){a!;s_1p@8==h=ojEYWK+4ziZn2O!{Q~eT(qF@!#^o8!MBY;L zKWMzg3RfD>zEqI|yLxmH%L_ILU2%{WBlV!_|Aar(%ej9iX!9=yz_5^bSje6cnf>^` z$iDSzNN{K z%gz+U5)V*fFUtG&ufpw(AI}4++flGv=$OjSj)enLA!BHT<)H*ok&`#!G$gKBM+Z`5C36R;7NPPj~gd zn_C5HyyGBU`j3Ebo_F=cXsCs*o#{kWZOJh&9-2|j;%N)Q`KO(#PRt|WTR4F`ce}pLs@lza`X^Y)A21XqSYvXN02|g{2rFIECVUXn{Nncm!;gC%I>U+^J490 z>N&6cfv3MJH-#uznh%%9YHm)7w5{Mc{$YGsVXpi;2 zOng_+>Tj9Kbg}yk?n#Rp2DUv9cIJ$9*af4#(Nsdal?(Dr5v8n1m;%8ipfc5Giv|#{ z45>zgEemKHc=&hBd0=GSmh2icoM4|0^y6s>VI^IELI~1$LO0>0SBI_H*W_G)#0n2q zPeJArcTIZ0aUbDHr^9h*&HgO^^}cx_yrv66r~ekv{%RQD)jwQaj`ZD}Sd@sSwH*4v z4L=WrO1CVJOiso{&G{~Myj~uB%-nq!VvA2AO?kMK|NF0c%+Bds48O!a0TGkk_gNMI zu25+P@SK@_^0{!3IQkubayeff8mHj@U;tR;1`HHTu#O7QNAAZPBw8n-U!M9?q{!gV zSxr-;kCCR5PeHflXgD96xy))%0ow{`y}okCE*H)mKeU;r_D$2Sq_Y-FB=iWxxExsH z;#pf2qt6bis5Fgs2zfpbLL;q)qF|ojc?r(vgs>j|a=NaMLN8b95)A$rgt^3fRjd+Y z;e^G6ArNNAX{1x^1$yFzijxA3&@}IPuY@j*Gfp$K-af2Ar8uT@>NxkD2x&rT6DhKKx{2tJ;o;d4v z8m}A-F~6o#oT40PewQLo+xlC%8_b(A2XI8vy;sJsJ;(r6tN*%yq5{`iFm?=@o`Doy zgAI%Ne8q+g{SzQ>w}rn;k=Q4y$LvBa?m%HbBR}<2c>Y#eceYm+Tj;Y+MXH3g| zD8vSGS*)y`0|z2|O_|XDr7;${>XMAa`xEW{BC~M1Ip`Ff`qM1v3xaozaJ{Pn6a+}Y zs|xU%&#cRou}|4Cg@Crck-`xlJaN1_5EEDDv4tvlx_wJ;=Hrv8$jQ7m* z?)=C~m}vi4UoU5=yqL39-doc!a|H+Z;0R$YL1778I(S!^tqp=`R@}n_Dq$0x`OKKu zFB;S;!x51u`R)^#X-1F!rZ46NyBvHovSD<^+(dmn0LCqrS&eOp<%X1>DdRVvDz_`4 zQI`){hKs7YUa5A`6j^I4U1HU#_*XT+EyyFUx?hm7QeYN$#;fTxD8&&8*;|5?*7@6I zer7JDe%x6Zwtw18nP&V}4`)Ysz$r@HPwfnWz0A~8D(6ty^|5vmA)$mO=~MEglC|95 zeNlIww_)?4?+gP^iY1U7XZ>VVyb9rk^E^pA%m^F$L4ccks0a%FK`siL9^U}6DC$mo z|3z;p2{rCKbW;-Lh{2mjZT+e-&+p-;-sS+TuPA&mKC8>cQ71AT>QF+x%E~)-5OGDL zp#4PXnH~qF?TenJKFkA{ygU(!P9dSZUo)v-VS8RAwCdS=wnNkEYB*Dp3uq2dMo4K+;}C%{?rBqo6j=by<+uPUT`YNK#nZQ z#Gi07MZQFA2i`!8+?t|{C{vz8`()y4&J{`)doFI3VZgg9HEy(pG!H7t^Q8RldB2>z zLD0ZW4hAO(Ho}Jy4;f2)TJ;s#8i#~4s!B9%H|;vvD9@c#!i5WRyqnN{f9KZwMgB}i z_O%Hg(g#7&CnRi@{x^l#&+kt~_;Ut8|}??C7ST=HKA za{@u>Aq19A49{_&jl7NyGl5ld#P*?HZ|*j|$tP+VPGBXw;YuD@i^8_oJ2mnMsah?G zs++^PLbs&qTdSP@bZ74Eq;neWsE5HXE7s2_Eo|!E#C^)!m{A<~fHo|I7!@$EQvr(j zEuna^@c#V({*0R44h3u{w?SOFoDM+4zi614g$Sy&%jH}iGHBQyDh6zgPY2r2Z1!4f z!;r{}DjqrDtptWe=)I7vjcodRpFXv!yvML`Zb339DM!udhX1MRoQj0!DMylm_E2gJ zU6ciPL<_ClAn&JKn5i3Ed!0=u9OH|SXHCBws#6D0A|Y`=2yGun#sFZgMan6Ingf6( z;##uf3+MKlC`V7=WZ<-agFQ&+?q`g!RX=XfSJ^mfwd|-tx4jvIqfLAY|K^yr%>#=# z6&4qeEXalk2Kfae!zzutrsV>3>7sBEsXNjL$)?tqOgWQ1 zY?IW*7Y;||3JFvONdw_Ps=*OzZh_(GZn*e>AqHCLn2Gva zH>LTJ391)^u>I7}Fg(GF^MbXZXb3Qb@fBqPzve)PT+ct?Zr$E<{-Nub$9 z_v9e%Z30bkG0rzc!wZ^KaBiF%4?4tQ)W?DCu>c%rgErC_b%p@g>Bn*WT&X=uph83L2vqJzLba#Ql;&x2IPZm3LBFFjpXOYV4Py^bKMm~Ye~mynyDs*|DG*&mrtU|tb~7GsO#=V-3j!!N{P&~^q;f8;6$t5b!`r8Zw3ggPgPUdj9u2{_r9Rn%?&sB z|A$$Y?m`B8>#u+Q2C}io#BPH zBwGrsD~8d<%p#;~H4`TAQDurp6L zsbHWu-Ax`}&-a`{I~~+gfkN&hj?D_=^wFcUM1S$xZUdqv8!=l4tuHX#J}|Bu0#7|S z4)b5wvL3!7h{*FzWIUeKW_V4F8&tOiwne}~AX46+Z}?AVa+{Fyd;=d@pB?O{6nS*g z-s+HjGgNUu&!@Kc^{QEqp0D;@`JKeF%FB~g4X*$I0000008)jR;+PIodrWKsF<@NX zk0a3o1+ z!)5+Y#R`Kwi)>@UjTo8gKS}IG+SK+m<@u%jV{D%v%b>m^>(A4bYNB@n^24@xZWcEr z&M1Q-41b6p2jV-NO4v6u$pRi2o%)ODaLVrlIbk+q<{|GX&C{qzC@QZ+4ZizWx0*GR zg_1GXGbi<4{2xyVLt8bSu$&cFc8if$;tn5>^cyE!|Do&Y2@5XQC2L)=wac~e-y|YO zQkQzN3;Mr?ptlt&b;?OSR=>lz@(Az7ONSJV*UBGI3_a)?akiYyMri1(`zu4qTJrWh z@*=SF*C6-9DrMtveaK=_?Yn1NpP-^z*^AINye;ZozFg}Oo_f7f*0ivW6I}e!{uGpv z76Lub-lV}A@bFfMKZK|s8T7+O^oRT0_ZmXZ+|hD#lKsn{<|1%AW%#8iYKQuP1Js_D zuxSG}6WwI<>%!+hiNyQvYqB+xo$m#bh8yD?O^pLWs*FBI)rV5W{e}Te5j@s%% zhIBy;Yg9MtYn4nwIS*HwhZU(Q1T_!6k`zR@{d?eQj3 zx+f*$QJ0@xTJBKO0u%N!sWe0<>wnQS!RVpSzkQ_dr$HQY)}*MuxUwcGem4E;}mrzu&NS-N*$(@)t`zf*b>8r zVcm(e1T53Md(mz7d#}7yz`$?~@zk$B7_(zRyHD6B_nhO-CH!74Ln1?Ynl(Z zVlt4FP8Wiwq&NXS{UkANjq*a6OMB&=b#CHHab#sD0q*(?M$DSr`g(FOPg5g)>ai0O3`TKWXYD6-I|M6Q0>d^HzK0UJRzpT z-er64uU|i%c&iB(QfWkV@lh!fN>4N#?$togEzp%V!PQXwpi}4KRjh%|=u2kst(WiY z69g-ebC~)vAoGR0pUr_~;<-~9ZaglmT{1s>l@)bx+X_*7lU`EpAS#CR z30X0tMuB+i$gOAm3FEF46lP)rTE&q@$t9#}@;`x)uq_I@80dbWhzA-;{?WSuA?9vp zI!lCyaRV*wxB1oWWMW;}?{^rYezcfNBRIkycP#RAVh=z;Pc# zW`_FTm~jB6UR%O_ICPE8Yw!v?I|-P~-uF?ZzA{clMsb~Mz7y&Z0N8(}B%}^u+fAPI zRQ#I;LGi1-$E#D#f%hcRn2Ti+KfE&NVN)m+z1c~~JfSU=Q2_&vu6{X>U*K&L<7&b~ znHUP~kskrxS<6gLRqOz2x^nT}DuV8MtAV1z_SY*4+~YuC9+`=W9M-5Nb@QYMlg1BC zicW_g9d@};K0yj1@wOy5bCau5%;7pIWbZ`vC87xJrEzlD^pEgV%XGUxO!sp;OlpU^ z?9_=l5y0>>sHVV4>MnE4@kdG{4rKjMGwL49!_Z!$kY7cdrl+CVWNhhFBUE>9Qvw1w zv9j2TyJh2mNfbX!UOcHyvZP>nk#{I39hWKQ08{Lqx8Z0HFiP<78Jim0e}1qWPrD z+54uSOtG}p02(pu=-t1WZE_(C1@`ZLkn8rGC+iR1Njus2F0Rwbis~`9yr;mTxWGi&CTGGUfe|N_UyrgV@ z=J#^kHn+g4UGAIU!O8}^c0!V2PPnr0{hSe$l=dKI33WQs0bDALxD#w6bjy}*OQpEL zt@jQEwab1ZDjDi0`^RCS`l>dX;~N3KE0l=jwnq9o-t+y(p<-oh9K(bz}<+;{+V zAII-@ZVNor8?veH55EpIAF0yFFwfHq2d56YumEvd)3_!6LtkljfGfj1-zVW=CD(+o z!(ZrYD?R@Fx@pN{OnKgZV!Nv1ik!Jgd*QpMzIv*9MRzwfhKF54F^@r~rmMPE*puxz zAH`0v{jIZHzfRhiIKQ(2!!E85z9+Fx($+8$oD3CA^{X7`=SWn)#$1t)F% z_vHXH+-L{XSK#e=v8u03y*ty!;kc4X1Z2a?by%Qh9O|G!xbuQPg=^|W%6-FD_!jy~ zm51n39T*kv;YsLYBtL&V-`2wX_<&?1sV)siUz9}{W#vbY%Q%n9gS$Y3)h+jT^;5|b zLSi19@A-YUdv8oKo&@VXR&FtT<;j~IbxuYX3xCh8zg?rescPYM0V;oti~pzluz&HN zMj&7^F&9*Gudo!$f8kYl5DeB4Q7Ft|9Z8PW(zdNj=)Rc@2Ta)aiihBnNvbT==nTqD zmjTAW-pCdwX^&;<^&Z5b30EoAUG5HT;BKPI@yz6PEW~|G9w_Evo&!Z#)9kAOlb+Po zGNvN2)feSq6jNmxAxREk*OwdsB3r7ZR88IzJu3w|KgktW9oyTQ%G>uRYCwulZ#)trx*z z$N409Y8hLNH5^^5-?$%wywpCovpOeYh59Ayw+B70Rs~7G%6STZ0hh=I#(iVgRu@Uk z-gSUpo{(Z2vJKg_7Js(Z#r_;BbF7-&_sra|A>HE~g;R0v>fhE{|J_KUPAWMC4?q<< zc@aWBqPJUnPu0PLwhe#Bkc!iK!L_8eNG|XSnp2X|qW6R1$Jp_o*}5E}Nu~??Mmg5c zJ#DlA1J4|tEH2d@b{0DM8xIwerbbWyYinQYLQ;NNvvy)x?jL8WiEZya&P*5g`9Wge z9Dt+}fOwdEp$hophAyy@A6tU zoIvN@f@n;mpWCAp5msYmpPU;tt3`~Ab`19UT30CxPLsj7(~XTyHd9Ui9J*KBlESH5 zABBEes$JJA!A|!>OVr8kX$WP&Xy(jN1FCSeGMB&3SwVU&0MeCsS+{ID0Dmk(H@Uyo z@_DwOQd)&cf;H+a7LRE}5ad-W3lS-5_VetLuq39;v?!JHINr?f`Fgnr?M#q?mZiIl z>OXonmNzLLP+io~qluun*tQky9%_RP*@W3t;o5*Ci6td}|O!10nEB=urv)dbBLq#S?%NX$; zK~Dd#A}mkMqOHb~fK6Y9gwoOWjG1GOjw(I@TuYw>G_|{pOIPbKX&>tIcuk-J9tEpJ z^)8gPAl{2>x>*El9%<>V7VV61O*m%T2pleQ$?`O(P$bDb|^46T2+g5Um+j7MCSw7O(}Y$En{+U)KM77eD7 zLcA??Yh)j@bKRWukL&k&)pO!-e9jK8UhCmumlTSefC@+fJGJVej|H23^Vpq}G_8Ef-|_h1@uAi^ zR2wQ9$-r?&;Ge8Kn0`_;@RIGotBNYLdw$4?-OOkdNT-9RykrC5E~e9HiAx&0_KCJ66k3BJS#OCc!4*3LZ)W>kRzL z>gy@|&R_j1t$k-G%_t{lgBLtBpxrqg!k-Ld;ebuwo>H!>IH}T!*iOn55uX1^XnZsk z@Nz7&&7dt&C1bS@E$O^78h_%GAEgSHVrNL#;k^Jr@**f5w94m}_ela2_Tbvp+((&( z_XOgq=FMtb8jjB3U&z!2wB#p#bzDDfkTn_NJ6 zUSpN!Q3f-jZ=Q*^JUb8w{&UWJr9!C`fd5;{bX6rN~vyk3ux#f`I% zSqOfvO|oM)MwKoInL{K2jW>Ys>4)Cg}2#<@)*tG_TRQ?#O9;DU>AChyC;n+6Opr517#QxEBo|atpbAKP65gsza#{X0A)eM$-KKrjN?i2qWNc{ zZ;jXavtd5H+q^I*hHOp(j4A&z%y`U4A)%7elCeBy69u}V_Tg8}OmW=|FC~LFu*Z&C zgnc2u+bgaWK10yfdwkU0C2`LSRpe5SG9rPT7ro2V30n3qvWZ%DOF1jiB09VGpopi$ z?JHPJE(b>t+A@mqn(^Lp-P`wCIjKcj1?tn)i>ngcY(~@{IlVJLuprPu@r#AM;f&3_1$@nIIOd_}T zyqEtt_8eV$SgvS#ho0;r@bgaBnmwg0o(vy-o?PE}CtKkMuqI^{%{7`#)i2U2 z3SHbV46lolFflhOB3{L;+C)8FLa>!WLt|P+DGdXn=}XzmEfc2;enOzMtG38|R9Z}& zigbu-o>zUqatxrF5<|)VJ1{RrdOB`0h*f!Q+9VNxGyh%aHOxY-^}SI55k+=>u)npk zYehetIi1MfsNn1luiqEPPa1F$_hc8f+xfzW&}S4u82})&89t~(WNVfP2A_F3&Vk|}CvudD zE!UbwZ_A642`79rUtV{20rKJZ%bg5lz1`jTRko46#SPxN^&mYJglOw6Q%Pjj%@^h7qWznCjJFgJz$|8sGFe&~@IP??ZQV6a>aNl5c@5v2==-1pe(u=TK5_ z?GY+*-L?|r!~1I#;&p98j$0KoGP;E-Dp}jVH3PnYTL1DB1QphOs*PS);ZsS!PaHrl z&(S(?4)a)YTHyxkDCsi^Stn-$I9JU*&)W%xGZj@w__M%z1=6XUMeqhdo6dVID0@G= z1Q*w4oewWw&`~%i4+JQH``*W@-(Bp4sRB`mMfF{yTs*X%o0g4KLb{ZshG~MoZ||E z3{Ojl?b10I8Jf!vppt$2{Kq2_Ep8@k&=pYl^Kq^^s6Eno0%FVgf2i=!#PpEB?L_pX zPM5s70Zzz00>h^k{AdU6+tAg0S}~ z(Chm;T9rUEv&mXP{po7LG22)_80mZ5Ko;*-8q4nu^7*b>b@vF(GdF=3u4Yf;D%11$@OP>fhM-J z#z8)tqp43NWAT@Mk7uG|ixSsgK0ZzMoSSR4PhKs4_Ae6H;vENcLDOo8Ys40bn4*MM zGHh%u;<~z7+oIf=<3q^Ilf~Rmok2TSAJ{ru{|!+0v~#6$#yckwwDnh_mC{3ZAWUSc zLv2WbUgTw)2D?zQY5V!J1l4bkhV4EQ>;XfS`hA`I8Zv9(yO;w%1g9Lz2rbdan|t*awp zgdjxF8L)C{vw_3!l>v&l(dL>Y?drG?eI)QEWtoN^Bk9^HR_(2|6K~M^QeTckA*}>>NkLjizmzt(&7Z$5g630IK^t(O|SgqeV#B2O}3xV zwXGhYR+YaqSsrg1P>!XCfjU@j(Pr>-jcj2e(o3g-c0t zAH%X;^#a|lfJPr#sqf~kGX`K@Jtdn$DntcuC-1k0m2Ofm_J4(gVRfInPC)ZK_H)rq zu^w^FvPb|Yn02bh`Dk;5M2XSFL;U6UBxc-?z-UpF}S6;!(9W~_43F=|Ma+_rGvgz4_8DA?VLHS=1# zOehC!WSWqtk6$OnMXoS zPrYb#MMG~(FqwV1-C50YaNU$DiZCH3JtHkmwY^{_VMbe$j4*Rfb#@KO58(R3+YnUd zyF;iC8T_U9Mf;ura_fKB2Vp8q1mq4aQhK2j<|2Ej**#5?G-^Hji9xsnm! z%PmQg_$PTJ>1ZdgiCL{6i9cZ@g|H60FgPAPnMz}+TeBv%5fYtYP@@<^Kp0J^Y`or8 zlkcQyp|j6g8N`L@zZt)NDif`*L_jZoj}guXSMI`Ns*jq1QZ-5E-~TX z4^b>rI~U%j`7K~?iZmUsSIG5F+CTG%4!3vN_)7?nj$}RGyJ}q-BgO$*0J+A^#8|pL zMNLp>cU{BM824!lI2jCpivdp16z2JKO|7@y4K3A{i_IzPh2vt21Lx}Lr>qi$j~im% zA}{~|00009AhwnFe)+w$_Wct1+*36pkw+WV;&aA6ON&=Y^D6rR>a{gl!o`-NDm187 z_?TqHH}D2l_vc1+D}&BXT}+27Na)Hho>wz@r7dxOGiql@;MUz9gSp&mTNx1(!qUu8 z=XZ=A(I__b!n7PJMJKn^49P8WGnzV%GdJV<>)dFI0KVn{T=a2U5h!>kFc$U~fj-G; z_GZ{E4bVH@A_)oJi`^5$R%i4807(mbV$mlBjjK%B!op|{n-Mo@&O`6-;Xom9g@tf) zvhiIAwd-tb1>Ctqp$6SWy%wMWKGP?*IcQNMyLZyBZ`LHru@ya#1uPd0NUV5!$;ey4 zYmEvxO2%WzMF?y!?F`#ZSC`ji=3*a{eX_v;;>AM=oYzyekUrTKxN)6isp-{se}0`O ziqWU5nlFMCC~GS($M`lP%31Kg;DUOR)!~8MGu&N3yLor!Og&QVuy6i1%SSHfr3c%u zFGtFIu*(djjKl;9Ow7y>mi0@7k{g$OiAS_!g1|oXj1(B@vK>$V1kQ?($x1L7s)* ziqaz4w0~<>-taGeXwybK$b*ynj9w?Lk{HU_U(^ElIE< zFd=>se`+;*-RT@K45^tsAV|cT#g2eQ(vp^ zD4wUANl$znA3`;{<63}m)7Y^(bPDW;3#y5i4z9kcHhGfeZp_-2)S@E| ze-C+Du=43$E>vn@x;m?-!8(nf-PuC^i_yT=-&z5|4Ru;O4e{+dKGuFk3Hd?#fAr(p zlwDg0q5d}~kUc*n`QgoNF{KK%ShIioIaubVoc8}ksTNqUvyy^xYc_EK!w}N*C!+#m zR)IrC6}={dUfX_Kk+U)?((RJ~&5Q(d-sJ>`2fGDsa#aug2VgapJD>_cG`isJ#BX~0 z)}qa_)mqmYwKW;YRtuPfty`9ddDs=GOrx3?)a5aMw>uc<3ch5;C zU^;zfp_Dsev*2*^bwyrI4E!YqD#?9LQjNND? zl}`kHd`h1s=8FuVA^ggkWhX4SFrAy0qEzW1sTS15NkF-}tK05~(?i!CK3x%5#Q-ok z-=bnEf{Iqp4y1-6LFEd@3Lx+`V+_7{p$lc9P|0}CzAwG}$^9MlI~I3tm+kreu==OG zs+)qr&ejmY{gCx+aCx5Af3}^4$>269J~|r2}AwXbG81J*7RQ z**Kn7;xWb$7DM0z+?lh&4=jG8tRp1#y`M9jZ*m{yEd#NtT!ZBG{YhWmL{gK@7yLbf zU~g6_2xb>Cq%}^L>Vqn``pS;Ic&N_}isQ4+)~LG*nc3NRCa-v}Sy=I*Sd*dAAslr5 zo+v=%Ei%;dhJ+ylMdHLS-ZIfn@i}fPeBW-25cPo=bb`LLG#jja@eYr6x4pw)#P5J6 zips6QLG=-KWwKsuxG)0lOQ`iB>)g4Tw<>2OAeP2M5ywiG)PB z%L*Lzm;RoWdpg4S9p2vo#QN-1abKFom?~%N^?B-LeXl@VG0{^ToSylJx!sDeJA@uI z`M^n@O62TTgpHYR``m;P%Cw;-)%+h(9#E05-t!h-l&i`(Ry>w-fTvgS8EYLs|ai3u%|ZEkDA0nijU|I#(f6N4&9`NF^&je(!V8 z1sj7s1%S=NjkPR6zXWeVm^byc>0p-mQ;4#iVtGcOgxjFxam=6XdPfvtS5$N`{70@T z3xQ{DF3mtgo|!%d4Mw#-%dE{tu;UoljRgoJnRq|sW}4;il!6UNC9{j1WEqh@fa8aRyvNYGqoqXvqg@*5n`cd# zLy-r)RD-i7e?%;Nwd?u^yDYGAQwxJZ|a#m>28?k{aCAc7EokAu+soy1Q4$9 zpH??tyHkZr8ky0YI;f^@BUcu`vOVRoSKhdP)AwG1OY>Wun;WMhk2~}2BC4q?zyepAmw@kb|q9P#SNHOV;&j!ZXd9v_oG_4V@I1`YCbVdZx#I~wm! zbsnfSmv68OBWHA{q9%tk*ghsV-U`aievBs<*uns*|GNScX{g|9=zoV+HPtb*>>mG; zC`GRO2NP8dNk7w9x(TLliFfh8Fi@Ydv4oN?GQ-Co&Kp2hnmPkXTLZ|E5yJ^UhIq84L-SEO@V$ zqkxY;k#hZHKwcShdUQ|U+VWW|#i1ub6Wa6Op%@LA`>8yUmd5GI#*o!~YbX!K=8_RC z`!tJXCc0HgdwkWyA_LDf>V!ckO_UH@uf{D|TF=r^CqA1FbWYP$#yoMS&PH;cPzUn- zh?Q(sP>h5KNW`>>Qy+=}pDPN6=y)(%$)PaB#Ppuf1U|cRdw5= zsy&9veI4X$tA873mN6H<@U~Tyd*{B+aq znYMig_KloiFsj*jW8iqjcZ%h#8WjTd3=#i6XNmGqY^W}*oFyE^j{8k$G@wr@X}L}? zD0?bb#3Lx67vbd5xHvpVrh!(=HpclCnJo`7)7|Z zUdM_u&*?GBtRh#cj;Du9*gid(Xm&Kx!=#dB?}%)SO`<+LXI)4@iF2?~w!7Ev8{Q>x z)Vmca#`75L=@f_o4Ws}71zA^iU|Y$0@)>{p&ggUe|F`{DZp9QRj?4pTBfN<5=npf$ zSNI8bh}XZtD9C)#e8I0di;$j&nEqJ8`YQ_!u6RG1HKQNzYf zle{{?*U12h6E4pWTz?~d=V!i;>pa3PfF*V^rgLxq-CQ|-XiH^}925(oVO!fg zTIgZt0xoo!V%Q#Czk)09kB{AMik8&VvWY9D4x2D!Clv#&t#XBWw>hb^tunuWRX+OEDkb`%KMi1!*NwFMo4?#WN(k$#rKd zF&|o7C>{1?8nuVCgJp1%*`2<7f;U)sDOl+XXMtbC$x-bS{4?MFBn73s z1qz2DN+61I!{Nw+;o1b_QfgIx>5=$gWoXJZi{d!ZC| z#(Va&*jg41!$EG?XC<4%W(=$?$+DKSPniyGWDGs{9VB6O^iq4mI_<#fJJ*Njp0tl8 zx-T@PbnU=zECc2%f%N6_T?O!VDqb#n0eKz*Vbf2P1f?%XtKH<{|C(EKyPP{L3)tdI zeP3%R(A&{DA`igM+}G+_oz_#M)!y~=Nri9({Q_X5u+diUh)4Db1siI77)(xVJ032f?30hZ%SZZ{0(PF-dh^fx^7XXSYXtS_2|!NNu$Bh#S1 zgcrhWW(_WYcMqoXFcAb&(1(+WcTYDPVpDZXkyn!Zn}Mks(zpeoPq*uONEZRGU)LIq zo6&~W>R^a!wnotY)Wo35g>MQ|9S0D|N8)}rJbbcca_TMNGSySjVM|v*W3ky@`Y0Me zZBrAmWk~Z-VE#D>?g~H|+c#{7nb8)LPO4{Zg&YWmuwDY|ybs*>?{CuKsa;%F+1cy?0u^YTM-S}u1waFfd_j!X#eLj<9)=4~YdWx*^C3G0*2;P;R zz#U^g>a8n^cxOAhP}wqtuo2DwQG)&%PGb(?Py;l35EyS+6bY`?OIgT~UKf>JfHOKY z$d2%l3i^G6iLHTzCt)-JC?@{+Auqd2qOnZ0vOS z0sZZH)DNE^_&FX=^S7$%)$I{YOXhkp>gSPIsqW0H1xGX(vmvm{R- z+0$c@(?Bj_Y5lgN@J6^toa4Ho2csgNVL^&hv%q98g1|{ za1Y9jUb})U2PI3u@7b6)q^<6i?FO=FfJU1eLfC;(g1wwM)hnP_Ci+MPtgvVZqdPdN z;sCaiQDK zCR`Z1G97B8yoKkgtnP44RSa!OL7I%KnxEMN3q#$H9x+4p9bnAu+I|g7cF6P4*HL_k zz0aXs;yX9R!OGVcNY|33g588{m&+Dr8XKt~QQ33aq>m5FNoK##qtZ{yk1nC~(1sfv zZP-cgYCwjZXTCBNUl`b(6(mS8C%mqXBuA+j+@X zsGN7xd81sPzrLd9^@wb+zcckgYWyIfL@+-kUQZ;>)4U##Z}sjCEM!=DQN=)US;c=D zW~*<3PkMeb$ex3@hA%!2><~tZxDqsT@eBzrB1}d}oX{f=_PXajm621{Q07Y3SEZl) zHOqo<=8T{a?6L=coFu(k+?Yzmo~&jN{ee`+5Ma@WXZj+2(kEo>FS2_8!_7iqg0!1H zy9p^WD=AMEe*Drcy38z1>7oGO@iX=|0M%4{q_Rf26GcB!s;LC7<=7EEbc2A{D!GTp#ngr*Hsu zEu~<0uCNa}*4%Qw=Xy?y^Lv>mu^n7)WLHU}xpN-3`g*{%8(eda+G~a#0Ku{k;X5Ef z8u58eW!JU?ve?q6!S!Hi&QlgK4zA!&+^qTKJ^7MeSOetXW5J~4mFAKMKE-s8M^;2G zqdR3!@j=LL>yt>frJ1uUE?vPC5WY}6GqnwKm^c{~{YQ8xAw@?lBJNu%0l{8hk+B=; zuveP~saQaRY!_9ApR@fA9}oU*=wao53x##L+@u#LgApmqjhv-KdFb1$`t*qgS98C< z0+1Rf>wV~24C|LUNvE5+S%K&H^0sXZo8P#uEHPN2-xTz>gtLl|M|)~3KpF5F{;yS~ zq(2$+>C~rFxWy?NV!lH+T9xbT^Wz8^8{s$SRp=Z&D-vLmxe~z4HxgcwhoG&Xg9`2A zAsn>(?}0Z})q5P2s0Yn@*_)(?6K56P$D&H^N0ZPbCNPr%J74k$5XLhR5)pM=)`FDt zc&Q1@cy}M0-%4%3NOZ7o>f+H0EU;w+7|h5cJ;Lvsno+wcl4p(uddI*rI4p+8=#-&u zjZ-DC^0v)#K_(l(B1*YfB;!O`9|deeUlljKHcXk->B(Ka`B5G1AIiHiH&G=ChRS%Jc{3 zFf%y|l*S@RtM2L`M%&|;Tf?yqgeHe4b`b&yBJLEoP)z1>lSbMI1#EYD zQTIG^r?g9B!y2m$>hTf%GOm9@`EenX`+$(fD$GIl3M!Vsw{l$ofe$kgC8Ix;CBv>;1}Y@((?+Q9?K^Q5*41? zlqRIb2e?+I2S|s%8@q}1R(;Qm(bNEVZ)KLi!AG#hq(<=A>_33mFbZP?Xz0=0;X6xf zw}yILo!~AGL-%C$K{-)s1w1z8i!JBzn_HC5ZIHJrl1k`_=A`xI;TPNCZSMsqQDj|7NzNC+{-&DO?WDV_``e5pQAE8-BNg?H(!8AbE!D0Fi5$t** z!$%)*(dH$iTJcQc=pcq%%^3ULIQGB3+gFn|cr0F=wKF|eOPoVt=#9@WrN@>SYDHDX z#BaqzNUBE8VL*)qIB+I}N`sO4N2LDeMF(oXk$;>P$X6gpGnC^N!GkMpD} zE8h0MGm6L!JuY-@GR49EY`xynVNA9I!+#vN++-s;GB0dmS?V?izT;Z_RC|LJ!XPB` z8>V&a^8rJfMGDCkKY#*>z9$MoqSUY+&no^k>DT{=Y}q4hk)I31t5kjg=f$3!(LhpG zXWugJ%QiFWojH`g%mHzT%^-|zjUrczybuNVgwetU^2tHAhqNG)kuDA^Z12*b1i8x| zGFX{TLRi~DJiX6yR}Cw8El2GcdDEB%8Kt# zy)L`rShZhdDq)S|aC9PK(tAZGBf&~?S>Q8tnBM^q&mdw>RrkJp5rXf3;0{WvT%&uU z6`$*G@9%sHGAyD)4w_PUyNj3-6Y)1vB zt+6d+XM7}gYeP1%7(O+)7PzQj{A!Jo7%oF5OK8bIrJd*eqa`#iW+Sw3_P1DsSV8}^ z$N;iNVDFj|*o#kW(Qw(>Y7n?26^YTZdhm0PfI3T#{R*PO3f&ZH0-fPaSc%h59o$Yr z&eBAZd3hxcqkoEpP4hN1=5Y?N8mrYo*<%IOBSnhFHNuuN&=8r0e<;)vqY;LrgFYC2 z-JMu5y*c=)O(1N9t65;jBndI)$#L6mlPEU~!k!)Q=2|OQE)zxD#XKm|f zDNd<(ITeJ~+T&uS;=+SEexKi!QTh^$`BpAbL| zX6f@QGC5Xnufyq;r4yk;|IK6>(K%bv#>Nw_mr*v}rs=RvkfTlYpQp*?f{7$O13Q21 zkF>M*?pd=^>-5(8=nKH>K=dh$+b@1S!M&d4$s8Bdq25&n7vWuH`|&FoMI|Jsr3p%x zzrn{gqky`>)5DmH`iD~JD(BzYy!@#qb0J;T$`&x+U4a1Umx?3wW#vBjqQ1>@^zHoM z^g^}*%`M1#0=fv$%(1K1Wao94L6CC%$|w_t-ekWK;HYb4`UF4+;X2K7r+eE*lZY=Z z`wL>s5|7M6Iw@}fkoq$OFuTzHFWXI!nGxZ`r z*~pSNYBlw&nvbdmOjWw?jv34$}02FeDm)VkdxC9-F)Gkyzw-hkQiu&LA_ zfKue+0x!Ia+^8%gBjaC+>IOywU;1UYriRO4OV5}JoC*FuBm)6@|1>wl)g$2Bot1gS z(ffD{hkmRBFDq2#Ffla_L*|%fUnwI9?g#63WK(4TyhTWPk_E}6*{eW&&vCwGa0U^B zqSMGf+&&@mu{mT~ycozB zb^HOZ$KHgg?O6Yf#+F@{Oo@gDgcnr~b>KrvUf&M1E;7BjGuPSX1F01Hzd%_cvw}zc zz3M*BxMG;Y|6JpM3q`21ns!=)+qBKIqWCpka9&^4Sh4{CxdJN=^+ zjmbE_eBItH@pnKC$3X2aW1dWSV)sl`7NY7Qa9Sm`27mp-KlL86guSy%#SEg5=l zt`m_sFW33TQQKr9>Ujd0&*WQlRH6Pr2_paz|A?21mA#-Clg zW(9HT4UE;3+nxI~ZB9%x)8iZ*40#Vbjk8|~J9Kj%kii$d+6uXsSxWlda2Uksqq8^WZIsQDPzt*I^G9g9j&#&0wogxJMST0>-NBf`@PJ zv9EJa#!k6* z?kT&=);lvzJvVTJ0DxdRaA1cS7u{2rZB*ibt@5V_>S>0a_u5O7z(sWwsLR*08=5z?K>4)VlvzzG@43sFQQWa#N4m-iX*?OYOEqN zEJa-GwVZg@*?`$*2QP(7hOFv0#~Z=BYlNIQcabT0D`&!9YD7(lOlztVJXqUX1a(XF z=r#nGS}>q>Bg3Y;gcN=%%z`&M-dSm4)9S5?9*UzR(D#tC8ns&-L%MbUdcjekGC25Z z_tt|>y*w%B!IKsKd+wy7FffLGRdzHbIug;(v_nyWS1Xkx@n>s0KIFUM^jI{8hpy2s z9+zWiE*e+CO2j?kzFBY3OoNRrp=fXF{^{Ex@YkTc!SJ}CYmu{MMkH1x%f-g_+Ezm@{@gX0?|H#i9lxd=!Kp^~U1>eS z`sr_E`_xbKzRRsjBYxJK`WYNy@vReB!WmX!P5alhQbRn!xiU`b$B$*iJaewSl#}15 zTKafUmOMG?yxGVR^%gzL2FFH|Oq@LL)M=oene}W2&Jd3{RRcig(HVp>dfp(D?X*|Uh&&KdK#Yug?k=WGHi+Zdp>=$4yMsjz!E3Ss3e_UuyZkH#? z&QJHbBKoJfIdGNSyhe>jbuZ^cb(r&-6MfhjHfOn!InSDZJswy$0G)e%82f zu#L*mERh|2E&rJ}jcd$e~6RG@N-_mBSSKT%0G0zWV-uE0wac zA&u5Q9^=%0s19QBs^xdacsumv`UKZcCiz{(M9Mt*zbdYK8|1_U`T~dW%9UQDC}6im z*&^sVh5M4T*>jCO%iAX0emtyRcM7>J17%p60igWyZ4@`U6}IuNoM!uM>%dZ1|I2YY zQp2S5+TI~%1??t4kRsbLe2eGtpFxCe4mJ@Ds zXMdww0M~6kWg$~~!t6g`fre7(Psi2q3>utMG#*IwfIO$a5$PAHvq831kdZrrT^lHZ znNI#!@fmGiu!zaFRff2WH9J-QeQ3ts=(IFKzqN;iFUT|j1V7c|+O9bLDSl zmRogkLpWx6Y_KU4kfT5b`d0I+ZZ6W^D|OYZY$=}h#ZU2-_|>hUHQAK8r3AwT!0l(% z&F6P#@WL3?&2S4T-6_LF4@YK?rn+7PDV80(e1+ zfDssFjrL8Gjw#Rfz<`iGm^;UNOnlp0iW3cRk|n_Fbl*~?J>gZpw&v!pPhmfrZWcTl z2>nngeA&w#*Ud>~B*_!1WPrzQ#ijQJT&-?!ejk~8!|1E7D#F`;$(PVPdWvmETeA$; z*RbaXN)yZ{9|N=&I6b#F;3fYmyYzm4^0t}@*f39v<72Z7%q)1*qqw1}$a`m+%!o4aq5YicX>p|_q=bBR6>HVO#tcu4&H|_ad@0+$}n`ODU zZMUFkKR*63m`XLeZU3nRyXy*5Teb;^X>jY1L4}Rl>Ej0aM;0Qh9y7m6VB5HR}m@}pXxjf z7DZ`Ut2MvezM*@CU<9WuTwkY=*jhb1LS2{rS{Xms!qWVUkW$-L8A+Z0bqYSyc@tf* zb>BJXE7KAD!ookPd+-#PWLvDv_BRB|gL77Th@~IZbVUVn;l4r&3yzODqpq3vtWGn#gFH@e` zVL3x{g6(+9pa7t=UOd)cPL#Q{UB7m@qcHPAtIyu(Vg@G8J*Zc^PM)d zMI{O(bj~G|Er-Yg+9&pppw01I5NeDmj<)+vRAuFh2Mtf|e6}6acSa&z`G@*u8T?4e zc+MwjR@t|MG`sET4CFhxVvJ|4iDtGIZ9X?>F|Mn|PVnd~+-eNWx;v_K4m(klL+GP-WHL%M2Owbd2S?$Ba_B9AKhg%7_s_d4VxF6W z=Q?CILfAwcY~161DqbTRxW7-A7T8jDCF}71^4R2TEV^rBG|CpLL?P|YY|+ix6nIIq z_5PSt&&DVKn1QQ;HGwnIauI!jll!OpMz2m_bk6(75Ev}?pkd5WLgG44XF9A~XJ60A zE~=oWSZIOgZWN-m5;fL>A3fOs4NN~@S;XW#e}Fkd7!(K>;G^W@zA!2!;_(*WS+o>P z@85~oasawO%3IdKoT!Dsw_~r~GoLoqbOE+?Y{2V)i@gQcdG)J_9L<)-8oY2un4_kQ z608i{Y4%57#Q$;tAoQiZ7mBVLW$0^0KETWsUAuo7W=<9w{CVy8YkpS{)`rC`vVyT( z0+gtpHxDvl_NSacB`_q)rYH=gy}hl(mJam*v4DMHi8VN0Vuu z(64SIvrwE+08JCaed!@Nfk-dSxcbh$0>*E(q9PVvk>>s_kfdXh(?8(}zGI1gsdrk= zhP^aIh*#BX1XCph5heO8CC1f2g zrzXnxBXUFp`S-Z^S?A4`xF-}GI${7TO1z(%NAP~jE;Vu(6R~%_;Ki76$vjG!2pkNA zIF{07`ot(KQcT9$8;f3X&@Mvsxdiob7Ukx^Rz4W`Dw~Os)nHq#KU<^Wxne!yX zZ$Q2_x^PHLS(eM$h|n_pXw9Wglxy;co1r%bZ@yCyhWuWwd`kX-ZDlCmqTc6w48v8{ zBLubX$BM;aQYrRbbk-G_**R)+_J+=M#@)?ngNrM19s?3)8s)7XIxw zH4eTtuS@!L^S@<&tVFzVzmR3e6UAyaf_?_L`+BFQ^8=VuKIW#n|DN|=5#3KeE} zBX#p#j_eiI)1A0X9rSVbIxb)Fy@I-xo?O+5u1=yRbKF!8`}Xqh(NrF|aclSsN(B5R zX!%8uO^6aq1Y)Tj0OWAFQL(&DU(Mn#6X(z%E zEv9US{erQ<5f4fYU^iH%xin6$Mvne_nx_Kaz44SEzMzg6t>$JtPYKmBafCHBPj<$x zkEbUu`zqTKY{d311Rv=HfG`)c@8s!u3x2=Z!`_6uVd^lO4}{fQV>Q2#Px;Cch0>Q- zZx})*OkVr3`U}aZ|FZ1fL`j>{9T{wMjxjCPTC}XpY7D`t(L~a=cg3>9Ivav z>GKa~&-C$}w+DZMDB2nvxJL2gN&wIFGSs)5@<}_nSVPnB^jUpy8xME}KgvX`tie0@ z{A%FlKmH~VJ$w4moK&5H6SQQ(C6wfO?;^jh4Trh~1S2O&Q;-(F0Si*uM7116I_XtV zwciGx)>Wyl#OftXOLg|Qq~xzMZ_fX4RQ&S6JbrJ->VRVGhs6Pl1W9)t1F#;>!~j~o zAbAkte@L!>fDpAvMf+-4Bi}l2`{}#V4*?lj{pas$hvhI@e%J0zUgb2vX6-ZJsO6%1 zLQtHz83ZItE}@b15jAC9!xja@Ve_W^DQQ~6Tb}M((I>lzD0M3Hnm(VY6O$`3v8v8D z2Wsxdg5+Bm`2~iwy zxN7{yWk91e#uf(~$Ggmmej$_iuf=)wf5V8%hl!|6sMDv4isqs_e!X3DL%+&E>;36U z&yj2-K-$9~YIu))iKw6jzyZS@cSD#?PgFm%W+ejM#B49N$62}gGxKx2mLMY2PXkDu z<_d&gEhGcsuuVF(plF@Xy^P1Uw%e2B=fcZAfFF#nuH?WL$1Mr1uvDH})5Stu?ZG-G5i!$u}TEnrr`xmo? zst-!k987UsGkt0kW!P>!_P+W(k>ipU!Aye-L1A7YyXz9a^8^t<<@Frw?n5V%y6Cu9 zu&RI8`}Fc5<1j8Ikv-dKKzu>v(MuX-OQgl)rRhRQBoov32BhW~Jk@&0V3Ty%{{DY9 zouYH0#wlPf!cqG_ojcQ)e@6mbs0%%>@3>4wO?n~<2Z9S)G4a@F{_z~Nihen z-Ml~?{`Z~Ke3!Hr>HFpjvT_wPd+?Zdm=gF0`Nc$dXK?b0{m{WgbE&Uo*s*WAHs|+u zimvOqbBFZ)v=)G>Tx{a+dDH<@tAIJJ*)z09+O zQ073FcxZZ1l1(Hea!BsNj;%e~A=a1j#E2h?AbxGVLc3C0EQXjJ%CIN`lH8+ACwx%g zV5ZHojd%rH^5T%V$cIjU%jBfZ)sY)^**cOb^KF2oLa_2iOsg~HQt6juz1i48SUH$H z@zFQwFnkV~uIjH5ODu%e=|Iw&HS;0bp3A)!8qynzvO<%4X&@)DG=Mkubz;3Ojzra=F=B~4_g>W`~UkdTp@3xfj)E>LXwepy-8)(RvVzU|l^9tY|7yMfr2@1k zv5)e)LUxWX-%7hWdl1v|stc=f#SvmRvRi$275F6`Ze}x1W2csxtbQufNMX3&j5moe zAAOvrBOb8J+%PBxQgfxRG9ReE?z0qh0&G{u#ME2Z$Jr8n-7n3} zHVUBVg~~z7lbMUmkgrO56*2_6cgO8KZ)jf+G-VXT1(&~=%gSQkTzd)^S}y)t45*6R zurl*@)MYt{Kf#$162T%bGy33)Qu9s4#lYPX32WX6bWe)4o;QB0GluN&!c*orH&b>` z{BwbrNzQ9C>6mF3z-#g)&v8}BzQ`z~*Tb>)=}sgBALS`0dZY!-mL_h=N!wvy!|&PF z_?>3lcw>j3ZHNN7bnq0A+wG3sejZdDMHDyuSEOS$9MhsxsOzx*9ebr?IfZpuG*BQl zRe%5h8K%1%BdX&fI*O=_M}-naenLA&1QS{Zh@&gcTn)Tkw*TV5w792-^;GiZqVeYb z4IWKr?9H>j2ZP7CMtH?qEh;_*gk$;!g0O-b8+W%Oo!s<=bNE^v3 zC8yf%E;oHrEah9R;!oTxrWOmGhXk-~W?jzUjGup)$#soa|F!mwG+jaQxRoJj+<*{4 z{n!>7E{B1xIbID6N~UjC?Vbr9MziPH4QM%LY|84AaV>w>_aX@RHyVzR?;nChKU z5KjRf=>48Cu9s-i!(^L}dhXb~H~LnyD~L8K=cNyUbwE0pV(ue%CFpZ|AjW-+|BGBi zfb^t7=Qb^JnXnro>9}P_?+mVxd_UJ#A!(<(E)fBFZTL*fwf1wuXoYa4_W zbw?!&;dr-~{Pvw@>A%>L8=2%_x205uq5?%V#FJe48i~1x1N?@)6M@N!qx?l$s`9Nt zm-Coz_m{Sq2qdmWx7No+UOgLN(4W^Zn`S}8A*``N+ozI-KWgoEW#+0NhsN@PJb2t?PN&Us=iQ~Z1^ zO)S5>udGs{G%EHKeJ+Gm_5MPy+pK2EgKOI?dd56D!Ph5wli&p`A+3%4 zY;L%IO7-Y66eCESoXMI7VLIe=YF9GI6WuT0yO+P=ZjMNZIyjudz_>FD{eDo?){ea~ zW#KeK#%-_mgYOX)bQ6w5j=%9^iHAjl#NfJDuK(1K+^Sn7-K*d5&AjQ**gi~8#$t(QEWws+{WKJE0JD=)TJm5Iyz#j7HTy(3`~ z8@4=MJp^ThA|GKyH~uY?23g(y8efaAJ~+#5SA@6B*X=8SSMeg}>xr(r(;_$%~@_V$-ani4#qme(x?edt^I zD-)C$yh2}2;YR3?hu;ugA|}6xQk74vdqb0e!Ue4zQ{hSDZ8--j5bG;qB;EcjhHJ_{>r8ajE>y}w6c)vz;n$b^da_v4PPji+qI0m#{`gPq@ASPl?+H)lWx-XyHNLCnEkk z6i@Hr1uYu(8L~AEbSrw^NvdY5u%^ZDWRz zfdc>>m2!u*qF9AQ8XOV4zExPCmm9beT5Ae?-6EK8Zsw|Hv=Tv6_@R7;Oj-8*Ox={W zQq0|>h1mAR@=U00<)z^00qw+&ME7LrWA^&7NM@D<9Tic<=P@-a+f~9DUGLw`_pQQ0 zO-m07g?5?|m){Ikkm9K1Xn704YgYSL!Em6%rJ(tGVlK+jV|^XwjMix-bATRCSS9I0 z7+2FJeC)eKV^-{P+^W?$EB6dMQ(i@{BK1|;0`I!S$w=B8JBM-ap26B@e}yPfpboSo zYcW*a@0iX?hqE3?K~2nPmP`I5G+oA7%DQTOcMbgan zf?R2&YlqayZHF&=XqnBAh4;ZzJ_!#s&c5ErrLaYWN8=p7P20Bd=iQRb;v9y(Y-3s4MHv9HJqkwvKkaP3-ORyi z1RXpBM-g5GLweEo>!!gEpuuwOe(Q73qeQo*YuO?%2pMD5{>5`G4X*CRL}W^xu8hwd zii}u*+X8rx8-3v}C5UT`rysDy&JW>bG?dF<7PvexUq$C~;OTp$WR7U)Um#j{R!-N3J#xZg-(+*yX$UJ>!#str zTfcB^;Oao(4$2Igbo^c~@xeRUb(ak)l#i{)p9=&_DN!oL9zKMp=Cwp~$nxJ%57lLR9GhHM zp?~05IaD2Kcxjok;J-F*$_}}o){8{nAr`W;nO;Z%#9~ep3ZIPK5_!cVvRS{BGUk>-K+=3M$A*qzgu)#3V8rCUl&vojx!Im#%=-rEmS8jnTa!NytRb6r} zXczL#`m_Y*`3#i>N7wN~{q7LJTf+INialwR+gFoQ$f&iso5hg1iWk465qEx1r&z5? zk3;}e6C<+9~{)O9nfiXt<`)PI!oXC>Kn#Xq;2LoWzAnC=6vTb&! z1FnS3Jvp9>_Rh5A2y~|-FLB?6(UpCurJRJlk6vL==tu5;L zBKl&Im`5~NxFUd5F^)p`D#uBvh?p1(Ujhy%`uSyY3FFIh(^OV~v73ouK-MwG`bBq> zJ_;U#AU&;K?-M_jKE=6?dh>rD>Bs%1f?9FQ>1!BS7rEl>5mF8-h`{-<;I za>gO^3~XiKFArhCdgs9^NWC=v#^JF5WZ%;%QCN_qXk+0BlNy_#<}}7H zz`(t&i@6()xO`sPRgBRgmh9K{x)^38WqDoWG2taEst7YS6AKI=rq#`$Ha=8kJk>v6 z&O9p+TnS8!_$hpgZmBC0Kqq|E@FES|o~e~eym;6w$pd-WDTnQ1IQzhIw`<3ALH|_5 zxGEE&k|~6u*7R)P2?O7ubrQdROT8{@byb+{+0lV{$ZnprvYiCKtyl7lV+YID_G~Fr zS(6fc>J>tLQ@K_!sQQK6|5k6+B&&ADU=Hi;r%{=!3BO1B(K8H88gBh^s50{?EBh=8 zB2M=YeZTd^ViX;?UEDtDPJEM_4hkWHBA1zgdSYhq%!X^k(@L?d_n#&h0)&Xr`CVJ zwydrXHRM>O$^}2<@J~RNdeX@<?<c7e!wB6K${DUE=Vnp zT&E(nfR9Sy>k)uw{f2S|!z9#E*H3RF#{WXvA$|zR%->~fHm=s53yhLZxwy>YI1=gq9U2;Bq|ySizqp4+>1pZ5dJ={c zh`yIEu-2<<02)i?k^mUABMZ{QfnRx--twsW8JcjVF6%5n6f9V?dmAT$73akJ0gFLs zp;9z}gYQFz09k64h6H&Y^n+XJ&+E>tZPQnSKJhuSE6FR;)zv?o{`NCko|OEOKc7f}A5B zZaj@iwN@#8-62#Bx-qj-0+p@m(R6wRMgAbgo{VmL=*FM%mc~o|dPFwtd_ixsdC^GF?LzO4Sr&bLM;9W)6 zK(Gb_gK4)M6<1PiD0s=cK%_ZSVpa!$tEXmu7(?yittasx7b&jlXw5f+A^8pgzbr_JS6 z`YsZKI-DH{;;14}fj;g?pk@9N#KQ6ck}65!3fJn!ye6;+$_aRYA<5Q98nkuhy!b=u zDCxoXQ!dSwT|jN4e)GW=d8ftNsRa}T&n6R0m98TINqW_-U^fpI7&mifs1__*H${9+DNK=N{{9QctPP>Jv9gs z>tEc@+K=tmJbW^z*4XozU`BjV{(zh08B<)#c##h~Jx5&$lrOaA^qjmT(1kp)H%$tIG6iKU)vvT>8C<>Hb6c~)+$M9ee$`mCbO zip&nxMejak2mm_^Hj1+2qrCx1nRj|LCCgKUQ3rWHP-T67+YUF_2+kpkM*^eoo>{p@ z8z@f%x%#4*Xv&qaot*VNH}dAvCkXWf7dm-WpV}YDuUq0DvjUeq?wWml&p}4*2aGMM zJhKP}g@-TWKe&54O+-J)sBUK<-AE6uQuwFF&92ctwotF+aTBfW?t|proh#JRx?%V? zoSL=zdDUFxCGB52>{xtS+a8z!$UaOygT{5Gq0VFh7+VQW9c=SXhxD_^uE~cGZe@=u z>g2vE!ybVJOZw|7g8Mb@z-l6d2g=YgcN^mmbvw@YUA0|0-uuzuf&$xW$ddshQ5vk&m=)R31by~%%`$XNp_fqlD=;rw*CC8l&3 zFk*Rq-#iXU`ZC+)UDK+vqTb@vZbla?mcpaq7+e$D6?HuMXaUDvj9;hVNTL4a{`PL{ z;>^95Vx5_NV%38_HwQ2m zb}j|d8qk*vQ-cq;AhGfs{s-4HAR5u%fJf-)x7y)*J*OTC7r(r%%ulFTN7SWr3)#Lu zs8+{KC_H7s2l9IUYY?uf9E4!1VDqQ%9r}Bbpp*H{1p2b1zY?;3!vqn+Ulv^zdG9P2^4D(TOFFeDs1U(h^nG~(Pl1X=4u9dLY=Ol`K& zu|3gQiJaYjw{m7ea!Vr64t-X+8~DS+Gh7t!2zFu>ar#vgs>JTGC?h$WFG{z_F;jOs z>U}xD8kt1og6~gR!tLmSQ>uN^=o35nuG{IXdm^Kz+gH1ei(OL?yZB$07C7cv`n^cN z>=XV1uQ2I87d6PGGeQu4sE%5>>}`}Ejsi1&@Y}bJeyv9+qoiJt0Q8o3idsO;g)h?> znuqbFpBUD;nf3%vg7$@MlCusE&UyxoxPr&7tE1EcE(KkB)Znx>v zC5$FF1tyT~@%wWN`0mUMeacTSme~K220{+o&tpplbiVWX-tVRv#z$-nQ5Fr)KHXAE4XiLE;iyf3FI}ZQ-rLK z?grEbsqRA_wdEYq*WPbN#noGYJP>3xxKz1m@n)2`B7qZ3xqx?<{p6C-D{aB}HDMfq zTMZboBI9YV6KBv?8{KA{eEi}?-8rCj&OosxL0FQC;>dQ83s=Y(Ko(`GMMKut74ut> za^CpwF|Rv-B;xtU?7_xN!Y$QghNPpd*HE-ck{*o#Nu~UCE||$hAXe;{V?Ei37c_2v zxTD@$$xk8V6_5|G1BjJd)$Pw6A#FLst8M#UEpQoj#7`F%i@J_L@}&+c3=G@S#1XmI z@Dpm9 zV|7&h)M#zbT7#exhoI@%*=a#nkS|-Hm*VaGX z)rLf2(@e+Ha_~=gr9h4|c!;+xeYjHc_88A`77reU>jmAxh*Dc_7&~>_7d0t%Bd~jb z98hk?+mtnu9fpW!`Mdq(qLz-j(Y98X%~j&7zx@YwN|-PEwrz;KChGdcKt;ms2y(?i zOFhMxhQ?t{9V6DP&BDc9;Za_l3Yrx=?+LJ#8Bsr-AS(F+V^cs7M4P%}&C&|_LdCyE z$eDNJ;nibn<6f-85y7NiXDI0oJpzrBBH>0mT0EpLQ9njH&n;BFRBR_B zJ+v#p+)qb1zXde3Cr$6#HS5*Gn&qVUoh#ZNyvdi?3NWSnrRMJRJtE&02&)_frP(B9 zEHt^-=)L$EZ_d;pDdEb7vT6d~>!o49m=_1Z)f&-$e8#!=)ONBTpNhw?eYfxb3Ybk; zzMPU;UiJF9LA82zF^o4_Y8-rJ7F2RNAVeQijJH79_V$z@hh`UznTGY3Acsa5p_4|i z_3=V<0Gc{fUenAhJ-o5gxs;-Ibq2n9g$^PnG^zjv5vO+5w@2KWT2zqO_zq!EsQxrJ z5QH6-mz#H{%Lyvi-~S(w-TS6CYcU8AV((9OtU_8FHW3TMTO}d6qqDFGWJ^?yh4i1G zt;{^@rr=5d?7R&8;%;%Z8m~jkc}zb$db{o}P82JHas>aUqfDch!uX}DO)=fE2_4l! zY+AK9hoMP{5q``5Q{&s_jQ=BUgq7d=`>B6E80FZ@a{;8JYkRVYay6q(dff?BT=6p= z^(_n$jw@Btq0Al#<1o)HyQ6;YDl-)&U(FIy{bs0W^5UE=U++7^f-FpK)l7Mx)8jjY zQ5;wgrQFul0dd3!XCT0?_K~e=p*C2n!vaad)4kKK%|Gg2o5$Gd&il2jECl-5^Oqvd z%m-<}&p$on9xn!+)gm(azEHqQ031XY9saO{&;<)ov$2yQ#a_HxKruE$A;rgX=4A@} z`AGKIGFlC3Rj%G>)tyNcfG#;3Q+02xw@+y1GVmcnR6e^s zg3~h@R*C1a9lddX@QS$HnFC$>DQ zq!z`@dClQ|@0*E^fh3e*8_cBLl_Lt=&Z!5*Tw5{PxbrgSip-KK=o3-sp;3mPMnQ03 zm@``EBd~C@v$XUqLeUp7{u7?bRk6zWOLL_FKEFpgkfwM<5@zS=u=i3YlBEHvo>o@A zwOQ=xgilcr#UPUPJb zmn9+b?XR8Kv;p$HgDU?`ld-;UrAYUFs*o96bC!5;x}QFM-=H=7-xK`%qDOp=iJ&_VrASdS3#B!fg-y@ZJJ5kjTSds*py-+teVxiTT~rNq|(r zlgqOwfW}G;`1gl3f;avoZ&_d<_4It5H}XD`n3|%|HPB}^i!~?C>ihz{YeE@sy=yO# zJm~8+jk!M|eG6V?XlNQ%B0Po+a8H!kfK1T0g776k}jOecjYo@)!q?|!L~=5(FX|sF$3-O zGyj05tm*&Nfp3g&#Ef{`^>MI5BrJ~>N;%PX#|69StgNVst~jgNj|QY_w)j$M*id{k zvk$U5;t5iA$(`ZOlq)TdA(&v!F?Nd^fkHkAA3`s zViol;;;h>Y;2^xpZ|}K{U6+ecA`VzBa(ruxIU&-(;PjkZk0cf!vgjr?n@$}IF7$o> z=$&4&{^2Ap=KaNTizF$?aL)d=Z8spd-#yhJ&xL8UIYG3In3GJH64*)7ltb>h-=#|R zcbUuw4p&if@XQ4ov0*rd@Gzj0Db;swZ?Jin@58i~u|E?(8W;>CYl}o)+7+{BpTL`GTuhLv8!niP4*4X5ZufXCZ38QT1Jn@YJGyZ5kHB6{1z~Zkj75%5wCB%W-c0!L6?i#FX2{ zzOt)Xz=Uj_u~@9=zkv}w4SgKEF#huECH@+5iGs>Phv-4m&rp{4%5kF*q|DARz=$-i z;zi+QMSwQ3`r$k?`+Bn{8@%eONd0CZtM)!DmIvtThBmd)h{wtSAX?hNj9(+j2=RJC&xrPJvv5=am>blSyX5L~{n@T) zMWfXo>(&3GC#4LdR8UwamymY=q(|r#@nG{4-ljbV9oe!ga2VP@aW#zmk)yIv^5X8j4pgcn3-d z56FP06Md6tvbGaYX&ZJ$PvVN}q8gU_mwHgp+J2Z@-eciceI!45N`hI*S;9 zHQ_M+rI-X&L8vBw?eN6$3i`vJ&!P7>#Kd(RS`g}GA$TnOg73WA$LgDqm0@IyYXvkF z#uwTC8(y-|s47GX$1PZCwaDNURE4LR`VWP(R1_%$_4 zspQB-v?2H}(|8GEvSYK=GV2RVlRvUvLL1^UolEv@n+Sg}lYj}+r8r{!(57rq3~JH! z?;VXRz-&H&f;@x#B7xaFO;C6O0gLF7E1Q=f= zHb|6WXng^vecK4vWetEW!se+(M_-%BAP7bd6my6dvE~R7%27fA2}eX00GbZ^*+})Zdqj=#jg!XMe^w=jeDu9 z7|agUIpv#4j&1U2T?vbpV00kr%M!#Kp|9+C-NXjoQ(?dhW6GBe#@QJBH?=#51=mvA z=9ec|t#T5C4=N5cXt%8NHZYh-6y-QzOj@y0deq{&cjkb*p-tyT;_nDjB)fJj(F(G<8tf6)XILKd@0EAO9$;Gsjk%HarvYy0oQnsg8;6Ogl0FE zrysphfs>|JA>d`*4OzZA!t*|!Q!(TR;NpOSlmfo*ER4kgALJxg#z>lV^XYI)IJ1#h zWn+A^3?nDoEr=s$5WpQ@-PaLqHjPuyf;~9bWkJ1C;YTJ5z26~#6<&1+Kx}7rl{Ilf zM2-)D8rqlZsX;i1dZ`ad%#Z?v=1?xdIWT4e_ghmyI3$mKZ(pFuED2^!w((!+e0aGv z^2Um{V9*8{83ibWje{4|Rj#e#&qEJ|Y8dL0^c+AUAI7cV*R7`u8;8Kv7BeSHn%Fo} zzmL`>My?0$g+)+@(63|kqCwlAf!;gOgfPYElC1-kyHCc(GXLhPg_Cw4AKZEo^2!nkEt>BYK zZ4Z&5kV3`i5+5x~qTvpR#`mS>K^s?O^Q4Dgw)Zmg1(RG#0M}FCLVcLCqM`QcyxKCa zGP`kL?m*J7vaqg+jGlIg4gblxp?H50KYSwB>HlxR3O5ayGgQDtp}HG6j7cK;036lb zy8icILG?iRK!fe2Jh5L5(5OOq^)4@tV6j_P+!nD|ynzY07h(PSI-;P_2t^6>z(1u{ z8@Q{tZyuYLZCwud*=kQP1g|4PD}E+5fF~BA@7Vs3u(bgD%tt1Ujevg7iMgCN9z09i z47VsoT=p0b)?KqB@wXX31?0dOIUrf(_kY|DP*{tP z)f`acGkZl$EqZ)m$R~^O7>kpiZL9&IViG80d+w9?Iul`T=TU23uxE(|F^z~FKsm^+ z_e@J#@9bZsIcalxw_(ZHOArsuhtIanSb4uwdY*#S$0+3cv=M6Xt}c zj-DV%1E`tst`^82$pi-=23%D6)|qgoZ>tFK*_nbIMi_1ur6|Kdc{)tr{?Dy_CUUGC zYsdhCyL&fB<+=t);hkBTLOY^X5o#@+S+a_N_yferG>X@eK&-4f&E`Nt!p#h%1)3A; zepE3$yv0*zkvxOJt{2hqd&~9BD6Jqa!AsPMS_HTx38X71*a>e9Ra%p0KkvX$VG|Kr zaGZf8J+HP|!hsfeb@Be^e@!H|t5N zDwRrB6eYyOtdD?z)I^2kRpmJd_5bkp%OE+x)I#8iAbd8gsXvN|3yDY^GlBf!BP?t` z+&#)>a@{YEWQ-XcwlQ>_z966V#C=QeK!4%0yzG3%8Q`TH!B6Skf8Bm%`PBjfE`>i% zo*AC`b_rJaE57o*b^x{KR#O-cvuAp5e#7rwe%+rn&v>7J53?(|KF9~TYrsc$uHO{k z_cOxR{8te`tqt<`&ehImcZuJH@1ZvuzzGobo^y-$ZUop_1^wCq003XR1TUWgym}ub zuit;$o%e15+5kGQ7ID=NAj8|3W-AJKH$`4Et{S1%K{6neFC1^lk#IdM7^uzj!~Q z-e;feZu6e}2E6UO%$@+ZfL6d}@1LPONG}3L0Y3p+@0FjW0KgnW1p(<7;Is2X?c?Uk z_ZYwXi~n8kh2WiF!w&#>efxG_dk#3|Z}y7-jDE5F>F+m(c#t>KyA1IAJO>c{5dfBV z&Hy)Ges8Qka-XfAy$?G;dQUuI8AXAI9bFZ_FcGk|-5%AcG3@Qu=ttQzj87A^+zXP2gX1R zx(KwgY7>m1CU^nI^yb;K078CM3qU+UB`aVIaVgX95b}JQk0m8p100xj>=Kd5N#xk? z75J@D?!*66qx4I_w`%b}b>Y7UeKgH`Th;&@cFLOnwqUuJKftgDu~N5(=8k44D*ETC~*G}5?Ag~ zhxO=@kI;JU@f(GlERg$n9sx?c!rYEw3v;kWq=_zc1r<{BVZ+7hrPyMz4=+gx2>) z%`IV_N(bK?xWB#pprBGQY`MZ*!yn8y%3y8;57ZBF#?lP}Ra*W52P8V4ce}tutF`;l zK7ieS+tQVYJd6Ch-cFMis2|es=kj~2Q82iur_yb}HPpyBCl(g51cdUzBG0A8(7o(y zhiZ9!2h6k_0hp5dotc}b>!{a&Icbx@NFyjboJ7W7h`~kGA~TDb!3)D~1DU_Bw(IQs zmHs^%43%-}FLXB~Ry8ufh;RqGLZPjN)|BiBAm_YZ;PPxRN^JsGK`iO%er0CF?WM^rQBeSS}?V5ps;gdjo~Z-tHVWl)gnS6 zg%_QGe^1yv%`{AnN^=)eDuQZz|4L@#fit1`wkBSSI(D`gGuS}<7jWab5N$7oM*4eA z>K?~q0))=(!0TEA@{Rwt2Qq32sfZeuw18V*hN0+wqzz|1MFZ;Dy`x?gbRO6)*&_Oszr(6^t#=`v=k>=-a-7$RYg(AYdjrc!G#N>>sYT(8Ta-A#k9ql zZ(&}W4JURc{mQOm=YUmh^1ut*0S`W|&UqiFZ*rr+fIt>R&6ie}?Xp=l2}*GIUz7dc z)BYEZ=1_wOii{Qih}L~n{pqp^0W<_~$&@zb!~fD_m)Tm7A1D=||GV6e&&cqYdtO>+ zHq=-EJ;<6jt^I}=tTpyveX^PV+AdwF=r&ivahH@$mV>N=!96g#v?+Y61}}Awthur$ zV3Aei{|vFOt-&UkT3=Ddz5rTfFZA!B=A%I^xY;_qY4$!Qsia=;{R*+t@ITF57xCCx z*uM05i=3!bG`N)-cs3S-OD!0J%D?lD_lh2ATzDcGHpP>8ekttj(`mUa`Bi*uBdT=K zy?>0`R{USks}P^h>%#uiH9PD`st@4|6e<FEvr)k{Se)p8MaO;lD|^v@{en+qp53>`(`V~|B9j5-B*nJCoB^8DdS2^7( z)SmJi9Yfyyjw#_?^Sq8+Cvp_G^9&+|nSZyDl^c^(b%QmAsLZ(g+GUnHY>n`U?s43x zbt~jQ@Y11?RIz%wibrDX&cT73U&CJ^Mk*YB4XV@W2{VS|KA5Z9aab!eLY?S6nFRSH zcw&06k6D5=l{jrWios!7U>-JGT--#nL^CmcIGabWFe(V;h$I zf(CASQ@=&l$uSxHo@>No5L%&rxo+=PbdqB$d7^CA$#nFw7%U>f0K)RcyE>UL!k9V8 zEo`*r=r6(6Bn(<=?JDrn$(a=q?h|L_6x565r3XqxQt3}v9xF1w+jOss9%y0xIqPfN z@<~!Uz-jIDxQ^$RmKdjxpXb2q2ibXcA zWp!HxPP>~<*Yx>uMABfJ1@u)tgGLeDi0fA->&}NC$leq85J=`~@rfw(%cum}OHH6c z);G$P?_2lxl!ke*mjI^IUky24vOKg+?g8>6V7L8Cx#tt6J6hRlnC2lrV0R0Irzeg; zwpE5%-m^ZlCCQ(XgPEIXrfv&o(VJ8A2(x)7A_PKa3-4M2sg{*=gyEK4t@8_U!Uog5 zf=9*ppeJf)yTg90OzWxsS>nmiL&LbUdw(Rdm9c14S0BX8-9bVWL-4!ZPlYin!89Mt*KaS{0G z4<)1IQ+;DA5k zDT|)ZuEJ(a-*~zBnOg>*iCh1BU>v3Vvg=k1ol;{bHT`&nQjx*!(+uee2`;8mz;53~nMvV1^YGrpYik z3uqK<5)n`ObZKZl398(Yz07d)kdZOe!~Zi%rnVv7{=eYm&B~HZANhl0piu3~uXB?B9BX zaG_+(P;>3p`OS(BvI96MSP>%;+{PaGb&x-s-*rL0(;~fJMv4GS8t)fCe_rAm&^$e# zIwR{cY`d;N5+B2as8`>7oxgNg4Kp>7RGef?7>1ADM3E_v|BwAsRYmWwv~R+_CS>&7 zCy)SGWR!KwX0A9&jb8P;OdIG(CHf3;FvJlRT+vo#2c$(AsI%|Ol;zgUK zGDrnN^$6R?yf{mEWOV+(_eWl68DWa>H(hpvm}3`YR&?$bJ&6G14f5q^YKHW2sM;X>}v z8vllqa4?nbo$W7nn@kv>eyohTXu+`b^d#%sh70uK{!ad8RC!<*7_x;b8;GT~J#pD| zT8V#TqyMDlX~rxp%!cA?<#xrMR_Pw=J&A?>87zSWJ}%XDiOUEadA&}2XZt5olMhTadVRLW?>7*QqKw2SI{Z11*ycM7nKSS|AMQL`o=TcjrUv|c%jDm{J zR6pOk#5SG`CQIFSpf78<{N}N9{Kl$3x3`mfm*ny%jNBMDy8CKJCu4iMTpNQ-HO=90 zwGBR|Yo-!!YS$+ze<#FWdjpA5;#Pjx zY_-h$waPvHYyJBt(EUk8P^JT2jK;0<>cA7PN;T446pJGy>vP$1YDX%*)gCa6dK>xy z8|C@n!e*bmN-#DnG$zo)gU&~ zi{ZM+zsVYK1~1g*(0oW9b1 ze;!6v%ygKj&juTowl}>%h3k32i9%ck^rG03&r~{g8W$5Op2| zd8-bk_TTonh*Yp8fEm}Lc++2=5Xx2AkaP?Msv+_B0ikN;UzGCC%3GiizD=aYUm;80 zq~I9;LP3BW2pWb0m+o<{8R0CMf$@7*Mx1NQ)uRWM#IMpslYe&npXFOj1|}bb@SIY- z^3;?o1Wjt%or2vCf$M7)xXM%z8?XEcJqfN1__KwS6eRh?rgI<~y+d??Xz(|zARBa4 zG)tKg@C_FeQWa;&!ly(POADT+UaRB7N*r#U6^S&4HZ)nI|>x= zo`=18;G*iX@bD_CGb;12KM^y(qAK71lC1}l*s#H*qdv~9W;GZ2+1hGy^JFY7(~xMj z?wfZaXVt(OtsjSo4TN3~YaJSQYkuR?A?Kj?7I5ixV*_Y38yja@LHfni>{7oIJ@n;I zDj0HnPXS@fJRP&|Y)fhb^AS*^Kl?06TqV4Zu-q3w$}@%>?DwM|&xjFoYry3{a&anm zf11@lU>89!@M_w&%&c)3LQnhrBTh&`CU20q_93R|8|ZB3_1%RQR?H7t(DY2aL~&V` z_$cgXb#@L-LKb^n=rsJE;oY9^J^OQ!_6J;drDbB-b%0Y|>Tm6nhNaTDLT$QQ1x z>N)1+qba^6KpC6w{d!4p-8#=n=kacUyB@t_&R?P&OhfbMGivaItb=Dw-+E>ln$IWt z9mXE6t6P*KM=Aj%eM6CnA|3p@R#&lpu<^X)+xj_u`tI;uf{jOgtL>2>L^<{$rzh_w zxJZ$(3rRoimOD!x>=1g6`}r#Xu=$U{0RRI!<%xBi4LIj?2OvFpCrIFR==B@GkzuS< zz%M+K#X1RM0$%fX@^Z?yZo!pgy}HeBZ4q7hUdN7&45&B>yNahreLW~*I@e;CSD&?I zUDxXM($2wjajgx3>zz07 zq}cLqre{#MxsiI9)DO(}rpz5m7oAMmNk`j4@Kxc`%)xdWD%d<{mMB|H{M{)=u)D;Y z2FdY}db;$_m_PbkrVC0(Wa<0Ie-36FGgFSxYjKepI0Qmjk?CXapE-@#Q9QFTgg(t$ zQ+hMz?k}}gU*k3$65I~*Y!=KjtX&`M+c~IK%SKES%t3HE?gN#Wtbud5$lDb5<*cvO z+WCyw5JF(SZV_mD6RZSlUb{_E*f{+b8N2K~p7|ZW3|Mhk)gYPjX;?QD0JSL|ovAaV zMGODEK&3DDb8H{Q71AZR&e8?g;jEW1lVNzhZI8)+F)OuxDBc%dEg#|J($#=vb)PXq zsdTXEtQ8nb#mB*OBZGnayY4s|!0qDTDpKbl*$D2Ut{0euFlV7Fs|QOagmiaQJC@(S zq&lE9vLqPQ&wSgwYaUchUlNS`od?O6u^H2^eNQ`$R>j50(r)Da|wg!589#7r+Z(v-E>#2(bmPLaY`yZ@H<&c(-4X|=joEV^>3|q4fXU* zK$jv5rU?R&@Kvrtm%9E>Wr0e!i^(d5mr397hP zV@IbJPdTz28yXJ5A)NRm-rz2I-_!b$3siaY~HYx-cMhWyz6AtaSMV+ zhB3NTt#`&?Ci~f^^sjjsC5Y^6oxQ5pYE+UkL3sj@#5z{3=({ozHPP7?-X!(7tF((= z8<`m0_M3bH-{1xmVf&!CANMs^i?{rFR#COX*q)2WLzb^i<#~BO!eBs}elY&Hkv$(( z=~o&hqYME?CO;b*O1zh+l_3=$}P(TxtBSe{xB%1SszUtCQos4P*A?p>_l9!wEN-sSAuAtN{q7i9*;Cau-P|Jb6_9aC*Z45fa z3Ughb2nsamrm za&-_oil7&nM%FMubwn7xPQHSN&t#d?Wf`9ve`^*jz{(Xyn|_=hWdf&|T8?yqyWku? zV3wuFAAx_?uWOC}V3iAmjiU7&zbfSMnxoSLw#CdUQdnyg?)ca6?S3{Im!U7T)07Pi zQu)yFyrlq6;E_k1=b2zAAZTOJt9c1C?AFOPf84{nUigp}A$dx>dcifXl$f*abX*Xm zhGgCbW;wmtd3`d7l;@Y_0R{fauoORrYr7bRg=KiHN##zuDYiTaY|9hy4{FGu81Npg zmLRl(EtCOcEu3DEm6+9bhYoQrOxwz<{8XXWt{Kg0Skev~wc(NsQJDA7O#56gkC9n4 ztk`O+pSdZdV8BFu!LkE;VRGuad$GGI(BX>(M4hAp&P)PjvDe6|`$4J=L5|SaQBDv) z?0ABcODb;8KBz~9FmF!q7@54=sx|0bm|VDB_=SsD%v!B_qO54zY-ai$p%B_fR!c&7 zHe8s3W@U*lbSh(=?@zYY))#Iyqu^F>BdQ5%60Uf^-)QPsfcN{y{N)0UEo6?&o z=5Ebr@)y6D664voNL;udobC^4NYk!Zk!q&Y4{r^dusQo*Y|@2eY@ok-ZuVeZzqOUs z_F&@{BTtWtRBu4A?aD?Noe5nCy~uB#`9Uq#ZO0XqYh9bStf)m=WcNpKn7(qeHyODo`qT`iA_kQOM~1tv#;%4z4VpIWUJ%a` zls$NwgE22S?Ho0P7V_Ume7+%~!mR2}L~~tneBY=D2&p`H|5>I zi(m5v?MPr;^P!FJyc?R`n-|}blGBQ8L#6MGAZ}%}6etAM_Xkn+Y$fvc9>BS?!>Aj) zwvIS2L6$aIxEGi&D)r&FWZ4eQ@$Y)Pyy^GIH{<)_^C`lUDO@g#YOL%DEFZM7=FwbE zP+Ei9lygIyQ%~LuX$Bn2h*v{e2EAKDL0wgbE1<0Fm@Jj@3at}VohC)i0_avNJfPJJ zZ5;*SjZP)>Cn5K9Kd}q96G|IdhgeJ7X(CSfe`btm;F}kHq~uT+?G%T|7#6O4W^Q#l z^)33m8rVY!Slmz?7r3aPd}oMQ2|jR~X>5`4+Oo&{%4?{7$0fv~H4!OIZ{glHd`t{- zB4qz2Rudl#W`RX6eE%F0u)-83n}q+&Rf}=ff43Vi8iHrN>xcl7cm{}*bpGwh8_FmY z14fvdG`p-k>C%zLZP}hHg9i-3+>jk~vT*Fp_ptd3KO!Kq z0WVjW{6LGGSR*(ZHKPLLP;&VKU3LS*rn_{!%!LSJ$^&^Ca?>U{`|3cG#}&H{&sL;r z$mgNt%<9uwYd)yw^Lf=szZS&H)4YEN^OR_82#u8%@vF?XLu2rGKimwOPoK3ikUzqzKa)|WZLV~0UTd@{F<;;~iqE&oDmUpF10@>+K=xtsxM_bbzQ$8{J=AVqiFd=0 zebz`NDnF5upE&-;>lTW%;%;1J<&v6OFeE1*GLrSosTK6m0w3k|&0q@sj9MJ_p|&@m zjcq4|6rY ze|fiLo_-I#G*i4cYLn2c8gO+`yiMSAwPPo2Qj@H5`@r<7Ix>K(oqVqRTr=!ohxg0(exNK& zvTq@Z{$yG(S4Hf{FZjc?q*|Gl1X;z69dCo6y0r;!{iB!2`2_AHvZ7GxbqKg5b9eEd zo@C-F&PfCHSM2Z_5iw$lilq1c< z^k2{pQ^Deb%NcUrHS=S5A&_P`SgqKgG^9C~BE^Tos$o7pm}NJ4DW+A^JSs7#j!%Zt~8(M)6}Rf#f{hj=Yq}UXsTiO%K7C0 zaBA z!I8d%5hEKMLDCGZ{wQNL!?>FRc#^sOZY9eCWy5aYr!}xaRspmeBpA|qS#^+@;Aq{4 z%l?DGTYN-~12kI;9_7C7J{JHdr*0lARdUq|1gw$L zTNzb<)uu$B$kFL6^%L|1OXr@X`55vWP-*&zyqJJmv=V|+Stn5kD|NY1fZ)FJaBv1VqyKVIeakM7a{y1!>kGqF2^J*kiaK}SHh*ua(Mx( zKt-10)=XUNv0>YU49Jkg`&hdS$!F;DW?ZY2Q6~!ii;_F1s`gwoA&K&6)PyiE98;`~ zy5HL~Ox&y{FrbDc_bGWE+6q3fP~Y>#O|s2-#L8I1>NL%KiV9=LY!F&}GX7Rx7c~=ddg&W$vT=o)wr-emM$stv>g3g@r`!`CvgJuCI zq6U-=9-!m!*?Xl8HxTu_i;qpw;hI|wR;2u0`==_5yWUap#1FR3a7d}Ix%hko5J)Q1 z1wK3M#16{nqQ*O6S0p$$MtB9u&=w-+F<-l5Hg$vAG6wE?iSb4l5bAu)Wc9{fVlKM< z7wm1mC#0_{DNq`TP21mPz}GKgiQg%`(^gUSz&^Li#bVICns54Yb*S7;X!;>uA7>WD zr7HsD^T?OuhxWf5FKqi4Ql;US*|rdYD&Y`IaJSWi>6s=LR5Un|1s~Tk8>NOkvKmGn zS_B|TYlq!usX^eumVM*fGGh&rOzDxKzz%4}FUeOYz{*)ag4z1B#zf&jb{BPqgHc7p zQW0F;JtVOwE1=OB7P^yvP4GEey|ARiSe%YG4~lSBtk$R)U4()dW|osMGL^=upUnp6OD(1-6x+&{PcjwWKB=fIdgvr z@Y_$7t}DT{mr6;Kk(v^c?gln)g(VEf9+SAvhTkb%;=MX+uSc8cZi}`bBL$P0anT}u z5t_qK%-+9T3Ls2taS>?L{`GJba^IxDT3AzTclZYAvOko~POjEbe~DTjae)0~Sn>6( zy%g!7Li}j6DBHNJGQ=!~LPsh-s}oZIT^^}!rY#x&_%VGvS-^Z)ko35CTPCJJlBDrd z01^h`p0;6JuG;(+t%w=@vr3qx0hh6;e=byukd@$}uBu5?^b#b+%`7`mV>QI@TbT9Z zK$oNB&)cxXC#WwmOsL}1Jz?1N9E-N#1BFEPI+}+i)mknpIvBDvU{`~DiN;$c>qCB{ zUIQonLxXd^V2M81yE(`_o-WqX;uks)v#BY&y1sk+8L+)n(+%U)GM@?c++s|( zrKr7mxN*ve^G}bGU?#_Jmejy1n40 z(ys_BUDC7d{D7xCY?bgD^{66^lc|6@YE#AbJSabWu>dmBpQ=Q8uYB1`;4FNc|>C*U$pPj z?!;I6Qan|zpQQp$;XzCsk5=4SlGA(-T4;5Y&q^*lW>mVrhIZlCzy~ylXz68w*2yR+ z-tCGypiUALh(=WkL}RLGMD$1j?+C3}<-1mnDgJk{mvM)D79zrEPL;5=lU5!H!Q~Z2 zr`+E?Ez0pBR>0Qz^#S`!EGY*jT*|Ph1!xMxT>>&ZmJOI-(FQvZOy|UC^SDdzN-mA+ zlObSvF<*tTW$1JP_R_bww%BmI9#*+!=cp;qwAEUygtEjO~m$7%TTNaQ%DMD+5}8N!7I}ui3ZRl zFXl1m)eiTeO|_Ppbj=wR=_6Z$9AUN|jT!t%!@?*UYVN0Xp8Afyo@`X(q1rV5(#WQfxOu*L9_3}C zI+pP)RjM9lmrF7>)Pq6-=f4N}+2DdEG2VS<0>=*nOiw|rJ6S524F+yy;g0})m>Bl1 z%eT177_9M`V5*VL7OI6h1N#7yA|OiVh#`ExAs6d4@|Yh^^hP;?P0k^(`8_HuxR_*w zS;SMPO6CG`&>YGKDG3R=yy0B(L!#m0!O_7nl77C9&RjgFA7F4AZj?AONKYsLWt_~} zqv@x%Q3#ETg6Ge(Cx?tv(8Z(V_|Z2*YYCCnbB|WP$Tky=%M5Lu5Hq_>+?~Rg?OiImz=k^b zP;6cP6xCMZZPugk!qYGbNzVR2sPK+y)QcX;dEcm#TZk!m_Ne~0fkZB`(o@VEkX@4Y z3-TE2Z4$_r90wimxF8<}@oa>9XtWmslnEQ^>@z)+M-ro`5R5w$I~SdT5!Q2}g`*&A zI|RarC5UuGd{C3edKpuz%)_ty$pIBz3(Klhthve#Z?l?Z#OA=#*lc?oMv2HdNHsr= zmeOlMUHQe~wEgO9G2{i28#ePsZ@vq7#_f7-z=t0Q*X2vQ&6Zhbl$t86v3Tx*$heff zp~HTK4VHEFv}|hJM-LP%k1kAm_%^)<_QNzE>(5*9>LNc*N8lhYy8dk)Ep|djZU+>g z7D`9iD@ttjpH0fuYV*D<^Av96b5W#?^URF5az*u3zY{?{6Cu0d3xC^KE_Z|AiJ5O|%DvlbqUazP$QU9>st z-ifJ0rsX!qcGN4jSm{o{1wu?SCwV>=9vh@$!^pX5hZjjm91yA zAY(7I-RY!DOQ||tkFO~u15q#rN3X8OJsKHb)_b9!Me`FhTVt#6^e03a`C}s-N7^(7 z37~p1-j-!vzM7*e7@)_qUgP?xHcG!aEmMw*sh^r4`+^d%{aIp?9a+!9alMv2(OW5m zC_^WNVxrUa8vTfYv#E_=iz5P)Iu8}&Uc%-xGWLDz_yAnxjF`lOxz8O9w5$+q5H3O#Fhq6bJ zJ9KC{0vQSNN8y*lW`e(|q-{|Ak@!Dqwwq(6w@l+66i)_i0L!UZEXHC9`g5m0;u^qj z-|H5`7%k-qHTOSFDa*(~4x7-xUAx>!CR=fah^aTael({?YC`4UnP4Vs$ya0V$F6^y z#x|7b6~gcjR=LV4QN?fXJS#fByuo%A)UU!F~H|1%j#XWVo` zwz=thHZlS4&3kVF@g2$Iwiqjn8kvO5vKv?G;vN$^pEpA4=?~HVH~N4FzJ_zS7_Ofj zI06F@E=_P)LO>$>Fd)B6jTdBIeC2MfN22*?2L@%MD?`%sO51yH*ap!y*jv+06H>qO z23v5U@$<{F*F6?WmnB=$P&@FzlJePHFOi8VS_5~sy+&azp__#LgP>bS?mnAgOm+pS zhh`{Azl>-z;%)2rBQTDPR={A5b4J`cr&rl$@RXb@xDeSqI(Ca=E*&UHt}*EtDiDXybd`LmZ<5zQ_G> z*~~}L_rX2V2arUN@`mMMgne9YHeF(>SJK_cZYnLJwZ0{)@kHXHuzPzME!=}V^`k6l zh3TpTOUn0*Sx4*GkONP_JYG_p2D}7auIjX%A5)HvYh|M$r}PC`8Wzr@tH6dR?SPR+ zpd#<571n)Knjgz5t5*EX$upG0)Su@LD(5qJNQx3AhGT{U?DmjrST^v~NJyOX zn=h`&FJ6+~MLN?paLw$-X!J#T2+&OAoF;-A0HeTb_Ff-r2v5+uI0JaUo7U{g-2B|a z^l6-}jquVo2r0w2{yA@cykEv0vt}wN6-9GZiCU1vdXcW2^O2L*r1_aK;xu*}(H{kk zDVC>*^xwjHm4jT)Aopi6N+Os-+YeFmM|rLsX$_Y|`+FW>3I=Q8&<4Wzu#L?@_)7YY zW0p%3=~jQD`N zY9jr+;^xyf$p8Cp$_35_-zJN7NT6yMV>`)Z&zgV&wAXmA6blpL2dyP-mD&)Fl#r>A zvEu#6gQqhb(2gQ~=?ZWOqe&bu+KO8$c##@CK6bL{nE^xG1kY0h-OWYE7ynY9eaT8^J$jVUYEQW@xcg`VdD_KvB#=Ss^0c8(; zIm)qqa%V5?G^1hoMKIt-p-x@v+{&{g;IeY@*)fTC8~{u5H}=r;##uOK0InYBh@xj*ZWRAUEH~b0ADArPqR7Fx zr@;hCU)5uuk_iIb3pA3u=&&qTcLtNLi>7JL%Z|wV`gjN>NkL|Og>6bZ&s+yUoXoM1~<(dk}3B0(#>Z-Ii zb}b-QP_y%(w-@8xxUsGqzeDGvx(_`O3;=_4a^73gKt!X^l^mAE2Ob3m3`%9gBBpf; zDVRy$q&{fj0s9vzf#E2&CZG2@e3p5G?t(O1+2uYq)yKcA?}&FT?Ezk(s&H+~aZk^l z9SciXU+Gd?mgz$-34V#hVn2mLY)y}sz4u9+JYtwudc(@`2+nu+08CUb4<42hqHrye zJiqObw;F^TSaw4qSmOgX_WRR2xu4vGnyG0t8C(<1LKX;gQH?X#_c0s>w~5n_X1)P) zyA!03-5h=Mz0gLw-Wq(@$d7f!+_VsyKj!GW$MD&jh{VR!245=}OI@7U`D)R3&|vY{ z0KA9r5fpg!ix-HJfVjhghd%oYw|&=WvC6eL^^kde-aK%e{tk6Fm`G$n7>3Ayq(J4} zvMG&3B|T3`4;iQ%^{xU!@l#cz)nr>yHx&=%ELL)NAVD}Gg@jB-J0jof&ws1E3E~ok z_HN~cF&UZa%YNBAiLSVk9SjwmOJ(s!-mXu*v?D!n;OkVKF@-?j3&`B(W1HXb=9Lx_`6(Cc(vb3vaAQNOlKN4-6;A5RN5Ln6QH9l+ zyXI2vnQ^~p^}$Juq$7m<+=ZONt=T=MEs&!MV!DFGiN7fNOo!6)4>twivf_i3=pL60 z2U?a$S$v*Y`+zKmIutKv+6(j2>PR$_n#w&hR1`vlG|Nw^Inj)%bKDC1?Yc3ox`K%o z8GQXG1F~pzUp(;I?AwLC9knvr5(l{EF&(rMwmKF30Zg;*Pr0N#%^H3mP*#&#kH~po zr$Ug@5fm6*vF{$5X!=bQHGPVV)C>Oxy)^HbjUkvv zCUUZ#hCuj`X(z<|7sj)%6(X>(gO0b+AS#}qdA$aeKWiWVoNqKe-6+E2f|AY%wcvjH zzkjTn<~CzB2Nf1&6O`l=mLJ-qVW$OTrlb5)c^y})@;?C2#qrG6RAu(`I>;C8Roe?}#QWm2MzRYw~2)t0T43}Y90?b`Hacf3OvQ#@+2Az2OD5<^p( zm3ON8%yzc8r?nd=;`|!r&f(7?Ty8_QGuRXy31XRknMZVky1?XhNY95IaDpgS-(I(b zr#l$oNP2J-nc{*?_dinA02wwz8XevC@_HpTp3;y>o#t?OlLVxH8GdyJ4hq{ID`P z=D$^3(+uICa=vKRuIK0U!9FQbGwO_M*V>UAwKt9$pyxh!17$blqa(It#Te>gQzc_$ z;xw#}FK!pt!zWjUWqag_J%nlXLDh5>7ywJF!JqI1>;!DtQp`uP*x(HJN2M4n(HM%A zKOeHnrlry(Ip`;%>?3Mwcc#-}mx^9*YGhfjhumj<8Pd}!8s4Qr>WFWWRc$0<37^|7I9z5C;~!m<4%-tYLr zc4lFll&5yZ_UMb*7wajsNIN%a7)+y0r)~-eFTf>x7f^_1gzrD0Dby`9?MUIMZqB?( zf4+-qcB_YpmZG!{Itue(X2d^ILW^$`D=^Apb6&(6#WYFfL-^dP=V1J*z)1#^A_Ng> zW3VUyD6p~Im+FYCT{ei&jS!ab+B1IP=T6=aEc=Xxy=MhVxU~=NSQzaGt(AzDFw(w~ z!ER*?g5|E-E)x45vMLKRtgZI;u$3}IVIWHd!08Bycduo9MFxeUP1S55pcSj%S_=bF z<^!Oh&4?SHyfdILoeWdeqNxbe+AS(_3H}&vuqhRqZHb0f#fa3PpA0Q&^`r|>dsW9x zEi)0Siubosk^yoi^Wu9U;v4li^Ey88jrrvZn^C2qhIl9le&4)nTbihfWkQRENmuRh z1{eELEL#u)`t!{O%C&lx#qX|oo4yVmnuVwN^tT--Ct+Jng#f$a8WAu0s8KWHJS2)a zjroD%Bu=3fPuaL5kTH;rr(}NSFIyf-)rH7MISr}ZipO?7oOMSJ=E8Xm?kq?Xm^ZQD38M>GCmk@ zK};0v-DHwy48l74S{juyNz@(4TCXU}cqf8ZQOflU`@;Ig!vFJE4OUlQ1vv78`$1j> zRORYj{DoOP_|v#~Nj?Mnf^e@J0eL8zu;z9af4uJe{ey{M;iRr*I&PmotWcZg{8JKAb+15rP8+< zv$&W9Q!D*yx5*CIKPD<#;}Vh_vG(5KE14m#AWrIU!R3ZWjaKVaq?#Qy?FK)1he zlYjuqML*@R9bjM~U#`|WTGR{ZO3Lm_xBvjv2klx)3jD~Q8`l*xAumy?w=_WvH z6)GJIvq(l#zTtW^qx~MnPU`_y!K3LO zN{I}^*JC=C^J!ShV@?HJ%NlVp6Ks3UGz&3We@v z+Y?}=(oRdF9G*v^Yk%GE2)u4a&#L1!8#ru$>;97-zVHwouy)R}b^Q-gr{?*hR@RRi(e`}08C;iQZ{#BLcipPovB z8{{{${#P3-`&lj6nxSTOyYaD(N`qy%Ba4uMBspxKJpI4A(EhYx#>TNlM#7F6X*nPj3*wxp($PG-*+P={40gNELrg_Dc zQvH?brtQF!Vgg)@a2?5l4_{8l>?YIB=2p-`qS7z`yJPS@YIF&i;V-qUq#l=6vp}~0 zdVEkgXN0yaZUHh${u^9(bPuAkn!z;0ieZ7lige>R zn_rDqtIYhur;7MBg*FL{jpGA|3{BtNyc)8f-J9>I>e*8%VTcc_F18%GDwT503y!Hi z5m{VBcH7hlSb}TO5H0KPc4c6nTp{<%8_6$i3L8Zhzn3cA8$x_G!=%~pylXt@i%-R9 zL`CW!K)SY%1I9|wYmTI?R~~HR_V53&8P^hSF-GoH;!_I?8Pu)i3`{?0g(5+6m1{cy z;~xO`?=HXrz;M)^MbpW%j?n+M{h~PrKzW!pnCgZtn#idaM#Oj0g%VU9s%oDT2$cag zyaoSuvbu+mQhf?Oma;lp7i&%Mzj~p`Kno7p@oY+D^|6T{^ro|6a)YO z2IAz>nKZ>ELdh*_rIgwg3~uWqhIkf~gK1BN@HJ8-y1mstDYjOSF5^BH!zkxMwx{Cw znnfbCeO~!g#h(AstHmc?lULTMOhjs&-JtqiSzW>F?3R1Np#VezkC3Zutq6e47J4{= z>4%^_{hCMRK%$KPsQMGOnw?qC;et3%kP90}XV1nOH*W84|8=_4lD!lyaJ0h7@eb_G z4{Cs?6DxFsd!1P3_UA73HVVBj0}2$SG4PMxBtKU0_DEw?dBlE5hms?IY<_U!J_l1; zB4_aIQHW0y?d*eP70lO2)?eOK`YX`1&yK^ed8DZSo=GJv0s-`_MGGX=2qtUS<%(2k z(36wR3@QtZuA3%i0{A+_u66nhkJ}XWXw>o~DvAMFu(M7jO`%e`F3HRsbX`nOtau~K z9D+Bh{fl$tpM z1k6l0`}6RLP^PK*6Is(M7u$i5OL5pta4t3&Cm01|i!7VzQz#vlIeXO>l0m*YK>u>T zdS@!8_#6*DlB7Wi<>fzGLj!XLq1(lg^prh;H&9(?v=Vk9we^{AaPrSl8g|yznuh%^ zsB4G=MxXKOpXF7Bj@o6u?xVeD*4=c|-AI&QF4A@liGwC&t|On$rhLhrfU_HHk%!u{ zs88br?#_4!4bV9=h77LfD!IFSGie+S)v(}~? zt1O6cMsDXskdFvzu3cEEx=x^Lci;}7{P8Zzn&_h0$$H-Ke|z5uRz1}eVXBVcpUf-j z7_j!T?1l}5lGJIxr{)2aSRLqqEy^zelINbeebKQtwl9iV5^P?sTL{YL)FlN*#O=NX z1D#FUKES*pJ~dei&egSaFPZb@DYSA4#{-vgmoz$fcqs=QXT-$T%Jc46isB?lhS4eo zzNazgq;o-j5jp*K-|M{2z^1yPkX%vIrg@GLnpgLUTtCV>ZL9b#SfE7?w z(7q;K1nC!~7O)0}uOgeH297o;TFOdU02%h%NIw&9*f@jK;s}8;u1UV&w34-og=41T za}i=f1&I|2g^EfTPO}*Y$SIv7MDr>%R|W=;ihQ4lO_#|$-e$pwX5w~PqufkbFaBD+ zu-d_iSG)CSl*S0;B*6;iw+C!zPKL3%e8Q^WS##U|f3iDWybD(5nJel`IN^VyPS#}P zezeSs3XvG>%6IMMmO+ z-7=`;EjXYou%p`O?;!(o+TPkHZ7K>HwTA{hO1OhHN0UhOlyguf2M6u7gJ)}->B)#c zMH^~UXJ>I8{gg>7xuPutpNvqAj-hu}0jSi9d)aH1cdbA+po<uxXc^+$PbDcOoo~W9TnqB`ADX3qwQA2<6!?PqQ@+8)XXfx5J zPPX-CSyHJ%Um4=}4EaEF4a}oJtFQl7y2^n|DdcBFozVZdohsdfaa6-|Rvhx7tWQOc zv|`iJWc4-5cM!*?NaRl~DlaW=7lAeuSC;qU6Yu*mNp(S1g}yI#7)GJd@soEIm$T3~ z;&)ynX%+w<0^Gx9BM4)pB$pJ8={AahL{-oxKCVb3nS?~aa$&Fww#i{zP^|4^Z;VPU z56#Q(!`W~E0C}0-!sERFQa!D7aAIbyXhCenX*ym;@D;$mfurY~=nq;Eu>Z9KcrZ<^ zq32s|w>v#b>D8Lp+nGyl3Q1~T%B3OLJc&ZvE#>$bsP=<|v26k( zfuD}1HMu?}*jH}c!HBs;ZhbEdVmvMs+nY4$+eacwie{%suSA9vN~$oZL@TY=OcR8( zP3<{x6KF2wyl~y|+Q@)JwlPPL`@)NgEOiS~JCA7O{l4jw(T5^Rj%k1-1BPP}9sOec zw&F7gn@dkoQ&+>SrH!HfHKpcGfkFp&D!!m9NF*?|!)0GV;sb^5sF2@vtqI|<(HLeF zjlNYWa&4GS?nxhx=)-Myv^T9@i2C5OsnP?GyP@rT9 zD7abf6}M@Jr-cFjJX4V@mJbo9bxN(Wk?w=}8#t_TR3=}PlA<8!Rb_6;X{Gr=d!1J{ zPNIG^1hMIjtKIc<-Jj`&fyBd&^B!%7xG`du+ZqkyQG{2ELMTEk7esEHDb_P@36(H6 z$7$m`BOABvW?A?Rh5w3RBVta}ZzNp3twUg~vVnL{`HAwn5f?GW2}4dF&F8nSxKzVq zM)es0fVvcY_xH!J*_{1I%TZ&_vdjOzB++l$mADLYL=F}{g(TT@dIu%-ebW>l4u7{5t>y#~fpcBGiX zs-I$?3A}4#cV{%R`%Be2l*)?4zDd9bL^@E0?CbD+1J5=29xiD&F=BW+=uA42<+#{& zB`qSC!nH|{!LMjoXo^huY64cmuA>ExuvS0HYzR4lX8_9+cyB$FAo{2)-yq^Q1J{|% z=!>-vCQH_3C`pe#X++S?RnXYFE<0><)te zW#OyO5sPL4J+AsG*6gVMCaucp>E_BW5W6WKi9)k+VZx924*Tx@`jylxyRk=hxHE!X zux>?;n zcSlrM935Ycy-ohqxX^)i%D5zFb~USJ^J0Ndz~Mi(>Iii5v}Z+9ZfiFy>M~KMjmO3| z-Z+qaIA7Zi+y&a%H&*oe%av=MjokwM>>`~!+YyP$b18ERS)-^6A2#-&)MX^1uR2#f zzkc*Vtf^nt@ox0#Gc1O-ehsIC*Yc(x_?qIk*l_ZBKT)-nS-tGwD_NsZ_}e9ggFOhF zk3f+K+uffT0NY5BG4Zq#vbz6ttAIBWk{EWi3!MFECqeN;=X(BGrFe4pgF=v;BB;D~ zhJJaLhSLpV@LFMqLT=ihVVL1PS=?MdF!WodO zh;&5TcbBAK~T2j<(j%voBeE)r?aer8z@{w6+<{&afB^JdX zr0QApd5LfJyUB2(17sX7j04CA6|54$&x~D!i%(NNzp0iNCH2qH10C^uSrp`_hjX&L z_SFyTR+-w#kUHtVUZr|vX?fVs%t=b24`;3{X{x`^ZBmrwxg;|q>_W9*!zB=4bNx}v zUqMl1t|QKHr62+ow(sgJbti0(?34QPzKvPQ=_AITIju_2RxC>|(gcfXkv(qKK-Dl$ zJ%;aMoE|bIc#G!bPNaR^!8EDMK8?fr0K!oR4HJ}VfqBNr{==*|55Lpyeje6d+>4Z5 zEc)6%zPe9M5&qoCQfZr2FpJzz9;4 z6lRA$vc$o+B9K4Z_Jx3TBJdM$FP=A##FpkZ8?W6b*DNc;h0W`#E88@?_;R*uhkaHG zZ#rS38+jIoV4VG3bKeAJj(0#a*I5|Ev3x8(Q#5zf{Hx$p$|XdQnm-9DZwevhehHyN z+I&OB{x2D!mDi-Ese-q#&7`VH>saU=V73khuZIlwc#po!C>dQLLLl;MStl& zW(i_=gtapkz9!bjaIWk6&E{ExCX$L;D_&-xnQs8hcSU z%OvBGVWN=oQ~tXfM%goiW4pCkOarNgc_ubIOpYm_%8EHHzs+o+OUtyohp*po(x~%S ztpbHI6ej{jwuNH+kOn@5HTV$MZl8i`i(gGHAa*#%yA0rzz`oZ*_qe!Fzs~v(yX`M+ z{7d~UNSP0YVjgCA#GU>tEa#PcT>ymM{AOAJTJ40;fOdnS$=sef<^p=Bs)79_GEDay zTa8Nd0J&b+Mg&S_;BVn=H#(uUn7o(qiD;}sVMd2;3v!S+3rwsZD2IDuo)0j!wbxY) z^%wsY#d`gihxw>w`b5h?=hzTeM7qzUd`IsPyvu@U9E(Cc4eAiH#2MA8OCmX7VfXe3 zURp~8JCZ!Dp|0{UUcDTtiN=sTU>W|@dO z;2eft46gY<;$>e>z`Ib7HuG{X?Wi8rG)3j-0uOdr+^DIw2aRy^t+wB3S+91iBRYW5 zxh5AFNf5EgD~RX!n{8O52uDy+zDg=TN0U-ezT(hF*;w|iF3H{5`0018+zpE7PkWlT zEV{g#NvW{#*V)erNi*0Fl%Ja|3*maNy36x=0UPIzii__sQcHy!A|cW{_PMC_^E58s zD#rN)1AAB~D3}92RnYR}Y>OmU-$qcUNIDCrs2)Y*;Mp~!pyvT1Ws{tAN9pa}Dt{61 zOeYk-*_g`h+xp~ssAyKUmX+=uk3joj7(@0A&dA!4+o0#*ypPlhmO2F7MDG*E(CHrt zT|83E2?ITx_epNrSZ{=X93?u;VoGB01oCBmZ>1(KeJH9)9JU@GhY!8_`Ga`Bo?EfN z?-0Bo@M#-2g!HKw-T_iQ3jn)ZFuLknB18Wwdn2uUjFbR_$C9hp*!nA>W@OsaI z{*0`wr>81jy|EHBYX_DvCRGtyWRU!jb5T{G(x&tBb*-?J?R*5cmbGBAO3Ayd z9r5AO3mDt~u_+{7-h{s8XDQGN;3@5^!6G{@3+cB)IJEoibU%EKy{w!m(J~nl1VVwA zGLzG+X<~vXa5M4MaFmlhe8-hHXM1)IeJB6%$4)2lfdP|>2FsZoT8Kpru&={U@3Pf< z6ay#BJ_LK7YbyYC**_QQbtC*6)tkh?)-UXN56*05`<>!RSw04Bvs)W3Taq~2tR0TP z-@?!ESQ-$O4?fnoY0YEqJ!EyZ0mjr^kz`XF$Xd1i9f!cd*J`(!_pn_JG`L|kfxPf1 z12E;vKHBaiZ3gn{LN@BWJpL0R0Pz#Oi_HJ`E`{7H=aR-<{GKD8Jl6k4X*wal! zZ0&NxSW?|R$l>bJC0A@|vg1L@x2bEiliyyGq;9syWkXl~tS7EqsyQY3gLr!~mPX+4 zDW$RO>Ls~jMQGt+98|k3rr5xxnfcxf#TI{ymU3Mg{YwOZSxz#Ubv?ZMpX0BKWU1qi51Ht$~olAr0!Xre^r$CE>7Yc-Uu zMLG$^k+2OGq*dEuDSm3hYRFbCqZ8_bJ`D)6%2>YIZ9|aDWIt-IMYW;Nv8osE^mG>8 zjVjob>}BcTyKuogheWcmmI1q%#WC98};qtOEAaWV(0!s(Nya)M5ZP(erE97}I zO0wzA-=BNjKV!+c-i_t~o12bU?FUjTYIP*i)&iB|9KxFV|^^j*RHth&}pHBxS?IG(T>_ z(i3TMFxnPaHkYFJ}7CeV~m<&kbbLNzfmL(3FR7f2{vCSoY<$Q!_f z8yQ+=fR3JSRIhpYvao(2KoS9E;O@qIp8uHzSa>vsS8D1DZdQf?TJ2CJVZ5x67l(I( zToQir01Sr<=0_m`66(9|i2yUaLml}BMiuY7uJD!~R9TmMVLEK{JS>fl=@bI_YIq$5 zypD>sZZY40>Cwj|?hImez65n4&y3gCBxEBNe2$$uarAdVe|5Xt$V9%OXZB*SumlJ5 z_i3;6*YE;g1X*vB%++O2$+AFTZ1H?^Fh3`bdBBsHRYEviulNHi3qd&>;5rS?eJ)kh zx{(iT@`-ogSUeo^-s>zdus%oNvp$H}=(vrrTdg-t&V;n7$5UzcuAOm%o8PTLT`Rs0 z(k!OzHCH;^2cJ#Vr!_g4cC}9SpAJ|~JAs$XB+naap%nh$N-i~qxv`^4nh(+)X_5>cjf4(J;s z*Q6iGVbde%aDW9tn3A5BAOI+r55C|8>LJ$Pq3+7X_RSA*cJ5)i7oA}rqY*c-v>IIy zP@fo+x>#5~Y6lRNL72{UC8EQntbLtUXwX*oCWJ9WVkMz$=u?O$|FY}TQl$<+MV#jA zMMm3_ounU0X@j)Xzy^^*YA-K7hd_F4=2}X+s%5R3+m@UUEc-a<5d*H9h?0G-61u3V z4&T9aI(hHcmX*=1qGDJ2*oyCY;=Dp!CEZlx6|hsJY&0;_8i`fA#jc6MzYacVgpBW@ zc6T_wZ(OHlKB(n2I}3jZxkOkhUE>cF@{Caz>jZejvo!FMsUi_4W>a=F*%nYAsl`p! zDV05z7xq8g=j-Uy(o`Sj8O`Ykn3TLmWw=c~ApAnwIT}<0ZVu_ivXqj(?KHrMG@u3# zP@i+z+T4}-hR)`~m;q49yoFufme|7B^H}0o>gGCpd$u}}B3A5~oED{IXeE)6*0K~n z(3TfMhega;#rO-p$2!gGS85+9^HtLN%#k;0hIQ}1t zYpt*E@qbk&5{|IROjz53?hxX8T64hPIDS-y82_D14O`wXi|6-E*(&61 z9`e4ttb%ChEz;qMRja?!h7c4@|0T>p7&+3|zvN;4+k}TDk84tqVzM5h{mzL-cIY1J zJ@;2W^Aqd0LUvQawYv@kYAQu=(Vu)B1c)7?sR{j35=SZT7d+Y-JK+AE7PEGW&qB@c zSGQF4-Rt&bQ-5e`@j@~lzk(hA604OilQAB})IiXrp6dHiCR2WD@~@0??40TCf5wzL zQRvq&sT&^azHL?@g?qIrVK!&gLCZf&H!7NtJ7;w~jXv|#O(rt@*KjiX)Y)15TwlYJ z#UqDay@z|t)!G~^8GeB1a}!Ry|5W5{H>_hu=xCp?{JH{K-4#kX;rfVQ_TD1pGlvE9 zVDY*d0k<`=KXJ_b0#l)x;VTYFOBlu4_bXjSRyQIAi!!H6BAEM|SO~C2e&$GC3L3!n5!@`o1QjykuZvEr-w3BdVh2R4rU*eDf~OM4!W7mXXyTWF5AzHaCf@TZ(> zDzM)qzD=mfZd2$otDYq| z@_mV$Md3@7U;d46F(DE%0mf;YXMH5;oC6c#V&lK_KIjfQE@05R!)uGW7-1GI9~&iUn;D&ZaKV=P!qOSlja zi+&28w@IJB--WTE&yHOd*%ey8I2Z=Ksaw8wV|cd#fPBZ!LMiND!%p&@ErHQx=1?&& zCKC&b?lZ#Z!i7cdQ)c;tg6)c*n|!Ze41`V>=X`l2<;3^Kfq^5Ymo!z1JV)anyuiBm zZSZ9;7JX%(ZIp~(eT(6#O{6rF)V^l{x*`9s0)!umg2~k>etn}YL|UP@udVBS4t@^0 z3m)K0dL|joc>VQ#P;I? z>nl@%(mg1K%hw_%fr*FUb@D!9omJCgQ<odT4AUPINHA3r36uDZI_o5uWXUu(S< zpGg4Z4nEmDkkWs%!mVAnU9(x^3AMHM8+uC)A}QxS#3NbzFtt7(pa}pa3N__XuLx~R zt-M9QiT+m}#Kb3S(G!^oyhb}0vpEuL40OqLv(aftA{v%pcsTrTaj$n?H(h%$G(W!8 zAi}1VqIKol7}Lr^7~5@_^l};ow3dJDn|+}7dP$4_a83Qv1fSj)Ccb_%fPt7p`?boH zxi^~oS*{wBYyew!p?LOqo;Xt(2~JeeA5;4LCK$qN^eK>|{_E~HY)AEMKk39D8gRQI zH|a|D9%iB4sO|=C4lC$i-Ogz)%FHl#$C<~J=cqDWEt!dSV>Ww&)}p+GN5l3E|J>qP z$6rHWlG|nP$X2r=Y_qx!g8?7z zoBX$ukiAPc=o8$j5Gk(%m!rRf3%$5r+~3Nzcq>Z-&H zrO6(&7dJ?DWK^~kFIUKpZnxTOvp_zB%=}4GwiqL;J#{?lb%+w&)EME`A1ToBM-O+t zL2vo$X6M|Y*v7!901*lnUY~0##%)WVD}`8}WyMs?71!+lh;m&w7%O0o z0U7aO+BQBEg8~lFVqBf0)ym4#V_wD0%8$sHK}$(rFQ^+ULt?HygZ`2~slfTSgOg;E zd1pGKL5Mtct{`~FCNKw!w2NJCVTal?7a}4UiaH(Za7^!Oa2E^}Nl3b!lNqtL(!pSW ziX2gTF-2V}b>~2M8h#(#wyL2@4BThHQBOrkdNykrj&@=6AaoDE16PorlT@XFtun9p z`6B3}KobeMUfThwuC7m6>}uH5fQ!O7g!o#U>_~-_8D!CVsi$O2@J|EJHalm_{BG1P z7SAhZnok#f1^+9Pp)&rdGwgdqo_WbhJUcAZbGBE)#H7yL4OjWKcqO#a8Vpty3Xva+ zKMpi_SUtS? z&)y?j7|`Zr*fx4}PH)T8WYaw8=LwEz#3vf^(UB~qXEOoGLd0ocBAe}|1g2sTSUcM% z6Ny5`g7t4Jm<_1#qcozOkEARGgPtBh`z|8_vzM!wW8)VUUO=N-k}EHB5%cTvd3k;f zdO@99O|>K(qBKFw_~L!6RFcx2AY+qnD@8D{JE-L2NYTBtxn7;N+nbk}=9XDKpVV0{ zIRiVp5?NKg7OGh=3%(PcO zo3cxO_)&blCyt#9(EFm9StgD45EveLN&uvt%fF{RKG(u&S>XS_BdXZNHRTn31f`-% z^>Orm;*AUk5-Z^?s(fJp2!aTvbqPW{=DYFx~1W>_mXtciw`B&X}FNYCJFvAT@ zIL-VAUX%-Q`BO~8%iA0{lq?(@mNW7Oh$!wS4{u~28qHN!$^mR-yBolOlZ@^Q)MIV? zC35&-34P>`OGm5oxbfu~W!k8=YV(RfO+-;emC^gd6?KbpFb;MK5!ox(h72)h*^4Tj% z2WpO249T(xV#S!+nYtmY{w=I^n@hl4?vmIDy@_Y(>;bASlVFQ}S+%vf)^ZO$*}Q&b z%eD|0BfsYI#>5jJIF2lQFv$*ycczt``hp6kkkAm|xgDeL{d+bu^`H8dWViKkYU;TE zJMZm7RAF(rsv;DB|206kwBJrW1J)0Ce3=;6pCS#*rvFRNQBi;q3EWqG0^@TB#>7ck zDbRt@65hgs!Q+(18G;S^v(=MI6l#l~(+e@-`y*Sgfsq_>p&6Gn0ql6r@~=d9;n_AP ztJSSdQLhjpL>erlM1;?;_)4;p7LKh=I%nMV#sAci>fiB23ObpDIKl|MU}>kM3!2&-Vpg0*t62LXO zC=BdKj|j>x!`&QvzS?|5=o1xisag!6R^w8x@!CU8&P6;;Fw@YtlzVLGl+nYEqT_bH zjV*dpcr4C&I3Gq=`8L!Tx#BJ37}%$6YnPqRh%0J`Z-s4udzQ+>W;llxqI%&#Z_aZl zc?esEL@#ll$Mb52(cq+f5YHc-%^F1+Y5}uKrtEw2J&08-W>D)M0#Uz>RYasv%zmri z4fCQ3p}RF}6#k=a{NYI}EJLqL5CDE+Gj-dojcB?Ff{l^-m2IZ~&%k3rIOhO(1+5C^ zk*LkeyW&tg7KRhya&F2@V_&B04FF^SgdW3jsd)=a_a99)b}Q6_PV`l8Fquq| z0graBM4nKQ*XaPpc)-Klue^-Xn~38KP&vh5(T9v!gMQ(hT3wBhJ?E<7VAISTaO@se zHQk#}^JgWq1rNNAIwqyqgG{-|W z4KfLA-#12fgp=)+#_EPN5A~-(M>FZ~L$sihsC;J9v+Vih#M)=xLVfgptyk}wGgfZ~ zJ&l3O{643{TP`LJdt5V|xcq7`mzU)%ItdJdl+}r(@hW_!!pllUjGX)?@Z2Ak<|oe8 z8Vn*H)DDh>_(^L~2euz8FFY9>XV~q2uD=hrQor*$VJFirgm2XyUoEm89`|{lwpFGL z5qJa7OLk*Qg;G>uqT0f)n*t~z# zlnEsk=jU1O3(U8)b$gaaB_zdz@g{b)9(*nOrLbOTIcG!uw@A#4A?2>UeB)OlT~xeB z@FyC+`V1iPiG!G?GJB%{lCmC_ROv8EL)ZUFa#~QH@w9XRfRayX4Pu$z)({MYR0xL|7ntw7rp~tiL}bQm zIjP9?E2JHN9^v*aLDzBL*)DBMl$P1Z#T~{Dl`)VQ)9pW)081%P%=t8?GO0&@Il`Qx z+2B?tOn5O8Ge=)D*bhgSWcRL6E~kEx7_a3G$|WGbAOOg4zGQL`5iYB~(Z_!`ob*1c zBUdz4af(9P?gEHLI2ULH6sgqs&bby(Zl+#aK|px8?>nKDhysH^?s>q%si8WY_tve4 zV^}D5#NfWI1Sl0O-&v@Gc(*z=0{QLT&4t4Bu}v@}-}Ze7rHDtsoWb_=Pa7i-cer|{ zuec_Lv4>JbDPew;726_lH5AV$+m$4Y9+q`S$H`_J=f6_6))?p|de49wWA-5hvj`6= zNm_DFCC~Jk3o4E;BZvN%QkPd%ca63!`lV*qFklprDeD(&u1c9bru!unAH1N9>Z`ew zKZ|M$qr1sxu4SKQQEdQYK&Je0@0lQPL=n85i>V(Uec)PFG8glMpltGf$KcCuQPMH5VX?QYt>Mg%8J%QyrpKLe7}C3H2$wZ zU-A`d_PLuSA=3eoN&(<*wXTp8)D~1)vZ~$LF&u0DNbC8PK5x0-XTUi(0l@ddppY{% zJD&f6Hll~P1#_70gLdUIF8gUYOvB9C;5GW;4;GmbUY;Q9U(8Zt`F5wrFZMa%6%jW+ zUeSJ9S&J}5!GgAmwwc`h6WAkPd%zwYbHD6 zq1T_)Ql1)F)AD-QlkB5)2LO%{ceD+bu6hbniiE zfl+ui;MB;SA;H-f3V<&Rk8gXsJR3=m!lxd}1XYkBQFkcv4JonWes4I+kaEt4{eE#r z-wqE0WDMuL$RhgD@%w;2?qqz~P@;-0k5J|cvA0{aTx{G1;azIP8hl{Iasq31u{m#u zM4FgtrTni#+KNcB5|k=joIr1=w)krz;Fsz6ls^}jdL@X7{=+vJt8AwE8!oF zi_Y!s=&(dN64;+&_j5;hEzi&Mr<<`I0w`zTaBhM1)p}37n?<=n)WW zfHHp)=A+LDX1CWWC#)*8hQ#qArLU~Lh*Yy{Iccx^;2X(uFfhBuCrXS12i?wvq|DFcwik69!}Q#25Tnp859m~UA?3! zeTu^H$9eGZfC))XW7)UF&TvTg2Yj7)Brg1C+B41Kxhx$%2T=+!?)e6~q?y>tL5++f zXg|BX*Ic>^^KdqVGjDZ4tvM0#;WSo06I@hK#XO6095kI+0(OM9$P>&$mB&ULKJ)w(x8@{_EFf2GF~(ayBHtt{l1&fliKwJjW*aJGLJb!Oa6NW4(qB8*mdkpC#q##5Vk@a;(8>6n_T*TH&PQ=Z}eSZ!%bM> z@Qlwku8eqAhZzZ5dD51$y#6wA-|O0x0q1!p&5~_|`hG9`OCO9e&IQwn#cKEbrq7Z; zqnvY@3M=1fEw<>h>5m;$FQWVDB?#!Vgt~9{8BLik(T;M;_Eb9O&JvufwS^L>J{yA>TDNB9RdXgLJSZCk^d+%-l2%9S+w4NZkeB)s7Hozcj;6lc$96g9X1`oip_;v8bD$ete^7|fcyI~T_;V|0yGV25HrKXLKV@`emy;qp$i4q%kJ7ET$ z+3{DI+EfQ>ldgT}jSd(v+eh~V>FAP>G~4Jrtqscofv7v)cyP<}=3bOY(WOh8X{JC2 z>A^HeW**9k`rN@=$p0p#-ZL=brg2&f2KZ-!$@SFA1rxFW+0sFK!s{RG*B|iiF!1nUN2}xg5EU~|j%Ld-sIwL)`x0gokpr&vi63=n#(KGohE1z{f zl51ZMeU5!Z>J@zp$0Mi(SA8^10XlG8VG|c)5JlnYLj`Al)NLnx>9gk8Xjqb{U7Kod zvA?V#+nYulemT|jJ+Nqujhd5%v`R{ldI1c~cc7T)d|w06ygZZ*p|9o~u(u#aUd20B zUdh&E^OfIPvyxy|Hpp-2o&%SXaRGjHtR2m!FAikOvNAp3^1MKL%PVWWGU-WP-`Zqn z0@MVScbZT=)=PvjqsNLWt@_PqJ`dc*iHH9<`{NP!S0c7^kYjKIxL{Ezz(p^Fr0CLK zG1&Dib*#)4)%KOmL`1J$A1)wL>3?R--~b%%GuFv8ZdT`HsKe=hk9~i~kt`ii=5C$R z7)YA8!va!6K;Tz1OH7w~VluGzIDlXw$nwT-D&AU;Lr!3%Exe!UPyWMo5EE~4@v&*r zpD}sb5DSXnC&X>?n#PhQH%oO6_f?8!d{&?M7kJKJc;Dd&;RI(VB7eV$ry?7nvR)aT zH^lF)b6-iC#cHj!fOYx19G$QD=Mko(_^}oix&4AL#d4aWOSi+BGZ8ZLstofe_$VD9&xn#h;f& zHe+@6=1vL8HiZAOb1vm1U(whSpQT_kR$3Sa90SI7e*6rlt9^6WWHeCaV%c4NC@7te^6T!m$e0Zj25j7< zjYsvt?)&CRM2=SIrg%$`wL$@Kn*P z@rhpc8SumU#W;fQX;*pZfy}o&i@uC%%EHnHK4DikqVCJCms#StdK~v5HoUA0y=_v$ zF&Hr8^PU+aZ#Q-xw>fpr?t=h8zN4hD)3g~*GWUxyHU%|yACZIf9Nq<6(13ZRb|*kG zZ~{bMPyZy^!Zr;!l5G{@xfJ)|KXY9ZgfxWu7c~`>6_iaruBAEt;dqc&g|_BQhFf-C zld<$1uNA|{zF=0}2OQJzgah8k`jqN6Rd3>^rj_epwox@~B(F|p87pSSt1zU@>HK8K z-hF$h*$t7KU#xZtq@--Mb6h$4qEH-Vbl>qZbR?p;7OE;OOq zcfO~_oF{7KUQ9*XM{KF15{Cx$F04nf&s3!jni@&NCJEIZj{^l100fQ-*&xtKwag>b za9Q|2>(}Xn>lkIFkwXzTM1xW@mYAIBEN3^vUjd-gkt$Vm`E*Vc822FA8;&pSv!Ln8 zE6;4E;7g=tPi3~NT>~n^D`cTPjs>wr(aE&W%Azh#9O@c(9dNW75(TPKz}A^p{CtsZ zUI1?NI?@G8b0>TWa@S#}37mMbr7R@Ar$&+CVq5_(LSEP1&R1a0Rs1Vhh+4P}anwwc zsxkm4ONU=g;JH^zmdlcBe+v0;rF`&uHc$CMSCJL?4Yzm(4R<_O%;4j03XvgMnV-B5 zO%kEpg|Xko*FHz5wJF`WW!~&hQ16jCDU8zVK{VqIII`sJMZN|cQ!nhuKNc;l)RWs~ z^&AVpA9C6v)=he3%r623w0hB&EsLazRQ~Bn{B@3cm0Bs~U zr9W=|Gd1U&4Cm{aKEwtj;%LVXYYkeBs@-Eub478i4Foqaw@NNUTsfgI;p5Zc6v`;%;pqJRLcWt zP{j?Z;s38mGm*LA-@Y~t;Go;Q4f%fd4Z&}bo?Z>rqFI&Syc)j28Fc9!oprF9cDPS< ztx8?U5Y&xe0=f!KK9{C<*BdKPKfB*mh00+MW)K)xw4YMW@-JWeZKKJ<~-^)CH zeT{Qvu*wZW%Fw0?ltaoZMUi(pzP+L>_PERV?U7|{U4_SbfNZJJAM2;MXzYln^1d^lXDerJj*DIj0j29M6Epr+C zh{VAa{rSKsj`~*e_}Z`RhX0h*j{o7Imd2UR5`Wwm*>9qM1bUp%4hc&yA+Tw1IV!G) z`rm~EYk%>8^LtbyaS&Q&@J*Ro52EW18fwQ6gl3ESbEhoT{IK#op&kDI?0r0R7EKb9 z5!W54AT6t@!iW$$0w%a83GXZ{1V0I%q$aNZ?Bl=$@X*EO6=P-R~jUjA_CVb zXGP#FKDIm-Bt5$a7(Z>x#g&ol^O3f1i1Xe%%axq8q@BJ{4+VXPB;csJ!Qb&@PE6`u zd8y}9;|E9_qSKIex%QO6-r(!^G%}mRZ07;(ezL(n07IEp>p+6p6G=@(9=b5xuibch zogo0p%`?=P&9*WxVk3kw_Urdjp{|!tGI(rM7R zxpXRX9ri(88DW2Jgr5q;sV6pmFq4mrol}<}KzBvkwr$(CZQHhO+qP|YPuteCZQINw zUmo(9|4?h)x^?R8?c3dyG^v7mPbQqZ(8G#v-5D?K=W@5=ja?-q&VP@2@EGyp{ zpFQJRfUr6j9YzMsrfKnZ9<0!oS*=)QY{3Ud^D8PzCA>IodJaIjL0$Is__0rQJFNd$ zXLGmvwH#^^$+r`{PT+;{X*e~#cg>k4DE7SnO-Ekym)c;+u4w{^i01$i#ng>3b5f+( z3a;%={7MIGJimn8mRh&r2s7h^$Hs=(E|th+L;Yr^%9h#D!c5J4dTt?RS9v>MT#-7< z|MutV$gr`k6(0CWN)ahB$Wql~9 zkh05+30`~3;T2n*)wW=fVO#(c-5_Cg7~3>nS8z#o?yH*I=!-gfpY2?aNM38Wncr9g zSW`FB6^pgHOT6}k>2G-fj96xwAs1kk!hbSgJ)r+IVp| z;6r}^*cqo^lz`a!=N_P#CCdB^p~Ot%+7aQPUD5VppE$Oju&BP&2zd%hC~_J*qI5e$ zG{$!m2t;df7XHGTa~awFntBw?FUU{bwy6LtgZ(}iIzlX*CN)Aml$AdD)G@2OeeLq- zDo2L8BZB^&yZfsGDIGP5Yuk*yKT`MWcpn-@eX{A74ncz@Y{~ZV5OU>NYAN`AiQbY~Epnyk85{J#VNo_p9oP%#1In zvik4CvX3>%X8auO)!?jT&Zx#=>-!S&g^CN{?4x89iLE%gNO7IEN0zods)%5flz9JM?9EU zhkys@uZdpT!O6#{KdcF@VqWpK&Uoviojnp(|}pWmjl}7j!xcxF01!u zUQKA`!ea#f1c^TO-X`a(xnGdIuYpHKEYhwWX)Fur8~1K6!VT{8PS~9XNBXaBXgb{+ zX~_2LJ=xu;L&N@Ilf$DyU-s-C0F^{?poV`a$of<1e0wBKnC zV|**N;5`$Xl%_qMZ50%3it1?o%jkScxhK~#<}<=;iJ6sA$B9YI`~=m<46j1l-8g>t z(R~w%LDFj=TV&e&6ETTF6cxW$=Uu}lm_i9WH zhZN~jJ_Hqa$mW}t$M|?87EhO(uw(r{nDAmVy1OeDxA<+XQ}2}5`Ok;Iz+CD4h@pZ{ z+#B$}P}F{`$*ZcnubUJ_|6Y3nr!BcdU#1h?Gz@s;c{fb)sr&Hen19hqxyQz+%=YQv z`{*SK0>XtQV@*}O-fx!$CcJ`47uPe=Er-}(O@H(Y0#<1sA=kd~NBA7+`Mv^@fBtCv z2r9rkxZfHiAK^4Ds>YEbu@mZeY@p0Gl|hTs4ZM4n$UluLf@C$-%OP{}FEcFM7_zjD z$@_F$)T6;OOmDGbW_{J=4jahCH$ts=>fEnU2p?a(<}O^DgOH`}ui&7(9;yUz39Ox3 zw*Ak=BrjN7jTNd|ZN+H9im^e|b^$;ugHg}G@CvHpVCaB*mhS$a--kRL^-ER(z`EUR zKFIV{aZzMs#zlH++%N~<+6(P832VB+UfmCkv-KDM$lDwd$hK-RcVPS?{a~IfnqF#0 zzNIVeWO!Mkgr}w!gc~B%&TChRtwd1_JOGp7CO73@RQaP_vcr`ydhxkdQa= z`1{yJB92NE{XfO!0%e1FvK7V&+LlvfUZ7KuCE~xFuA<@pcsL(D33fS(kN+<1;>m2< z($@KWF37E_Fe2bwHb`I>v?ChjHwxc zaqh;Xl12c4^n&xnmlNhx(Gy`?<5|vG*UWYS1x*6h9t)}Iszal=n$bsM-!dwWCx4OY z#qRQ2bxmuJuieA*YP!S|ko;Gx@yCf{A)H~o9yo-4%7L$vr;}ugu$>3TY1ciKHo%OUH!wkeCR-IClOXj$1eF`+AaDQdMuuDxfO9m`C5W0k*x* zv>Rd9hF&so1I5Zcwsp_MizL??<2_?F2)UVin#HcDQEm=p8hD^) z+)YMt-<3GRZDK#wDvKZj)Nqn9#%z5nd#;hr*&egm8#Vp){n0--{O+0yyIx0}Upz6k ze47Dyl2SN1?8V45&QrKk04 z4bkpe`xPTVeO&yhOC)Afdk{Nl6|=$07Q-=ol)bFHmq?YV_4PMGM>vbB5W7FEZvktHAWKb}`G~Nh8nV|dMP4t}$ z0D#q%XX~2sGgi#1yzu!)G|hK*HfD@bTPW^Y1=pVPG$(2zR_KLH)KKa7brnlP{bi^T zF8y~RwkOvi4iwL2cw}1EYnEEA%9OA$v zQkW?~0C;G$Aprg7qN?kY7*Jt(UwopqnwUUi`|(}lw7i{YhK0zDAF2(U>YuulRFIpg zY`JVE8p{`-ncg3T@b%*}tZ`3pl+QgAtSac=W@6%2FA$b9w#Vnj zMSSAmIX=QCLw>O{s%|~#Eg?|m!omJZdF)l zC}12fF0k{E>})AV%l2$wBQ)$&FUAu}-LUu$vf^alwmMGb9Cj)Ac32aiCRL`P^O4tvOrc z8Ra_t`AY0>*N48A%I7q!PrZzvJ;QPwMh<>?zx*l#krAdEiE;V-fydPqVgP`?EHumS zn$|NJIDm$e+$%Aw`=GhT0tjsyuX%B(>f?S6OF)(J+|P%Ug;pNmF80n!LEqVCrxe?4 z$cDLB-15adCkC>u%n@D-BqRt9SbmC@c&`bc<>-`XSYlR!_2rS{#={stoi%Gt3NN z7~ohV@?jv5wfNCm2No0Ni?F1|U;VR=e6Oe;$#DYZ>DI{TQ^WaKjfzPR ztzHYY5!FA};G=9$Bx)vhLe#-jH;6K86Aocrett@%W~B?wZ69ybNVHF1u~wybg?HO< z@05+kpz7UD#9b-@>O@Fm|HPOeQeeih0w1*whYBcuD9Q6@8Oe>yg`PvY?8H(u> z1K^+9V?X~9Xmu?--L&MPk>wl4$X@a=!yS**E`E>Ir1?bR0krAiGtWsCJ_+BI!Sdk~ zCYII?8g!8E1V3Rzq9`jx*e~PVkTMn2EK8BG;53EoR=+z%N~`>ksrSb@IFx4^|F_gK z=KP3$|7SD?6og>?l?8`2Oh`CrQ|v1}${GB41M}#WZ4i_|;&3k}K9^cWN`-njC1A`{ zx*@h4lW5-mW@7zG#~{#4WPuhL<3_{r0K3KcK6(3Kp8_}l?iw(7xqd@44bfV5t_Ls= zH;H$!no0Ny#{H? z&3e&R{#bfCiQ>6bRF6>zy&tX2kw@P3`nU^GAlisghr*X$qqv_P8~M>Jyen1c6d@=3 z=`J29^4Vgt<8N!@wgjHCEU4e8WYvrqMAbXlh7SD*QzBqWO=myb zVVyG(SxVS21FQBCQ2jvq7AiFiKS-DzUUc!jLAn8bUi%2CzJz2Jv*P+#gD9p%7U=T& zT1sqDdwRb6L9bE+gf6bR*=+tPzXfh~7Y(BqCVl%@(_M(-s7ffd}muz*P(^LUHBANm4EL=b7cHxkJe1(1ij}{OLW*?as zD?34a6W8u916`+yMD_{x-p)VzU-XAhJD*&=VneqRC{D;4fNS@%K-+~~S2p79kgjoZY(w@U0FTA=)lnOX);V4NSW)&Uws2wn4Z z+%jcC(k2u_sAeNZBe>QY+3B`(Q#f9^^%;$+EMFW z90Z!S?@9yGC9LyRkqypX_oqm1dt$ZW{J7U|_&$5aqAYvr!e;vnLFn3H$a2AD-F_&> zw=DaisP5PIhOTpLy1sxa;Qz$HlAc&t5RsT0U`uyFtmBP$LiR7Xs;odhnh>l zYbT;XX^#uP7KsdtH4CgT-Us1r`&hr`u!h^Bc3{WFEbS$M1A zv#IbrZEITo0rr4?e7m{l%Etbv@x*U^x()8#M!TSqhydS#l|k_Wg07AcLD)CA%&t(M z86i;6c1opdace2HuWvnCiZUOx@4ddkR0k7O&g^^q1-+3;X=XL~p-~)-32LX+y4Dy= zK*Pd=3BSu^b3&Xt-uD@bb^DAFGC8v2YzSyegei!63}`oSdYT)C#BTvlQ@41fZjSzh z-OX=tv>-;!ZX5(gnx%B~#vXNpXXO^NCk-l^7s+=CMRGPCWvV$Zw$hW=WZUOiw$9S{ zMg7Qv?=TqE5gtVy{-G!DFSDFyer3&(!l9|0_u3wOQE4s|G}_jGTx_6w&r_-Nbl7j% z-^n633n@(QiF%4i8UXm^w8DSNvW}06k!d_S z7Vk+Mi0-L{pT`?8>SGDvvc#dwfQsB6njEAIBh?LSlyX%N>%wM$_(z3U&vs& zQSe3i+U+Q%+pWvQ4R$y}tli3Q208NB0IJ2qV74pCL-=xL$&!0?`1#Bc8FZlz*BsRd zZ)Ukmi^#)21WJYV(IrHe*5r;~m?AR&l4Ntf?-Q~Z534!90`pTNytY0TxH#_*MAvxm z9(|oZvmhUza;EEH804MnY5I<=>^i?J1#u%0iYSt-v$JSBq=h5KkcDpt# zt4JWPOS{;JfPE7T(5-7_5Y_2#12LMI5t@S~mx4qV=ia(vNbVW~hwPSG$#s zCS{u8gNc;(2yYkw5I?^?L@L1e-0U`hFQa;%Pn*S$d+h+f9+@jJ+j5P& zcIa*jXigQ;_w>+@w9Z-q#t6Q3Vic}ps2fV+_dwS;jMUJHy|nZ=^bSM%(jO0hm$>e$ zW~jz4dz>2msk9-O@Ay40wZ;5zEe+xV-q03&fhK4n^G zOAd0aorru!^|x5=O1H&n8r`0+u>L%mmsXNS25_;G+S_u5G8+q(M1s|ZdnJO5#EJ}zt7C2WFLmC z%Swh5Kb+ZJh@SQn^t;vKsmW64jWFeY(Jcf-X?MA?VMmPv()6HNY4-AWu zaLQ<@T_A$;iCAkt;X5cg9^o)9 zG>XG*jomt}(h{7L*vee0Vo-g+1Y(vK5~jH>c3{n{Hq8ctZsctyFnZAm)c`;-aoCbi zt_%uM*kxJW)7KjfJg7$!Z>!3Qgvj)raSUPtd+CV97w`Z! z_6&&uy{-W6FBB9Kf~Rq~{9^Q5EACD$QyluL#v@|+`Eh&Fk=?S21*4#fK4oc~K8#lZo>1;T<9I-saP#oG@Jtavq3Qb(Bxt>xA5?=*=;y)qpdeU| zYhpl=r4T)5WL_opp{#Y$H7eFzv7i3}0Jn;caYzeH%ZP7D=5ts-6~Q)VS21T%_Z6NH z{ek+-l2N7a<|P>BhsoNtt(F^{M5+*H)Rs0;iOiFh^nU%JyhAoOda?QQBix98W6WWO z*Za}%@Ku*OEG2u6)ch{rffAnXkD)Y}P$hZJ$%5){Z*!-W7Gm6%wlR>JejkF_l`OQt z{Zf&g@=&;&z>`Ih9G|pLqz4_EfY!x!@2$+Yh6f3#41>XToiXoGs zwOvmDskjC^%RZpBBMAgADt11}$sr2WF#N@}Nw`lasUUuPn?*zidzZk*+PCU<(?X;R zpNXY?F~@QG1Kt+W_IP7=f`?%m&yjpx7c8L47r33$C50&HV$FDni-cW=lt_7>HoIoG zsdQm2VN3}A#j4-2OFJ$-k?_D9K97psgYK z?1t9d9&Ma@GnPUHEkbmJj+QZ3v{q*PLW@-X4uZGN==G_vn@#{p@u&~?t82F7%a0b` zJ;o~RWQNFsZmAp;d;izrWfmXbZm9YFtTbx)n75Wfb=f&JUq-V?j;!C79ZJp>qOU;} z-w0CEz1`^wUK11DFCQ$zn*DlWKiXQAWfNV18tPT;SSQwxB5|irp0Y&94t#CYZEU4k zHTTyadq08uc*9Dbw$7sEndmQl64oCD*>~{0S*ZYoK|1Yjcapeoa-I((yM*DStF>_- zc}oTJysci}(!DC){>Hh*UUM&iZc8IS-BGu2pl0ZM>MG@MPI&JDL`vBhFml9v-c1!G zh>8S8D^-E!J)DlL2P$pOYFW@dyXrW7^S=bbh(F(-pdJ0q`xBym3eGisUz3T-~;ci=Ys

Cpu9;yv^6O{no!bYv&d%I7BA&v` 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 diff --git a/assets/convogen-ba953cbd.webp b/assets/convogen-ba953cbd.webp deleted file mode 100644 index 4525a3dc7cdff46d7f94e3819f4d6cf717657629..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74390 zcmb@tbChLIwl$izZL89@ZQHhO+f`}Xww+m-S!vtOO55jE_jrBB>%RBv{@ri9^T$~` z);>F8?{(Ik5o^ZS%2MLu@g%@N8e+nV>WZ91!GDf#3czxJsRJQTLHX_2)1=5q3Q0(q zzcB{FM_Jf^2(Rr4^akn8Jk4BmIoSi6zn<>}-bedpoIafH9bkP!*Y0NkXLl(lgs%bn z0?fTF-Uxu2_o6HC&!RVv-*qoD3HsrHW5E0)_$Ta#!DT{M#0SHcz$XAYpcOFv1oY+i zMF=QsoOx#e0B!>=K4JlefG7aqGvH$;G4HVN_|MVSa|__)z2m0j%K)HpWzoIzK?wNj zCj@-f_XP%g{!X~rIV7Cvs|17sIBrM}`U(M#U*lhdA16;cG6DFnWmkQxfJs38*Ven* zA9z^Qw!d(Auk4DvI6O?b__5;zce0Q`8? zdz`s5SnrzxEPee300294gsA{yfXrvtC&QP*_0AvHS0I4=EAMOcgW;v`Gw=A12k^G? z>G4%}N7(ljM`#I90;GNR9Ve_}-XmW1J@yR(iay8R)W3MX`d$ei2|oqa0{&cbD{`N3 z8}QOM8BqP%_73@F@Tv2q@nY~m*lO_S?B@;O6Hs;I@*D%W?gU&K02H1K`u3d!W>vyk z3MLM@d?OeVkM8h#MbgHcUl9z5|C5X3h6@ECq-5J&I$Z&mdB<_-2D=>S(EA2>vFjzf zhtu77FuJW*A^-7P1ZK(gEice8Y_Rvo6Q*+Rk`cRUNW6d7LoW0V$Ph)?#~{b(V-NR0zav)rx-nw;@-3^9A8*99v{ih~hF# zCi_-m+bppT4bU)7-HY1TH=}LK$IV_2;;KR7Q)5Ks6}7-$!DP9+o!)Ti)k=ZVx$dUM z;UVyQu2Jbq!=9^p+5_|IF?23KlcH&)!f6z@i_NsQ_<9l~zxB_jOc!o!21rM%aRtiN zn*wN9$uj}WF_X@9=YQ=sPG_Y8p#bk<> z{ysDuKQ^*|6Oy9DvmUQ2i;PEyIrb4D$==5BuAFAebD7;681Q24EKn<(it2dx8h#96aM%!+c*EUV9?sRqtdNOp-WZ|33(E|CXXpV?) zH2nJdful$ND^99&5NXou3?ztL`VY*M{th$z=j6X3FaG`4-;rm{cJ&8&E6sO*1LN;? zFOjrSzoS23EMMvP8$K7E|8XJvY=3>LRhIF#1egk}{2+(Tf7c z+FGoZXSHWIvix~uII=kH)FJ;NBas~x&brA7xo^h6$Ex>Rz2P`NqdLd?THCOV*eqDr zoutnTChO8t{>!^|ACAJ>QD7lVHQukxaieXfkJ{2VPXi=Lo2P$(o~+2_@8JKR?Wm>$ z7AkaQZ4=tSgFL-%(<e*!O?U$ zFq(GhiDdC#-ei3*;bexls35HNc4^6LOJvFaqaCp+eYg`2{H;($tiu76#FuZ?Kj_Oa zkY`$d4QU-9x7-5-3D&QC=^JSq$OT!~2WfYe)LOP#D+3AnykD(7y{Jn~X&I=wa)&uI zHUMuMJT_7@%dyjef$o0+(ZC)^kIIe`jttLzKC~yNUe-ZBm)3gexq*Hy zP{g%Pf%dxtqL=1|wx&DDx#PRgSDL`GSKCzGE=Jt;aaurxL!J1OIYP@ba0=rD&2)e4 zhu{>`W6pJADz*nKR2w|K=o0E)THx}yL(B(U)08H81B6@Un)QM;xgeLYY+lx|(KME0 zU!~x;rb;QQ%?*Zsvdfd%0+NutPN&ytOCB*elqnpIh9O;{D=X0+hFogTl{C%Rc%W_k zvk4*)Yy8v5Hc36>%Y-t+5(d5-gjDJD+ba~kBnBM4;;IPVNO6Niw?iVJ(#81R-?*~X zR`t}SYDFn8ZP6xk73EtvEH;;WmVbQ>YDSR}YueNFFOa`#$tyW~Tff&S?rT!of>yFg zN|lL^7L`755Uff{zU!D%mJv%B`g=b@y4r8h12Jlu?VdOA32_>(0NY|Y?NMB{nbUvz z7hAuQ{Uo|_lOo5>GCN}bCu<%Ha^V@0i0zW&ffg7&&{ZnmPlY)$`#e}7_YYs!^3R(%7z_+!12d))86S`iA(kMv%PH@y@(NB=Qi|GmS1M0ItR{Syw< z(6)zMT4*Frh$|1`WLSruyABt4^ZbW22m8b?+rMDBY1}NBXxC+o1 zCS6MEWw@J!QWUD?>z2kjl`(AIeHcoSe9z?4YK&*3A&_JtfZB9~7i?ETx4NlD1DY@oSqCX8NYw3 zG4$V(@pQ#Mlk~>GVnQ%qgNkFR{)NsSj4>9_`aT&)P zKK|Br6i`82s-!h@I@T%FKppYA?z$~BWHiFgEJ1;f!GlQPpZDK~_@Is?g5t-WiR+95 z)rS-y!Q_+V`)vG6@cJA4{!+{AEx=ob5- z?bRB(_P|7F`{+>n7Tg|=+Fe{oMI&8y!r>J>=qWL^yXy;#g}8@VFqjz{wD|i1!8gZt zN84bAd+*zh3|nb!47?Ydp8+$aE{Mx^7nM_@KbJs$d8@vPh3XHbj{jiSc{b-9qjd*> z7U1@g|3-IX2qrBbFgx`nPlYhE=s`DSq<2OY; zpMNHJ_j%Z!hb2MjEyPV8;yvm0FVsM+0>>~I{N9M{_7poz@eybBxyq#k%J(x!AXF?) zJL4V0mKF>C_;s-dbd0~m7tWc8{XqLa|I%;&iGzI3fqwfXzQPSfAM+3n%%jGp^6Ah? z?N3`E{j%6QZ=8>tYP`$hF8=YCY*0R3GOk%gP*JrnI&utgD3f5!PmSnb(xZf^y@%=V zAGA>%Y}jR8-OyPtepCq8JBxbp<1E@{+2?7wg@%NGId%S)TDvj+c#I?M(fWB6(67rN zmb9^K-*C-Nz1+*tS)~sas(btAQTar8dGuZLlLS@+cv?4|P;9W2(3fSdiR?8iBg82Z zv(}L=pR9RA%u!lEzgcr@HVWRattL;bl~;Z9tc=_s*0B&*%cE^JPMiuUG6&uF0F$2Q zQXVrFrj52Lu)e0ti0dyb`IkBRU+3&UZFl&KpZPffYR`;iZS>~9A*4cW7NYNee48}^ zh_||~FatF+^V2hC2As~m*f5qtDJwOsBLIowxt$rS`o8J zWWFgG|4h=1F~vC^_oO6~f3B4G|H`yu|ALCON?iEY|MGvNhQKjq$@3MF;uV=O3H%Z=rqWx1 zr{1HdWTwR%|G!w==wEiLDs*@L1c znTIX=3H<75uwX@1UAzd_-NU~`5KCm4x?_C}Z&+gw?lfXw!G(W;$o^|JrFQkjSO(@i zv35Dz0=E}!jgGBmHW+{d;0;u}4W?QZf2EVm{S2H?+VA7j;G5_`4>Vp) zaa>W4KA+Rmrl}Hhv#hN_Un=Zu){ypl+#I^=w;Zt`)jyt=K}pTf?_S zoP zqtmlgHme2_K5<@E^tsmAno2to!3*-4r~Gi%=07q2#d-s2So?3=I*agL^|#)yAPijA+x{~MzQc`Amp9~boZ`no`2=5LYnj4 zKHWIByB_KQ+E72qhW;?&eA3H@?7~b((wTw;NGLZ<%r?oxy!w;*o$Ujyg3@Z9z+>STNm%j}>@*=^%KWSXKth z7BUgF**BX0Q2NaGq)%|M|HI;A2Y{s#(RF?Wtlfeu1rV%#K;%Gaz<==~@3_|{JR}zV zd^apEZa?SJ_&p{i%#r&2d+~DWO31;Nk`uajK6t57cF)+|bmU1T3%^FVm=AIDB?*k2 z(M9IcipwT&O-$L!1WK;1viewB1sJsdW=pF$RI)0T4iVgFnUqx>w#wpon*>rCQDDGa zSB{2RqAw%#5SbI&YT3LfH3Sm@)I0AqI(Tx}sdOYqPR_82Z$XH zgMw$hJxq*>6|1a6;5mez2fdVWW=%C>ySAs?W5chPVH>ZrIB&>fMDMW%C7AD7hW)-Q zj^T(=IcGUm1brXJ1p8j^gE#*+d<6)-Z#V{lK181@6T``KHMxHFd^Rq`0gdh|G5_g|sIXa%B~|eoFPMSKW(&6MSR(66J?X z#t`)7h*u`HD?wni1 z(|GOf;hW`}IIgG-K{tAU)E~apz=j}^*6ccvnElH$BAEip>Q+L*g3#7osg(s;Z$4%N?clD!$TE$RQl_=!l7P&_IHzIirWX8@oQCz@1Qxazt3_#n++xo6A)<~e!Hsf*aR|zQS)c7ZSE&uEf;hS& zbCSFK+D&IenD!C!M7)M%pf>_$q*TgxBSR~Ya-vQWQ+dGpfqZY|d0>v<;GUNWkWQNH z+-}aV%RuBXLWRcKBuBLhbp27DLhx=|(azeviYe2BZIz}oeO|Dl@(tj4*Wt5-S$ter zMGgThENYRk4|N5sWKBb(%KXvskyo5{vgzem4=LO!&b%dlQ#uZslc{^Nz{lh{!iy$+ z6kp+_+n=DoC~-h%#nfI1w%F};RkI8s98CF;lRA~Fx>v?R3v-rn3Z=*HuKqZE6kzxk z3b_rL5C^KI&sL`x*@-Pl2VL%y&4d933?F14*cPc6!R?Whu}IL4nvalCCx!VnEX1)B zlWVuRm<3r_An%XEO2r?HE7wL4jf-%Qmep9BUy>d#u~}*1wp3pP%c1CkzT;zj1Rq!F zp4PvzcymgA#Oj?NnDPUGf{p$f$y{91KxXHA5(485Tqt)CyonBY?$FohU4_TgG?Wt* zr>0sI2Rh~pRpyqYr)FI2;rfQh6&|+OmZ@Z)%g%4uBTg6OFS+9b!Wnv_dLI_!EY_43}s53Mk zU8|OFiLaNNSzVK1S>-?cXKbM=04+ zS}oNv3Dq5YQ^64t*h9H%#LschiuuK8GTdWXYf*}vA}kcOw7f~##x!WW48bB}Q9qP< z1qEHccmkrji#hE9?4U_E&4+5}ra*{YrnKwv)qssjea%V6T;rSxDu6v*8kw|X~| z@UxR2y~4us`kWSE`u9X3>>zN`$17d2l1YVF_;jL;6cPt$5J_c z)hZb-#a^jt1B~qjVxfFEIbPqFF49H*@09W1h4vQXA!VMQ+O;diT;5aSuL_~A+7bSz z)GV0xAIclwv>7z!VQN<0{;L}KyVe_ns$#*K+0Bq8J&dmEk0C&)Esu1EE}PSJlN)^?j+PuT8sRD1G*S)z@8FGUH(Dq&)=L=0oQ9sgQTYPqWR%x#iNYvyRJ@DS@idi zxEC|OHdhO&N$i>Y^_cvJ;R;mtc=lIEG=XrlTK=n^`yWcY|Llsrnuw^GGWo}n_kUqU z8Kjy)UuQ1MJ`hg+g1Gok;-jJ_nSRnwC8tT#;jkGZz^=zXG>gA%g9k_+*-IyJk^jwB z;=iibe{WlRUIv&nfJ8un|Zn0)^473gJN4O^1r4j^o-@FX#d@w=hLFZ};;sDFQJ zi*n}dkpCC*H@$E0zI}+xTdtByJ95!e2_Bx44d`T`WQ2q|mIg2*OrE*hK2 zL;qq3d=$-;c-5H&0wQh=NSVcG7ctXu9iX|D3ND4*-Np6iJw6ZY|INet&aecZS+)mA z;-pNTBw(9sNc#xz*a72&7_#Dl%!Fdz`(05MQ8NyPW3sOxG)mT3)W_qQ6ZU?mR^dF9 zAiBq^bxt@IOhk61{Z-iAXh9y|0zN_O5*sJ;K-mTXOyyYDbUm%9>-Utr<M(u?Ii zD58QG+;&Y$44{JeP}Mh9WW_-4sA$gtL`^s3yMH5SZt+?(d0GX9j2f7C!1)Hxc6}YU zi)Nep3YAVcT{#*1xvmZB!w35eR#hot2YW}YF}qC4&x*^` z-}7aYP3nsvBj~EkcT#RYH&PzQ$0yNoeaN842kko7cQTwkLV8_g7+vl)`hcy*=@@_N zOLcOwbsIiHdvI0U$$zL`qWs;QsE^3!LGJ;D=t=f!)n;L%H%n7PUpsQnSv!Wem+0M= z9+gf2mg^u7X_6R@^uFr~oi|A#$nKa|S$=!llA_a-yX9U{C0Gl+1|s~NPU)u>R8yXr z@!S)|%dgOy>ER{k>tlxc_=hK#LDXlCUj?NU)l%QXc#*683g>k6J3D4iM+OEJIE%*Q*>tB}b;N2T zU8f~ulpPknJGDGUoNaPi{OX>KaS$)3K#qt< zOGv|4eY2GEg@Z9aIc&UA7yM>8VXs~RV z&9;kRQyOy?t0(@Y@(8N@;MmCm%hnJ02~mFcPHT9cht7P1br5dsRSTLe6vYjqEfme@Xp@zH}z1) zm|=@GipEYStE78ovy4p}swR($Efzz4Q4WgrKK9bosgF&HNZ^e-Y1Z;9;_!n&BxwGX zVN)V829dPXxu(u%jz!@?8X{(}e#+j+Lf3C_I?dw_?s~F4&cU| z*#``+vYc}o>`hsFKRxpyU%i%QAypY)vY!Dj-%@OglnKzeFQaH@l<-%_wy##V6Qocx zxXyaId+u99$)&M@FSgF_7Ts{cZm8S}@!!?vv;1NX%?ce>%ylSk%&8Ip9W)zRmmPV( zV1LZ`2iral%f5tM*0;+xzseSz)HA#XmxQ4r9F36nri3ZV&R2g&KNW{>n<<}xRPVKh znZ1fnrz&~!5C&1g&%!U4vTI31%|<@|+{y4FSHCSyz)DMx)xpm+R zu+oZbe!qeOp6MjS+wP8Ar8=AiqIud;F?QQ?lVo#@$`E{r#3WKDP|0&NDI}hf?&(aE zoUcuw(s(2j6i%&)|t3X?f?Lb;0%8Ea=rX3bqKlbwhp}4OkF&7JN zdp@eNth1NgxaAB0XNnj=Pk>gj!z8gkFfPVMNiOpn+B4!;v5^RAUq{fhJ(B zRaWH&5YlvTa(m3sGnePB%}lE_1mh=c1u9sTxz@K);ztJKqBXF|m?NBRti>XeukErz z*yhOJBlV!!ZKhCi-fL2GBn%nPclX;1hsZF#_wMq>Bq`N9al9mxU9*ldDQMR;jC>N@ z21$GNHj6Cgvr)TYYb|3U@pEBdeWB9m)M^h?VR2ps-jIkKtC1BN6~lRs za}q>PRx}=+EPiw&X7|rv(z%S3{lrTIy}oqk(tSjr)($j1arpgx&IZ-#F#9<=rQiFT zuqiF6^AT)Yw>EA}$9Gf}C}%4|f|U*wWa+weER}LthA{qwd7vFygHP(B&TqI7b!}J? zLpx;48-eSFl7}$KRfJUqpW5zmLJ#^if^ z?{DlCh0ES4{yW!*%r;6R85`W>Z*5^d;zi&c*iL8dMmrzLq@~5V4y7SM(S7M!GTRci zN36Q^ZVT_ChZh-f-twy3o@O92T4_qsbVQqnZuxl zyXKYmvsc!5@|Y#Dc_5!nBp>B$j$q%TQk^$9^){c1vT+oaO7bQLK=FGnDNqG3vA1B( z2#a5pvbFja_CH&Rk536FWn9E7e-HSrVU z%Gil+@+RLIsu&hN^NT_JW-CG}2A@Q!+~_FW7?NZsMa6U(5HODu1;$nHh?Pb<&xD;s zDpU%~J>4;<-AYCcjlG0ALx>4_sPCj5`_71rI?uQa=>&CU~(e4dh#@ z&qRE=l*25za1)Ld-KZ021VPgYrMj`w5s!9d7YQr>u+T{3lP#gs!iq>|9UG5rnOcsbwyWJhUJWW))Orw8_(}V%|ITB(BS;Vb^GBo8 z5*hlZ#tpA3dL{T?IM8lY_1=d0n+#371(Srbz*v5;vzFn}!MQ}S|GmVEn4&{SSB&>C zqJKDYt zhfQa4z$mctKo|WVp;IY%8Gc{L=KizsPLlSJOLUILWSyKxoFLSH5#Z9)e!fUEC>_r_ zz}rCzfK0=F)QcfJaf3-OhO%lNcOA~ZGYo(UG03Xr&0h7Lfjwo%tM2`I2>Q+)Tm z<&->4lL|z5of!`282=n{W456!C+NT3necJb=i7tgaT_;REgSOdoJ)XB6AT#S&#IL< znt>5AReSbYy54z% zs~~!xD#9PXWd&wTbhx1s3)CV&U^<)zwW$2YOA>-b(e0&^Vb4h=5pg>Q4))xOQ-} zxYo`>I2*Am59LgUpkJVYAgztE(DJaRN5Ro<-jT^vFD~*R$+V8*n3zT9^O5yCrtR8h zy8_wtUGwXS+9pOb?kkVSyQR+l_2X6dGy+7X^8~|vDB;+?*)T4Q)(AseZ1DB2 zp%N0D9AH6XcmXO|9u_VPX_-G{9k?0uJ~=lrOwBjxn{{ZlWt@3+?U4VmU4rT0nI*t^1Uy>QQhI3bzzllwI? z9d;Lxs@q4W5Edn_|2xg-Cu4R=`S)#uZa1!YV87NKJ@_N0ygwo<$vprfQ_r%r+k^c1 z(L(9Ol9y$BONM*J6tKy|%?F0k_Jobe%D~c5KBFjY<`>C752n|KF^x)%Kr`OT_c+Eqj z`WqGPsY8aB5vucc!XMc{-UObDJYGEO3+*O_`~2V~-#nG9gnQGXG{Uv6QtiAol+}W3 zL#3~gZW3suO#?I66(ZkOZ_7NQNbyU!QQx)G|jd zg?P|xnI!cpF48_Fjqa*OJELLxZjcC#g|95@E)Xw1%y+VXO{ zE28QNTmbjZ)8L-)fc)!84Xa70_s!%xTV*Q3(5w69l9Bc?K>w09!*L*%WwbjHcsXYagz z0zzsgAZ7&vC-X({(SSCyYjiH^eYSFP336Yeq|(JYo@SHQp-R%i&JHI4VXb`_oj zqe|Y^z(+Ca1z4>NsXc4VWMYZLBwMt8y>6p@>SP7_Nr zNyqi6x|sKbPDf_X1c*z@=M(To-o!xP?)Wbi9Q!n)TufMbeqv4U`d}GBA_T6g!T{`L z@!~aXsGjC}4VZ2FWk!$MD0qX*mLCMG5Vp~KcCLsZCw-T=_fBNZRG+ZDsGW&t`5|F}SD@r8UZ7_VgG~%Vx z+|GEJ%2ll#TqfL)?XGf)a|#w*6!&c;LIkjm8kN1Zy(CE|DmouUwTorrnL=T(C^i%X#yVnYju zhR5yJ!IKDb0-HNFOIB)1vb=vpo*u+FMgvo%;A>+>s>ZZ$zsI)Q+EX*rebBg)LAqPI zi?ur}E1!R&&a-O-)CO0tKPIcEvTp@NDhzI+Lz@^AG;mZJ`{mRwKhRSd+oc2fwm=cmMu^ZU9?iV!)3=uRdvU~Z zkGDYgwBV^v<#7`kiRJl~y{jWgbPzJ^4tn^>g`~6#?*}1ltvsXlF>qaZ)+F#J1~Iwp zqL}SaYx2snWkV8jNUWKkV$=5Qt_*?F#K0D!S#K(p^tvy7;=AC(FT^zw8l+fJwoc64 zUnq=-;c`JHv`~1;W)mV{b!{h-W4~0M5t`A)8Af>URny3u^(Do7G{YwoJ&)(enZ2Zu z^fB^~L-w_Y=kW!*p@-3kooJf!^ADU~T=T_iq|PJ0s_h)T*1C#rwBW%a z%qzJyE|Af*B5RyLv)f`y@gF>dq_k|{a^)&dML_S)^_`QsnzR=LdN=$*66+sWQQ=x2 zs6yyXKpu!5zVV=^p{8h-K`AmSB#XT9kuEY505|eTfOh$6crf2SezPTEKHz~_BUhIKg_I^M}UArpNK)Pv!MiqM!(ua%MAum|E`Ot1``+zy@9sl#(M-m6vSq0yksUMS)r8Fh*l=nbSm{a z7k*z5%=fiUwVQ!10CYSRZekb_ikXIF&WplqcLbo%Ub^R0laF78vXx4)Zp-dc`@y^3 z_i1~>yJTB|2dYm8;yp@eY{8Ad%*+d)gqq5CQZ}~-8_463Pa>`@d zXsY_%eKpsI64pHWz&)3TqOYs79cVh&dT+`PcCdN=0cr8$jh7t9XWDbGZmqp+M`ei@ z(tr_nd=HCE&L?ipl0}VQ5dG~Z-oFr#DQ@6D19x|(yet-LaXX)Yo1@+F&^lwVR5y&+ zhqi{I(Zz4`^aW}*zEG6p>R?trB&g1fEjh0^QTGPlx$!(8ITi(hOzavy%f~usr2)^w-OY{6NYdC)^=vqJ_qw}F(t%di_r)it+HB%74~SJ{LG_dLA-e=+wgz1MdB>{nZXsOF>kSjxf7%k54mxw1 zE!`Eqi*k#KDfKH9H zItPpOBTsGv0wwfY2VL^K4P_Ddi?S>HtMt5#g(0ZL3OJ&?c?{W*Cx92!+e3MtL!#{_ z*2W61h^Jr;B4M@3Z~klp(@cDJM36UR(Is-MR|}9aC+BkFgsCE>L9R4GnojndnErGm z)&dW>MVW!JXE0~M%$6b{cV&8e(>=}1xz3Y?M7!9JY!ub1^ItuoAc233N zilYlI!IDMLEX}qcYQ1Siob2hYDZ3dqU)@i-R<3s3(*C_}(}9j6+?O5-9wDswr3< z&SMxscR)I!NdyqiydI+*N##P2jKprBBXDzW?*ST?ND6}aNYZt-T|}#G#{xqa9`J{@ zU>Re$>+F|eGALNLs8kil`n`oeQ*Ny{0-dL14*PP)jwE4UND1c&kYQs=VHQrUwYm(3 zeZE(3%e2!uqH6?#bs9LiZtHk|rELr1`!wZ>@5jT0Gk?!a*t3*OZ++d;D_py^c;Zg|{NWRqQFoLBe0>^_-<)=j{y@fd$6XFK zjsu>#%IXjs{QOoT!YSo4>wGhzFzd!xGRmpdO{{KoaU4+HB`^h-XqkutWVa>~WgA-?tGtv4fb#y0P5z;3q)ADplRnh?}Z~>I8+L15C z>RYj76eR$~srb06k)F$*raD+vAtrt+A&d+2cyuPi9?TCF)67ny*V2gQmps4=D{@8n zeQc8704h;U=m*=V$iA1NF_Fw$s)Kcx%|fj4$6CU8Zk|Uq!#!7abbQd)0Nk}?lG*C* zG2Z>d?v5dU3c+g6tcaFcQZ8`+ILC787ijgyu-ax?DR1xjuB?;DJ}5WrOw|6LmjT3X za;bXpg7LPILrjOHe55PP^3mOjvK4Sft?MI5{A!wEaV8sj0jlE#Cl$eby9-E>5c7C2z&y>-)6QmVy79AQ(oSEgU z1tm2^kjf*ML%*hD?X+9|AU0AzD@LU5i3CIDX65N)!3VuTQoteHQX`*ssXkc~yzTF` zKAMhaM4LS_DLAgrov=}!%%FEdR{<|p0BMBe##KvHx#-Fod3)c94ZanI@bxZU#or|$ zF$Y?8Oct&y9NTmBDM?{!G0H`iQS)m947-Z9ko-XEquJ^PYvAWm#+z$6d;9v{6U$T&3>%h8W3%h``yRMOq6h2D3tvi z<#bBn!JUn9++Y*MAqDQCxb+FwNMP0`l{;W6y4#6Y9DEVt=|PX_&aZa7TA`|l9oD9n=cxQqcJCBlF8fm z!^zm<7cVSAG=9EUKnJedttXkWraQMrYP}roY`}hF59&FF^Zabf$gW?D7v@&+=G%v)g+xaHY87$Q?6>4y1#k`1nuvvo z(A85_Yfl8S{yGc?`wnh5L@+su`iLaAurgbwkLR$Y_xRL!=@85ss*N~?F5|HfD(AV; z3lH^z>3g^zq9hO}-Ogk)H#bG#0e2?ElyVE#=XCPiCF#qw0vfC*?!tHC^jqZS+(!~$ zk8x;86ukYP?}m>JlH*}Ly`U7osEv?6qQ`rjhGji*TC?V-0>EW0%+i0=b~pOTa>s78 zxpTsa`x#rx2C_qSD5XwZZA^-Bt}ytzodVK9EVF@i_MDs7uEdOdQ|fK!=II=D?*`Ri zCFMRGkLWL=7UvmbBti{xD2uZLS|FN0_k@I-^)`p{d5%N%Cbi>QoQcpT6qQ)=2tf{! z@re1nN@8_@?#RE0?2#=nr7F%$NL5lc8R(a%6+9Tass^|7rJ4F%gOA#duzhoAe9VCq0iuZbB(s z4t5q!FEUOP_I)}p(KolbRr=7>nj@dpQ)*mSBAs^u+;;ek3XA$JaG&x_pueLMbM#pu zg4xQ*2Cm=NkWdZh7ItfLcF7nh7#lly)bG?Sv}(vG4yAt!5c~2feX2b;Q)5K}6gb>H{=FX<|y_O9@Z4 zFhJ#S?oakk8Nk8=?|Ylcd%Zz1t+d-Y*vt#z=sE{$kk^5_DFq&Tk9AKd)$=D`a8kUc zH9+LJWGJ64hsdc%u45Gx&M##-)m(vkl>ca8*l?cP1RlUlN z5n;E$2wVGA)mAo%uM_l=ipFQFam)3?R}}0!Ql5>lgu*GIRJsKtP0Z6rerSIr74f%m zx0p|OzI8Miz#%$OTZ@*J)k z#}f72$Y;+C+$HIc_NKgC_8Ulyw+RW}Hq1-IS@l>s?`Vd=mINMIoUA1rSyfsn3Na3M z5C>BvZEB1Q-d)ZDX0;4th$l$vga%wpqX!SIU5KCyE%+W+r22(5?!A^*ZnVbZ%z;pF znOH*Fh^Ov&Wcg*res!G++se=%rxRNdisY_1Tg{<6;0qa>3>G&YpU~}bW+oup6_3eL zxHme&8yR5sYR|J4HcCKGffqc2b~{*fwOhSSZlVgJ^xQHlrcVWRkj8!KQ}TSTUo(7A z&OE;vKj6+D7Hi&2zq__R8E%)(>%pV>Y%_jO8%%-%`tw1>EiE;PAQ(~yhTBsMG6c&n z23Je2Pk95JdnyNn*9@d(THZI)n41uMxv-^6;_ot8232P5SJa9N5%~CkiX^Fur+K%f zj(;F^wRqYu9TfLwp~W(7<#pldR;wFY(t!)~WpC_%f>`~sy$s@nEsgA_Kn_g&;jh)h z!PYwsH1ze|eKBAF+%p7tJ)%OeNy(z53g+l!hzk6QDdq;abWNkIYk+9jkpbFf*`hxw zMdyIW2p9xkstog`_AW8M#XAs)5RumgeG*wyIjEsVs6Jo`6ZJc>Pv7M8^-TY1&1b?v zT!#2V*Zosp!jC%#g$}0JORVS$v?uQW2X#P-zq=lEi%~hPWi4$g_qDgYZsE9My#LfJZH+Q}#{2w| zijMw3-Y*@|s1|5-69RNy>rUb`qI*P~aX)RrrzMKF=T}8hv^W(*vdLn@uA~0HGG+}m z^SMymRj@%yL&}}JF2ooS*sComAWeqr5^VeHNXCT?gjJsgl$fns6-keb;5f1D{4 ztD$uvL(o0xi^`S~9}8)iS23yy<(jl_W;K97-A;WTr@qW#R3TR{`v_)6JsjBHHC2^k zwwBSC_uB+6>^lDz=?Fxw7~Amj!29#_Z}p$U2e(03Wfh;wYQ4vB?I1PHbn3e}eX^Li zX$I65?`$3X;kLh6;NY_?zjcBW>_-~qmz3LueNM}{ijzn%yq*T%Lu6uv_-fAXF9yGL zCM&5s(bC6<=c7mY^&HJAuffC98jJMbbrl)#$R=*RR0qgPlet}xxFOUtIk8yLn^_B@ zYR4%5NEJ%$7`ET40T@cW3Z~JNXJAA=PTzu;d;J}iY5jOkkS%b_FhQjE`b~Vul0D|I z2L+NT8dhJ1ohWPyfz`Bub0vA)WI=+|0ONvkf?KeYl|cBDa0%X>(ZHEE{C>RwWyNc;|m!@R`s13Ck}oA2-LX zMytexe3&@!^JmUUC<6)4ui&RqpziX(ewAkEbNL(Ae z<#`j*L_5J{9X)r*pZjXFCeJrS%;7htl9spSt6O zT%Rgys8LV&^Q7;ky7;&kX#YEgOKKbYu^7}`2AeA=INaZYe_+Tt{EqyB#vZ-qXrp(s>b_~b86_Q5_Y?lwrktnC2ay0$jUjMo?^h2mr9tK=>U~ zakYUXc_NGQM42M}!~M7jWJS ztI+H$Is$Q_fY>T;`Hg?`-iQ!nKv#9Uao_H{zYyN8024XeQnwIuJc{=&RrdI4FguSs zn$iouyN~+q@l5|4O>B!T!ML!x@KI0pW_xqEoQUUhosFT*PmqO3msc&Yu>7d8dqxlx zwW1G9D4f6veyf=Qr?f2xI40qZG3L)&M;qLrO3c8psQXD3sEmR8&YrZu-K9<2t;$Kp z#+D(6E*5;~jqSCJk`_fzl2~Ej27FSckhNkgPZqis%$gL_X#XW^_||a|@lmJ`HtcbXycuahhIO|$<_gXXS^T_*Y`y2)1G~WvKM*(>{%Mgb83u|Kgh-|h_@9RS zP?AKIClWV~jhR*_Q`Qit_TT&(e8QT|`njRNl4`daBuoF!9=2FOK}d_7Xy5{8nvze$ zp7r-vEclJs3pdW7_|=G@0Ub^llgpQV+Evz>+o|coij~#A*WUoWo>rEtlc7oG_T)Cs zf>wh}dtCUJOnJmJPA7&{A0j2|j-^a-+|pR7j(4CB?i8_ATaNZcB2QcvSd+E==*qLH zFf~-m*_^R6FCjvw&c|oi1P;slD})2~%Yy z1R{Ks&@J`#BP`Tf++}~Zjj!ZCjGE{XtWQq|^4#Nk*N*D9XdVRwiw)TL76Hz9yl~BT zG-ZGuOxOpb&h^O2pD~sq@diBv$dRHqdHJ-pNNZO0uYe%(kJXE_>|Q*tn5b5^;)PIe zRB8JdL_gPEk=#KRSM)??z5V`kn#MQ%&(8<(8o<6O1sg=Zgecq1%58jc4`)K*Og_=& zGNEzWRdi~e5`YjQ4S(FP`D1Y-^?DGM(19{g$jNGsCy>NTGE6z4W=pw@H1J|2a)_qI z43r*j5`;p>aHK))_6aAE7P`e`!UXj8gvmA1Q^Ptyzjb5>a)U8BRl}Ye?OrV;Ew@9B zpX)?Yjicq-_dD8N^gkSy&sRs*A~wJLS=P8<|2C54cY)hsHsjufYZ+7dast09l;{Hm z*EFWzbg&`ouf1!1hN@mr`^MHoBGXKI_GPQgpX`UkNB{5~60;Kk9<4D-JDP;`Xj1zs zMN}opcD3T3i1nJQNFnHVc@HBDf#yVlG9y&p%a7a^4kTQhVE`TAS@T>j56qdYU9Zef z6+8EM!3AFelj(y`Ut#7L2Qey1o2oO>Ey3VDOhJiB@rk*SHhJN6nY37-!dXsY@@Hy& zkZ|+9QR=+1vf@qCwEAq+Y7~BAn9R+|K;>EVlWZq;9n4^|^4|kWGS1SCwcziKauSJk z+Gr?%DsI9^3!yIOByLSGqVP})SdeP;i*acm`)p;pVT5gJ&JOdyq^+`5IyyN#jQpfm zAOHXh{m71kN4ai0;|U7yhD1APYb`B)DSUv#Mx6pz+pa$rSgq38AP`j$N~N~$J4bUV z_M(MHlugVrMw|{2{|z&QY5{1j$Hu+a07v#H`@>uwt+1iPI@35A#EkuNIxiz}Sx)~B zRpJC@*m4oC$|t}N6V{ga|Bq|=YT35cD#zy}Jn@gP-~t^`4&>Lsq63}0%VA8cs(CL( z?g{uCKy>M=pmBv`F<1hBJ%Nn`2nr1lC-E|EAUR#SZ#;`CM6HCqrENbmr%QQg&7ch%zK-qld;azb1LSUMHPy z-qrj6wzb)nCO3>mvb=2SqPQzime~uJ1lS34LH+=+qK5UeD)O$zO=IeyG`efXRcJ4z zEvl!`)vvf8Ds)$V7O8FY=OjiB%8&xIerd9!)aO;#@Tjf^6|(@4d=LB+5!3^V zcl4t280`=6I; zKP-F^x1a<5sKfHUMlV{J;3Y6YPv23Gyq&&Th>dIcXBXS$?NQ|>1a$tW)?fJ_?L=zz z8SQFQFcy5Y65&AMvBJ&p&fXI{5)O{)vJk{j%UluHIb+XlMD?0m;Z1w7T)yImq+i5; zP*)sc5Nal|IyCuB3p{yI1@vTTg`Pbs%fpB^K#C=OYJq2|u3r1V^MsV?h@Ci$hd-6P z7Ae8elH*eJBA|`~X|Ce^pR$kOu@ixEAC?t*&>!8gV&X?oHQ)(%&H1q<)^zEBO+k}o zavZxSi69-yE+#PZtQIdZzz_35sm{U6rZ5<(bz&c;30tEsyR+30O6=lkh)AQczzK&Z ze9dh3W$zKt(xQk&kPQuDj^NVZN$A=-T+mqMA$S2Q*+9}fgOsA0vsX9CI~4ip;|==5#c*zZdOQRl~GFF?hdiZU`UITxEz8+7u2_ zX^OT`_^wg|_wN}mjiR!9@7-J5rIL)mH= zazb{B8C-PW@KG@vWwi@D#`^Vx|Es6s4u$eifzg85QtT%(67~kUi&?Jlp<1txvp$bW zB6|}$2l7@q;mP*nH?r!^q_=lLbRWUI{igJ)*3|C-_iT<&v!`K zsh?2$@&z()L|8sj70^E(`tK;r&ezHD-+`6s*rHq>&$)ek2U~7I2Bs^9iN{=bj+(>y zTfvoD8GaZ9mG%z5N`r5STydsC-gms(rvSBLJZOHU+)-fnq zXfu;x7=+|Rp;jU_5f^QnJ0+KI3a>lah@{_iIiVGtb=Og;^Yk7@CV1Z!&c`uUY_jh+=eSsV)NfaPloB$-&WnJp7D_X|!5 zxi!N8qw}`M)qzLJ-!gzxwm+PoKWksPe*2-Mbz3hn%r_ z)wa4MD5Kz|L9>BQrwLJIpo`2^?q)yk^v}q>G^d_?1{m*w)C%~Zd5-4nJuFGdtIp)p zM>ewAOK76aC-CZAV!hUve!sdU=RB-I$Ka`Q5cf@Jzp*L)?yijXN_1)ORdouPgGR$_ z%Mm(usEFe^Bm}|@JH>gAB%SSEC1@5cA7`_U`g^jBwCWOvf?X2o|*hF3PeU}PV!@K}cj)MA6_Qcv664Zc0K@3|v07a`sG!a(_6 zwlkmWd%JrW_CouCNw=X4hJ?9NGN}K;63H+t+yG5;)0lrth3_1zeugE=ca5&14L4Bt z9u=k#AHwg9eF#UYfq+)}#Oc)mons{?M2do6{sFwR+`TOMDNk5hoUs^x*z)U`YxF2> z%eUuhjxJ#?P=OD(o{ke_H+C+wIf=qkfSD>_wKG*C&>^0&(M=^1#PZc;Sct8-1&YYs z_>2_p#T$l%h4HtLV@3z$L|j{vo%@O`PS=6niwI4mdV=U!G%`%v6txio@0W17Pi=x?A~yW5hxpS{VYi4-V=OU zA9Fc!yy+ntkPaCoPB;DA;7aM;WVy+A5MD!{G^q*&o&M&kwHNDdPBek=m}rnzJb1_s zY**V}zdHpb6{F{+Kp!RPAiOe=4(uuKZMX4a@u~8zw{+=!Y=hj4n*5yAVjfvyRWsBV ziobm5w-5tQ4XKgi2G8>Lg*{v#49TMggm{O(lZ~kb4Te zMe69>Oo9yCE!=&+pl;PX0NG=zzQXYtz6AZ0Nzzqb`n6v*C01oU zGv*FMl*@QT!qv&5;J!%26XgVKj%pWsujUJYjg)$}?PcWXsV^AFMvyM)pJQif2OP7y zo)i|U6BoErtNors4?r2)8(EIqH1bbzuh`Z~q)`dtYYMwg9D{W!!trsh6_!1dQ*)z4 zFtlyRCGb~wHR^XF=D;S6$=XTF;%7(dY0`Oz{E9Pu#>z!WRV-dCWx7!1c-Pl|t$qz2 zuQSC_bjY6s6W@(d}%brCE_F<`hE#Oj8ZTaW-KbWDrC#X&ar5bY*R;8l-3QgfX0 z5xOCrRCyWg2%z+Mf7G92bwi|xgN*g6Gv}X3d|{s?@C6la_rz`X<~f1n)|g1Sw(Oe? zX_GoY+aa{P6F3gZ))wVRikehADL;-R&qGe2Ae}UEw8he zg}ul%DGxKkkF92J#F-rVi#&T5-ph=)m9J?&a#PMB3lgH+e7}}rGuDMB%i53f6?+_Y zP&gIzpI%YO7SltKm`2cph2BMhWP1{6?zs4=rZc6h3R%ikr9RqO zya(cb0z`?JuD~&RLg9dQ{eaL4Y#U-BI|^kz8$2-^nJz90WK(DTcmyJiQ+nN5QZGYq zgO#{jU5YHMN<3>M4_`c{zDaA%pqIFm)fUD*TyLG;bM*94r%uE+$8+IwH9We>Y^oK+ z_0{)f`!wd)eP)FRwhjRlEo9{;@!tBzQNq|60}b5PKNh z=w<)_cDR%0G{Z^blu=sMwi#W7&}K+YLt2qJ?Cp2?Gbls|dbmK(heP-bM=YGwXREoz zu;>AV8Ca(jSZTi`i=wH||g_>*Hr3s@~ICA{G z^FhGHYGozk)eiZi*7@rZ)83Mr821?dzG3&xx5RGIk@5Dl8qyd>jfPvprJcS~+9WUw z!J2^<`_qV_7#Mij^Z>rQJ6qCiV}@W=&xs7a*Xy6@@HVy;Klg(ux`Js&84ylgcxwU2jukLO{!E8s zCJ@I>>vIuV!d$ZPx#v|$SWZ+ziymrHt8vfzqcYXjk~CFB1?TOErTbUdf1{j7IdE9* zTUmh`7Cas;yGk868%|DhN#)S(pW?1zDU2t@O(L#o?qTJu2=2MhVX?n(C*YcmS;b9R z-ftF(&;7K&e7NtFKfdAoz$}T|xyasFy8ch)IETB*F&3>AsH_*i;E$IwQ2Dw-#EW!K zODXrdHPyf|q!LWU!2>R?B%O{RdQv3tRf=3@hv3G3AoCRzEppZJ6`sMo_QK2{c)EivHT&OG(XTR{Uvy)(jfJbg9W{ry)pv= z`(Aj{9(*TWU2CI9!U#~{FYS>XxpNaJf`6pP>igy_Fu{r^e~}A(L{groa?6G!_PC>K z6~D>sC{=|d5Cl7UN6e0FqB(MevdZH?y-JcO$bOP(q?UzRVx#&!xZFSQ zL!oVU_anT9;SQoSXA=MKdcOz)vajZ;Se+J z$Bn_HQcuy#{noW5UU`c^0=KE@_CsxEuU`D>s7q}&Q2i)7Ufo;Gwlz;&2?)J1M`s!f zc;1Ria;GDy;E5H2+ zZ94qBy*(ramsr4n%clfNw{%Q?%{GK3GYgMEWP|TRb89D!gA95awAxQ%$impYHF6yOsXzcpK9$Wrum>L?Cb>v560BnW+06IG)<^Ny%*=Hl zNakkG?GF7YHD8FaM=$Qqc}<{Mz79dR=It_%g^2j;#g0xPF0kX)-v7g#dUH%%6$5hT z2&HPealNY`G|ntBJsNN`!IFDuZmgBJ`i2b(8Ur(SX%j|?jVQanCn z4=r<>aieJt=QzibViFNQakb9?I3O_PNlN;4sH8Rht@{PHinD6(=cOVr9a@1_hZr&g z&vnuq7O#M-QQzb^DLWZGVui~YMP^}B=a9U>PO(0j>Fk9v8Y*<})5J{LBWGd)P)SDX zu={tdi{h|Q90p|Td^p?YkZECGxvlBa26bcsXQkB9rJ6P%Uc^8yBlW^;EyVE{N;mNh zN0{n$oP%R)Bc-Vw%FPa6!lJJItIH^UZ-C7fxRr?Dr8k=R< zU}Q5u!#YRHnMX_@--K(pN^^WeX(N+f_1%xILsc%X`z&sk2DxV3dBNPumf;LIih=$q zQFs4|%)S`>$LY-hH@<`q2sQj(dKCxpv0ICJVOr|cXxOfx+O+Ygg(l;?mMqjVHDPTc zxPk1!X5<0nu+jX4iQ}eoG+^RJ&CpW}kFw<4i+cOk4o$2dmy3Dm0a-GAfNcTd5 z7+KfUn*aa+W+UTR)B>p_Q&`N7LZI7>2N80%0mr~5`@(2tgkH$YbUlfFC9=5uEa)D` z$j0&m050+rGT+qoXT@fndY4z1ZIDZTmSA#cmgbvs zxc978tKeY}fGU05tbcobX}(rN=dAeo(Oq2ZtmE~b50Gtp5VF@IcOQU+jztX@X)sG; z$Hqz1E>=u;KQ~!0SJ4lSe3XP_q;rJl_03G-+cgcC+_ojiIO?=fEhhXwv4o{Gc-R$Q z(C;F^G{Pqv+aBL7vF<2(-RQiE%5Az<7$2Ppx@9KO+hJrIfihKJWsdcLh?)qtzaz^+ zfi4{4p``uYuBixlt#oTeLZ97SR{pc*sZ0F{m8Xo60H}(3{;er{+d}wv-vT~YnF;QW z04xwY|Es^LL;*b`u&}1?F^liAou~s7W~4>tO=!gsa#CGn$K;*Jp&SaxzmFiAbvo;F z$sZ$5!S=Q#l~1fv&$+o%)MaPA@@E_>CttHMM13>cx(MhTdFy7()-y65>%Y@|&cSi^ zA#;c3r>>t1Bo!&m#sSR;gN6$;8|yj_;{TlGEcs$4ZaUvq6|#PGlRZBHB~1I)%2?eg&<`})2{K8UI0;kGN*2&@NZuSpRpmUo8&CNsEb{?Z(MhhuF1kjq{ zL9*<(GWb=Y0WfVQVygb(wjL4&l>5q%`{Q#?na99Lc!K;f`QdP=(dYCb$Pjnfey zDk)Lxrc$nTCGiYFw39KvbnZqC7*Fnk!Za#Fn>S*0000000004 z2nnAp7V%+bW1=m&^Z)<=00A6h?vTbOfV){AF11|E`Vc28Is}DvS|&7-L@Qc3+#*pF z*S@=q3=SoD&%W~M)^?C9Sby`__F@NDLjwCR%r1-c;R9| zZ|_0GU_b}k0N2)IZ*?H>#a79${H=awAlh29nUS*i`A6Y9T%a3o?=UZZM!qyr);NjQ`H?XWf6Yu9(Px`Ajw_0#A7rs|0;P(Jw)VqVhg6V zkKzT@KI%`()siK?-<=LG6$Q)$&pw)_h0%*dgMd0b_|yf$zXB;`npt{bLz(E+LFgr5 zrK{8OG)a{)&{b$4(%uYP=9&>955tS9Ldk-vy7v(V71*%LvKi-EQvHuyaum zmK;0Rj_X7|D52Zj3K}+{i7cE9keoQ7Ldh6RsIQ5;@!dDLfqqiKc;(a92BI603?10@ zhUw?`RPo6pA6H(k4OacWZ6XJ6gLPNyg;2x;7nwht4-ZPcMHRJa--R72R(hJuf351U zN-m|BHSvjbgW#a1D7p6Fw%Ye4S*4eP)z-&RmMbCqr8@k_v(1@#kKCvG;wvzHV)g%+G8Ryvbbh@@>kpl&f@-@crLCATZ0&)MB*Yrj z@!-M)gApKJib@JcPz{1hDB~#|K-!)o85r;1c}uu%l@OI)okLYFgAe7;b~J4VYjMl^ z&WfjVkq8xN zczH;@dNq+ciU?V^7%5+KB5q+LcsGd{A-?`Uy5O1+JFO-gasJ@7x@Ph zPffm9Plf6uQqWo%ON?aNvpmn#!3Ktn_pE2EW#QW_aEE7nLCKlKhe;YgG2_=B^ef6{bNju8$)_Rq!E_btR)z zu-MbQS!uysY)LYtxDRmHWN$C@RgsJ?3|fb#YA_&pWSX3{1Sk-xiJ4IbRyq1{&?$4E2^kazi5*KY~>hy{n0ZH_V}FL!JwG*(_l*77ihNB$X0&B(f^ zo>pN6l)d*jc#>ZaAL%>iq&T(r9^;HUr7aI1I3dniO3e=}kcy^E4hSbcSZ$Dh4S#{mEo^ zPTb|^@`jnXFxqgDNT#?w@%J@)LAqQKZBeTmq6RnN4RYr$y|r4rFsJG}f>icJUd8qb zW+~-=h;S(w-07-Qax6*A-qGwKm;L%600000sUpxE7Btmk^)iKRnLscLK~X>N;EN-O>pl2 z**0Hq*C2|oxAXZjB^vI-D%uJbbw|!)um!tAODO(o?jD1&;b>J$1u`|F>O@-meB^dX z{Sb$;&fm+^@i|Dy;0zi z6VHQ_P?#L_+FZ740y2s(6!=7EwugDMgWJjEXG~hLaGn_f_D==idB3=`T^QO|u5fad z5k}0~hXR6-z!2`*uI^-M4;V#f93TDGHJR~vJ{y}<-PsD};HpO{|E1~(^)=LcpvJ1o zQv8iv6Y7~`X6?0B+bq236%Tt1-SiczHl?Pv9z!5sEOE)`%&OJh%FEM2PWHjGGJt0l zn{fG1C8-5`REfAlBb&05--8hd7-R>agfT10rjed=#{D-2u;JfvJtuE3+^ z^|99-7IR>&A@@K3##?tm!rA!dRBAcK6!{wzxv~v1)(*=hYJ?h|)574i3$zk~bs(ub zJ4d?x>wi=G`AC~f7OwwSuWl|0Z#GG_DX^)gR}2c3V!8Sos=y19W=RQu__?Mh@+xx=>SpIoy~*5C+U3u%E*<4nA|mM4_8JX&(I9aOeO42kSwi`qz4O*yt+8 zTh0o-R=qh3dLp_L_e@3Ae{hT!BWujwFHnqIkW;hLfo2`BML2^#DO&Py zc`gno+`T8$+7nrUP+$|U-P5wpkgqg&vXbk6G|sQ!mRHzp~`CA)I`tQZOh$dyY;<99l)CX zNeO#3wWRk1GxnM>KH(-cGx=#!_!f(z*Gf_6Pw0xQVd-L?9ygGup^mD4yqjyIV-aUu zEWKHh&=dmoxAuWe!*zcVN6Fc6=3I6FX(r_~?YHG|M`pdF<776!PkBexY<5@fH&Aqk zt~E|f(Vna|!bicb=AOeTuy^Gf@gRh>5mA(k$ySN)vPIJ$WYu;B$l?!CWv$AsJh=5! z*m+C2X4Yo^e~_Huct6)NXT1agxhdJ8Sith5pGVXE@OG&WpV=8-;L_mH#N6U!T1*js zzQxYBOzTfYEU-JcTAb8Bz=m`&TNe&;Gl%Z~?Jo_bj_hJu1R<1|YPR-14NZd3xAsjQI&)Rjqd>&-i-l&wT-%5viSeudgfi9|l z0zZegp_wL z$`gQAivug`HD*%3qdtlac$flZfl$LbN-2ULID+{qRUL9lWk!$@vq|l}XSEH?elN3i z1Z?F*=OrWQq(`AGfKl~D`*u(lV!YQcm?=&E*?sN1^a6lmAFp67L=9y%Zye8l4ar8` zCzX;}x2AncJ^&)01j@`a;UMuk;Q*K8*^5YyjcMb@F@>*OUNU|h%|9@N&D4d58K@RM zgZSbSi;vYKQe2B5y!7dzhl+iwgWT7)9U_@~|0@SMEk&jVUT*Io16TIn?|BXc>n3<2 zWWWz!NN63R@LK=zuYGQS6G)r0=RqK5NXRbD<#}{KturSp^>l3YjpC#JVJn)>yEpj#_#=4#uq zQI~>^fI)WAZ-k^+Ph5Cr#fg_VK|2wTFXy!qnXl;O{hzI-3kU7WX`G*K69mPyGE13f zf+_utv#zi`QNsxLzM8RA8|1w1r%rrI6L#X}a{}u*|K{2`9t^!62@zij!9JBnjqHw}P zodTLBV_@SV+ zL%AAcpOMhQ>PI5IQi*bTp8Fglrspq^$n2sdA#aa4>!Z z$_!y7`(HYjthYt0Rc9n&Nd4rrAi+3Pt?Qy+06OERh$H@My&BO+Zsu05b~6@M?-ETo z<+Dwiaoa7|&??Hd)-Z+Sd*iH1yiLlMA`goC4Tmm zG2?@=kD+=mS7$QdZ0Ld1D_Z&>8F0@ptuKs;`pQ=_E)|7mLjz#by5wCWEQK*9ujDY& zZYZ;Y?g6zLrg>SAN{Vv4b(1eIb5C$0d3o=0(`T-eRek7UUiNHkXZ z5FIyZ)ef3&{vXLy!3>amS>LSI1j$Bts=Aw|oiZ{xGO)JV`r!&WphReLO!-8p2_YtE z9i?a5l5W^^42;VYTc56}k(hom1@;;}kKY4jd5a?}m6~4ToeUa-TZlGLtEQbYGFjYf zz##)v#lGlFs>suGj}xJd(k{mnR42?}X{&iXjSgY@Xy8<&qxV8K+3Dm0tw0sVEdwzm z%S8DGE1jkju#s}k;KxXg1z4>EwnRLC?sqtP+gfeR@oq;-x)YP%LEZ>omJ+`p@>9TV z{c6`BD{(tkE9Tfj_XwWA>TIYXN9IWCUt@`sfYwt}eVxk6-JIpnHCX89%q>1KasyQt(8oZ_Ftf z?ql=}W}KZKB~>_EingC-+VMNz--dZ?D^*MPnHnGPcVZ%ssBTb}3$P z9d&2>1QZQvxz2Ja$~gBKQ>?dcJ0-9etG?MwVEIzLlRUiTOJXU06W;b`{x$W?^>{*j z85*KFQDLEKFpI=0=h`G0!G7-8gY$C%T~mrtT;v`EbU^9LdjVq?P8+riHK$ zlpNVtVBwstJ?0JjIdkAD53R!XKX-6H8FuVB5D}QZeMm7qoQyU)kSO-Hij%xPDk^0C zKwX+NXC!19`+r^e)+PO-(Dwrt{hvF@5hK;8 z!E#uixX?HuJdC{eqqN0()~>BI@1%^>E&u=k00000000Gl`zh7tiZz+lLD%Dahb95K@OH^mV$l}ODqcH|K`{^p{ZbCNC zQC#K8Q#bJ@xppiqL;p5Lq@a5nn21ncR+`crc(=PY6=ueFL;L4@T%l*O;;}EVOaSyR zo6kd~l;G5HI_<9JGEJJ@Amd;bG*ZW9uEKCc-)419cGi`FoojdsXb~_q(dX-_I!f>9 zmq<@YqX8KAG&=fskf)}=YP)Cx(mE_1jq4`>1iy$+v1lfoKzUvxY;|L#3GXkp;I$Zq zu-&Ccfx|WU=!kmIK)2!B_)DsU|F^}J^*6ME!_|@Kvwu{sPj%YSYZ8#v3j~cI8M5El zLos#EB&Vit;n_95`|L@sT4puNruINI00008QEswQD^N4PN4MNu^Tj+L6@2dSc@puq zw?HZfv-HVQ8;Aot2MU5mF??gD{al+z`u5+`Pk5_cWIsLBzIm3aAA$ntE1;kOT&lQ! zo4V*TzWFiCCDG#SdN;7p^~(`im7;MLU9v=ss;d3H01tbcU9G+};rR5rQ+#togmMUaT&#l#KPDov_!p}n4K?3X|9FF# ze{re{{=HzTCHyIz?{+z*g7}=^FDNHYL)4|W%a$C|1>~kA2%9ic3DC$&B!yO*jmgw| z6{F%KOFhUb#-av(fjor&Au=+^1KEbXjW275c^Sx@?XLy4LU$)av^KeKht5wEjMc9H zGqy3UqKKaJhj^XzYIBcYhR%8Zxb=25PRu~m(HtUcaaNh)`OTj3(oHm+MbUCIZSD+~ zfG|hyz9t5E*EbN*3KQ=+fJOh|4Jr|Ev(4w|c9*W+MY#WOEOlPxGB=+L00000dZN4* ziGRn;3W0h(wnd`zsP|+iiYOpNYGKlw1ka$Cn#Sq4p_)Q9!mMYF8@9*P8asZqM0Mu? z0a|JIyUwlPG{w4D7jYzs_HB9aQ%UENM75zGm3lVZO9@idd=6Zuj*-~hTjDoWnB)o9 ztTk{*=CG6S;p>RrW;@C{;w3piJyy6Lo!P1MzjWR1;up@BJq3R3=xVMvA?j4aun`YI&&s?!?}wTxg4mf{}HXYfWzyglIGoc%Hxo3gi%u%P$XYY!@Hlm|Cz5 zN&;^!V`EG-rB<>%;pS}NYoNhvn;xu4@iZei0eIAH2pxYZgL?C_5=d5b41nTrpX5CU z3^{LDd%>@mu0OoMA5|&L6hMr5O^6K&L-{TeK~Ri#GM;N}*Z;AflJc|F!`diH$6k8&jt1*%Y-UaK;j;g$ZKY zkc!|lpNNS&)bFZR(3Ij55%bJeygVqnWv*x~vb^&WK6pB70g~O&b$ObeRNL@o-U3 zM_Qar4Axt^XL#PClN4gIiN~B|#H%kTGyoL~mi##~oskT2+%>hw9x=hfSH&m8=_#G^ zerl}GN^uJp{&uRqZvQBrj@>V35#R*6R!fQ(rw@N*&S7atBc-#OCK6mAm+F+AQ;=w} zmWJE5ZM*xlZQHi(K5g5!ZQHhO+jjSyd*@-ECzYyQ`z2L-RrX5d&&vOWAuW`UZvQmh zr`KIK+=wTg2m7g)hC*o-zllTYJgu#W4O%`n>6)n)54HwR22XmpW%)&eAvN>o{ZTPo zcc7MF+#(0KL+n9IcD3X;hQHTAzyk^RFx9F8wXMY@xECNV=Rj{JSQh<^Bgh}GN(_ar zBYjR}^j2f4Tf4z?>k+T3Tp)=FD-g*zO| zp-1>HEY2IL7I)o-dgyYt<7d#=b2IVsAjg4nh4y2aufE?d#!8{8$af{sK5s=6XIM1C zgwtYYFT;Mmo6q0i%^-Eo+}p*yF6(V~pI!c5rEdVJ5GEaZJ5K4lpITx)j$m*9dGCOC z7JJiEm6fZ{n<=H8zayc%>qdMTHGhz35cA}DxhDGENr^%qQt!6LswL&M%3K=1gkqi; zJ6r-e^bPQ;&a;pCyCe|PmvgsYQS;uUCJb8YGig8iBjHXKkB2r$N4@n3sCi}@D9LXc z7q{cV%=I!UDQ_al+c(MbIap~tY9Yd;s$Mi-+)SGJ*l+g7l9J{?29OAaVDAUi=F2=p zJIH~b;#wOcVbx72YlIv$WR}<}fWJ*|U)djfM0|^R-@yFQcxb5F|U# z{T@J+aCeZ5UJt{{E40wV%6o^Ee@l*gmhGjW#Mxi;p`*AiK~0T;%@L(6xW+sqcYZ;? zs~t1K$C!9knK^6#3`B zi1yiJ$F&Ov*C}F>Kv&z7e#*D|6;vsgp0h9iT}E^(Ga+--AdI5HcVD~S%%p0{T7@@` z6LyTGMqP`@3b!sGn82iUQRg=52AWUw5W4wTV>i#FaJV^xU+u$s13IUA%zwbPGP`9$L0k^1MIXqi4nt5^!iL%G# z>o#oz#01L|d_{PC+RToxa3JwS}9yz;-v@3S{tQBF}wmx$K z;+n%8pLeWBjjp^KDv~iWu78JHkiDC|B5b0k9Ih90_|)Sm#QUt646+#54Ilf7>PDC) z1+FB?3#6d5TSNEv9G~!jy_X@Y8$C_F&?&^}Y|a|KE`OCoKP(D#yvGeW<_2ckUbv@Ya4)Cf9TfMs;&9 zc$1s7U`c4TQCjYM)yH&A>jxg45h1RDAH@?d{2&I6I8ppi8#Ro&`=vGHpf1uuHD73O zA5_xt#<~Ak2M}{dSP3wMuM(Mghj5?;E&9DnbITeE`}Gv zwIEad>R#{cOB*&UAcW8#Qy!5xuQ6QF(@C+JyGfCpj|6Uw-bEP2PNDA zh5IR{c5c1e1e3jA@L^PoZtQVfnF4C32G)I&+$Zv+xD}|*!1Pad$|rNoEtgey`AB`x zN&xyZj+qe@UMOo{s>}TH2lAAKKkfRe>_jLebcS}XPn7q%zKJYYQTczdq?JvqDh9^AQU+sZHRA%D#nrhaa zERTq2fxSm>1ilv0@i~iD{vU``sx2Tc(zW!$8NrtV$|A4WCr{s69qdk#==yP1jx(pM z3I0X9TtTkXViq-uB4YZjhj90X;Igi@a09VM0HWK}a)#VDi+2)XTQ2E6gP5?^PfRuf zFzpwchVvIjhal8zfTpZ$fM~hBp8_;>8m$_rDZrfLP7{}&#^5VICYHO?$Fv~-j)B`G zTHNbU?@ms{_rB>HMfjAmJQ1$~ckSd5@i6R}62&@62R&gB%wKcn#vHAX*sy3kS`%it zu_tvN`#j|$EDBzhW095VOR7{^$l>T$5J~m(f*F98Px~ZSwN0-AU=|YyZDa_|cM**qh8^dAj7}2s??Pm`AmWbtHW4R zg7N~$UxXm%WlH&MXTPDy4NjYI47i-;Z|I)OpfDPe;3ry?@5ishQ}(h`dNABPqB7su zrKfzoX?orF+s zNa4jS`e-&)L`P zItTNrui;jB^L$2P8FBUr$l6SEV`yVkT{c(-o_?oraBpXuITjXc=`YcUcefFjDos^B zKr~tmlk0ZOoSW#gN_hWRG8`^CDmFjSw-Vwk+trW~Lju)Ee9)P(taC@GO8RX^smUA8kyM z)h1`<)5WBT96#pI_((CKB3h6kLRwI#kU0HK8jrvjgU%%usT8{}RF0noGu-rGG^`vh zrKkpfYM=N^U!(y&O_}L&!|wKP+qwk!J$K|eOmw%(D%0i5x`Ux%x(+?MM*S3`w3*ku zK6?F$0txC6CANZJVkKu&CX80Ozr&^%m$_2 zE`QFY?pXwHQSEzC47w9LP8^SZp?z+?#d%unt<1V>H|Bg^`GlZmNTi^U-k#M7F~>LF zO$yJ%?e?sp<=Xc{{xYd35VvSRMxH7Og8JdijFq^33wsU|ZY3L6eY4cE%KS5UM;MUo zkOX&)Naego>J#lE3uLM~D3j zGyfPW^*WxuG`mv7o7iSOzJPl46zk|sge4l>9)-5m@)Wzn^l4XRc(}%7JXdkF4Ps$f zE!t{sPj5^J0Q4(V1zWqDCv}%!k8XL9Og-;kNC3l+B~ULHh+}B}t8M^H{j}V+YrT64 zCI|TE>T!%6_*m>&;q6wdJ`ceM0eWg<%h+P*y&TZmK>^i~&L3uf>bU(Af$aPairLF$ zsg!`_H`}Ey9!;_fX`&?j)t?%H@A8;N_nbSSf90ESTQX~hXA=hZzojX=V0(}h#-969 z6Q4o$SG>HL;stmVS$@vw-C>`+xDY}Hn*4xtz3F&j8YXNxp+iYAc9+)(b`GXV7!RF4 zNQAl?nqOsOl|LFwi?K#CwzQZ-L_&z=4(Y1jgSm~zs)9B>EOxjtB|StlPOOv-MZDF; z^BBaOcJ_f^G^1Y>b`O&RV?o(J>$ujR_eNRiFdx+1$(O)j3pxFV5<0M273w_D$xJHG z0_83X@5UAT(RGTx@mXzuacKAo*W(JBK(y}Kxc`wSx6KLyBPqix-56KRECgf0xouxU z4Fisl(Rl>{7(p06i*LVfQxQ6U&P`ny zB=tt#hT$62PZdNoZY7ZSiH1a4wz&rF~gr|1doW2C8!K?T1ZEUu^OS4EjbM( zHkygIs$vmF&W4t?U|Ni_hOT;F=9|#8NO=1A!q8V&K};1AMmSAaNxngklYQI*K8b*m z=_Qz;c?@qGNoV3&*>!;qevQ%<8|~@>S8at4NFoDK!g%q&-U9`@Q-m+DFgq+o&^E>y zsD?nrO&pwpY)AqAVYYqwhkkh#+AIY&)vRcY@Y=JY-%L5>pS!4L^2^`o`GMgiaA6?c z+~BZODCts$%-~}xSmSpkCqGp48DEOxJ!fDElPXmCMoMiUCcN^xVhS}40yMq z{8uH=7W`0q{*nDNi3TPvz=Xk>B(^G*(*W`U4Sx`_Duyv*|l5xNYQ-{&iH7 z=`xzc?W?>|_~w~6G7=r7mz3l)IW~ez*VsBJ*_&vhBb#IqBOXo0WvD74pauda^4GBi zyWKWNik8%0{dt1zN2!0UO|sX%UPgz14ehWS;TOaMS&v(m0dRDn)i1W%8}hVJ9E+Q= zB1Jn8pL&F2ThM~HzxQhd>Osh;nc@NFtvscngym!zTfiwRVqc7R(v#-dTiYmDnEQj=4^sSfBk#yJ612PVi+l;gsH~v zY;0(0ah}0o6-|G*x)pl!2ES2+>V_WSgXIid{yPBO+e*mcJrqn!m`$&oA7$ z1*~Bq8TrIKg{oE~H@p&ym<`1xm;R(0G~Y1QPd1*N3tA=ZM-V$!_O3^xrZIs58)av7 zfkY-|+*5NvKHOz?uI;aq)X7NS>{*lRM+838AD04e6F8LpjuB@r}LH`^4{A}va?g)PlODvG8b4w{#pc}@U)n$c^BZ?`y)?D$trvM#(4)O-%a5T zO^gOz{rQd;BJ&uQ+->@7lJR3}kqA#O#3(ds^*kPpR%~%hO6<7?wrAmY1*RJH%kWq~j3Wh_UFW zw{uj}Il#pglHI%V(j&{o$)}B7;;QNMkSsHCSE!`%qe)C+##vVa;Q3h-1gl`{RY!gi zfcrg%Fat1+&^qiDcCk%(cm!r&Ji)@tTR#n}rA*)nE4YLaQKz< z_wEUGNV*#f_|U^N+elXmY)jWQ$7beMFGkIEiB}Cja|@{nNAUxeKYl#>MUprSN_f0# z2WJCL%k8M^%==_Xjs5M?0ykP!)BE|TJA(A0{kpWug|Bdm>_Ttd!x<)axlDA8A68H@ zMK;g{?r4D_t!5Rn&r!wV&Mn@baUbTBbU396Op(Dq)-o+!e)GsxElMv!Mt$PD)yv5x9jlF7(tBr<$Cpm_sl*D zT!+q9-rz2(T{Hv-ZgY}4hr&L%+he5@JOLf!xCNd(4Y1g=1e3Qv)qidPkMA!6yt4EK z^WVU+3;VnvHIDmL?s4GS~aJb1-B)`FO($OI|(`8*lai)rXgJEwbyx%EP)Og zLb|CR_H!1##IQKh3+@>+9nXj~vXK*Up67-YYwV(6M^j;=Ci~-8=RGQWaWF%%Rc*#9 zJq6OgAH+@C4%od|lmXA-vmjW}<0j2Q%qds1ZH|wG+?m>i2EF-1Yvv6AVYOXZ^l^rP zU-B_g&%JNRpoL8I+y&$&F*vU-I68Kdq!vAgJ(V#v=FBriqsoao_0$Gulc9t|OH+AM zZlAWe-dhuTmA7IW$3!ak6<#uh?_|s|F%RO7xF_XU3d+d7+l=z#=95@r8Jd85>?6_q z^>pckiECf-BxwWE9xQ9BTO3U=+cFtQ?Mgaf_uyfD*3N&yU4_A_H9KUK`xebSttt6x zpsfu|*3B2M58gz0Az#fvgfWWr?TA#fToI0eYaDHsBkf$dA0W5M*ULQQ{eJN(h-_9q^U%5%gGlM7l~6EdiGG6LtssOJ82D<0CSej*-8!skYt^T4UYv%>y-=?$hE>=mFxO=Z!An<+H$(Z46lwB$- z#Dz)Z+N%8&vFo_O_adej4q(QjcztB2px+5{X{C|U=O7bA0NF4b<4JJ8KMpi z9OGmg>V_(bk?s0+i9NX#Lvod`MJC;e3(^>D$zC8e;|kF?@&VuCiNR1^JYb$(&7w{B zVvb{;;#zd>FEYEWtT^r#Oy!YL*I!TJ15+ZYx*akT`mpV75-@KHpu< z%wC#*6H1^0_ua5$rG;a@hd=_w8Vxzd1TS_?M)P&XS0|-KX`28UKUx}&)OlpJugF@N zp-j_|el-NB@c8d2SD6g?yD$LY#%b0*vu;PzHA&6^3ivC>%|ac5grE5zh-F0^%xQ3# zdy?fkhq?NUhPO>hu$O+$=d@OZH%}w;KE}~{ZqxW9mb_$=qh_Ol#ts>7{($Zjq6d5n zR`ctenjfsEbJD{{|9MSKPx0i!u92F0(gKF9nzsyL{RJC2=2tv*Fk^3*(-ru_R-U%} zFfIl_Bx%nMDOU?Y5-qZ9o9rg4neaVp7LzQZbQ3q@-8Q!98WrP~%pd8Rfh&S9(kM5UD7umTdod5nh$6=QJgdVmY}FBq z+~#jKbL0pQYcd%75kyweUv0%MzM=b?=+dbxxa0))Lt273gUL)w83Dc|}$ntc*KqmgY4&^H4x3Bg+gcwIcPpKegMVQF&ZLa|ki0SBwY|(<)^}D-*+b;RzkYjgLAQ0rN0{1WQsq@=^o`7p`pSY zWn(WnH<`D06SzWoKU%!i9~8ZES5~8>#fMe(Y-cCN&X0dFz5FjV9z zx4|Ww3o{YVpu85t7XgjduDrMYP-nuYAHrspQ)>WO7Bybpj$NB9O*bKn^yN$pwr51N z^fGagd-q4gAFq}a=-=xF(pN1=G;H1=k3lF{fgtyj^`g28pPpS6hO7Ik7{e+WLbq2+icrx35Q>&z5h@?}bC%&!64@4hVlA+V*-k z@8Bz2aUqzWeSa7}EzK?r3fBW)$4MxI;CI)f0+nBFC*(HcoWeu3G<*P`;IHmKOe5$% z{ptE!G4!Hll=quD&;P9bIfm9*$fpaF$R{8Yv9#049?|IfOOA4KX3QRtQPUOC=RX{l(8$j$NRnlX)%uesdw=C&n1PBLJn}oPGY($^0h>8y`THf_@Ih;J#;Bv5}FM8z(UUvOj%T1Ol{P?v?DY3OHBH=hA!P=+eixt%&n-E+$$Yz8(;I2Oqs}*6 zwEpx*YBwXWE!Ya9PCfWjFf1-7Ihz-~D4NUp1R4mi3ZEu-HG|l_NxWr2zzR9h5Hm5wdCL$`O3=nDq^Pp&ETgBuXGa5Bc* zy^H6P>xP2Og_124b9yCUXEHVyboGqT5-X}$B=7N3p!Yd_aI9v*#usuw3&Zf^Ibh>Q zGi0F^q`wTZ0b~x((sOqv%+czmmJhw#r$Ocjd=$3kqKT{`Z>(Q*2X_sROQ7^v$}3q9 zD_iDdz71LLgT%J2!}M8o2{Y-3e&R%ttM*ETpU_z)MBt-sR!3)fg_OVK{t#B5+&P%# zy}~N`>YBT}FWl4?&b}s=alNL;d;l_Trw59UGc&7e5*8$sD9pF6+yykq=1xLMU8#m^ zULy2KYan#H(Qm%C9J9#oG)MW8f(eCa?`P4Q3D0(9Nft)eoLKpnp+c7WsS_lSV5JkL zH4w;L3sMnsWuY4I&&i^+D=b+?RjUWn>moEJ+h9)_M|O-TThYk4VX6z#(6lKF{-2g; zm3hoTG+xRUUk~M7|H;~W$27A#)LbQW^TQ*hBnb6tW{2?68|Hu!xciG}*o8`$j@If= z!n(kvZ@$a{phZizW=(}Y&4JBL=y5f)b!!z4Ig#;4nR*o&xe*dffzLMB>wFN+WV&`a z5{3dvDOur*`D6>mz+X^VHdg^6P&TRN^ewQ^UM*Lk4n@^_1xq|2rgz6kM!E{dcUl}zB@1#&32Yl|AVtI zS-hO(3TfsH1?x@04+=`Q(?M~G^%c&UshIo*!o0K@RJ(-;w|BCzifE^MKqm`+YQ3Wq ziOllmr~hX9mjI-ZJgk{IjXgIAP`Wvo`{+RpITIxO354#FHgiWg7;Btgj>3gY}2u1Zjn z#!}|2ns*8hC#}ef)6pq&!>I*+Gb&?ODbXZ;I?Xihibo~ktkJF;chx%7NJ@y7J57=| zj=pvSEvB_S==*kE7J5XQa^P~av0}A~*esRw&c;meYaUib%H2Mojb#f3qrCX+GmX$T zjma)k*J0x69{g3rzle#0oSQ>lFk1JcbUQeXwgRfq@Z2_rYY+l|g#C3R1fkqF=*B^W zOBldx!Zs}1wh~Ly^L3_>qU^9gewmq**-bRFv?;TG^$J6%UfSmsQSw)e_I-`Ti1l8~ znwI|N%H!vfK5&$R3jq0nQdZa_cVXLNP~pV>HtC>l!&JSc*3oWu2{~gDNTw}N&(k4k z7q?3aG0VZeB<&Gug*6}8uFr1yh5CUUKxuJMsL~Ag8mY0z6VH_Fj^C8QaAPa~fhKf#7?MK7Vc632y!HE=bT2*rfsdE0Y zGzP0sI_La}G3xT$*KJf?i;+BW$1vIjj`~;=gYDPM$bGukS9`M^DIk?yd^VYX0xaK; zsLyrXsdX2EFQW!Qzw|8fEqon%=f)fe=L3*|k{qD`nL;~YLi*!oje3J>Sh@M7r{}$A zDsI8&uvcJNIV4b@1KePxHA^BCD0MVVtB`!DnD<+VmhZ#4cWBw5%VTnx!RgEWPd|qWJF6OjxUP#VWtRjS-rEh9FanTbmG3>x>6|0%?LoZGgvonT53n zk^w$%HI&ZdM{#_6?e8Qg|7I^sPas76EgR!qRGckIOz+(O684H1kCoOt#w)3TKZM$ zVBjF-`6efzEWNYn+y(j*TbcfwR}>OLH9 zkvo6qi`};6f0NhoknECe)i)8{@p~#Q+{HPR5T%{ESrpu1Eu(w{H=}l2*(HPaHKM1C z2;-O4Dv}JItIJP0Ga%)F1*X@jnOPmWLL2B(Br_`ZAHC229Nq`EraPzL9^=3+Qd{<> zy+7#ug!}=>iC?yEU`kJo#R1TUJvPrwgxHOItdMI?WD14rDruVTUeWtiJi7C$zxXM^ z*9d*?v?&Z;(nB#y!llxNLqS_aDq)Jf^)PiH1(9nF2v-mFPJOR=NP-|#xBWNObF0K! zle@Vf+ z{L;#7v^wIx0yX8Q(<9#(XcbXZrwyj9Wo=8pc-6}6qq0Yw1P-g(k1Ne0 zY|KFc(t6<*L)&UW&hcVFd9XYN!Uw=E*pRY{Ci;$OxIW4Ry~v5Y5esc}*nY-Z z%?6O)4Usbi9Bk3q&%k16)QUJFF1ae!Q9*A+q>n?Zff~1o;PoD6n~PLjEwiVMC=ZuCgvaF# zk9@3QIy<8K7h2yEiFvcEgA_=XnpI=3lr=HoTfpn(oc-r1P@^&?ZF*WV4#{wf>fn}q zYo7SG(o8!-$;RR(6_ng%T#w+vH!}#@AxWuV_GElOKLQApT8t=ln>C5k5C1}KE!W>O zSuQY&`<^dW>ip#T*WBVYHkUK=l!qL6d(Fio7b%-q5Z)JIdND6T$PBCf_jd4-hKTrE zUUO*k{>yssF0_^9vD-d`nuEhn#uCEI5I?8-^vg`xWm>|cWP!PBJx~`*79Nq`YL7vU z-PVt!ov}d)rbJAAB-_yM-_h598ys35>wZBZVRMORn4@>0_%P_rY!`2RPHVJ`?#yN$ zL;GMT)r*MuH4j+k-@WdXCWBcA!eEHViz+FRPUL~nvB{|!PAu1`D7ObCCJ|o4(d(=C zB!T1Mwgp$ZGW^oJaKj=>DPd?#{Q#fK+SImWdQIER8 zFIA3}jeSDvVC6_0!*t57hNY54oh1Q70Fy5r_6AjY*-&|YljygJ>;eS#xl$u&OeBx7 zUhqhRcAS1)7Hr86ROmT!AcU6)pXAkRb4!r3d5O3x4JJ93osi|4=_Ij2YB>{`yv!JX zfC9ZX&|9)XuXC=2A>kD@h2y#8--&ALh7w5PYp4Um!HV|UVYp~x{0qLI zVm2Slrw3bB%fIuaA*WXs-kM6`Fw(0NY^8sC+rEyaSYla+Mw=!o>B~TQG_$o*MjDlW z9;lpM0R%*T+FEFg{!xR@rk#0|^4J<7_tMAj7$hgQ-)T9aAW{?*Y2Hy`oU(|*a9y`T zcptA5<}oxqq)Dl7AgZef37JiK?7E?tBQ#JC`RxAQH$xD@95Ah!uU1k4CtstqM57}# z8qz)Oeq2Jtl`IeN5=ISz?Q*=3Z%JaiTK$g2{YBsoLi($TqbjB3%IOHRXG+RHzYX3u zeRiI3weo!lEyUX~U8UyV$U0uH2co_wu1_yFnhj(hfQW(M$er|;=W#``A@h(5jjuhT zZKqFFNyfXAOh;>A?ar6U>NbIo0I}|Un@yR@$2F9f|t;+V!kRl32dqs?q!sVt8 zp!H)(5^k`@wQ4Xweu?D<*He$F1_2416TJ5K$kEC(X|#2V5JP?-TNxZ+Dw6^P0^YDx zIfXw?4OR?7WZv^1izhe(vpp3;_npw2=5e(l`CG;dUIPF^w=G>FZQ0GQx7G{rSFYu7 z%6`-Khz&jb{_mM?%oKb6Yq&5d@kr7$B@EjJ`LVNPAY`~s@Q;>fUqpP3lzI0$9k2gs zuQ!;IFjG*X^gwT@SJ=ek2$C{>2s^}QKh;9plKzQFNPFj|qgH@q2G5%LBJa|gH=3ul ziuu}=2BuK&D`7=qf4B9SBf(Dz@V*P&w0z-;#}C@CL|Y?6Etjkm{rgF)960;S=T)`m zeO$cs+%v(TgOP%b>)}iS87>rXIZ37EMaU^7X|5|#9gm-yKw&}aBv_Gn`Qm9djr2z0 z_Ljud?XwTfYC$jkrPdr0rnq{-Q-YPqb0|ku*{s*6CFOG?E3N zC`v}6wy6_Kz2YIVUG{Q?Vat%J)>Yr5>If%j6&wAq{?)oBwqcv{|K^E7O1aeokk)Qj zoCOgH7hiaozXb&wQDP~6(XP#{u1wKSZN&Xo)bqiffVfO0Xps;n=3O)eX4Zlle4SQY zK8r#m=oaX^PqXUy<3Ky^I2GV=LbG;QlU^NAiLZ4YH{~}-fRty7B~MI6)Mbo5-^Wd+ zJozbpeUra}$cVx!-%LU9*(s#GdR*(uxobmYsCz5thC(=rdS{1jv4HtNzN=q5<5`d3 z{X!)VA@kh)a1Ceq?ZDZ#wQ;+!b%k5OKz$r?_c9{k$7A;vl2;oZ=L-Jy*Ay`Uig~x` ze6zR_GA+AgqQGx<<@KeF_;?ffFB^|}r^=Mh<|V9;Jw7{FJ&oLr`O|xFciCnnvsPZQ zUH66P!XWkxZl$+mOR-51c3CLy{oyXio!#ywz!Bml8}5;7FV7t8Gq|cD)b~DU@1O>t zFzcKYqP1q}Un9HL_vkd6K>!RZub8fHE?pBF8vGtg&)htk;1n*WumI2PGz82YgzSou zEK^~*nPBmJ0nmfJM!A8pFph0CzukJE>IUT&Y`hN@ll7srvJjsJYdqcIW7SW%WB8HW z?Mrj97OsXk^=nvpnK0irfecFc$urtv&}%mqCxVA*WFq7q%hO|QMh$N&2bo*39GI$2 zx^J?~oVISoP7&e87gYDE&M`DX9uf^)3J(5+?}fEzq+R5bc8mp_PGA&MF)onVW)Jnp zAOKki;m%^{t>`GPTLy`RhDG;lyz(R_YRTx z=#(|TkJ!uotDm%1pk`dRjeGPqsezf&J)ZbOmTe8QM+dvc1jW~7Jz1|ggfNMRz9K61 zH3W(Gkm@s14xJ2t-C5F|X)pZj@(pJDG?N%lFKEFXXt=i$kFiQW@33ga=GLm&j_f~q zjl*P!h4ZMhu6$=-vcAAcdXSe(ghttfKMKPs>Qbz~1_0Xk7lSQ-9X9Pr7GtxarPv!t znFs*t3U^~8C3^%ek3bSEYGE%Om_MYaKJmQnCZn7;Tm>1Fo`VJWzYY_|YgW9`MO-ICczxf$4ac78)Gs<-I$*KeQMXuvFA96Jxafr-|c%z>;8Cm&HNCok0Ys8 z>S|JPo%bO}`il@G`T71ivcn>&jur+ks`XszpmmxMjPaXnoB>7`3y zqcSk?b4%I4iKEHWHoMFY&Kqs|Dd!z!`<5h;Q=e#wTGW=4@Wt1_0Yuv_!f&f_9PTq) zu@|!g&53)1KMZ815klTASnZZv!lGtBp*aW+&C~_n zbX&-?r&=cYo9FEUieo*dw5MQMc?wKx83-CBoS0?o=5( zm@SjG3%WwJ%(m~Gvg$q-iWAwfy&|Jw$7Q}bC;im2_XJhE5`@Lll^AR1Se!lWpLYi4 zqL7e=U6ythH3#bK0uyPue!QUQ`|9pP{RDrtwNPR@B_G%-ixeiiH zF<5iIqShT2BALjn25>j~LDED?>GvMpL!@ZW94RqIt_$DpcBo=hCaO|dhVy69-2!k* z66+P-=&H?Hu{-y$fEX0!rARs|(K5@|S&}}K4l9MTm~`2HZzQLG-qd?Oytd>N=+~Z1 zNXGh*g)QoIlF1ANL&a#sh*s~YU;-D%5T4ttepJ)?qwv)u`s-18-bBvI`<0v?8(+B4 z_~q+e^+KP}F8wed^5_mHI5p1c7y-oQr3oEJeMY97hF8BubUuFEMtYeoIA#cnE2Q)J zPlQPbc|2TM|0uFXdYXgq2d~wBOyvvjjf9D7^M)?fbp~iovQqez2Z-PDK`|>aFTj#q zmfYs`Tq7QEF4olkH!RY=IDT=lxG=Eamq8RrEXb_wElW4* zCY@C@NeRI8u8|Rv=FI{Z#q}Nf@xx@qH_@3p`G5ue*>E<^YF;{?roiqVLDD#Eo5INF38pqtN0hJl!?4Jvwhwr*smO+ zjEnV3*Ok@Tcx4}7Y`8;DnvZPSL~3nu_4>j?q5#$?i^91*2QX{Q$ZA-i=36KlSSS^G zar1oXu?DNwe?`&~n$$D!WQLuw?gBiVmw5rB9`RBTGbEJ7ane zzy28Z*mgX~#1NZ}y|bOiqh0Ge zO)6aCy6c>{5*0cdt(|D(x(j8V)>Yw-Yb?i2TVe*>%&W}%B(gy5jIIo5Yap zy7?*U5HaQV9YNjvy$m-VC6G%-?eA8vN^`k8D7$;ajLS1b%#50Y=N(~^%H3r_WS2gWJ0#hXU zYj93!YX*(_FpKCLone9iCBJh4|BN_i&V@P)5*tN!ZHlXvtA7OTSMdB>nxdS?YVB}22*N?c+^A2A zNqoor+n@22iSh*aNqokL8{^&jFr(J8WLtOhopxE}?K#O1OlM*>H_#z@c>W+`@W{vz zKBXq_a87r#-;pb6hZ+c^xv;{zd;!8m5y1Dn4UXvtZ!&nMmV8nF(0mQapFx*G#+IM7({HhZ%H}-XLj1g$QpHem4F-EY4LeQgF`} zSu=~qBQsE#G9;J=U+EH5PSp4m!H|5Ev?_`u;b`uFe8X--cDbinGs4MUk{2>m5xO6P z*tU;dA73Q=NyaQ)r#x4mG57e(zT2if?iSc~+efy-57?hc6^^5;m@~#8U;+(uAOstB zl`B0tRRxk%Mu^y-!C8X(n`v3Ehfa+iBd>j2{*-|5&wGT_<0)^g{`&!omqbR9>sY*| z2-FX;ByW>PgtFBO{gU6mBYHCVID(@J*x+w=$|a!+$BfwT>t*P(FhtbFt8^6O74Z~{ zC$c}&;hG9g0Y2vuqI)_*v_FJ*^c-$o^%kUW7gMwx@6k@o#T%yJ^+;-iFk0R8KoNv~ zm-P{8AN`_OMbM-n{cdc0&T-B8^L?NmA5mhqTV+Kb)q>Z1Twi%>EvT0(EosPuDSkcK zY!vC4tMVLx_9>Ghcu$j_^I0J;-$xs1#hDrcw)z^Zsb0x~E>r!@5);1BXkDFU8*tEukl+ z*@8q3h#(iAlJQ47*o}LQNl>BA#f-FxC6ifcJq>JK9t6nU&AL zBcwNA6d82+o8z-)Rf(U^JdUJO#lL~w;B=ZV>`KIz{QMqXA}Vp))Rl{J4ovpy7dFes z1Ws#-ez<|=;%??_<+BegN8#2YL;_4U3cRLY$jiz{{;YQ+ANtzJAzMWmf22|7+4IF<@dQV*yo)uHG+i#65#cC^im2iTQ zpL8Pk~s!`GX^#n*eES<422K^dOqPe(={|?%(^47?h~+EtJR{ z9v-T=XX{N@1Jq{}{4`&d8tc>yKhyd8GS!GoNoO4#Z-qxm2je z63y-!C3Id^vp^15Cg&L@{KZJ}5f@7y3xxQ~rIfB1BMhftwnzC#8r!eb4}385Am-5J z@`u^ELC`u)xmY~EeoGhtxn_s0cnYPX$XB$@jfV+OkB_IyAfPdqeH^! zIBWGc-67NyC#M!_TDzs88317<*4P>ES}-TbZXWj~nIHdoH8OYv;;uu53yzqFwgy8b zi1Rbg5#^Z}E?Dxvs^r$Jfcllnre-M6MqCjg)3<0j66=25l0V|fzs+|AN8gV;kc+%< z${fG{0msFY5BI@5&YJO)l8`r%Ea|_OC;}LS$a*FinfVk7d^aVvR^X7w@pT@oYx?hC ze--f4mEByluZkp2Aww_X4Ht0O`3O76Aw{-&Yw@oZM7Hz7uiK=y8`tVksu~jgJbH42 z3zw%BtR@Z{3;u%Ucte83DkRb{{qh$ht#`JphaM}dukKBQOVkEO?TJn9Dsh}>qyWZ&g7nO=L16f!<3R(Hi@D2!RnW-^RwWN*M@=e}f z$(lUb`QTRuHT%l<*&H}8P(w;Z)&nfF0f9NOKU-Q~(Xa~G2$_SV^4>vn0${SRi`Q|f z>J&T;AlvL_Zx1y98O-Q}p~-@cD(7B66fKgFZ7#~*k7*gp{Db=tV1|_eXj?Ve(cNwT zfx5L2O(*Ty@a(ugWK+6YtgI4;0b);HM4ejbjz~v zL6T5Jhs(I!xgq8vLCZs#zRH)PQmYr}uBv>b8ZxRnPb?f?nXW8qk^CP3h(LG08Xakn z!SCys)Om2s1BzV-F0%klVkC&oX`u1d-&#%Sl!}QUhKf;zn(2n`8Z0_2BVOk zCLFr+oks$wpe{b{XBk)8a{UFoDsRk^3uoS>iPiwL zOpPV|L{mH9>QN=uqT+o*3IA4p?z%#jb7DO3S>MyO@*gEXImy7v&L%4|ry5Rt!Ws=u zJV(R)dagLas4SjWGW_V$l}5kNY>4rV6z1j}hPv`?>`d3j`z(*;9OEI3XCAYAGbo5K z--0f9;(SWIWR2>NqbyOSy!W?NvuP;dfAC}cheCQ&Af*XOE0kB7QcQsT)ZQr`C@iz8!U zv6h?G8k)Ol-~x1hDIQ?9L6tiO1RA4*`+a=zn7;qz#^Qf4i$}yj3SOQIs&zci=#No{ za0}8jrMcNMfMJYurakg-ip})XOgn73HSU0?NS#1CXtw{SVjTI#6|l1GkjEKs)b#qi zbB}EC+d$wU(jau=uuqSr-VEXPLa^`m6sw-L^U~gFC5>n%xd|!P?)TKJXEw`2D_Sx@ z@lCyl;!ywGxi+J2#UjRp_swL7;vP;-Yc7lQJ8Z}vm0v|aSkrmQPVEn-^Kw#$xX8j} z6PnkJiu%&RSFYGo@{<{v*#KMl+>Q%Xhgt3|%m!5y#I6g+W1n6+5$JuZxBiV|L!sjh zu~h;ykb}x`MY?$3q>$a)uE33~QIqn3wYI7g=M3EJ9Fbx{semJ5^{c}ugAMVs^{d;2 zv;>i1BCVspH~erQZWI$!tXu%`F6-26(GvN)#0Uenne7|7J|z+yt<_gq(i=Fc*weUbYZ*Cz@NHKGi|l^!^_it zYgcoGW4To)woMWolfy}+C#;3K;Q;Wq3bEy!U&NJx&Ho9HX7NM7!pYZNV&8ba222{L z(Jxa{>!RVG&Z@vP#u}6*rH-d~{{7ipv{gR$9e%hH9Ere7P4iHaI5s)(n}x27GHLYB zs0@cxk^WB^!42;a*~!0woI=Dw$tDmo_{6JrMfYuyK&(dDL0a^{A1zwlsqc?$yu>;c zWAqKHNi@S#E4Z&c2&f7qf-?--YYG$!*d-!hP@R^)d|+abH2TDWKlSWYo(?P4rxdr()&DNV^fb2 z@c$l&m#vBvJg!gsU3c*D-(D%b5vF|+z9!2RXIojhnkkAI4vPWw@GrtzWZ`ek+M&%Y z3eVxKc=q&{w*grN$T#HW1xhUss4z8xc`cOQVDWbq#zXywCnETr>ZlhMY7eCG3eh#< zEEW-}5oZ_!EEj>{p|NbivK#XO*LJa3;H(8D!&DCWEBVDE1+9`tLrb}}OLwfVTB$%Y z^!qAo41-H?tyY^#32S_HC2!Lx6NiWPc-GcmFNys(`K$yn^paYtcFQvE*^s)M-rOvc z5^ouB!$!uW8s(&D$apZ^fVU4}EFOl~vkKxrj5kA6?fk8ffZSo8%2k1OnXbvp=Q7+-6gSrmA^`{SQdAS(*e#H3MS2>**mrG=#@ZDgko!Q}QOrraE(eTBww9tkk>O_o-0 z;)l|xEko$ACf>x&eIFxr$Ljj3Q{K_!ZG8YU!Zg;Z8Z^4P^p48UA z2xkM(E+#I#bPH~NC^wcd2CWK~h!P?)8e1IHI8!cVRGhDjbb|>KFr=MUlp>GmBy^7D z*zZV4vxadkbccV#hiIxKOYcbW%gsCZ&5VbyKNYRCf8Z8KZ{?~NwtfEAD7}@-*_51hiy>A#`bGjb!s(20mk$M&<#?z$T;?NWz!ipGCWbeiJ<<05e`n zC-wU_p$EoVlDcyIrx6oI<};Vg8j)T;c17nx( zFOKG|{#(=?$PS<=aO|dIFX{nnOK>9DN6w`-qO{@FNEN#57Q#`VddO4Ijyeq@{X<$g z;q*p_2r|^@*_#F>C+tMMY)c3>Wh-{36XmJphBTw;ezEqKa%ap3fee_NWYq9`^O=SC z-GZ;^otFfwH8gIJZPHw8vNhU*F-d2kU-*r;aSIqx#8R2&wRT^_3c3AUzj`(N6E9NtjV--NgM(LnR^?togv=R5m z>hnP(lnrRMdm^J7CO6tO+N6Q~Y5uukEK8ni`yy3tZH=U<3C zc#b_zYC*yocm7CG)2rtKV7}g=U%#v|wB~9knT0OPGWQn_!2Hn?K=yF6wiJ3}3hy7S zml>@Ujv@yNgvp1EYP2F*oXIu36ax{u+zTk6pV^uve)nuH+L+*8<0oztE2_igK+KFv zx9^|l&}rZ;goCam_Co?nd6R6wXQhqpvBrc1-63rc>Is>|kCKF(K^|v@XgEPn> zAZ^$<7d)y{!d)TAoS}A!0)aen0C5ZDx>C#uDhp^?N4_)!Hs*L#Jc`SGF1da)Cyme| z%R#%%;SaAQ+~dQon*Wzq8nt&Cz}{(@)SkmSp1ZaVWQU7nBDM)$s2L#RA}mI=kQ4f= zFY2@%8)^8NSY6B1n4GkV=uwh6k4~Bvz&c3uZO(DTu!Bi_d)iGKtzkO={MT^pb6G=f7};sXmCs#zPR)O5!+m=)WR~zt(vv}2Wc2&{zcP+ zo;4~92~S=QHSKlX%A!&*qv+&(Dr*^zOFjS&ykhP}Xh2V5F_4!*b2L>m%EvcMMMepH zWkw7*dFL;nh*;bYxwXF>Oxd?W-h_F8D&aU8Q0ttmAZnI8PB~F z*ud;DfeGl=4G}TV>}e2EGgkBSa>_P<)JC%28ijw8%FC_d^h1IVv3)Uo*^1Wo@I(NMIWa@pH%L>) z0Hl?wVcpIZs6}2Zndpt{0PHP#z1fBFT9E+pSYcU`i{6D7U#Mqjqp-id zFz=wXWB0zVYt)(KXyaI?jSHrcQOpHMI=mrWj@ZD5&y2^2uDzP0JpM)_In z&mM#ABr)-EdM4>b7OV5E0~qy7XD3bV3s}05+JtqkBZ)ir1Pe)owmseL8>CAu1kCs( zjr_Osedc;Oa~IPBz2q3>i3lyf?o{NXiMUdZ%*-fEgWNr1_7d11>4ukH@@QP0z~64$ z9FV^MKd`<=Xm4=gaqJ~+0@N=ly>mFM3{5Oq5>YVC=&YbSmCI@h@F^4?=9U zbF7|=6z8h5Zewu}MJ{d2cQ~?JWSc3nlKx7i0VqLqtfvuH%YKP`B4rSnK`jb&7Zq@k zRvMD+pay-+hn5S3YMbxWx~ST@g6|?s06MLz^NaPqWPw=_mY^|&Ak-4#(f5W)7X@!M zwsl@Ezq_pL?ig33(Y*)wXVFWUABB6?=m*Z**f_LbV0pf(YslUH_zYQQsa;la(pKINlcT)j4-&%7NTDEoxiBK z+D3Aw8&##-G8e#1Fmb154Qcy^M7L zf#II0&+MuOmuD3|0T1&06pRs8_m}L}{x;!55~MqU-*N;}e%|VZpu@iDb<) ztxUvlpMndPv6dQ_AXdw@`Ght3%M~Q>3#v-=b4=dV8(hh$4B(5_hY^9jNA_gL8}*>7 zz>z?nn^ef*Ca+C>T@{n$X1E!c!;hs3Eh64m-`)oRn%s1(DnmbiK!3YRb?0d6n4SU2 zN$Xe++>eG!)JcCS@OhSAGK(eZFKdx`xD*vKEpRG}lCemCU66Vf^#ayx5U@m5F(^d@ zWnhBDYY`Z)tncB+)_*B`LM>R29ADnc{bYv7I=}tw$t$yrzXK3VHGiZSVNIb-j)Hf)TS+j?*dUo*0m>fH2Bueq4HycwKNZKANRv8rtDCUrKEJiX;sm z@(!#&Csky7AzLjHLze2Ch%MX}eH(1m8Fpomi=| z%;?Dj;q2=nUMPw%zV+tNy!57&$AR5Quij3H8i8;)YOsI3t6MhkphbW+$-)LjXX9k` zDaSPh-Jp#jj8Qk$!1ljV00{v*JinlO#qzETn(AcXtsw(4F)H1V)uqb7khi4o=7m}K zaL%zo8$2OtnMW=4S)&#fCQ@e$0j0r?_)YQ%<=Y9{gBWRWTnhS!?aH)+z!`&+C>!MU zkDG>y_6h~FvRQWUs4jcq7Et2jgM$Q>4R=JG5|zg*HIp)7e5Olk<>MN9<1Mow&TVpL z(|BACD;@d>Txm|vyv;y@I=fe^Eci_Y@#(KA4sml^KlW8`>uR=hk? zo?!tgt?J3eZQ`LXSCr$rl0{O&1bshrM?KbH`V|1Z8%+m?>t&^q4L#PcAHJ$e>r7b}rEd?A>8Zj&qv?oUWM{Yn_UhDjH zl{RpQpHaZiuf^~+z#Y2K+V3od6K^C$)MjDH+y=%QRt!2St3$6FR*3H^!%AsS5!Z}) z88KRl6K$jRe^S+w@%K|Ye-*@N${tHER80#nc8SYHWPU^xquZCic{tUXChY~yoNP|U zIDVB>N+{3!XS=KvbUB!NMSIc$oRqmQ96`P>A;BgF$(lQ_K6msKtkg|)onZ7$HQPHe zi@s$w6AuN!Tx(~x@8ChfvbjiC7V|}RI^6i7_+Z5;fPM*38 zQodL^BSc%(Cko8$u=i{qj?6uRan|`y{bGb#g?Zfd;sj!Mv?2Y&Vm*bzn<-qYLJ;Po z1y<}Bqwu9E=pLVFzRT>_ibxN`j#ZhFn?XQMPyGu^` zJ(XGAp4G(pes^a8p=Iv0DZucGp^$fMm3)+1B~fyl91%3ZUpqFwPyd|AN2=i_IZrH_ zhWE&AW)(CMrtpWd>a@B?dC2YNm1SId5x_ph0Lc8bx!RCE6)DqaB!vOAkb&MAk)HIm zY{1@=6vI=8Q7-Z*pRg&W;}27cOZTCBkJ^Neh}Y^ekU=9i4w9S7K2! zJJ}87CUnXutr=(=-=DCQV4qZrmr+_?h*v1J_B_$k+E3KeS&TwYnB4QIr*a=3`E+17 zP;dKyy7FZctv6x@d)aSS6D0yTtQa0kUa$vGCj%b=9N5MaalvN zDw9Ro>;2{&&1Ds7w^noX?V|aTuhZX%4%G9-D3s=A*SA_$s3^#jsW`+~vxZLW7cE>1 zvQaD&sJihkaq}bVW%n8n$qR>4npjq=wI@fb@iEPc<76CeT*tD&=e^N>eFbrpG2aka zoE+3}I+)g)KOC`&KGc(Ib=layjK|b`<({A6I-f?}Fjd0E}!ojB9B*^iI*3(o{xZpIlIvm(DH4BYal zl}6yiL>u0o)KF#Of-2(ztLs%HY1KCoQ|EVNhRe z!$?o#1NOel!XjL!zpBe5)wE?#Y+sP0(iVtr$O5T$2&LN7qJiMyjXYFG9E}QUbBtr= z*yEp;LxUTC!1oHxyXW2$b;l#zLh*(mvR)Hej8)Ax4leP(y&pWTHI_mCQWE-SMzSvH zSuOY@x&AP{$m|-U88wglic|Q`FEy?-YSo#Z7L@#z^F&Ikw#oh3Fe!ym!FmTUjYSwu ze}M>}$cN%72M*0WzcUH8+{)KN+$rCN)lMkEsYrX<{sV#m`q~jFY7*9PWN475!sm&& zLj@UsPgkUIbrOtqU03O5g8n4Cf6x5P8o&dwY6Yi?6*H9r1XZS=5o0v0HuOF^<}xvO zdL~erh%^zl^D~ckFp!fB9!}S0Qez@m2C~I3&v}vdIM(QVwCGcV(XU|tTYwyDX|$mW z$~AHw*1R(Y@Tqr9aO&$SBaCg=EV2nZbgk28`m`$~qZ0L066q5<=G9Z7;vwc7WgpR3 z#je2}!S1&Wr>Fehk<`?E|Ms}F6mm5RB&Ue#boR=N{;=*@F?SgccU?ow?+Lz?On#us zy#Y*6*fC2aL4OE@>~2gx_8qBlWQm)Vf5uU0zy6<|t!;55_0Nyat4qy*DM6cM&LDV) zFwG{hU&u*`Jal-uIYXciY;sL7Qr?0q3?AUf8iKLB2GBZ24?d}6DDTFDU>r2C4iD07 zC`oN?&_?>zn$8+*+V{xyS8OkL1o2*;xoYA3IdVHa)poSkI!Ws^N+`Q$sjv+|T^G@< zSD(z3F$gG0kz&G}zZ!O%XvD~x@N9xiTQuIjUw%D%eX`OybZn6^jU49*Ze4cD zc~X9v-Mc*)`JXXx>^r^r5FD<{XvCB87vl5#_YVYq$bm6b6>pc~WZPK69isXXWe+1; z#~sM6p;)<`c_TCOrmhv8H3Pzj1bG`#LNvHGjGRe%u!FcR@7jn09%M>2NRS=l*br#X zZ0z{vz2J=|_qyGbyho0kHZ^j5uSV}ErY2T@kl4U8@mQiniM{?F*D%tfFn4r5_;X;3 zYMHuq2DZKzu}IqhC|YbxlU^vj_z9>>hPOdU;tOLr=XI*t7HWu)^<36Y_Tpe8upFzz zQPpc?4J{3!DHI5siz*gIk5<63FerdyO3@dOVQ7^!;Jr^Z&p`0ydICz5aZ9HxtKSed zk`c%M;U!k=X~lt*rbL*)J4`0xF6#MYQB7>(hXm|#>p9YXnccfR82O(uaO^w3*?YvO zr5{xB30raQbV3apJ0p^Ve$p%S|cB87Sq0nYk}0Q0%ekE@8Ao7u~ysGzeNTq zo0|i$f+e^d^2a_GE?GSwu||eme6Fko<$d4s<$84`SAUHnxjugcg8s)}iFv-SWig){ zqhcI}Z*TiAPL0=4P7U2y=#au&Q$e!11%Val540gTYKcpy^|`;NYgqCgXOQdr%4mQa}2HL zaavcgB50}VzP|$8W*z;7D@k)&IT)JNh{qZcVBa+MgHnzCI5XRJXBMU};=W7Un)YB> z8ix;-T`Ko)fNZX?<@>z6*m0fY)`%vth!=KP$v}cW3obxeVXm-lYbk@aWMl zr=h+znGf$$Sm>Ia!#sXe94i&1nJXPd`=di%VQ6fQA$!j;xoMKYP!1pHi(NEB=2HA9?6!9Xtf3xM`%% zc?3exjdM!j&%2~U;hHlhnOE^ukm{!MT*_9Y`QqrC12+Qn6z)eyblerKM6i42^H=8^ z)#m%Mkzvu5Z$wuxQi<$^a#mlh)otuWwrCc@soZM?N3O+tn8fO@=`d{mnS^{N4 zhr@`a@QM`SZN*&Ya;BnYlZ=`g6RUj-`*!dwH-MY$#udb9%ovP|m^JhJeV1g3o0WgY zQDtipnL63@BVd(XwsC)YDYut~jkloHK2pLVxf|uEa7U@=_4HaRO>h8x3-tSSFhk78+Z!b+u#k&2f2->Iqv{=JtZ{ zS~phmDr6f)XhMA+^s~(Bc{8Y+dI&q;<`<+s4jD+?y*QRiY4`SZ0gUCc=yylp3eSJ9 zh}ZB>lJZ0#88ubr7IFU?XJ$w3oNJm6`Tt#B2^*m0&FPOvAkT}ducl*K6aBAwBiTQu z_-5lG*+K&f!+k|rXSLwY62{e>uRU=p42L@?TpRr7zYnjYrH~3JSU7byYHO~B4Y~le zn=BD~B)tC`;#;?l4tSkEia$)>v!M>OwyZ~87Lh_^l&Mc{t$(mK>!2O1Ve{`gScIB- zPDrwCRR?>_E%}UW14Ud^I@)!N44A1h4B8Y29m;@u54vO_Z zFqJHcQQqtxR>5U9w}#?FeP9Nbyl3&Y5mA4~WiKc`jRKnr8iObsRK2Wtk&Gf6zWHqT zw3}!aufq3>5%|F%;!(N}EE%v6?&yb8S=6Bo^&Q_~U%WeVVg&B030mg{vVXx|8Ko@} zu^S2Dp+T*Ig~8~i67fELkHgk?j7y?0GkQ5_KbkPO{>v3mo3{l^!uyU@B(Ro*#j<2= ztWBwT&zn(;*H7a+8SA<--M2|nE`?23<*4C!E0Rl&nJaAlfwx;ezL|k0*-C=y%yLj2 z-TC@$uHKSlpYWQxspdI5b}WfZsIPvxc0Dt{DN zjj-PQ6ar_s&2HZ_kB98sr!Ex1Yol}6(HJdA;lTRT=poI}_pgrNRS( z@}vSsb&=ss)$hvn5y-PFlM&rw*0KccO=gZH+DqL7UU=5n<;%M;Am|J;Z7PqCnoQTS zo{^@xn$-|Q;0fwfxX9g?KPuttu~kWoIKwGdYe&(aDzoc28|Fd8H?&qDl)0tO3eSdq z{_}89WYd&Qg<5;rOY{P+#nx-`OuYSh^@iI410CqYCiKT8Q&9d01wbd%yN#H8^G zLM+nB;0Z!bXJvZ&o~xkEZ>df<1hOT(Pz_k>-90s(UeGsfLvXoI>%Z7P_Hxp{^?99~ z_1-V+XOcZKX)-F=42rkK_zCTqo#ZVlc2?DbUHLOndv_E&VQ*|l_w&o%t$D+QC+%?F zNW8LvB1=T4Qd8U5eEt-X_j?38o96(>AX@zZVy$H{N(*AM(NXZ~2rk8W%P^m&m3@0z zrc!mT1HtaOZBZ$A_Pib*=rrYWS?OfcIEl4eodr9ZP1ig!Ryq z$qKI=z0+SBJCjxg_;?D%8dn^um_n7UD+6t@}D$25u zcHSV-wbt?@_xQ&--pn?bWyp?uL0)XnECcN_E_X4LQ!>AFN2uK6*{NqErS&a5KR2E` zK2*;k)zm4R%=#81YvHMu0Ijfe!1H!5ymcg;P#wlCy2>hW-|GPbM()ib0)mhDCM}v& zhM7q4^)$^Hr?%RIwI^$(%FhH)Fb=0CmwXI&wV?1VrL~c6H0);6jou1?f3QG{iHZwE zSCAPr#L8}4Wels~-FzZ22^n5dcCpTqCbS!TpAZx|X0-+^ZN@4L<;wA%Dc#VE%QV_{ z@rrD(pB0T=5TlQI6}E4B+@u@}%<)}*K5=fkjY|g`41q%wSC#o5G<~Ec#e741V#B($ z$Nc#J&F>-c1RV57(s)Xt^F#O4m{&O`^?rUnDvN!!)O3LO*uSB8q(%bA9FP5euUzu! z$cR&f+vkenrI-0ale{aU-T&3h2|tT0wYOzE@+{^b>Zna9Ce`qY-dfFlX3 zdRjh#7%h2%2m2v3x!3YGoNrcj1Pxsqq5ML40Zmg#nF+;q3)z^IGk?^18T~yuCn6Wr zOhs)=wjwmb2N5urL(ikx3EKwE&fXz)-^k^|# zV0z@207gifE*LP^8Kuat#`1C?`n@D-8diX*%*>&G$idAi1R7g)a$M_@8XuiuK5Wi+ zwuP8SW0}K$y%tCRT+cv1taIy%2I4P9kX6(xN`Bb!jEB)`EpLu38Gja>rOiMCkKl1L zxKWn24arn{?)+|~URfFDhI>8XZ9P>)>!J2zn4d`4=yQHPrX&a0e24pCTt%Tz8 zZhx_nK@XL27j>Rt+4O3}b86{Xc#+mW$DtrjbWdf5{XPA&KE@4WdOwwOMYM=E1pJuQ zwau!5SlR`no{Ds6^q)t$*FSD%*Wh(o4WlVnVw2gjOIsizHr|?djzPz<>XV){g?_w4 z$mj_+l7ISM9ACw7U$la9}kg7Hr7H|Iz`(T8Y@bBLL;^?l~Z5@-H3-A&}6_5 zMA1|!?}JxR`~5sUZER&AizTPCU*}IP3KW0)VXdkJ24cspehrxh(Nw>>Ypu<92m2q0 zQ(k_+Oer6r(oT@~;iTmwvP0J0o|hR#GDEx**gm3*-gx#oK2SF2ysI`6e_=QkFt zRls|pRwezkmzun4bY@u*qo*mph)etD2&+B=_jSb@h6dts-qQCYLc;rAn@D^<2|E5&G>HM~B6imXde zU7xhP3o(?7z}2lb=Ga1k!CibU8`=a16c7GZnfVuSUl{2II2CO;%;)zZzv=?bTaVoA zv8M1-QpU!^_sNNZcUt$+?_C($ZQ0i^7Wj-m^214w^>LW3cR5kmzsty#lqwNOIfpEC zv8DbY4t=Q6AwRQJ4v$dB*J9xWivA(tuy~ex1n8lAI)Fs9Y zEAL(Fva*7lh^~uSaFZ6t%f|Fg^@8rh=zgAdH#Cl=owmZJs=AV=a`bKhR4XJ0!?ytH zW3vMY6xaF{$doY&-O_VbZ-Pz#3n+tHa%4slKYH=oWqcAh28<&I93`2S$d`)=Qay?2 zPbzB3@ME(Vr1gr5%*@0^DZcefj8YJ1dFtX&KgR4IGCU}Ty?0^Im4`T1ZH6mvkPeOt z8o`g35^PhiEvCi)mW+|S>p|Z<+8DBL(JzF8yE*sffe^?Xc=Ri+6j_4Tc%~daL#%kXyqi$hur~~t8H_wbeP`WrdB+Brrz>L@i@G;Kvm23=cR^ho_=mN*IcSb6Y6HUyV zO?pAW0D{}u1XwD#82H@-#m){4snBLbzfV3BlMR!Voa+?(H}Xbmc{8|7_eB%RiO*`Q zZz0WX`hnTwSKznCNn2_CitWhkATh$8vb^@deT8ttOel>*yTLJ)`QbWVt1@6snbgM? zyVsx`diL1PV4O69vd~~hhh`rQt>q$TTRq%cP~-oDz%A z1mmR%ba*up^G|Uaje2{3ZU~D5?yEF-@I4Wd7NLkP3 z17rl48UD536yc#hKu{$!P`LqiIk&?iQ)rEc%pH+>VCTqwZeSZDy+M%DJDugT15&7< z^KuytA6aK+T{_u3$9uTk`V+Aqcl_h3itH=@6m+mdWAyj9$h5+!NIOk#h3wQq9WxmH z1+b{qbpHo&a7v{o8Q(m$U>Twx$+9~jeQhUN7|X~BK)&9KrRc>zzaZ{wXQ5(WE`CjC zIfprARQEH|pI$!#QwVK+{AX_ov8aLyb5UE+o|4i#b zCZua0AW}i=HLrBj6bAKpR#Iasb9f18C?j@3yn~h&aI|^dOg2DCfuHML@lF~OO#qLZ zn#n?g$ES=I?iB{9lvK2o(>u7c_pXhw`wAcYookV+@na2w^Mwo1Rv2P?=c!PuA`)4` z*}WsXVt?xY$9jIzD@wq}?ND)GfsUBa)kHGvXqJF@>Mi&7i>2D2Bz!FDA+=?(oKB6E zPDiaBVSwJS#jZuFF&;^Ye$kCc2E!78eD~wb@aC8Bhu%G-xm!Fw7MMSAdUg!q?&Z0y zJ?6^7+;i;k9i&rc#$Umb65;m0C?{Xg|@{P_~b3Jif>`1=qtbqxPt$VbO)W9t} zB$eRuw5;Bs@wvpeES>be&caf?vY5_6EwG=-wxgfA*|xmw6iBmuntlZJBh-l9#u&Kh zhq41ITdjO47T@|%VezBE%HkCy!4n|T+dBTn#zO=Eg{M@&JwbYF^qIH$y}P*Dzz-MD z5jKa*rDAL~6Ul_)^#svavBjXbja$&FwImBHENQ!qxU{gm)BJeL9Jn+SqY7ra zV^b;FvoOSkyd0jYFzmMSOi84-45H(37veXgV`Dj zF38Uis=qM%w3VJ&RHdN>olZUH*i(dFSa`nM$KD4WFb-+Umv4K}DlP9C8nFu+} zi7lO>$z{w-!G0>|oeMYe>+E+Z3!?x9%Ak`Vw;erO@}+Yk=CnHWL->;O8_-(QHkvJ~ z!u^)~XO)L5w-WpU`_O&^R#|>_WQ|Eq7TIf=hS)A^#FO-(Pj0NOP;0w6 zB)fGyL0@etFHjS@4r^htA*lSgnE(iyuiH!{CkYzgN(~Hw?*b~M=4sp7*cRTZ8U%LN zuGHa`f75&+06-_fGM0Yek`S6hAJSoVn0tTi`f!bzvE3~i&CVGK9Du1m336{?pRcGPh^kagdvw0E@?)1JA~# zEKDfe#;VACEC7{$K-K9cQ`qAwCI~$ z!ARyE)uun^$NVw7seL)t)1P{=hZr0ZE@srj`KTL>-NZwxor^-rVJ1Jf-+Ut+lPk>9 z2EWVpbej^x27h^;XW4#=Plc3HCOf76bM2)OG@Et~oo;_HUj{R52nqD4J!= zh;QtkIMZ=yGX~B0LC6V@XPMi5a#IrE2r+UcNyoWG_dq_z1GGy1{F&pfh67^d))8BP zr|~;$=(KtlWM%Lx&!UUq2@hym(ONK$6#}%=Wci6DIiJhc!>xI{{9SQ?;XI@z1iu^8 z0{1mZG{2=)=$^GW)xx79E#o(~I5^e)o;7q=L-;U6=aSZemONcfB zU97T71QO8x?+iG3D-wuJujI0V1qIw%@>i8;E~e`gNsiEd^>&8GdF~ymnbT%96Uq*= z$dcVRD_0a;=ln(cRy%AjbN{*^=2TJ@^kQ?qRXdd9iTj5Wj{`U~=ddIY8`)hq637A9 z4FHQ-{oAq&EY!3VvLs>xK%|S|-SgH)X7MEX-l=_%b;gd1fub$4!;+cd+%^e>ukD!b zT`54!HEuN0eXQEUHI!-lr1i+ZGDyULT!v$wTJXn;~&K-(pTM z!{g26ZRZ#83$Dmlnya>w^hePP5bsy_wsCoLhAu2r43uPs9i{};61SCSi^xYrZL)NE zdGMiO4RDMC*FT=Il~SveYG_T1 zNzB``Ao?p)LIqgKwFeYpdr#9Wnx`%S$96>kh=g!{6cn}fU+_tyU*iq`B0IK1K33jk z?lEPHwJiBWGx5fcRof>3Tv%uoy#X$&y{uP|wsv*A+ZLch4kQOGE?^{Jmw%^h7B-E6cVkTF9F{{(<)&CxV6sDe<^@6Rmb zo{gTPR09wFkMKn#Rwx#Zxu{vGchpf=<{-6v37*NDM7V%ad3*3XaB~QZ2-Xd;|9QKB zF&&-07}1xM<-zJWt8mwUB5~U3@(H^zc(sEhXU*c#lG=sbey=yG%7ojf}p~DvHZC! zYUfrZ=D>~E_6gEix4vYP5)h_~?Pgj7PG79)L<@u$7A(d1hj*%cV;=`72l1T$b!o`; zj*!MDp)f$lQ^Wj_lorMPBEqz@<>iO*cWkIuj`J7}p{KKm-W&_Ad@DUfbDtU<$qT$r zq39S1x#$S&7xU;z3z0eAh`x8X+b`*5n=k0u)A`HPF~ca%p)~q;p%fu;KF=0l*Re;l z!82awXEBVJXVgz;A=i|>RP5W~Q^U%X5GU291U>pz*IWnS=adI+^e#Bo&iif#ExMz? zM_NmcOjMPjxzT#8^3V+2e2gO1m=|m`xy>cRf4jv*FAaN&R>u8fS+?2S^}iKCvP6|C z0DB@W3meX36kFSYldNasn$3Mu>h7EwEgj4`Nq?Z)2U~~~7`w#QczEB*vj*ahm7Qs> zS_xwE%Mcx$1?ZYr0a6eRq9ue1+r?leh!-uUfGayJFQ!OZM^YJ<>J3?Ag9!xSa{BY= zupE=y*Lw<*4}EIo>1hZoWum@9kD;?5^P%H6m$+U!`61TAO9>11D2kh=Vi}ZF%<`Rp z@GFUNXR6mnBno2-N0TdXPnAfj0bL8q9kft?$=sW>&Il1N;sxYnjMpqFip+UpJM+TJO z67(n<4nW1Ap6;iy{kg|G_2Ud>0hj)YT)}1v-bTZ`UqpI=c#a z)&;5iV4Ou7MIUs=dNveu`5=p-dbZRv%rVZWS2~hXF&jP2@PsNwgVVJ)b{lfmFjKO4 zKhp!E8cx__*-QkWtTs>3L%W+P;%BGKr)$aMX)A1|5crX+6I8VAb?2FvKq7ChRX=bx zdI-Fy*h$f-ERj){bAT$gjw4_C5Bsd7B#w!j45~U-?2DROO}{JSFDP{7+K&Y95n8=W{1)CQG%GiB;y0*D=PiqPj0Srk47nMEphTLTt4Y)l8@NeAaZOdoAmd zJdb-!#Z8urPyMSdbAMiR2mAqzSID+T^)a^N$Zt<;h2|LlY!lTW!8osPJM=DDX zF|M5!9rS_h+MsiO*`E3!@LAUpj=U&lQQS{r`M6`*5TirDwk6B@KDjFYNH(XH zK6rg=3vz%P63(is^U?NU9vhbQ^x@Me!{F!#obPfkDifMYScS9QvpaEgq|Np4Q86+f z>@sCxGKLvE%}5~)IkDTbmgh%<6zyKmIQO$l8^Ky4MrA*zf25j}QqMqb$e(`udJm?8 z66pNT+qPT7w!o*Ls1K$FBSN#Jj`dqo-w$;kb}k(52{l5j;!1Z8z`FQ-bDmxVms=U1 zA1BzXiR2Si^rp|qqCnCAAnL>Nbyi2R6|&JJIe{mJ5c}~v9P)eZbuTGaT?;x`&Rlzv zL<3=NgE?5iBN`q)>g-+8RHeLYf5NIsJB6|Zv}Wb4qgTi14~Sr`iMOBLPKg?Ua5!qP zf4!?)Ht?WDfHlB3RhbNkc;3W4Y|A4%3k4}Ryh2o~42_tI8eaA3KHQ0{{d4;V;}+=z zSdwAu<^56p%>o@Kd}(>aAPCge_<6V>*e-edvKw0eg?&{}98AzH8r+@W?!hHE1Shx? zoB+XL(FFn@5_EBQ_l3n50t5&SAvi3~;ts+6PyYLM>sH-)I8)QpU47=YYx=Z+nn4#+ z^Hl|Oo>h>4&6rhOE+=%o-7Dr&tF*i>u}<_6acTXKqR~ss??(HfXwX8tc&gao>(Lt` zjfk>a53@0>3lV+o>%;nKOsdbeisS7|m5vr2*aw*2<#ZTtX?n0R3gBm`l=*l-yK&d? zFOO^O_*;iNZDq-N5wW7Xd}SayyYJlEtd&_h_}trjl^q&ucU`YCcFW*n?&CHF6AB zn~f37S&gE%zNd%W!)f9%4>k6p$;D3=r0Q$#1i6@c=5F=%4^$ltR%eNgK@N2dMwE<#JC(sX0DAxiQD=8_Kj>) z?`NLlQ?>nu(8iPZ$F#djT(K#;7eqjT31P-Ax&kycLB%nF40*6QB~}7~R`2H~J0F}s z%vZ~dg5jQcNyBzuk?{mmmw=ZTji9PZSRt}sBu_o+a-sbIJC1Fej5Jd zAIxo~5pj)jWThxNwe~eh=fYkfvN70-uKDbe79Bp*#1(^H#KZ-iDr`F^4TX z39K6MB8cMJ1gM)@CQ8Jh;+*?+b^Un!3ot*hD$ZmQ!k7tJib&Mz^>5y)0wy8_=vS*) zlb?P5!0s9UF!Jfq<4{90*Jf+T_!y=EAukP}L(nL8~+)NGl0_m9+^@ z$|+7v9x+NQa93JDu=``qlRfjL4`JX%B zS7ma#C9uXHI=pf`e7V8`F5V2j--O7>0%C;(m!tG~@$%oGR6CGlUg-(yx2Ug`0#QE4 zYMpW1yYyb#xz~K2^u8TJ=?=x}WN0LEaSK3L5?GxIPNk_3aTBJAsKqADV{=VdL6 zc*B}Grj55qz|fupygGC0Z#mS1%z1Xj$7-p*LGtd# zKg?t01smI43A57qaN>yz7h^PlFii5c$D&r$G|V&A+C2wx9VMxUh1=IYnCq#p4OO?) zX!3MozJhjZVe9&R?6?>#lyp}JZH5t&aI4bn)4z2Q3HVziYH8zU=!>pfV5Z37j5CU> zCO#+0_dET3qj6hF<+`VgJ>2;_T(^M05R5l?f4E_$1gl?=JXT1~bNVSs!ySgn5?7{g zPDd6s^9Z!;CYH99o-g_MrI^Cu}!$NxGZaE5kTw?qa6;gN~R z(c;zO)%f>qU@2q?$UW#bs2|T`hW>5v@4|E2u%ghzAJ!366%s?l)<=DQ3@aWCg{aej zNsU@>=~?xcEf>%7nQfbjy*)`INyfK$^5cP|ug9fj#etZh-g)f z-~a>w@f;;w=_g?sAo}&yb3jE#b}Z|#6q@hO9xGrjVwfM4j#2hz1o z*RI4rm+4Gqg3UXAl-IV0&gc?WTi_BBHCF*Ui|CdN(xUS-n*3%&dYcbt3o0JCx|*8m`cRaYIWnlMlN8Dytx| z{!#zAY{loKH+3th5hdY`N9_W9&6G#Lgw;tT_cl+`hTeQ`0Bd1GcYRV=D$`9mzfs5B zQtod%6rucwDYU~#8JnLo#|sw~uq`4VmrqB}wnHkgBlfM2U#a(RI%p%2JCTeSCtsJ7 zFHV=N0#@y(C36N!?^>=5NuHd3o_YdlB4EwOG+l0d?qA05#=1FEn^(2PkI%v(_R87? ziY%+W!l*^jJ|D+~XhMZ_owNJhNc-IFADoZ}Ll^dPSa#!C{`+?JL(D__>4TeRk1lE=2PWPjK+e(#QkXAP+)9`ymCV z$j@W`FpUQOyrggA-vyC7=bBoo0gKYlgYzNeF=&y_-i-DbODMyuV+kl;s&tz@{>C$F zJ`~|bW?}WVvV%rF8D~#CP}a6)px=;Wcx>g7QIr>mpDlmA-oJScWFF^n_MK9^U7UgP z`V>di84cl8yrskS4c89%HowSRzQyqiOSsR1u?|R8{0D9vD^)J8D#z-$M}D!}SQrWU zibL;ti<21hIJ+Z(!mnaGLfk$$B#3F{)^QT`IZ&5AVygK(?IN2E``M!+Qb_aBJLDt9 z14QsqdMbdc3$Fe+>pznYmEj^=-Ck0$X1v6G=rzvlQI7;)fO^5E+ZS1aN_-l?f+W-# zAQIKD)?WNWBeEjXc?;+u$RADo#0>kU75uH8R{pRu#)7%BsobawQt^6pFfltu@ebE( zjg1}j7B8KSa~EN^fm>*^?u;voJ*<2cM4TC^0ka{L=J^6uWqvhuR^(zIZ?VQxvjj%+ zj_9+7H8-{i%U@%A*k6HJdFpsV(W#c_={YU5^tIDi-Z_9Iqjs1~Nx(mfLc~&pwmj|P zGh)%>l$}k{KlBtkNw+=0ZV_Kx8Uk@!;KN*)m|pgC8tVx^#2!C;=t192qY+MNI{J>P z%*E+O2A~8)#oB6RPd<&Lj&n9wq_~~TZDB`c&gweTXEqQmQf{e-yUexiogwas4&cFM zmhK`p0GP-$j|-Qxpe)aL5A=@T7-1+sIfyf{(^ta}In}Yk@k7x~5|7giuFMW*BOmp5 zhsNM-yJvO&*8F-YUxz9!PmTnGA`sv8csrz49i7~brSYq3E#JtCO| z>$tvP8$CgQD2vGhBEH3F!Ed~|9!E2Q{dwg70E=&w4L^+R???@)#S)9@G3)y0^HUa4 zP0v+cu=8L!)KVD)?--4`-;pHkz9wJS2N8CN=+ z>^KDz0lIPRN{XatgHzf6Z3_g$tSYflu|M;YraLzEyVg97BE9$%5djYAj6NWUA;je1 z5G$_Iyk}`3!?QF##~ceE;!R-ibp9Thn}L4|N(&^k1Yc2F?v%Ducp0oBxlQ(4zE@J!Y$oz1ekGH6d+*2olbJi9kQC~>L=ti^Z<(m zI}uu^2kag--*^uo2eaz{Y{%7M5O0RuuQRD25^BroVz@prOI{)vufBznhn~+v7#^}T zW65m4NPHg)4yFE&k|d-zeCS}zUh-m8-5JZ^w+*C}Lh$||fe;t5HPslIpf5kvz$Yi% zVQJFhUg&n?kJlN#xP~T2UWL#&HsudD;e(T6RBU1a|f%8rCY! z>T>OSAu}?>{!UrML3nmz8~W3#s3CZwVoPHlp9>oZZ3sSgJVGcfRl!=>XzH6MVSIfh zH3E^|$jEzOpdNiU3XE?m$pkbJ+J;3g$suuDtHyJWxy|3z-QMTv+bhu3kz1;-C908K z{vERg^cj45dnz4ldB4{H)p4H%8R$o{TNRF~#C7%94dnA?q5SzQz6oqv|G|4bHuNb; zpMdtoOEhz!`vq}@?Ql(=K-1SMkK%*%$ernkqvHsk;ZaDgZxN|0cjcjQ)ii1%=yJK{ zs>WLXth}{ombmi^Qvw(+giF>O(Fv|5Kw&uh9c#^#)CM0wG${5ROnlr2x(;W8p! z_0D9!HVjUA=`4{q>w;oZ>u7CaMeuvjn+6i=bbufy)9^O8`x zpHiWlOPAk}afyFx1)eu(QAbor7r78ND(g|-QMX}~Mk~R^999Hc3rOlwpCR1vXIplU z5j1y84F;YOaM?0_I^0~9nmQIX#pTkngVt#mpoLZQH_1yjRUHRTRYIxu{JCu4aec>V zI)=-K=F52XAFUEAWz>yY)n0r{z;*`j(A0Mu3vQ+p9*iL>nVx>Gc3Ai{!X6FpLmxYR zt)()08;rnvbjaxL(V`^>D^H3+^FzwX!Rk|oLHs$pG8x}sg3GliTX&p3wXxYvRi&m= z5{kEfycVW>i%vYTh^cfdbq3a~ykx6T`!T=j@*HO9N=0S?yBve-scwa30T@OLg}a}8 z6nIY>I<{ksq6*fGrV$a8cyj(jqiZe#>QEryBzAeosksOh8-3>kw)=1$&|fJT3>fsP zhyzA76E_Dt8|r1bl}{_fCKG+n44sf5Ui< z7$KEBn2}pVQ%c0oa`4PC(*2Y(VvoT%NWwLr(jqY+`xs($k0Kmnwt~!rv3*8ASSxGf zy{KMa3`w(!l?D##zj&TE`yl7$&T;syeQ%Q#Y|DMlJS~!X?6?{NHIJ7$G0kF=UGL52 zQPO|SBg8ZEv0Zr5s;brYc4p=zPJg*G*_|$Kkb$X|R8Uy1g|zkK+YwvLW}}{puKP$5 zdsjPk>z{;IQS~WH|IJoo$XA`Q|>Rm zIh_&H|08z0sTgr!O@5U;IOq*e*hYffvvO`x(+!gP$Bb0dR31?14*I?S-2$}(=X>|O zsC{X1A3Yx1`smXVb-+X&qgYJ}cK7bSSNN;?kwZVDaKAGG z;LV>RA4R&=+*%=y2C8e`kAkPE2G*dy(hV9#qN6U#qT8K_fXSM}s@ zndIn1InF0}zNso!O*F&lM?x8M;Rd|UzDqLFV6Drj5XjQC$uM+(3%-}denjTHa@ZQ4KYr}%|Hr$I*bNaa zYW$;?XbD{?{2j&xqI@xtp98LGUab!+7j#~O>4b`-@}OISTxYUD3-WkYubn@n*mhc= zTF8;?ED(0Oy>-@k=^Ti}-G^w#hL1H> zrP(MgtGB%<#Rl&{V?o?HfG(tME&;evT=0x`{{NXm^8ZB{UGe|7k0j(5PCUvye-|Pn zqn2`~pLHlF^(|?&hFDXE09W%GF5W%MIGx0Z@#K?On`N48O`M%7MhEBI)2BU)|eF1eJS?<`H|fa6)B4xXE!?;3LJ=Z33k>O zZ~XNmvOyWTZ4?6gk8_%@S$nnajPSNMD@osgm50Nnv$A0DUv+(aq+|-k+S;SA!z$;>^Zu!SfKvISVFY<_<89XUKh8+?a{o3Hylh14&mx%| zB5jPbu59=R)y*YKGW@Z8XK7tR_W|5r$!=f7D=OTY2;I*v*mzzPw*VT^J${3I@lJX& z{^T^>TRrg-A3A8Uf=rORU48{*B~RB3)B^1?aRCut;$BXVudI`)++OT5@CztrWn9&iDvu2UtRu&M7el#dk<)-Kg-=4W&8kme>C zhx0i8aYdmw*|^#KK?mb_)P>y=@CY=bJSBYdce@aPCF#~PEhX>OB;JfmzA}9G}`VNp1L-~&Z^bs z1fAr!N`5KB1ZqT&X-!f5WEs%(bK8Tu_aPiiMPGV&re(Ddc2v$#V0B!ffzw`Xe_*Z6VJg<*- z_Eq6>@)%h!QOk%XsYs)1rO=|byd09`HO!Kp{WvM`@S@%XLe<=5=5BGa?^2ie!@#u zV2fUDl>NJ>-f75%zHFG7CB!u)Ui*Mqvar{hH2%lf$(w9dTAO;i;;IYZvld(7k`l(# z>OS-grWaa$~kmw7e- diff --git a/assets/csi-1f769921.webp b/assets/csi-1f769921.webp deleted file mode 100644 index b023daa08c76c99f118ab2a73496af12f18ce0fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16296 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 diff --git a/assets/downloadtube-64b5de57.webp b/assets/downloadtube-64b5de57.webp deleted file mode 100644 index 03067d365db69e41465156fb3062bc17054fff4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64248 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 diff --git a/assets/facedetection-65dc0246.webp b/assets/facedetection-65dc0246.webp deleted file mode 100644 index 886e42ab488a15f73b8d9832571d83f1b347b83d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63702 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 diff --git a/assets/index-0ba1600b.js b/assets/index-0ba1600b.js deleted file mode 100644 index 31fed96..0000000 --- a/assets/index-0ba1600b.js +++ /dev/null @@ -1,3927 +0,0 @@ -(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(r){if(r.ep)return;r.ep=!0;const s=t(r);fetch(r.href,s)}})();function V_(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function MN(n){if(n.__esModule)return n;var e=n.default;if(typeof e=="function"){var t=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(n).forEach(function(i){var r=Object.getOwnPropertyDescriptor(n,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:function(){return n[i]}})}),t}var Qb={exports:{}},Km={},$b={exports:{}},Pt={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var th=Symbol.for("react.element"),wN=Symbol.for("react.portal"),EN=Symbol.for("react.fragment"),AN=Symbol.for("react.strict_mode"),TN=Symbol.for("react.profiler"),bN=Symbol.for("react.provider"),CN=Symbol.for("react.context"),PN=Symbol.for("react.forward_ref"),RN=Symbol.for("react.suspense"),LN=Symbol.for("react.memo"),IN=Symbol.for("react.lazy"),Lw=Symbol.iterator;function NN(n){return n===null||typeof n!="object"?null:(n=Lw&&n[Lw]||n["@@iterator"],typeof n=="function"?n:null)}var eC={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},tC=Object.assign,nC={};function Oc(n,e,t){this.props=n,this.context=e,this.refs=nC,this.updater=t||eC}Oc.prototype.isReactComponent={};Oc.prototype.setState=function(n,e){if(typeof n!="object"&&typeof n!="function"&&n!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,n,e,"setState")};Oc.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,"forceUpdate")};function iC(){}iC.prototype=Oc.prototype;function H_(n,e,t){this.props=n,this.context=e,this.refs=nC,this.updater=t||eC}var G_=H_.prototype=new iC;G_.constructor=H_;tC(G_,Oc.prototype);G_.isPureReactComponent=!0;var Iw=Array.isArray,rC=Object.prototype.hasOwnProperty,W_={current:null},sC={key:!0,ref:!0,__self:!0,__source:!0};function oC(n,e,t){var i,r={},s=null,o=null;if(e!=null)for(i in e.ref!==void 0&&(o=e.ref),e.key!==void 0&&(s=""+e.key),e)rC.call(e,i)&&!sC.hasOwnProperty(i)&&(r[i]=e[i]);var a=arguments.length-2;if(a===1)r.children=t;else if(1>>1,_e=k[$];if(0>>1;$r(ve,J))Te<_e&&0>r(we,ve)?(k[$]=we,k[Te]=J,$=Te):(k[$]=ve,k[oe]=J,$=oe);else if(Te<_e&&0>r(we,J))k[$]=we,k[Te]=J,$=Te;else break e}}return q}function r(k,q){var J=k.sortIndex-q.sortIndex;return J!==0?J:k.id-q.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;n.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var c=[],f=[],h=1,d=null,p=3,m=!1,y=!1,_=!1,x=typeof setTimeout=="function"?setTimeout:null,g=typeof clearTimeout=="function"?clearTimeout:null,S=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function M(k){for(var q=t(f);q!==null;){if(q.callback===null)i(f);else if(q.startTime<=k)i(f),q.sortIndex=q.expirationTime,e(c,q);else break;q=t(f)}}function A(k){if(_=!1,M(k),!y)if(t(c)!==null)y=!0,Q(R);else{var q=t(f);q!==null&&le(A,q.startTime-k)}}function R(k,q){y=!1,_&&(_=!1,g(I),I=-1),m=!0;var J=p;try{for(M(q),d=t(c);d!==null&&(!(d.expirationTime>q)||k&&!D());){var $=d.callback;if(typeof $=="function"){d.callback=null,p=d.priorityLevel;var _e=$(d.expirationTime<=q);q=n.unstable_now(),typeof _e=="function"?d.callback=_e:d===t(c)&&i(c),M(q)}else i(c);d=t(c)}if(d!==null)var De=!0;else{var oe=t(f);oe!==null&&le(A,oe.startTime-q),De=!1}return De}finally{d=null,p=J,m=!1}}var C=!1,L=null,I=-1,P=5,b=-1;function D(){return!(n.unstable_now()-bk||125$?(k.sortIndex=J,e(f,k),t(c)===null&&k===t(f)&&(_?(g(I),I=-1):_=!0,le(A,J-$))):(k.sortIndex=_e,e(c,k),y||m||(y=!0,Q(R))),k},n.unstable_shouldYield=D,n.unstable_wrapCallback=function(k){var q=p;return function(){var J=p;p=q;try{return k.apply(this,arguments)}finally{p=J}}}})(fC);uC.exports=fC;var WN=uC.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var jN=W,$i=WN;function be(n){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+n,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),By=Object.prototype.hasOwnProperty,XN=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Dw={},Uw={};function YN(n){return By.call(Uw,n)?!0:By.call(Dw,n)?!1:XN.test(n)?Uw[n]=!0:(Dw[n]=!0,!1)}function qN(n,e,t,i){if(t!==null&&t.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return i?!1:t!==null?!t.acceptsBooleans:(n=n.toLowerCase().slice(0,5),n!=="data-"&&n!=="aria-");default:return!1}}function KN(n,e,t,i){if(e===null||typeof e>"u"||qN(n,e,t,i))return!0;if(i)return!1;if(t!==null)switch(t.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function Ai(n,e,t,i,r,s,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=i,this.attributeNamespace=r,this.mustUseProperty=t,this.propertyName=n,this.type=e,this.sanitizeURL=s,this.removeEmptyString=o}var Xn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(n){Xn[n]=new Ai(n,0,!1,n,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(n){var e=n[0];Xn[e]=new Ai(e,1,!1,n[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(n){Xn[n]=new Ai(n,2,!1,n.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(n){Xn[n]=new Ai(n,2,!1,n,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(n){Xn[n]=new Ai(n,3,!1,n.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(n){Xn[n]=new Ai(n,3,!0,n,null,!1,!1)});["capture","download"].forEach(function(n){Xn[n]=new Ai(n,4,!1,n,null,!1,!1)});["cols","rows","size","span"].forEach(function(n){Xn[n]=new Ai(n,6,!1,n,null,!1,!1)});["rowSpan","start"].forEach(function(n){Xn[n]=new Ai(n,5,!1,n.toLowerCase(),null,!1,!1)});var X_=/[\-:]([a-z])/g;function Y_(n){return n[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(n){var e=n.replace(X_,Y_);Xn[e]=new Ai(e,1,!1,n,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(n){var e=n.replace(X_,Y_);Xn[e]=new Ai(e,1,!1,n,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(n){var e=n.replace(X_,Y_);Xn[e]=new Ai(e,1,!1,n,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(n){Xn[n]=new Ai(n,1,!1,n.toLowerCase(),null,!1,!1)});Xn.xlinkHref=new Ai("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(n){Xn[n]=new Ai(n,1,!1,n.toLowerCase(),null,!0,!0)});function q_(n,e,t,i){var r=Xn.hasOwnProperty(e)?Xn[e]:null;(r!==null?r.type!==0:i||!(2a||r[o]!==s[a]){var c=` -`+r[o].replace(" at new "," at ");return n.displayName&&c.includes("")&&(c=c.replace("",n.displayName)),c}while(1<=o&&0<=a);break}}}finally{ov=!1,Error.prepareStackTrace=t}return(n=n?n.displayName||n.name:"")?zu(n):""}function ZN(n){switch(n.tag){case 5:return zu(n.type);case 16:return zu("Lazy");case 13:return zu("Suspense");case 19:return zu("SuspenseList");case 0:case 2:case 15:return n=av(n.type,!1),n;case 11:return n=av(n.type.render,!1),n;case 1:return n=av(n.type,!0),n;default:return""}}function Wy(n){if(n==null)return null;if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case ql:return"Fragment";case Yl:return"Portal";case Vy:return"Profiler";case K_:return"StrictMode";case Hy:return"Suspense";case Gy:return"SuspenseList"}if(typeof n=="object")switch(n.$$typeof){case pC:return(n.displayName||"Context")+".Consumer";case dC:return(n._context.displayName||"Context")+".Provider";case Z_:var e=n.render;return n=n.displayName,n||(n=e.displayName||e.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case J_:return e=n.displayName||null,e!==null?e:Wy(n.type)||"Memo";case vo:e=n._payload,n=n._init;try{return Wy(n(e))}catch{}}return null}function JN(n){var e=n.type;switch(n.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return n=e.render,n=n.displayName||n.name||"",e.displayName||(n!==""?"ForwardRef("+n+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Wy(e);case 8:return e===K_?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function Uo(n){switch(typeof n){case"boolean":case"number":case"string":case"undefined":return n;case"object":return n;default:return""}}function gC(n){var e=n.type;return(n=n.nodeName)&&n.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function QN(n){var e=gC(n)?"checked":"value",t=Object.getOwnPropertyDescriptor(n.constructor.prototype,e),i=""+n[e];if(!n.hasOwnProperty(e)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var r=t.get,s=t.set;return Object.defineProperty(n,e,{configurable:!0,get:function(){return r.call(this)},set:function(o){i=""+o,s.call(this,o)}}),Object.defineProperty(n,e,{enumerable:t.enumerable}),{getValue:function(){return i},setValue:function(o){i=""+o},stopTracking:function(){n._valueTracker=null,delete n[e]}}}}function Ed(n){n._valueTracker||(n._valueTracker=QN(n))}function vC(n){if(!n)return!1;var e=n._valueTracker;if(!e)return!0;var t=e.getValue(),i="";return n&&(i=gC(n)?n.checked?"true":"false":n.value),n=i,n!==t?(e.setValue(n),!0):!1}function lm(n){if(n=n||(typeof document<"u"?document:void 0),typeof n>"u")return null;try{return n.activeElement||n.body}catch{return n.body}}function jy(n,e){var t=e.checked;return fn({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??n._wrapperState.initialChecked})}function kw(n,e){var t=e.defaultValue==null?"":e.defaultValue,i=e.checked!=null?e.checked:e.defaultChecked;t=Uo(e.value!=null?e.value:t),n._wrapperState={initialChecked:i,initialValue:t,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function yC(n,e){e=e.checked,e!=null&&q_(n,"checked",e,!1)}function Xy(n,e){yC(n,e);var t=Uo(e.value),i=e.type;if(t!=null)i==="number"?(t===0&&n.value===""||n.value!=t)&&(n.value=""+t):n.value!==""+t&&(n.value=""+t);else if(i==="submit"||i==="reset"){n.removeAttribute("value");return}e.hasOwnProperty("value")?Yy(n,e.type,t):e.hasOwnProperty("defaultValue")&&Yy(n,e.type,Uo(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(n.defaultChecked=!!e.defaultChecked)}function Fw(n,e,t){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var i=e.type;if(!(i!=="submit"&&i!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+n._wrapperState.initialValue,t||e===n.value||(n.value=e),n.defaultValue=e}t=n.name,t!==""&&(n.name=""),n.defaultChecked=!!n._wrapperState.initialChecked,t!==""&&(n.name=t)}function Yy(n,e,t){(e!=="number"||lm(n.ownerDocument)!==n)&&(t==null?n.defaultValue=""+n._wrapperState.initialValue:n.defaultValue!==""+t&&(n.defaultValue=""+t))}var Bu=Array.isArray;function gc(n,e,t,i){if(n=n.options,e){e={};for(var r=0;r"+e.valueOf().toString()+"",e=Ad.firstChild;n.firstChild;)n.removeChild(n.firstChild);for(;e.firstChild;)n.appendChild(e.firstChild)}});function hf(n,e){if(e){var t=n.firstChild;if(t&&t===n.lastChild&&t.nodeType===3){t.nodeValue=e;return}}n.textContent=e}var Xu={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},$N=["Webkit","ms","Moz","O"];Object.keys(Xu).forEach(function(n){$N.forEach(function(e){e=e+n.charAt(0).toUpperCase()+n.substring(1),Xu[e]=Xu[n]})});function MC(n,e,t){return e==null||typeof e=="boolean"||e===""?"":t||typeof e!="number"||e===0||Xu.hasOwnProperty(n)&&Xu[n]?(""+e).trim():e+"px"}function wC(n,e){n=n.style;for(var t in e)if(e.hasOwnProperty(t)){var i=t.indexOf("--")===0,r=MC(t,e[t],i);t==="float"&&(t="cssFloat"),i?n.setProperty(t,r):n[t]=r}}var eD=fn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Zy(n,e){if(e){if(eD[n]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(be(137,n));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(be(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(be(61))}if(e.style!=null&&typeof e.style!="object")throw Error(be(62))}}function Jy(n,e){if(n.indexOf("-")===-1)return typeof e.is=="string";switch(n){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Qy=null;function Q_(n){return n=n.target||n.srcElement||window,n.correspondingUseElement&&(n=n.correspondingUseElement),n.nodeType===3?n.parentNode:n}var $y=null,vc=null,yc=null;function Vw(n){if(n=rh(n)){if(typeof $y!="function")throw Error(be(280));var e=n.stateNode;e&&(e=tg(e),$y(n.stateNode,n.type,e))}}function EC(n){vc?yc?yc.push(n):yc=[n]:vc=n}function AC(){if(vc){var n=vc,e=yc;if(yc=vc=null,Vw(n),e)for(n=0;n>>=0,n===0?32:31-(fD(n)/hD|0)|0}var Td=64,bd=4194304;function Vu(n){switch(n&-n){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return n&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return n}}function hm(n,e){var t=n.pendingLanes;if(t===0)return 0;var i=0,r=n.suspendedLanes,s=n.pingedLanes,o=t&268435455;if(o!==0){var a=o&~r;a!==0?i=Vu(a):(s&=o,s!==0&&(i=Vu(s)))}else o=t&~r,o!==0?i=Vu(o):s!==0&&(i=Vu(s));if(i===0)return 0;if(e!==0&&e!==i&&!(e&r)&&(r=i&-i,s=e&-e,r>=s||r===16&&(s&4194240)!==0))return e;if(i&4&&(i|=t&16),e=n.entangledLanes,e!==0)for(n=n.entanglements,e&=i;0t;t++)e.push(n);return e}function nh(n,e,t){n.pendingLanes|=e,e!==536870912&&(n.suspendedLanes=0,n.pingedLanes=0),n=n.eventTimes,e=31-Ur(e),n[e]=t}function gD(n,e){var t=n.pendingLanes&~e;n.pendingLanes=e,n.suspendedLanes=0,n.pingedLanes=0,n.expiredLanes&=e,n.mutableReadLanes&=e,n.entangledLanes&=e,e=n.entanglements;var i=n.eventTimes;for(n=n.expirationTimes;0=qu),Zw=String.fromCharCode(32),Jw=!1;function jC(n,e){switch(n){case"keyup":return WD.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function XC(n){return n=n.detail,typeof n=="object"&&"data"in n?n.data:null}var Kl=!1;function XD(n,e){switch(n){case"compositionend":return XC(e);case"keypress":return e.which!==32?null:(Jw=!0,Zw);case"textInput":return n=e.data,n===Zw&&Jw?null:n;default:return null}}function YD(n,e){if(Kl)return n==="compositionend"||!o1&&jC(n,e)?(n=GC(),Gp=i1=wo=null,Kl=!1,n):null;switch(n){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:t,offset:e-n};n=i}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=tE(t)}}function ZC(n,e){return n&&e?n===e?!0:n&&n.nodeType===3?!1:e&&e.nodeType===3?ZC(n,e.parentNode):"contains"in n?n.contains(e):n.compareDocumentPosition?!!(n.compareDocumentPosition(e)&16):!1:!1}function JC(){for(var n=window,e=lm();e instanceof n.HTMLIFrameElement;){try{var t=typeof e.contentWindow.location.href=="string"}catch{t=!1}if(t)n=e.contentWindow;else break;e=lm(n.document)}return e}function a1(n){var e=n&&n.nodeName&&n.nodeName.toLowerCase();return e&&(e==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||e==="textarea"||n.contentEditable==="true")}function nU(n){var e=JC(),t=n.focusedElem,i=n.selectionRange;if(e!==t&&t&&t.ownerDocument&&ZC(t.ownerDocument.documentElement,t)){if(i!==null&&a1(t)){if(e=i.start,n=i.end,n===void 0&&(n=e),"selectionStart"in t)t.selectionStart=e,t.selectionEnd=Math.min(n,t.value.length);else if(n=(e=t.ownerDocument||document)&&e.defaultView||window,n.getSelection){n=n.getSelection();var r=t.textContent.length,s=Math.min(i.start,r);i=i.end===void 0?s:Math.min(i.end,r),!n.extend&&s>i&&(r=i,i=s,s=r),r=nE(t,s);var o=nE(t,i);r&&o&&(n.rangeCount!==1||n.anchorNode!==r.node||n.anchorOffset!==r.offset||n.focusNode!==o.node||n.focusOffset!==o.offset)&&(e=e.createRange(),e.setStart(r.node,r.offset),n.removeAllRanges(),s>i?(n.addRange(e),n.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),n.addRange(e)))}}for(e=[],n=t;n=n.parentNode;)n.nodeType===1&&e.push({element:n,left:n.scrollLeft,top:n.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Zl=null,sx=null,Zu=null,ox=!1;function iE(n,e,t){var i=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;ox||Zl==null||Zl!==lm(i)||(i=Zl,"selectionStart"in i&&a1(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Zu&&yf(Zu,i)||(Zu=i,i=mm(sx,"onSelect"),0$l||(n.current=hx[$l],hx[$l]=null,$l--)}function Kt(n,e){$l++,hx[$l]=n.current,n.current=e}var Oo={},li=Ho(Oo),Di=Ho(!1),Ga=Oo;function Ec(n,e){var t=n.type.contextTypes;if(!t)return Oo;var i=n.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===e)return i.__reactInternalMemoizedMaskedChildContext;var r={},s;for(s in t)r[s]=e[s];return i&&(n=n.stateNode,n.__reactInternalMemoizedUnmaskedChildContext=e,n.__reactInternalMemoizedMaskedChildContext=r),r}function Ui(n){return n=n.childContextTypes,n!=null}function vm(){Qt(Di),Qt(li)}function uE(n,e,t){if(li.current!==Oo)throw Error(be(168));Kt(li,e),Kt(Di,t)}function o2(n,e,t){var i=n.stateNode;if(e=e.childContextTypes,typeof i.getChildContext!="function")return t;i=i.getChildContext();for(var r in i)if(!(r in e))throw Error(be(108,JN(n)||"Unknown",r));return fn({},t,i)}function ym(n){return n=(n=n.stateNode)&&n.__reactInternalMemoizedMergedChildContext||Oo,Ga=li.current,Kt(li,n),Kt(Di,Di.current),!0}function fE(n,e,t){var i=n.stateNode;if(!i)throw Error(be(169));t?(n=o2(n,e,Ga),i.__reactInternalMemoizedMergedChildContext=n,Qt(Di),Qt(li),Kt(li,n)):Qt(Di),Kt(Di,t)}var As=null,ng=!1,Sv=!1;function a2(n){As===null?As=[n]:As.push(n)}function pU(n){ng=!0,a2(n)}function Go(){if(!Sv&&As!==null){Sv=!0;var n=0,e=Vt;try{var t=As;for(Vt=1;n>=o,r-=o,Ps=1<<32-Ur(e)+r|t<I?(P=L,L=null):P=L.sibling;var b=p(g,L,M[I],A);if(b===null){L===null&&(L=P);break}n&&L&&b.alternate===null&&e(g,L),S=s(b,S,I),C===null?R=b:C.sibling=b,C=b,L=P}if(I===M.length)return t(g,L),rn&&va(g,I),R;if(L===null){for(;II?(P=L,L=null):P=L.sibling;var D=p(g,L,b.value,A);if(D===null){L===null&&(L=P);break}n&&L&&D.alternate===null&&e(g,L),S=s(D,S,I),C===null?R=D:C.sibling=D,C=D,L=P}if(b.done)return t(g,L),rn&&va(g,I),R;if(L===null){for(;!b.done;I++,b=M.next())b=d(g,b.value,A),b!==null&&(S=s(b,S,I),C===null?R=b:C.sibling=b,C=b);return rn&&va(g,I),R}for(L=i(g,L);!b.done;I++,b=M.next())b=m(L,g,I,b.value,A),b!==null&&(n&&b.alternate!==null&&L.delete(b.key===null?I:b.key),S=s(b,S,I),C===null?R=b:C.sibling=b,C=b);return n&&L.forEach(function(j){return e(g,j)}),rn&&va(g,I),R}function x(g,S,M,A){if(typeof M=="object"&&M!==null&&M.type===ql&&M.key===null&&(M=M.props.children),typeof M=="object"&&M!==null){switch(M.$$typeof){case wd:e:{for(var R=M.key,C=S;C!==null;){if(C.key===R){if(R=M.type,R===ql){if(C.tag===7){t(g,C.sibling),S=r(C,M.props.children),S.return=g,g=S;break e}}else if(C.elementType===R||typeof R=="object"&&R!==null&&R.$$typeof===vo&&pE(R)===C.type){t(g,C.sibling),S=r(C,M.props),S.ref=vu(g,C,M),S.return=g,g=S;break e}t(g,C);break}else e(g,C);C=C.sibling}M.type===ql?(S=ka(M.props.children,g.mode,A,M.key),S.return=g,g=S):(A=Jp(M.type,M.key,M.props,null,g.mode,A),A.ref=vu(g,S,M),A.return=g,g=A)}return o(g);case Yl:e:{for(C=M.key;S!==null;){if(S.key===C)if(S.tag===4&&S.stateNode.containerInfo===M.containerInfo&&S.stateNode.implementation===M.implementation){t(g,S.sibling),S=r(S,M.children||[]),S.return=g,g=S;break e}else{t(g,S);break}else e(g,S);S=S.sibling}S=Pv(M,g.mode,A),S.return=g,g=S}return o(g);case vo:return C=M._init,x(g,S,C(M._payload),A)}if(Bu(M))return y(g,S,M,A);if(hu(M))return _(g,S,M,A);Dd(g,M)}return typeof M=="string"&&M!==""||typeof M=="number"?(M=""+M,S!==null&&S.tag===6?(t(g,S.sibling),S=r(S,M),S.return=g,g=S):(t(g,S),S=Cv(M,g.mode,A),S.return=g,g=S),o(g)):t(g,S)}return x}var Tc=f2(!0),h2=f2(!1),Sm=Ho(null),Mm=null,nc=null,f1=null;function h1(){f1=nc=Mm=null}function d1(n){var e=Sm.current;Qt(Sm),n._currentValue=e}function mx(n,e,t){for(;n!==null;){var i=n.alternate;if((n.childLanes&e)!==e?(n.childLanes|=e,i!==null&&(i.childLanes|=e)):i!==null&&(i.childLanes&e)!==e&&(i.childLanes|=e),n===t)break;n=n.return}}function _c(n,e){Mm=n,f1=nc=null,n=n.dependencies,n!==null&&n.firstContext!==null&&(n.lanes&e&&(Ni=!0),n.firstContext=null)}function _r(n){var e=n._currentValue;if(f1!==n)if(n={context:n,memoizedValue:e,next:null},nc===null){if(Mm===null)throw Error(be(308));nc=n,Mm.dependencies={lanes:0,firstContext:n}}else nc=nc.next=n;return e}var Ca=null;function p1(n){Ca===null?Ca=[n]:Ca.push(n)}function d2(n,e,t,i){var r=e.interleaved;return r===null?(t.next=t,p1(e)):(t.next=r.next,r.next=t),e.interleaved=t,Bs(n,i)}function Bs(n,e){n.lanes|=e;var t=n.alternate;for(t!==null&&(t.lanes|=e),t=n,n=n.return;n!==null;)n.childLanes|=e,t=n.alternate,t!==null&&(t.childLanes|=e),t=n,n=n.return;return t.tag===3?t.stateNode:null}var yo=!1;function m1(n){n.updateQueue={baseState:n.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function p2(n,e){n=n.updateQueue,e.updateQueue===n&&(e.updateQueue={baseState:n.baseState,firstBaseUpdate:n.firstBaseUpdate,lastBaseUpdate:n.lastBaseUpdate,shared:n.shared,effects:n.effects})}function Ns(n,e){return{eventTime:n,lane:e,tag:0,payload:null,callback:null,next:null}}function Po(n,e,t){var i=n.updateQueue;if(i===null)return null;if(i=i.shared,Dt&2){var r=i.pending;return r===null?e.next=e:(e.next=r.next,r.next=e),i.pending=e,Bs(n,t)}return r=i.interleaved,r===null?(e.next=e,p1(i)):(e.next=r.next,r.next=e),i.interleaved=e,Bs(n,t)}function jp(n,e,t){if(e=e.updateQueue,e!==null&&(e=e.shared,(t&4194240)!==0)){var i=e.lanes;i&=n.pendingLanes,t|=i,e.lanes=t,e1(n,t)}}function mE(n,e){var t=n.updateQueue,i=n.alternate;if(i!==null&&(i=i.updateQueue,t===i)){var r=null,s=null;if(t=t.firstBaseUpdate,t!==null){do{var o={eventTime:t.eventTime,lane:t.lane,tag:t.tag,payload:t.payload,callback:t.callback,next:null};s===null?r=s=o:s=s.next=o,t=t.next}while(t!==null);s===null?r=s=e:s=s.next=e}else r=s=e;t={baseState:i.baseState,firstBaseUpdate:r,lastBaseUpdate:s,shared:i.shared,effects:i.effects},n.updateQueue=t;return}n=t.lastBaseUpdate,n===null?t.firstBaseUpdate=e:n.next=e,t.lastBaseUpdate=e}function wm(n,e,t,i){var r=n.updateQueue;yo=!1;var s=r.firstBaseUpdate,o=r.lastBaseUpdate,a=r.shared.pending;if(a!==null){r.shared.pending=null;var c=a,f=c.next;c.next=null,o===null?s=f:o.next=f,o=c;var h=n.alternate;h!==null&&(h=h.updateQueue,a=h.lastBaseUpdate,a!==o&&(a===null?h.firstBaseUpdate=f:a.next=f,h.lastBaseUpdate=c))}if(s!==null){var d=r.baseState;o=0,h=f=c=null,a=s;do{var p=a.lane,m=a.eventTime;if((i&p)===p){h!==null&&(h=h.next={eventTime:m,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var y=n,_=a;switch(p=e,m=t,_.tag){case 1:if(y=_.payload,typeof y=="function"){d=y.call(m,d,p);break e}d=y;break e;case 3:y.flags=y.flags&-65537|128;case 0:if(y=_.payload,p=typeof y=="function"?y.call(m,d,p):y,p==null)break e;d=fn({},d,p);break e;case 2:yo=!0}}a.callback!==null&&a.lane!==0&&(n.flags|=64,p=r.effects,p===null?r.effects=[a]:p.push(a))}else m={eventTime:m,lane:p,tag:a.tag,payload:a.payload,callback:a.callback,next:null},h===null?(f=h=m,c=d):h=h.next=m,o|=p;if(a=a.next,a===null){if(a=r.shared.pending,a===null)break;p=a,a=p.next,p.next=null,r.lastBaseUpdate=p,r.shared.pending=null}}while(1);if(h===null&&(c=d),r.baseState=c,r.firstBaseUpdate=f,r.lastBaseUpdate=h,e=r.shared.interleaved,e!==null){r=e;do o|=r.lane,r=r.next;while(r!==e)}else s===null&&(r.shared.lanes=0);Xa|=o,n.lanes=o,n.memoizedState=d}}function gE(n,e,t){if(n=e.effects,e.effects=null,n!==null)for(e=0;et?t:4,n(!0);var i=wv.transition;wv.transition={};try{n(!1),e()}finally{Vt=t,wv.transition=i}}function L2(){return Sr().memoizedState}function yU(n,e,t){var i=Lo(n);if(t={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null},I2(n))N2(e,t);else if(t=d2(n,e,t,i),t!==null){var r=_i();Or(t,n,i,r),D2(t,e,i)}}function xU(n,e,t){var i=Lo(n),r={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null};if(I2(n))N2(e,r);else{var s=n.alternate;if(n.lanes===0&&(s===null||s.lanes===0)&&(s=e.lastRenderedReducer,s!==null))try{var o=e.lastRenderedState,a=s(o,t);if(r.hasEagerState=!0,r.eagerState=a,kr(a,o)){var c=e.interleaved;c===null?(r.next=r,p1(e)):(r.next=c.next,c.next=r),e.interleaved=r;return}}catch{}finally{}t=d2(n,e,r,i),t!==null&&(r=_i(),Or(t,n,i,r),D2(t,e,i))}}function I2(n){var e=n.alternate;return n===un||e!==null&&e===un}function N2(n,e){Ju=Am=!0;var t=n.pending;t===null?e.next=e:(e.next=t.next,t.next=e),n.pending=e}function D2(n,e,t){if(t&4194240){var i=e.lanes;i&=n.pendingLanes,t|=i,e.lanes=t,e1(n,t)}}var Tm={readContext:_r,useCallback:Qn,useContext:Qn,useEffect:Qn,useImperativeHandle:Qn,useInsertionEffect:Qn,useLayoutEffect:Qn,useMemo:Qn,useReducer:Qn,useRef:Qn,useState:Qn,useDebugValue:Qn,useDeferredValue:Qn,useTransition:Qn,useMutableSource:Qn,useSyncExternalStore:Qn,useId:Qn,unstable_isNewReconciler:!1},_U={readContext:_r,useCallback:function(n,e){return Qr().memoizedState=[n,e===void 0?null:e],n},useContext:_r,useEffect:yE,useImperativeHandle:function(n,e,t){return t=t!=null?t.concat([n]):null,Yp(4194308,4,T2.bind(null,e,n),t)},useLayoutEffect:function(n,e){return Yp(4194308,4,n,e)},useInsertionEffect:function(n,e){return Yp(4,2,n,e)},useMemo:function(n,e){var t=Qr();return e=e===void 0?null:e,n=n(),t.memoizedState=[n,e],n},useReducer:function(n,e,t){var i=Qr();return e=t!==void 0?t(e):e,i.memoizedState=i.baseState=e,n={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:e},i.queue=n,n=n.dispatch=yU.bind(null,un,n),[i.memoizedState,n]},useRef:function(n){var e=Qr();return n={current:n},e.memoizedState=n},useState:vE,useDebugValue:w1,useDeferredValue:function(n){return Qr().memoizedState=n},useTransition:function(){var n=vE(!1),e=n[0];return n=vU.bind(null,n[1]),Qr().memoizedState=n,[e,n]},useMutableSource:function(){},useSyncExternalStore:function(n,e,t){var i=un,r=Qr();if(rn){if(t===void 0)throw Error(be(407));t=t()}else{if(t=e(),Hn===null)throw Error(be(349));ja&30||y2(i,e,t)}r.memoizedState=t;var s={value:t,getSnapshot:e};return r.queue=s,yE(_2.bind(null,i,s,n),[n]),i.flags|=2048,Tf(9,x2.bind(null,i,s,t,e),void 0,null),t},useId:function(){var n=Qr(),e=Hn.identifierPrefix;if(rn){var t=Rs,i=Ps;t=(i&~(1<<32-Ur(i)-1)).toString(32)+t,e=":"+e+"R"+t,t=Ef++,0<\/script>",n=n.removeChild(n.firstChild)):typeof i.is=="string"?n=o.createElement(t,{is:i.is}):(n=o.createElement(t),t==="select"&&(o=n,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):n=o.createElementNS(n,t),n[es]=e,n[Sf]=i,W2(n,e,!1,!1),e.stateNode=n;e:{switch(o=Jy(t,i),t){case"dialog":Jt("cancel",n),Jt("close",n),r=i;break;case"iframe":case"object":case"embed":Jt("load",n),r=i;break;case"video":case"audio":for(r=0;rPc&&(e.flags|=128,i=!0,yu(s,!1),e.lanes=4194304)}else{if(!i)if(n=Em(o),n!==null){if(e.flags|=128,i=!0,t=n.updateQueue,t!==null&&(e.updateQueue=t,e.flags|=4),yu(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!rn)return $n(e),null}else 2*xn()-s.renderingStartTime>Pc&&t!==1073741824&&(e.flags|=128,i=!0,yu(s,!1),e.lanes=4194304);s.isBackwards?(o.sibling=e.child,e.child=o):(t=s.last,t!==null?t.sibling=o:e.child=o,s.last=o)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=xn(),e.sibling=null,t=an.current,Kt(an,i?t&1|2:t&1),e):($n(e),null);case 22:case 23:return P1(),i=e.memoizedState!==null,n!==null&&n.memoizedState!==null!==i&&(e.flags|=8192),i&&e.mode&1?Xi&1073741824&&($n(e),e.subtreeFlags&6&&(e.flags|=8192)):$n(e),null;case 24:return null;case 25:return null}throw Error(be(156,e.tag))}function CU(n,e){switch(c1(e),e.tag){case 1:return Ui(e.type)&&vm(),n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 3:return bc(),Qt(Di),Qt(li),y1(),n=e.flags,n&65536&&!(n&128)?(e.flags=n&-65537|128,e):null;case 5:return v1(e),null;case 13:if(Qt(an),n=e.memoizedState,n!==null&&n.dehydrated!==null){if(e.alternate===null)throw Error(be(340));Ac()}return n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 19:return Qt(an),null;case 4:return bc(),null;case 10:return d1(e.type._context),null;case 22:case 23:return P1(),null;case 24:return null;default:return null}}var Od=!1,ri=!1,PU=typeof WeakSet=="function"?WeakSet:Set,Ye=null;function ic(n,e){var t=n.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(i){pn(n,e,i)}else t.current=null}function Ex(n,e,t){try{t()}catch(i){pn(n,e,i)}}var PE=!1;function RU(n,e){if(ax=dm,n=JC(),a1(n)){if("selectionStart"in n)var t={start:n.selectionStart,end:n.selectionEnd};else e:{t=(t=n.ownerDocument)&&t.defaultView||window;var i=t.getSelection&&t.getSelection();if(i&&i.rangeCount!==0){t=i.anchorNode;var r=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{t.nodeType,s.nodeType}catch{t=null;break e}var o=0,a=-1,c=-1,f=0,h=0,d=n,p=null;t:for(;;){for(var m;d!==t||r!==0&&d.nodeType!==3||(a=o+r),d!==s||i!==0&&d.nodeType!==3||(c=o+i),d.nodeType===3&&(o+=d.nodeValue.length),(m=d.firstChild)!==null;)p=d,d=m;for(;;){if(d===n)break t;if(p===t&&++f===r&&(a=o),p===s&&++h===i&&(c=o),(m=d.nextSibling)!==null)break;d=p,p=d.parentNode}d=m}t=a===-1||c===-1?null:{start:a,end:c}}else t=null}t=t||{start:0,end:0}}else t=null;for(lx={focusedElem:n,selectionRange:t},dm=!1,Ye=e;Ye!==null;)if(e=Ye,n=e.child,(e.subtreeFlags&1028)!==0&&n!==null)n.return=e,Ye=n;else for(;Ye!==null;){e=Ye;try{var y=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var _=y.memoizedProps,x=y.memoizedState,g=e.stateNode,S=g.getSnapshotBeforeUpdate(e.elementType===e.type?_:Cr(e.type,_),x);g.__reactInternalSnapshotBeforeUpdate=S}break;case 3:var M=e.stateNode.containerInfo;M.nodeType===1?M.textContent="":M.nodeType===9&&M.documentElement&&M.removeChild(M.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(be(163))}}catch(A){pn(e,e.return,A)}if(n=e.sibling,n!==null){n.return=e.return,Ye=n;break}Ye=e.return}return y=PE,PE=!1,y}function Qu(n,e,t){var i=e.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var r=i=i.next;do{if((r.tag&n)===n){var s=r.destroy;r.destroy=void 0,s!==void 0&&Ex(e,t,s)}r=r.next}while(r!==i)}}function sg(n,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var t=e=e.next;do{if((t.tag&n)===n){var i=t.create;t.destroy=i()}t=t.next}while(t!==e)}}function Ax(n){var e=n.ref;if(e!==null){var t=n.stateNode;switch(n.tag){case 5:n=t;break;default:n=t}typeof e=="function"?e(n):e.current=n}}function Y2(n){var e=n.alternate;e!==null&&(n.alternate=null,Y2(e)),n.child=null,n.deletions=null,n.sibling=null,n.tag===5&&(e=n.stateNode,e!==null&&(delete e[es],delete e[Sf],delete e[fx],delete e[hU],delete e[dU])),n.stateNode=null,n.return=null,n.dependencies=null,n.memoizedProps=null,n.memoizedState=null,n.pendingProps=null,n.stateNode=null,n.updateQueue=null}function q2(n){return n.tag===5||n.tag===3||n.tag===4}function RE(n){e:for(;;){for(;n.sibling===null;){if(n.return===null||q2(n.return))return null;n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue e;n.child.return=n,n=n.child}if(!(n.flags&2))return n.stateNode}}function Tx(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.nodeType===8?t.parentNode.insertBefore(n,e):t.insertBefore(n,e):(t.nodeType===8?(e=t.parentNode,e.insertBefore(n,t)):(e=t,e.appendChild(n)),t=t._reactRootContainer,t!=null||e.onclick!==null||(e.onclick=gm));else if(i!==4&&(n=n.child,n!==null))for(Tx(n,e,t),n=n.sibling;n!==null;)Tx(n,e,t),n=n.sibling}function bx(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.insertBefore(n,e):t.appendChild(n);else if(i!==4&&(n=n.child,n!==null))for(bx(n,e,t),n=n.sibling;n!==null;)bx(n,e,t),n=n.sibling}var Wn=null,Rr=!1;function ro(n,e,t){for(t=t.child;t!==null;)K2(n,e,t),t=t.sibling}function K2(n,e,t){if(is&&typeof is.onCommitFiberUnmount=="function")try{is.onCommitFiberUnmount(Jm,t)}catch{}switch(t.tag){case 5:ri||ic(t,e);case 6:var i=Wn,r=Rr;Wn=null,ro(n,e,t),Wn=i,Rr=r,Wn!==null&&(Rr?(n=Wn,t=t.stateNode,n.nodeType===8?n.parentNode.removeChild(t):n.removeChild(t)):Wn.removeChild(t.stateNode));break;case 18:Wn!==null&&(Rr?(n=Wn,t=t.stateNode,n.nodeType===8?_v(n.parentNode,t):n.nodeType===1&&_v(n,t),gf(n)):_v(Wn,t.stateNode));break;case 4:i=Wn,r=Rr,Wn=t.stateNode.containerInfo,Rr=!0,ro(n,e,t),Wn=i,Rr=r;break;case 0:case 11:case 14:case 15:if(!ri&&(i=t.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){r=i=i.next;do{var s=r,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&Ex(t,e,o),r=r.next}while(r!==i)}ro(n,e,t);break;case 1:if(!ri&&(ic(t,e),i=t.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=t.memoizedProps,i.state=t.memoizedState,i.componentWillUnmount()}catch(a){pn(t,e,a)}ro(n,e,t);break;case 21:ro(n,e,t);break;case 22:t.mode&1?(ri=(i=ri)||t.memoizedState!==null,ro(n,e,t),ri=i):ro(n,e,t);break;default:ro(n,e,t)}}function LE(n){var e=n.updateQueue;if(e!==null){n.updateQueue=null;var t=n.stateNode;t===null&&(t=n.stateNode=new PU),e.forEach(function(i){var r=zU.bind(null,n,i);t.has(i)||(t.add(i),i.then(r,r))})}}function Er(n,e){var t=e.deletions;if(t!==null)for(var i=0;ir&&(r=o),i&=~s}if(i=r,i=xn()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*IU(i/1960))-i,10n?16:n,Eo===null)var i=!1;else{if(n=Eo,Eo=null,Pm=0,Dt&6)throw Error(be(331));var r=Dt;for(Dt|=4,Ye=n.current;Ye!==null;){var s=Ye,o=s.child;if(Ye.flags&16){var a=s.deletions;if(a!==null){for(var c=0;cxn()-b1?Oa(n,0):T1|=t),Oi(n,e)}function iP(n,e){e===0&&(n.mode&1?(e=bd,bd<<=1,!(bd&130023424)&&(bd=4194304)):e=1);var t=_i();n=Bs(n,e),n!==null&&(nh(n,e,t),Oi(n,t))}function FU(n){var e=n.memoizedState,t=0;e!==null&&(t=e.retryLane),iP(n,t)}function zU(n,e){var t=0;switch(n.tag){case 13:var i=n.stateNode,r=n.memoizedState;r!==null&&(t=r.retryLane);break;case 19:i=n.stateNode;break;default:throw Error(be(314))}i!==null&&i.delete(e),iP(n,t)}var rP;rP=function(n,e,t){if(n!==null)if(n.memoizedProps!==e.pendingProps||Di.current)Ni=!0;else{if(!(n.lanes&t)&&!(e.flags&128))return Ni=!1,TU(n,e,t);Ni=!!(n.flags&131072)}else Ni=!1,rn&&e.flags&1048576&&l2(e,_m,e.index);switch(e.lanes=0,e.tag){case 2:var i=e.type;qp(n,e),n=e.pendingProps;var r=Ec(e,li.current);_c(e,t),r=_1(null,e,i,n,r,t);var s=S1();return e.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Ui(i)?(s=!0,ym(e)):s=!1,e.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,m1(e),r.updater=rg,e.stateNode=r,r._reactInternals=e,vx(e,i,n,t),e=_x(null,e,i,!0,s,t)):(e.tag=0,rn&&s&&l1(e),vi(null,e,r,t),e=e.child),e;case 16:i=e.elementType;e:{switch(qp(n,e),n=e.pendingProps,r=i._init,i=r(i._payload),e.type=i,r=e.tag=VU(i),n=Cr(i,n),r){case 0:e=xx(null,e,i,n,t);break e;case 1:e=TE(null,e,i,n,t);break e;case 11:e=EE(null,e,i,n,t);break e;case 14:e=AE(null,e,i,Cr(i.type,n),t);break e}throw Error(be(306,i,""))}return e;case 0:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:Cr(i,r),xx(n,e,i,r,t);case 1:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:Cr(i,r),TE(n,e,i,r,t);case 3:e:{if(V2(e),n===null)throw Error(be(387));i=e.pendingProps,s=e.memoizedState,r=s.element,p2(n,e),wm(e,i,null,t);var o=e.memoizedState;if(i=o.element,s.isDehydrated)if(s={element:i,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},e.updateQueue.baseState=s,e.memoizedState=s,e.flags&256){r=Cc(Error(be(423)),e),e=bE(n,e,i,t,r);break e}else if(i!==r){r=Cc(Error(be(424)),e),e=bE(n,e,i,t,r);break e}else for(Ki=Co(e.stateNode.containerInfo.firstChild),Ji=e,rn=!0,Lr=null,t=h2(e,null,i,t),e.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(Ac(),i===r){e=Vs(n,e,t);break e}vi(n,e,i,t)}e=e.child}return e;case 5:return m2(e),n===null&&px(e),i=e.type,r=e.pendingProps,s=n!==null?n.memoizedProps:null,o=r.children,cx(i,r)?o=null:s!==null&&cx(i,s)&&(e.flags|=32),B2(n,e),vi(n,e,o,t),e.child;case 6:return n===null&&px(e),null;case 13:return H2(n,e,t);case 4:return g1(e,e.stateNode.containerInfo),i=e.pendingProps,n===null?e.child=Tc(e,null,i,t):vi(n,e,i,t),e.child;case 11:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:Cr(i,r),EE(n,e,i,r,t);case 7:return vi(n,e,e.pendingProps,t),e.child;case 8:return vi(n,e,e.pendingProps.children,t),e.child;case 12:return vi(n,e,e.pendingProps.children,t),e.child;case 10:e:{if(i=e.type._context,r=e.pendingProps,s=e.memoizedProps,o=r.value,Kt(Sm,i._currentValue),i._currentValue=o,s!==null)if(kr(s.value,o)){if(s.children===r.children&&!Di.current){e=Vs(n,e,t);break e}}else for(s=e.child,s!==null&&(s.return=e);s!==null;){var a=s.dependencies;if(a!==null){o=s.child;for(var c=a.firstContext;c!==null;){if(c.context===i){if(s.tag===1){c=Ns(-1,t&-t),c.tag=2;var f=s.updateQueue;if(f!==null){f=f.shared;var h=f.pending;h===null?c.next=c:(c.next=h.next,h.next=c),f.pending=c}}s.lanes|=t,c=s.alternate,c!==null&&(c.lanes|=t),mx(s.return,t,e),a.lanes|=t;break}c=c.next}}else if(s.tag===10)o=s.type===e.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(be(341));o.lanes|=t,a=o.alternate,a!==null&&(a.lanes|=t),mx(o,t,e),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===e){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}vi(n,e,r.children,t),e=e.child}return e;case 9:return r=e.type,i=e.pendingProps.children,_c(e,t),r=_r(r),i=i(r),e.flags|=1,vi(n,e,i,t),e.child;case 14:return i=e.type,r=Cr(i,e.pendingProps),r=Cr(i.type,r),AE(n,e,i,r,t);case 15:return F2(n,e,e.type,e.pendingProps,t);case 17:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:Cr(i,r),qp(n,e),e.tag=1,Ui(i)?(n=!0,ym(e)):n=!1,_c(e,t),U2(e,i,r),vx(e,i,r,t),_x(null,e,i,!0,n,t);case 19:return G2(n,e,t);case 22:return z2(n,e,t)}throw Error(be(156,e.tag))};function sP(n,e){return IC(n,e)}function BU(n,e,t,i){this.tag=n,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function vr(n,e,t,i){return new BU(n,e,t,i)}function L1(n){return n=n.prototype,!(!n||!n.isReactComponent)}function VU(n){if(typeof n=="function")return L1(n)?1:0;if(n!=null){if(n=n.$$typeof,n===Z_)return 11;if(n===J_)return 14}return 2}function Io(n,e){var t=n.alternate;return t===null?(t=vr(n.tag,e,n.key,n.mode),t.elementType=n.elementType,t.type=n.type,t.stateNode=n.stateNode,t.alternate=n,n.alternate=t):(t.pendingProps=e,t.type=n.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=n.flags&14680064,t.childLanes=n.childLanes,t.lanes=n.lanes,t.child=n.child,t.memoizedProps=n.memoizedProps,t.memoizedState=n.memoizedState,t.updateQueue=n.updateQueue,e=n.dependencies,t.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},t.sibling=n.sibling,t.index=n.index,t.ref=n.ref,t}function Jp(n,e,t,i,r,s){var o=2;if(i=n,typeof n=="function")L1(n)&&(o=1);else if(typeof n=="string")o=5;else e:switch(n){case ql:return ka(t.children,r,s,e);case K_:o=8,r|=8;break;case Vy:return n=vr(12,t,e,r|2),n.elementType=Vy,n.lanes=s,n;case Hy:return n=vr(13,t,e,r),n.elementType=Hy,n.lanes=s,n;case Gy:return n=vr(19,t,e,r),n.elementType=Gy,n.lanes=s,n;case mC:return ag(t,r,s,e);default:if(typeof n=="object"&&n!==null)switch(n.$$typeof){case dC:o=10;break e;case pC:o=9;break e;case Z_:o=11;break e;case J_:o=14;break e;case vo:o=16,i=null;break e}throw Error(be(130,n==null?n:typeof n,""))}return e=vr(o,t,e,r),e.elementType=n,e.type=i,e.lanes=s,e}function ka(n,e,t,i){return n=vr(7,n,i,e),n.lanes=t,n}function ag(n,e,t,i){return n=vr(22,n,i,e),n.elementType=mC,n.lanes=t,n.stateNode={isHidden:!1},n}function Cv(n,e,t){return n=vr(6,n,null,e),n.lanes=t,n}function Pv(n,e,t){return e=vr(4,n.children!==null?n.children:[],n.key,e),e.lanes=t,e.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},e}function HU(n,e,t,i,r){this.tag=e,this.containerInfo=n,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=cv(0),this.expirationTimes=cv(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=cv(0),this.identifierPrefix=i,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function I1(n,e,t,i,r,s,o,a,c){return n=new HU(n,e,t,a,c),e===1?(e=1,s===!0&&(e|=8)):e=0,s=vr(3,null,null,e),n.current=s,s.stateNode=n,s.memoizedState={element:i,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},m1(s),n}function GU(n,e,t){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(cP)}catch(n){console.error(n)}}cP(),cC.exports=tr;var qU=cC.exports,uP,zE=qU;uP=zy.createRoot=zE.createRoot,zy.hydrateRoot=zE.hydrateRoot;const ci={paddingX:"sm:px-16 px-6",paddingY:"sm:py-16 py-6",padding:"sm:px-16 px-6 sm:py-16 py-10",heroHeadText:"font-black text-[#373737] lg:text-[80px] sm:text-[60px] xs:text-[50px] text-[40px] lg:leading-[98px] mt-2",heroSubText:"text-[#dfd9ff] font-medium lg:text-[30px] sm:text-[26px] xs:text-[20px] text-[16px] lg:leading-[40px]",sectionHeadText:"text-black font-black md:text-[60px] sm:text-[50px] xs:text-[40px] text-[30px]",sectionSubText:"sm:text-[18px] text-[14px] text-secondary uppercase tracking-wider"},fP=W.createContext({transformPagePoint:n=>n,isStatic:!1,reducedMotion:"never"}),hg=W.createContext({}),dg=W.createContext(null),pg=typeof document<"u",O1=pg?W.useLayoutEffect:W.useEffect,hP=W.createContext({strict:!1}),k1=n=>n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),KU="framerAppearId",dP="data-"+k1(KU);function ZU(n,e,t,i){const{visualElement:r}=W.useContext(hg),s=W.useContext(hP),o=W.useContext(dg),a=W.useContext(fP).reducedMotion,c=W.useRef();i=i||s.renderer,!c.current&&i&&(c.current=i(n,{visualState:e,parent:r,props:t,presenceContext:o,blockInitialAnimation:o?o.initial===!1:!1,reducedMotionConfig:a}));const f=c.current;W.useInsertionEffect(()=>{f&&f.update(t,o)});const h=W.useRef(!!(t[dP]&&!window.HandoffComplete));return O1(()=>{f&&(f.render(),h.current&&f.animationState&&f.animationState.animateChanges())}),W.useEffect(()=>{f&&(f.updateFeatures(),!h.current&&f.animationState&&f.animationState.animateChanges(),h.current&&(h.current=!1,window.HandoffComplete=!0))}),f}function sc(n){return n&&typeof n=="object"&&Object.prototype.hasOwnProperty.call(n,"current")}function JU(n,e,t){return W.useCallback(i=>{i&&n.mount&&n.mount(i),e&&(i?e.mount(i):e.unmount()),t&&(typeof t=="function"?t(i):sc(t)&&(t.current=i))},[e])}function Cf(n){return typeof n=="string"||Array.isArray(n)}function mg(n){return n!==null&&typeof n=="object"&&typeof n.start=="function"}const F1=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],z1=["initial",...F1];function gg(n){return mg(n.animate)||z1.some(e=>Cf(n[e]))}function pP(n){return!!(gg(n)||n.variants)}function QU(n,e){if(gg(n)){const{initial:t,animate:i}=n;return{initial:t===!1||Cf(t)?t:void 0,animate:Cf(i)?i:void 0}}return n.inherit!==!1?e:{}}function $U(n){const{initial:e,animate:t}=QU(n,W.useContext(hg));return W.useMemo(()=>({initial:e,animate:t}),[BE(e),BE(t)])}function BE(n){return Array.isArray(n)?n.join(" "):n}const VE={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},Pf={};for(const n in VE)Pf[n]={isEnabled:e=>VE[n].some(t=>!!e[t])};function eO(n){for(const e in n)Pf[e]={...Pf[e],...n[e]}}const B1=W.createContext({}),mP=W.createContext({}),tO=Symbol.for("motionComponentSymbol");function nO({preloadedFeatures:n,createVisualElement:e,useRender:t,useVisualState:i,Component:r}){n&&eO(n);function s(a,c){let f;const h={...W.useContext(fP),...a,layoutId:iO(a)},{isStatic:d}=h,p=$U(a),m=i(a,d);if(!d&&pg){p.visualElement=ZU(r,m,h,e);const y=W.useContext(mP),_=W.useContext(hP).strict;p.visualElement&&(f=p.visualElement.loadFeatures(h,_,n,y))}return W.createElement(hg.Provider,{value:p},f&&p.visualElement?W.createElement(f,{visualElement:p.visualElement,...h}):null,t(r,a,JU(m,p.visualElement,c),m,d,p.visualElement))}const o=W.forwardRef(s);return o[tO]=r,o}function iO({layoutId:n}){const e=W.useContext(B1).id;return e&&n!==void 0?e+"-"+n:n}function rO(n){function e(i,r={}){return nO(n(i,r))}if(typeof Proxy>"u")return e;const t=new Map;return new Proxy(e,{get:(i,r)=>(t.has(r)||t.set(r,e(r)),t.get(r))})}const sO=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function V1(n){return typeof n!="string"||n.includes("-")?!1:!!(sO.indexOf(n)>-1||/[A-Z]/.test(n))}const Im={};function oO(n){Object.assign(Im,n)}const oh=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],tl=new Set(oh);function gP(n,{layout:e,layoutId:t}){return tl.has(n)||n.startsWith("origin")||(e||t!==void 0)&&(!!Im[n]||n==="opacity")}const ki=n=>!!(n&&n.getVelocity),aO={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},lO=oh.length;function cO(n,{enableHardwareAcceleration:e=!0,allowTransformNone:t=!0},i,r){let s="";for(let o=0;oe=>typeof e=="string"&&e.startsWith(n),yP=vP("--"),Ix=vP("var(--"),uO=/var\s*\(\s*--[\w-]+(\s*,\s*(?:(?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)+)?\s*\)/g,fO=(n,e)=>e&&typeof n=="number"?e.transform(n):n,ko=(n,e,t)=>Math.min(Math.max(t,n),e),nl={test:n=>typeof n=="number",parse:parseFloat,transform:n=>n},tf={...nl,transform:n=>ko(0,1,n)},zd={...nl,default:1},nf=n=>Math.round(n*1e5)/1e5,vg=/(-)?([\d]*\.?[\d])+/g,xP=/(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,hO=/^(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function ah(n){return typeof n=="string"}const lh=n=>({test:e=>ah(e)&&e.endsWith(n)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${n}`}),go=lh("deg"),ss=lh("%"),ht=lh("px"),dO=lh("vh"),pO=lh("vw"),HE={...ss,parse:n=>ss.parse(n)/100,transform:n=>ss.transform(n*100)},GE={...nl,transform:Math.round},_P={borderWidth:ht,borderTopWidth:ht,borderRightWidth:ht,borderBottomWidth:ht,borderLeftWidth:ht,borderRadius:ht,radius:ht,borderTopLeftRadius:ht,borderTopRightRadius:ht,borderBottomRightRadius:ht,borderBottomLeftRadius:ht,width:ht,maxWidth:ht,height:ht,maxHeight:ht,size:ht,top:ht,right:ht,bottom:ht,left:ht,padding:ht,paddingTop:ht,paddingRight:ht,paddingBottom:ht,paddingLeft:ht,margin:ht,marginTop:ht,marginRight:ht,marginBottom:ht,marginLeft:ht,rotate:go,rotateX:go,rotateY:go,rotateZ:go,scale:zd,scaleX:zd,scaleY:zd,scaleZ:zd,skew:go,skewX:go,skewY:go,distance:ht,translateX:ht,translateY:ht,translateZ:ht,x:ht,y:ht,z:ht,perspective:ht,transformPerspective:ht,opacity:tf,originX:HE,originY:HE,originZ:ht,zIndex:GE,fillOpacity:tf,strokeOpacity:tf,numOctaves:GE};function H1(n,e,t,i){const{style:r,vars:s,transform:o,transformOrigin:a}=n;let c=!1,f=!1,h=!0;for(const d in e){const p=e[d];if(yP(d)){s[d]=p;continue}const m=_P[d],y=fO(p,m);if(tl.has(d)){if(c=!0,o[d]=y,!h)continue;p!==(m.default||0)&&(h=!1)}else d.startsWith("origin")?(f=!0,a[d]=y):r[d]=y}if(e.transform||(c||i?r.transform=cO(n.transform,t,h,i):r.transform&&(r.transform="none")),f){const{originX:d="50%",originY:p="50%",originZ:m=0}=a;r.transformOrigin=`${d} ${p} ${m}`}}const G1=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function SP(n,e,t){for(const i in e)!ki(e[i])&&!gP(i,t)&&(n[i]=e[i])}function mO({transformTemplate:n},e,t){return W.useMemo(()=>{const i=G1();return H1(i,e,{enableHardwareAcceleration:!t},n),Object.assign({},i.vars,i.style)},[e])}function gO(n,e,t){const i=n.style||{},r={};return SP(r,i,n),Object.assign(r,mO(n,e,t)),n.transformValues?n.transformValues(r):r}function vO(n,e,t){const i={},r=gO(n,e,t);return n.drag&&n.dragListener!==!1&&(i.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=n.drag===!0?"none":`pan-${n.drag==="x"?"y":"x"}`),n.tabIndex===void 0&&(n.onTap||n.onTapStart||n.whileTap)&&(i.tabIndex=0),i.style=r,i}const yO=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","transformValues","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function Nm(n){return n.startsWith("while")||n.startsWith("drag")&&n!=="draggable"||n.startsWith("layout")||n.startsWith("onTap")||n.startsWith("onPan")||n.startsWith("onLayout")||yO.has(n)}let MP=n=>!Nm(n);function xO(n){n&&(MP=e=>e.startsWith("on")?!Nm(e):n(e))}try{xO(require("@emotion/is-prop-valid").default)}catch{}function _O(n,e,t){const i={};for(const r in n)r==="values"&&typeof n.values=="object"||(MP(r)||t===!0&&Nm(r)||!e&&!Nm(r)||n.draggable&&r.startsWith("onDrag"))&&(i[r]=n[r]);return i}function WE(n,e,t){return typeof n=="string"?n:ht.transform(e+t*n)}function SO(n,e,t){const i=WE(e,n.x,n.width),r=WE(t,n.y,n.height);return`${i} ${r}`}const MO={offset:"stroke-dashoffset",array:"stroke-dasharray"},wO={offset:"strokeDashoffset",array:"strokeDasharray"};function EO(n,e,t=1,i=0,r=!0){n.pathLength=1;const s=r?MO:wO;n[s.offset]=ht.transform(-i);const o=ht.transform(e),a=ht.transform(t);n[s.array]=`${o} ${a}`}function W1(n,{attrX:e,attrY:t,attrScale:i,originX:r,originY:s,pathLength:o,pathSpacing:a=1,pathOffset:c=0,...f},h,d,p){if(H1(n,f,h,p),d){n.style.viewBox&&(n.attrs.viewBox=n.style.viewBox);return}n.attrs=n.style,n.style={};const{attrs:m,style:y,dimensions:_}=n;m.transform&&(_&&(y.transform=m.transform),delete m.transform),_&&(r!==void 0||s!==void 0||y.transform)&&(y.transformOrigin=SO(_,r!==void 0?r:.5,s!==void 0?s:.5)),e!==void 0&&(m.x=e),t!==void 0&&(m.y=t),i!==void 0&&(m.scale=i),o!==void 0&&EO(m,o,a,c,!1)}const wP=()=>({...G1(),attrs:{}}),j1=n=>typeof n=="string"&&n.toLowerCase()==="svg";function AO(n,e,t,i){const r=W.useMemo(()=>{const s=wP();return W1(s,e,{enableHardwareAcceleration:!1},j1(i),n.transformTemplate),{...s.attrs,style:{...s.style}}},[e]);if(n.style){const s={};SP(s,n.style,n),r.style={...s,...r.style}}return r}function TO(n=!1){return(t,i,r,{latestValues:s},o)=>{const c=(V1(t)?AO:vO)(i,s,o,t),h={..._O(i,typeof t=="string",n),...c,ref:r},{children:d}=i,p=W.useMemo(()=>ki(d)?d.get():d,[d]);return W.createElement(t,{...h,children:p})}}function EP(n,{style:e,vars:t},i,r){Object.assign(n.style,e,r&&r.getProjectionStyles(i));for(const s in t)n.style.setProperty(s,t[s])}const AP=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function TP(n,e,t,i){EP(n,e,void 0,i);for(const r in e.attrs)n.setAttribute(AP.has(r)?r:k1(r),e.attrs[r])}function X1(n,e){const{style:t}=n,i={};for(const r in t)(ki(t[r])||e.style&&ki(e.style[r])||gP(r,n))&&(i[r]=t[r]);return i}function bP(n,e){const t=X1(n,e);for(const i in n)if(ki(n[i])||ki(e[i])){const r=oh.indexOf(i)!==-1?"attr"+i.charAt(0).toUpperCase()+i.substring(1):i;t[r]=n[i]}return t}function Y1(n,e,t,i={},r={}){return typeof e=="function"&&(e=e(t!==void 0?t:n.custom,i,r)),typeof e=="string"&&(e=n.variants&&n.variants[e]),typeof e=="function"&&(e=e(t!==void 0?t:n.custom,i,r)),e}function CP(n){const e=W.useRef(null);return e.current===null&&(e.current=n()),e.current}const Dm=n=>Array.isArray(n),bO=n=>!!(n&&typeof n=="object"&&n.mix&&n.toValue),CO=n=>Dm(n)?n[n.length-1]||0:n;function Qp(n){const e=ki(n)?n.get():n;return bO(e)?e.toValue():e}function PO({scrapeMotionValuesFromProps:n,createRenderState:e,onMount:t},i,r,s){const o={latestValues:RO(i,r,s,n),renderState:e()};return t&&(o.mount=a=>t(i,a,o)),o}const PP=n=>(e,t)=>{const i=W.useContext(hg),r=W.useContext(dg),s=()=>PO(n,e,i,r);return t?s():CP(s)};function RO(n,e,t,i){const r={},s=i(n,{});for(const p in s)r[p]=Qp(s[p]);let{initial:o,animate:a}=n;const c=gg(n),f=pP(n);e&&f&&!c&&n.inherit!==!1&&(o===void 0&&(o=e.initial),a===void 0&&(a=e.animate));let h=t?t.initial===!1:!1;h=h||o===!1;const d=h?a:o;return d&&typeof d!="boolean"&&!mg(d)&&(Array.isArray(d)?d:[d]).forEach(m=>{const y=Y1(n,m);if(!y)return;const{transitionEnd:_,transition:x,...g}=y;for(const S in g){let M=g[S];if(Array.isArray(M)){const A=h?M.length-1:0;M=M[A]}M!==null&&(r[S]=M)}for(const S in _)r[S]=_[S]}),r}const gn=n=>n;class jE{constructor(){this.order=[],this.scheduled=new Set}add(e){if(!this.scheduled.has(e))return this.scheduled.add(e),this.order.push(e),!0}remove(e){const t=this.order.indexOf(e);t!==-1&&(this.order.splice(t,1),this.scheduled.delete(e))}clear(){this.order.length=0,this.scheduled.clear()}}function LO(n){let e=new jE,t=new jE,i=0,r=!1,s=!1;const o=new WeakSet,a={schedule:(c,f=!1,h=!1)=>{const d=h&&r,p=d?e:t;return f&&o.add(c),p.add(c)&&d&&r&&(i=e.order.length),c},cancel:c=>{t.remove(c),o.delete(c)},process:c=>{if(r){s=!0;return}if(r=!0,[e,t]=[t,e],t.clear(),i=e.order.length,i)for(let f=0;f(d[p]=LO(()=>t=!0),d),{}),o=d=>s[d].process(r),a=()=>{const d=performance.now();t=!1,r.delta=i?1e3/60:Math.max(Math.min(d-r.timestamp,IO),1),r.timestamp=d,r.isProcessing=!0,Bd.forEach(o),r.isProcessing=!1,t&&e&&(i=!1,n(a))},c=()=>{t=!0,i=!0,r.isProcessing||n(a)};return{schedule:Bd.reduce((d,p)=>{const m=s[p];return d[p]=(y,_=!1,x=!1)=>(t||c(),m.schedule(y,_,x)),d},{}),cancel:d=>Bd.forEach(p=>s[p].cancel(d)),state:r,steps:s}}const{schedule:Zt,cancel:Hs,state:ii,steps:Rv}=NO(typeof requestAnimationFrame<"u"?requestAnimationFrame:gn,!0),DO={useVisualState:PP({scrapeMotionValuesFromProps:bP,createRenderState:wP,onMount:(n,e,{renderState:t,latestValues:i})=>{Zt.read(()=>{try{t.dimensions=typeof e.getBBox=="function"?e.getBBox():e.getBoundingClientRect()}catch{t.dimensions={x:0,y:0,width:0,height:0}}}),Zt.render(()=>{W1(t,i,{enableHardwareAcceleration:!1},j1(e.tagName),n.transformTemplate),TP(e,t)})}})},UO={useVisualState:PP({scrapeMotionValuesFromProps:X1,createRenderState:G1})};function OO(n,{forwardMotionProps:e=!1},t,i){return{...V1(n)?DO:UO,preloadedFeatures:t,useRender:TO(e),createVisualElement:i,Component:n}}function Ls(n,e,t,i={passive:!0}){return n.addEventListener(e,t,i),()=>n.removeEventListener(e,t)}const RP=n=>n.pointerType==="mouse"?typeof n.button!="number"||n.button<=0:n.isPrimary!==!1;function yg(n,e="page"){return{point:{x:n[e+"X"],y:n[e+"Y"]}}}const kO=n=>e=>RP(e)&&n(e,yg(e));function Ds(n,e,t,i){return Ls(n,e,kO(t),i)}const FO=(n,e)=>t=>e(n(t)),No=(...n)=>n.reduce(FO);function LP(n){let e=null;return()=>{const t=()=>{e=null};return e===null?(e=n,t):!1}}const XE=LP("dragHorizontal"),YE=LP("dragVertical");function IP(n){let e=!1;if(n==="y")e=YE();else if(n==="x")e=XE();else{const t=XE(),i=YE();t&&i?e=()=>{t(),i()}:(t&&t(),i&&i())}return e}function NP(){const n=IP(!0);return n?(n(),!1):!0}class Wo{constructor(e){this.isMounted=!1,this.node=e}update(){}}function qE(n,e){const t="pointer"+(e?"enter":"leave"),i="onHover"+(e?"Start":"End"),r=(s,o)=>{if(s.pointerType==="touch"||NP())return;const a=n.getProps();n.animationState&&a.whileHover&&n.animationState.setActive("whileHover",e),a[i]&&Zt.update(()=>a[i](s,o))};return Ds(n.current,t,r,{passive:!n.getProps()[i]})}class zO extends Wo{mount(){this.unmount=No(qE(this.node,!0),qE(this.node,!1))}unmount(){}}class BO extends Wo{constructor(){super(...arguments),this.isActive=!1}onFocus(){let e=!1;try{e=this.node.current.matches(":focus-visible")}catch{e=!0}!e||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=No(Ls(this.node.current,"focus",()=>this.onFocus()),Ls(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const DP=(n,e)=>e?n===e?!0:DP(n,e.parentElement):!1;function Lv(n,e){if(!e)return;const t=new PointerEvent("pointer"+n);e(t,yg(t))}class VO extends Wo{constructor(){super(...arguments),this.removeStartListeners=gn,this.removeEndListeners=gn,this.removeAccessibleListeners=gn,this.startPointerPress=(e,t)=>{if(this.isPressing)return;this.removeEndListeners();const i=this.node.getProps(),s=Ds(window,"pointerup",(a,c)=>{if(!this.checkPressEnd())return;const{onTap:f,onTapCancel:h,globalTapTarget:d}=this.node.getProps();Zt.update(()=>{!d&&!DP(this.node.current,a.target)?h&&h(a,c):f&&f(a,c)})},{passive:!(i.onTap||i.onPointerUp)}),o=Ds(window,"pointercancel",(a,c)=>this.cancelPress(a,c),{passive:!(i.onTapCancel||i.onPointerCancel)});this.removeEndListeners=No(s,o),this.startPress(e,t)},this.startAccessiblePress=()=>{const e=s=>{if(s.key!=="Enter"||this.isPressing)return;const o=a=>{a.key!=="Enter"||!this.checkPressEnd()||Lv("up",(c,f)=>{const{onTap:h}=this.node.getProps();h&&Zt.update(()=>h(c,f))})};this.removeEndListeners(),this.removeEndListeners=Ls(this.node.current,"keyup",o),Lv("down",(a,c)=>{this.startPress(a,c)})},t=Ls(this.node.current,"keydown",e),i=()=>{this.isPressing&&Lv("cancel",(s,o)=>this.cancelPress(s,o))},r=Ls(this.node.current,"blur",i);this.removeAccessibleListeners=No(t,r)}}startPress(e,t){this.isPressing=!0;const{onTapStart:i,whileTap:r}=this.node.getProps();r&&this.node.animationState&&this.node.animationState.setActive("whileTap",!0),i&&Zt.update(()=>i(e,t))}checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,this.node.getProps().whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!1),!NP()}cancelPress(e,t){if(!this.checkPressEnd())return;const{onTapCancel:i}=this.node.getProps();i&&Zt.update(()=>i(e,t))}mount(){const e=this.node.getProps(),t=Ds(e.globalTapTarget?window:this.node.current,"pointerdown",this.startPointerPress,{passive:!(e.onTapStart||e.onPointerStart)}),i=Ls(this.node.current,"focus",this.startAccessiblePress);this.removeStartListeners=No(t,i)}unmount(){this.removeStartListeners(),this.removeEndListeners(),this.removeAccessibleListeners()}}const Nx=new WeakMap,Iv=new WeakMap,HO=n=>{const e=Nx.get(n.target);e&&e(n)},GO=n=>{n.forEach(HO)};function WO({root:n,...e}){const t=n||document;Iv.has(t)||Iv.set(t,{});const i=Iv.get(t),r=JSON.stringify(e);return i[r]||(i[r]=new IntersectionObserver(GO,{root:n,...e})),i[r]}function jO(n,e,t){const i=WO(e);return Nx.set(n,t),i.observe(n),()=>{Nx.delete(n),i.unobserve(n)}}const XO={some:0,all:1};class YO extends Wo{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:e={}}=this.node.getProps(),{root:t,margin:i,amount:r="some",once:s}=e,o={root:t?t.current:void 0,rootMargin:i,threshold:typeof r=="number"?r:XO[r]},a=c=>{const{isIntersecting:f}=c;if(this.isInView===f||(this.isInView=f,s&&!f&&this.hasEnteredView))return;f&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",f);const{onViewportEnter:h,onViewportLeave:d}=this.node.getProps(),p=f?h:d;p&&p(c)};return jO(this.node.current,o,a)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:e,prevProps:t}=this.node;["amount","margin","root"].some(qO(e,t))&&this.startObserver()}unmount(){}}function qO({viewport:n={}},{viewport:e={}}={}){return t=>n[t]!==e[t]}const KO={inView:{Feature:YO},tap:{Feature:VO},focus:{Feature:BO},hover:{Feature:zO}};function UP(n,e){if(!Array.isArray(e))return!1;const t=e.length;if(t!==n.length)return!1;for(let i=0;ie[i]=t.get()),e}function JO(n){const e={};return n.values.forEach((t,i)=>e[i]=t.getVelocity()),e}function xg(n,e,t){const i=n.getProps();return Y1(i,e,t!==void 0?t:i.custom,ZO(n),JO(n))}let QO=gn,q1=gn;const Do=n=>n*1e3,Us=n=>n/1e3,$O={current:!1},OP=n=>Array.isArray(n)&&typeof n[0]=="number";function kP(n){return!!(!n||typeof n=="string"&&FP[n]||OP(n)||Array.isArray(n)&&n.every(kP))}const Gu=([n,e,t,i])=>`cubic-bezier(${n}, ${e}, ${t}, ${i})`,FP={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Gu([0,.65,.55,1]),circOut:Gu([.55,0,1,.45]),backIn:Gu([.31,.01,.66,-.59]),backOut:Gu([.33,1.53,.69,.99])};function zP(n){if(n)return OP(n)?Gu(n):Array.isArray(n)?n.map(zP):FP[n]}function ek(n,e,t,{delay:i=0,duration:r,repeat:s=0,repeatType:o="loop",ease:a,times:c}={}){const f={[e]:t};c&&(f.offset=c);const h=zP(a);return Array.isArray(h)&&(f.easing=h),n.animate(f,{delay:i,duration:r,easing:Array.isArray(h)?"linear":h,fill:"both",iterations:s+1,direction:o==="reverse"?"alternate":"normal"})}function tk(n,{repeat:e,repeatType:t="loop"}){const i=e&&t!=="loop"&&e%2===1?0:n.length-1;return n[i]}const BP=(n,e,t)=>(((1-3*t+3*e)*n+(3*t-6*e))*n+3*e)*n,nk=1e-7,ik=12;function rk(n,e,t,i,r){let s,o,a=0;do o=e+(t-e)/2,s=BP(o,i,r)-n,s>0?t=o:e=o;while(Math.abs(s)>nk&&++ark(s,0,1,n,t);return s=>s===0||s===1?s:BP(r(s),e,i)}const sk=ch(.42,0,1,1),ok=ch(0,0,.58,1),VP=ch(.42,0,.58,1),ak=n=>Array.isArray(n)&&typeof n[0]!="number",HP=n=>e=>e<=.5?n(2*e)/2:(2-n(2*(1-e)))/2,GP=n=>e=>1-n(1-e),K1=n=>1-Math.sin(Math.acos(n)),WP=GP(K1),lk=HP(K1),jP=ch(.33,1.53,.69,.99),Z1=GP(jP),ck=HP(Z1),uk=n=>(n*=2)<1?.5*Z1(n):.5*(2-Math.pow(2,-10*(n-1))),fk={linear:gn,easeIn:sk,easeInOut:VP,easeOut:ok,circIn:K1,circInOut:lk,circOut:WP,backIn:Z1,backInOut:ck,backOut:jP,anticipate:uk},KE=n=>{if(Array.isArray(n)){q1(n.length===4);const[e,t,i,r]=n;return ch(e,t,i,r)}else if(typeof n=="string")return fk[n];return n},J1=(n,e)=>t=>!!(ah(t)&&hO.test(t)&&t.startsWith(n)||e&&Object.prototype.hasOwnProperty.call(t,e)),XP=(n,e,t)=>i=>{if(!ah(i))return i;const[r,s,o,a]=i.match(vg);return{[n]:parseFloat(r),[e]:parseFloat(s),[t]:parseFloat(o),alpha:a!==void 0?parseFloat(a):1}},hk=n=>ko(0,255,n),Nv={...nl,transform:n=>Math.round(hk(n))},Ra={test:J1("rgb","red"),parse:XP("red","green","blue"),transform:({red:n,green:e,blue:t,alpha:i=1})=>"rgba("+Nv.transform(n)+", "+Nv.transform(e)+", "+Nv.transform(t)+", "+nf(tf.transform(i))+")"};function dk(n){let e="",t="",i="",r="";return n.length>5?(e=n.substring(1,3),t=n.substring(3,5),i=n.substring(5,7),r=n.substring(7,9)):(e=n.substring(1,2),t=n.substring(2,3),i=n.substring(3,4),r=n.substring(4,5),e+=e,t+=t,i+=i,r+=r),{red:parseInt(e,16),green:parseInt(t,16),blue:parseInt(i,16),alpha:r?parseInt(r,16)/255:1}}const Dx={test:J1("#"),parse:dk,transform:Ra.transform},oc={test:J1("hsl","hue"),parse:XP("hue","saturation","lightness"),transform:({hue:n,saturation:e,lightness:t,alpha:i=1})=>"hsla("+Math.round(n)+", "+ss.transform(nf(e))+", "+ss.transform(nf(t))+", "+nf(tf.transform(i))+")"},gi={test:n=>Ra.test(n)||Dx.test(n)||oc.test(n),parse:n=>Ra.test(n)?Ra.parse(n):oc.test(n)?oc.parse(n):Dx.parse(n),transform:n=>ah(n)?n:n.hasOwnProperty("red")?Ra.transform(n):oc.transform(n)},ln=(n,e,t)=>-t*n+t*e+n;function Dv(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*(2/3-t)*6:n}function pk({hue:n,saturation:e,lightness:t,alpha:i}){n/=360,e/=100,t/=100;let r=0,s=0,o=0;if(!e)r=s=o=t;else{const a=t<.5?t*(1+e):t+e-t*e,c=2*t-a;r=Dv(c,a,n+1/3),s=Dv(c,a,n),o=Dv(c,a,n-1/3)}return{red:Math.round(r*255),green:Math.round(s*255),blue:Math.round(o*255),alpha:i}}const Uv=(n,e,t)=>{const i=n*n;return Math.sqrt(Math.max(0,t*(e*e-i)+i))},mk=[Dx,Ra,oc],gk=n=>mk.find(e=>e.test(n));function ZE(n){const e=gk(n);let t=e.parse(n);return e===oc&&(t=pk(t)),t}const YP=(n,e)=>{const t=ZE(n),i=ZE(e),r={...t};return s=>(r.red=Uv(t.red,i.red,s),r.green=Uv(t.green,i.green,s),r.blue=Uv(t.blue,i.blue,s),r.alpha=ln(t.alpha,i.alpha,s),Ra.transform(r))};function vk(n){var e,t;return isNaN(n)&&ah(n)&&(((e=n.match(vg))===null||e===void 0?void 0:e.length)||0)+(((t=n.match(xP))===null||t===void 0?void 0:t.length)||0)>0}const qP={regex:uO,countKey:"Vars",token:"${v}",parse:gn},KP={regex:xP,countKey:"Colors",token:"${c}",parse:gi.parse},ZP={regex:vg,countKey:"Numbers",token:"${n}",parse:nl.parse};function Ov(n,{regex:e,countKey:t,token:i,parse:r}){const s=n.tokenised.match(e);s&&(n["num"+t]=s.length,n.tokenised=n.tokenised.replace(e,i),n.values.push(...s.map(r)))}function Um(n){const e=n.toString(),t={value:e,tokenised:e,values:[],numVars:0,numColors:0,numNumbers:0};return t.value.includes("var(--")&&Ov(t,qP),Ov(t,KP),Ov(t,ZP),t}function JP(n){return Um(n).values}function QP(n){const{values:e,numColors:t,numVars:i,tokenised:r}=Um(n),s=e.length;return o=>{let a=r;for(let c=0;ctypeof n=="number"?0:n;function xk(n){const e=JP(n);return QP(n)(e.map(yk))}const Fo={test:vk,parse:JP,createTransformer:QP,getAnimatableNone:xk},$P=(n,e)=>t=>`${t>0?e:n}`;function eR(n,e){return typeof n=="number"?t=>ln(n,e,t):gi.test(n)?YP(n,e):n.startsWith("var(")?$P(n,e):nR(n,e)}const tR=(n,e)=>{const t=[...n],i=t.length,r=n.map((s,o)=>eR(s,e[o]));return s=>{for(let o=0;o{const t={...n,...e},i={};for(const r in t)n[r]!==void 0&&e[r]!==void 0&&(i[r]=eR(n[r],e[r]));return r=>{for(const s in i)t[s]=i[s](r);return t}},nR=(n,e)=>{const t=Fo.createTransformer(e),i=Um(n),r=Um(e);return i.numVars===r.numVars&&i.numColors===r.numColors&&i.numNumbers>=r.numNumbers?No(tR(i.values,r.values),t):$P(n,e)},Rf=(n,e,t)=>{const i=e-n;return i===0?1:(t-n)/i},JE=(n,e)=>t=>ln(n,e,t);function Sk(n){return typeof n=="number"?JE:typeof n=="string"?gi.test(n)?YP:nR:Array.isArray(n)?tR:typeof n=="object"?_k:JE}function Mk(n,e,t){const i=[],r=t||Sk(n[0]),s=n.length-1;for(let o=0;oe[0];n[0]>n[s-1]&&(n=[...n].reverse(),e=[...e].reverse());const o=Mk(e,i,r),a=o.length,c=f=>{let h=0;if(a>1)for(;hc(ko(n[0],n[s-1],f)):c}function wk(n,e){const t=n[n.length-1];for(let i=1;i<=e;i++){const r=Rf(0,e,i);n.push(ln(t,1,r))}}function Ek(n){const e=[0];return wk(e,n.length-1),e}function Ak(n,e){return n.map(t=>t*e)}function Tk(n,e){return n.map(()=>e||VP).splice(0,n.length-1)}function Om({duration:n=300,keyframes:e,times:t,ease:i="easeInOut"}){const r=ak(i)?i.map(KE):KE(i),s={done:!1,value:e[0]},o=Ak(t&&t.length===e.length?t:Ek(e),n),a=iR(o,e,{ease:Array.isArray(r)?r:Tk(e,r)});return{calculatedDuration:n,next:c=>(s.value=a(c),s.done=c>=n,s)}}function rR(n,e){return e?n*(1e3/e):0}const bk=5;function sR(n,e,t){const i=Math.max(e-bk,0);return rR(t-n(i),e-i)}const kv=.001,Ck=.01,QE=10,Pk=.05,Rk=1;function Lk({duration:n=800,bounce:e=.25,velocity:t=0,mass:i=1}){let r,s;QO(n<=Do(QE));let o=1-e;o=ko(Pk,Rk,o),n=ko(Ck,QE,Us(n)),o<1?(r=f=>{const h=f*o,d=h*n,p=h-t,m=Ux(f,o),y=Math.exp(-d);return kv-p/m*y},s=f=>{const d=f*o*n,p=d*t+t,m=Math.pow(o,2)*Math.pow(f,2)*n,y=Math.exp(-d),_=Ux(Math.pow(f,2),o);return(-r(f)+kv>0?-1:1)*((p-m)*y)/_}):(r=f=>{const h=Math.exp(-f*n),d=(f-t)*n+1;return-kv+h*d},s=f=>{const h=Math.exp(-f*n),d=(t-f)*(n*n);return h*d});const a=5/n,c=Nk(r,s,a);if(n=Do(n),isNaN(c))return{stiffness:100,damping:10,duration:n};{const f=Math.pow(c,2)*i;return{stiffness:f,damping:o*2*Math.sqrt(i*f),duration:n}}}const Ik=12;function Nk(n,e,t){let i=t;for(let r=1;rn[t]!==void 0)}function Ok(n){let e={velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1,...n};if(!$E(n,Uk)&&$E(n,Dk)){const t=Lk(n);e={...e,...t,mass:1},e.isResolvedFromDuration=!0}return e}function oR({keyframes:n,restDelta:e,restSpeed:t,...i}){const r=n[0],s=n[n.length-1],o={done:!1,value:r},{stiffness:a,damping:c,mass:f,duration:h,velocity:d,isResolvedFromDuration:p}=Ok({...i,velocity:-Us(i.velocity||0)}),m=d||0,y=c/(2*Math.sqrt(a*f)),_=s-r,x=Us(Math.sqrt(a/f)),g=Math.abs(_)<5;t||(t=g?.01:2),e||(e=g?.005:.5);let S;if(y<1){const M=Ux(x,y);S=A=>{const R=Math.exp(-y*x*A);return s-R*((m+y*x*_)/M*Math.sin(M*A)+_*Math.cos(M*A))}}else if(y===1)S=M=>s-Math.exp(-x*M)*(_+(m+x*_)*M);else{const M=x*Math.sqrt(y*y-1);S=A=>{const R=Math.exp(-y*x*A),C=Math.min(M*A,300);return s-R*((m+y*x*_)*Math.sinh(C)+M*_*Math.cosh(C))/M}}return{calculatedDuration:p&&h||null,next:M=>{const A=S(M);if(p)o.done=M>=h;else{let R=m;M!==0&&(y<1?R=sR(S,M,A):R=0);const C=Math.abs(R)<=t,L=Math.abs(s-A)<=e;o.done=C&&L}return o.value=o.done?s:A,o}}}function eA({keyframes:n,velocity:e=0,power:t=.8,timeConstant:i=325,bounceDamping:r=10,bounceStiffness:s=500,modifyTarget:o,min:a,max:c,restDelta:f=.5,restSpeed:h}){const d=n[0],p={done:!1,value:d},m=I=>a!==void 0&&Ic,y=I=>a===void 0?c:c===void 0||Math.abs(a-I)-_*Math.exp(-I/i),M=I=>g+S(I),A=I=>{const P=S(I),b=M(I);p.done=Math.abs(P)<=f,p.value=p.done?g:b};let R,C;const L=I=>{m(p.value)&&(R=I,C=oR({keyframes:[p.value,y(p.value)],velocity:sR(M,I,p.value),damping:r,stiffness:s,restDelta:f,restSpeed:h}))};return L(0),{calculatedDuration:null,next:I=>{let P=!1;return!C&&R===void 0&&(P=!0,A(I),L(I)),R!==void 0&&I>R?C.next(I-R):(!P&&A(I),p)}}}const kk=n=>{const e=({timestamp:t})=>n(t);return{start:()=>Zt.update(e,!0),stop:()=>Hs(e),now:()=>ii.isProcessing?ii.timestamp:performance.now()}},tA=2e4;function nA(n){let e=0;const t=50;let i=n.next(e);for(;!i.done&&e=tA?1/0:e}const Fk={decay:eA,inertia:eA,tween:Om,keyframes:Om,spring:oR};function km({autoplay:n=!0,delay:e=0,driver:t=kk,keyframes:i,type:r="keyframes",repeat:s=0,repeatDelay:o=0,repeatType:a="loop",onPlay:c,onStop:f,onComplete:h,onUpdate:d,...p}){let m=1,y=!1,_,x;const g=()=>{x=new Promise($=>{_=$})};g();let S;const M=Fk[r]||Om;let A;M!==Om&&typeof i[0]!="number"&&(A=iR([0,100],i,{clamp:!1}),i=[0,100]);const R=M({...p,keyframes:i});let C;a==="mirror"&&(C=M({...p,keyframes:[...i].reverse(),velocity:-(p.velocity||0)}));let L="idle",I=null,P=null,b=null;R.calculatedDuration===null&&s&&(R.calculatedDuration=nA(R));const{calculatedDuration:D}=R;let j=1/0,X=1/0;D!==null&&(j=D+o,X=j*(s+1)-o);let te=0;const ne=$=>{if(P===null)return;m>0&&(P=Math.min(P,$)),m<0&&(P=Math.min($-X/m,P)),I!==null?te=I:te=Math.round($-P)*m;const _e=te-e*(m>=0?1:-1),De=m>=0?_e<0:_e>X;te=Math.max(_e,0),L==="finished"&&I===null&&(te=X);let oe=te,ve=R;if(s){const it=Math.min(te,X)/j;let Xe=Math.floor(it),B=it%1;!B&&it>=1&&(B=1),B===1&&Xe--,Xe=Math.min(Xe,s+1),!!(Xe%2)&&(a==="reverse"?(B=1-B,o&&(B-=o/j)):a==="mirror"&&(ve=C)),oe=ko(0,1,B)*j}const Te=De?{done:!1,value:i[0]}:ve.next(oe);A&&(Te.value=A(Te.value));let{done:we}=Te;!De&&D!==null&&(we=m>=0?te>=X:te<=0);const nt=I===null&&(L==="finished"||L==="running"&&we);return d&&d(Te.value),nt&&k(),Te},Q=()=>{S&&S.stop(),S=void 0},le=()=>{L="idle",Q(),_(),g(),P=b=null},k=()=>{L="finished",h&&h(),Q(),_()},q=()=>{if(y)return;S||(S=t(ne));const $=S.now();c&&c(),I!==null?P=$-I:(!P||L==="finished")&&(P=$),L==="finished"&&g(),b=P,I=null,L="running",S.start()};n&&q();const J={then($,_e){return x.then($,_e)},get time(){return Us(te)},set time($){$=Do($),te=$,I!==null||!S||m===0?I=$:P=S.now()-$/m},get duration(){const $=R.calculatedDuration===null?nA(R):R.calculatedDuration;return Us($)},get speed(){return m},set speed($){$===m||!S||(m=$,J.time=Us(te))},get state(){return L},play:q,pause:()=>{L="paused",I=te},stop:()=>{y=!0,L!=="idle"&&(L="idle",f&&f(),le())},cancel:()=>{b!==null&&ne(b),le()},complete:()=>{L="finished"},sample:$=>(P=0,ne($))};return J}function zk(n){let e;return()=>(e===void 0&&(e=n()),e)}const Bk=zk(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),Vk=new Set(["opacity","clipPath","filter","transform","backgroundColor"]),Vd=10,Hk=2e4,Gk=(n,e)=>e.type==="spring"||n==="backgroundColor"||!kP(e.ease);function Wk(n,e,{onUpdate:t,onComplete:i,...r}){if(!(Bk()&&Vk.has(e)&&!r.repeatDelay&&r.repeatType!=="mirror"&&r.damping!==0&&r.type!=="inertia"))return!1;let o=!1,a,c,f=!1;const h=()=>{c=new Promise(M=>{a=M})};h();let{keyframes:d,duration:p=300,ease:m,times:y}=r;if(Gk(e,r)){const M=km({...r,repeat:0,delay:0});let A={done:!1,value:d[0]};const R=[];let C=0;for(;!A.done&&C{f=!1,_.cancel()},g=()=>{f=!0,Zt.update(x),a(),h()};return _.onfinish=()=>{f||(n.set(tk(d,r)),i&&i(),g())},{then(M,A){return c.then(M,A)},attachTimeline(M){return _.timeline=M,_.onfinish=null,gn},get time(){return Us(_.currentTime||0)},set time(M){_.currentTime=Do(M)},get speed(){return _.playbackRate},set speed(M){_.playbackRate=M},get duration(){return Us(p)},play:()=>{o||(_.play(),Hs(x))},pause:()=>_.pause(),stop:()=>{if(o=!0,_.playState==="idle")return;const{currentTime:M}=_;if(M){const A=km({...r,autoplay:!1});n.setWithVelocity(A.sample(M-Vd).value,A.sample(M).value,Vd)}g()},complete:()=>{f||_.finish()},cancel:g}}function jk({keyframes:n,delay:e,onUpdate:t,onComplete:i}){const r=()=>(t&&t(n[n.length-1]),i&&i(),{time:0,speed:1,duration:0,play:gn,pause:gn,stop:gn,then:s=>(s(),Promise.resolve()),cancel:gn,complete:gn});return e?km({keyframes:[0,1],duration:0,delay:e,onComplete:r}):r()}const Xk={type:"spring",stiffness:500,damping:25,restSpeed:10},Yk=n=>({type:"spring",stiffness:550,damping:n===0?2*Math.sqrt(550):30,restSpeed:10}),qk={type:"keyframes",duration:.8},Kk={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},Zk=(n,{keyframes:e})=>e.length>2?qk:tl.has(n)?n.startsWith("scale")?Yk(e[1]):Xk:Kk,Ox=(n,e)=>n==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(Fo.test(e)||e==="0")&&!e.startsWith("url(")),Jk=new Set(["brightness","contrast","saturate","opacity"]);function Qk(n){const[e,t]=n.slice(0,-1).split("(");if(e==="drop-shadow")return n;const[i]=t.match(vg)||[];if(!i)return n;const r=t.replace(i,"");let s=Jk.has(e)?1:0;return i!==t&&(s*=100),e+"("+s+r+")"}const $k=/([a-z-]*)\(.*?\)/g,kx={...Fo,getAnimatableNone:n=>{const e=n.match($k);return e?e.map(Qk).join(" "):n}},eF={..._P,color:gi,backgroundColor:gi,outlineColor:gi,fill:gi,stroke:gi,borderColor:gi,borderTopColor:gi,borderRightColor:gi,borderBottomColor:gi,borderLeftColor:gi,filter:kx,WebkitFilter:kx},Q1=n=>eF[n];function aR(n,e){let t=Q1(n);return t!==kx&&(t=Fo),t.getAnimatableNone?t.getAnimatableNone(e):void 0}const lR=n=>/^0[^.\s]+$/.test(n);function tF(n){if(typeof n=="number")return n===0;if(n!==null)return n==="none"||n==="0"||lR(n)}function nF(n,e,t,i){const r=Ox(e,t);let s;Array.isArray(t)?s=[...t]:s=[null,t];const o=i.from!==void 0?i.from:n.get();let a;const c=[];for(let f=0;fr=>{const s=$1(i,n)||{},o=s.delay||i.delay||0;let{elapsed:a=0}=i;a=a-Do(o);const c=nF(e,n,t,s),f=c[0],h=c[c.length-1],d=Ox(n,f),p=Ox(n,h);let m={keyframes:c,velocity:e.getVelocity(),ease:"easeOut",...s,delay:-a,onUpdate:y=>{e.set(y),s.onUpdate&&s.onUpdate(y)},onComplete:()=>{r(),s.onComplete&&s.onComplete()}};if(iF(s)||(m={...m,...Zk(n,m)}),m.duration&&(m.duration=Do(m.duration)),m.repeatDelay&&(m.repeatDelay=Do(m.repeatDelay)),!d||!p||$O.current||s.type===!1||rF.skipAnimations)return jk(m);if(!i.isHandoff&&e.owner&&e.owner.current instanceof HTMLElement&&!e.owner.getProps().onUpdate){const y=Wk(e,n,m);if(y)return y}return km(m)};function Fm(n){return!!(ki(n)&&n.add)}const cR=n=>/^\-?\d*\.?\d+$/.test(n);function tS(n,e){n.indexOf(e)===-1&&n.push(e)}function nS(n,e){const t=n.indexOf(e);t>-1&&n.splice(t,1)}class iS{constructor(){this.subscriptions=[]}add(e){return tS(this.subscriptions,e),()=>nS(this.subscriptions,e)}notify(e,t,i){const r=this.subscriptions.length;if(r)if(r===1)this.subscriptions[0](e,t,i);else for(let s=0;s!isNaN(parseFloat(n));class oF{constructor(e,t={}){this.version="10.18.0",this.timeDelta=0,this.lastUpdated=0,this.canTrackVelocity=!1,this.events={},this.updateAndNotify=(i,r=!0)=>{this.prev=this.current,this.current=i;const{delta:s,timestamp:o}=ii;this.lastUpdated!==o&&(this.timeDelta=s,this.lastUpdated=o,Zt.postRender(this.scheduleVelocityCheck)),this.prev!==this.current&&this.events.change&&this.events.change.notify(this.current),this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()),r&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.scheduleVelocityCheck=()=>Zt.postRender(this.velocityCheck),this.velocityCheck=({timestamp:i})=>{i!==this.lastUpdated&&(this.prev=this.current,this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()))},this.hasAnimated=!1,this.prev=this.current=e,this.canTrackVelocity=sF(this.current),this.owner=t.owner}onChange(e){return this.on("change",e)}on(e,t){this.events[e]||(this.events[e]=new iS);const i=this.events[e].add(t);return e==="change"?()=>{i(),Zt.read(()=>{this.events.change.getSize()||this.stop()})}:i}clearListeners(){for(const e in this.events)this.events[e].clear()}attach(e,t){this.passiveEffect=e,this.stopPassiveEffect=t}set(e,t=!0){!t||!this.passiveEffect?this.updateAndNotify(e,t):this.passiveEffect(e,this.updateAndNotify)}setWithVelocity(e,t,i){this.set(t),this.prev=e,this.timeDelta=i}jump(e){this.updateAndNotify(e),this.prev=e,this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){return this.canTrackVelocity?rR(parseFloat(this.current)-parseFloat(this.prev),this.timeDelta):0}start(e){return this.stop(),new Promise(t=>{this.hasAnimated=!0,this.animation=e(t),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Rc(n,e){return new oF(n,e)}const uR=n=>e=>e.test(n),aF={test:n=>n==="auto",parse:n=>n},fR=[nl,ht,ss,go,pO,dO,aF],_u=n=>fR.find(uR(n)),lF=[...fR,gi,Fo],cF=n=>lF.find(uR(n));function uF(n,e,t){n.hasValue(e)?n.getValue(e).set(t):n.addValue(e,Rc(t))}function fF(n,e){const t=xg(n,e);let{transitionEnd:i={},transition:r={},...s}=t?n.makeTargetAnimatable(t,!1):{};s={...s,...i};for(const o in s){const a=CO(s[o]);uF(n,o,a)}}function hF(n,e,t){var i,r;const s=Object.keys(e).filter(a=>!n.hasValue(a)),o=s.length;if(o)for(let a=0;ac.remove(d))),f.push(x)}return o&&Promise.all(f).then(()=>{o&&fF(n,o)}),f}function Fx(n,e,t={}){const i=xg(n,e,t.custom);let{transition:r=n.getDefaultTransition()||{}}=i||{};t.transitionOverride&&(r=t.transitionOverride);const s=i?()=>Promise.all(hR(n,i,t)):()=>Promise.resolve(),o=n.variantChildren&&n.variantChildren.size?(c=0)=>{const{delayChildren:f=0,staggerChildren:h,staggerDirection:d}=r;return vF(n,e,f+c,h,d,t)}:()=>Promise.resolve(),{when:a}=r;if(a){const[c,f]=a==="beforeChildren"?[s,o]:[o,s];return c().then(()=>f())}else return Promise.all([s(),o(t.delay)])}function vF(n,e,t=0,i=0,r=1,s){const o=[],a=(n.variantChildren.size-1)*i,c=r===1?(f=0)=>f*i:(f=0)=>a-f*i;return Array.from(n.variantChildren).sort(yF).forEach((f,h)=>{f.notify("AnimationStart",e),o.push(Fx(f,e,{...s,delay:t+c(h)}).then(()=>f.notify("AnimationComplete",e)))}),Promise.all(o)}function yF(n,e){return n.sortNodePosition(e)}function xF(n,e,t={}){n.notify("AnimationStart",e);let i;if(Array.isArray(e)){const r=e.map(s=>Fx(n,s,t));i=Promise.all(r)}else if(typeof e=="string")i=Fx(n,e,t);else{const r=typeof e=="function"?xg(n,e,t.custom):e;i=Promise.all(hR(n,r,t))}return i.then(()=>n.notify("AnimationComplete",e))}const _F=[...F1].reverse(),SF=F1.length;function MF(n){return e=>Promise.all(e.map(({animation:t,options:i})=>xF(n,t,i)))}function wF(n){let e=MF(n);const t=AF();let i=!0;const r=(c,f)=>{const h=xg(n,f);if(h){const{transition:d,transitionEnd:p,...m}=h;c={...c,...m,...p}}return c};function s(c){e=c(n)}function o(c,f){const h=n.getProps(),d=n.getVariantContext(!0)||{},p=[],m=new Set;let y={},_=1/0;for(let g=0;g_&&R,b=!1;const D=Array.isArray(A)?A:[A];let j=D.reduce(r,{});C===!1&&(j={});const{prevResolvedValues:X={}}=M,te={...X,...j},ne=Q=>{P=!0,m.has(Q)&&(b=!0,m.delete(Q)),M.needsAnimating[Q]=!0};for(const Q in te){const le=j[Q],k=X[Q];if(y.hasOwnProperty(Q))continue;let q=!1;Dm(le)&&Dm(k)?q=!UP(le,k):q=le!==k,q?le!==void 0?ne(Q):m.add(Q):le!==void 0&&m.has(Q)?ne(Q):M.protectedKeys[Q]=!0}M.prevProp=A,M.prevResolvedValues=j,M.isActive&&(y={...y,...j}),i&&n.blockInitialAnimation&&(P=!1),P&&(!L||b)&&p.push(...D.map(Q=>({animation:Q,options:{type:S,...c}})))}if(m.size){const g={};m.forEach(S=>{const M=n.getBaseTarget(S);M!==void 0&&(g[S]=M)}),p.push({animation:g})}let x=!!p.length;return i&&(h.initial===!1||h.initial===h.animate)&&!n.manuallyAnimateOnMount&&(x=!1),i=!1,x?e(p):Promise.resolve()}function a(c,f,h){var d;if(t[c].isActive===f)return Promise.resolve();(d=n.variantChildren)===null||d===void 0||d.forEach(m=>{var y;return(y=m.animationState)===null||y===void 0?void 0:y.setActive(c,f)}),t[c].isActive=f;const p=o(h,c);for(const m in t)t[m].protectedKeys={};return p}return{animateChanges:o,setActive:a,setAnimateFunction:s,getState:()=>t}}function EF(n,e){return typeof e=="string"?e!==n:Array.isArray(e)?!UP(e,n):!1}function ra(n=!1){return{isActive:n,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function AF(){return{animate:ra(!0),whileInView:ra(),whileHover:ra(),whileTap:ra(),whileDrag:ra(),whileFocus:ra(),exit:ra()}}class TF extends Wo{constructor(e){super(e),e.animationState||(e.animationState=wF(e))}updateAnimationControlsSubscription(){const{animate:e}=this.node.getProps();this.unmount(),mg(e)&&(this.unmount=e.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:e}=this.node.getProps(),{animate:t}=this.node.prevProps||{};e!==t&&this.updateAnimationControlsSubscription()}unmount(){}}let bF=0;class CF extends Wo{constructor(){super(...arguments),this.id=bF++}update(){if(!this.node.presenceContext)return;const{isPresent:e,onExitComplete:t,custom:i}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||e===r)return;const s=this.node.animationState.setActive("exit",!e,{custom:i??this.node.getProps().custom});t&&!e&&s.then(()=>t(this.id))}mount(){const{register:e}=this.node.presenceContext||{};e&&(this.unmount=e(this.id))}unmount(){}}const PF={animation:{Feature:TF},exit:{Feature:CF}},iA=(n,e)=>Math.abs(n-e);function RF(n,e){const t=iA(n.x,e.x),i=iA(n.y,e.y);return Math.sqrt(t**2+i**2)}class dR{constructor(e,t,{transformPagePoint:i,contextWindow:r,dragSnapToOrigin:s=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const d=zv(this.lastMoveEventInfo,this.history),p=this.startEvent!==null,m=RF(d.offset,{x:0,y:0})>=3;if(!p&&!m)return;const{point:y}=d,{timestamp:_}=ii;this.history.push({...y,timestamp:_});const{onStart:x,onMove:g}=this.handlers;p||(x&&x(this.lastMoveEvent,d),this.startEvent=this.lastMoveEvent),g&&g(this.lastMoveEvent,d)},this.handlePointerMove=(d,p)=>{this.lastMoveEvent=d,this.lastMoveEventInfo=Fv(p,this.transformPagePoint),Zt.update(this.updatePoint,!0)},this.handlePointerUp=(d,p)=>{this.end();const{onEnd:m,onSessionEnd:y,resumeAnimation:_}=this.handlers;if(this.dragSnapToOrigin&&_&&_(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const x=zv(d.type==="pointercancel"?this.lastMoveEventInfo:Fv(p,this.transformPagePoint),this.history);this.startEvent&&m&&m(d,x),y&&y(d,x)},!RP(e))return;this.dragSnapToOrigin=s,this.handlers=t,this.transformPagePoint=i,this.contextWindow=r||window;const o=yg(e),a=Fv(o,this.transformPagePoint),{point:c}=a,{timestamp:f}=ii;this.history=[{...c,timestamp:f}];const{onSessionStart:h}=t;h&&h(e,zv(a,this.history)),this.removeListeners=No(Ds(this.contextWindow,"pointermove",this.handlePointerMove),Ds(this.contextWindow,"pointerup",this.handlePointerUp),Ds(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(e){this.handlers=e}end(){this.removeListeners&&this.removeListeners(),Hs(this.updatePoint)}}function Fv(n,e){return e?{point:e(n.point)}:n}function rA(n,e){return{x:n.x-e.x,y:n.y-e.y}}function zv({point:n},e){return{point:n,delta:rA(n,pR(e)),offset:rA(n,LF(e)),velocity:IF(e,.1)}}function LF(n){return n[0]}function pR(n){return n[n.length-1]}function IF(n,e){if(n.length<2)return{x:0,y:0};let t=n.length-1,i=null;const r=pR(n);for(;t>=0&&(i=n[t],!(r.timestamp-i.timestamp>Do(e)));)t--;if(!i)return{x:0,y:0};const s=Us(r.timestamp-i.timestamp);if(s===0)return{x:0,y:0};const o={x:(r.x-i.x)/s,y:(r.y-i.y)/s};return o.x===1/0&&(o.x=0),o.y===1/0&&(o.y=0),o}function er(n){return n.max-n.min}function zx(n,e=0,t=.01){return Math.abs(n-e)<=t}function sA(n,e,t,i=.5){n.origin=i,n.originPoint=ln(e.min,e.max,n.origin),n.scale=er(t)/er(e),(zx(n.scale,1,1e-4)||isNaN(n.scale))&&(n.scale=1),n.translate=ln(t.min,t.max,n.origin)-n.originPoint,(zx(n.translate)||isNaN(n.translate))&&(n.translate=0)}function rf(n,e,t,i){sA(n.x,e.x,t.x,i?i.originX:void 0),sA(n.y,e.y,t.y,i?i.originY:void 0)}function oA(n,e,t){n.min=t.min+e.min,n.max=n.min+er(e)}function NF(n,e,t){oA(n.x,e.x,t.x),oA(n.y,e.y,t.y)}function aA(n,e,t){n.min=e.min-t.min,n.max=n.min+er(e)}function sf(n,e,t){aA(n.x,e.x,t.x),aA(n.y,e.y,t.y)}function DF(n,{min:e,max:t},i){return e!==void 0&&nt&&(n=i?ln(t,n,i.max):Math.min(n,t)),n}function lA(n,e,t){return{min:e!==void 0?n.min+e:void 0,max:t!==void 0?n.max+t-(n.max-n.min):void 0}}function UF(n,{top:e,left:t,bottom:i,right:r}){return{x:lA(n.x,t,r),y:lA(n.y,e,i)}}function cA(n,e){let t=e.min-n.min,i=e.max-n.max;return e.max-e.mini?t=Rf(e.min,e.max-i,n.min):i>r&&(t=Rf(n.min,n.max-r,e.min)),ko(0,1,t)}function FF(n,e){const t={};return e.min!==void 0&&(t.min=e.min-n.min),e.max!==void 0&&(t.max=e.max-n.min),t}const Bx=.35;function zF(n=Bx){return n===!1?n=0:n===!0&&(n=Bx),{x:uA(n,"left","right"),y:uA(n,"top","bottom")}}function uA(n,e,t){return{min:fA(n,e),max:fA(n,t)}}function fA(n,e){return typeof n=="number"?n:n[e]||0}const hA=()=>({translate:0,scale:1,origin:0,originPoint:0}),ac=()=>({x:hA(),y:hA()}),dA=()=>({min:0,max:0}),An=()=>({x:dA(),y:dA()});function dr(n){return[n("x"),n("y")]}function mR({top:n,left:e,right:t,bottom:i}){return{x:{min:e,max:t},y:{min:n,max:i}}}function BF({x:n,y:e}){return{top:e.min,right:n.max,bottom:e.max,left:n.min}}function VF(n,e){if(!e)return n;const t=e({x:n.left,y:n.top}),i=e({x:n.right,y:n.bottom});return{top:t.y,left:t.x,bottom:i.y,right:i.x}}function Bv(n){return n===void 0||n===1}function Vx({scale:n,scaleX:e,scaleY:t}){return!Bv(n)||!Bv(e)||!Bv(t)}function xa(n){return Vx(n)||gR(n)||n.z||n.rotate||n.rotateX||n.rotateY}function gR(n){return pA(n.x)||pA(n.y)}function pA(n){return n&&n!=="0%"}function zm(n,e,t){const i=n-t,r=e*i;return t+r}function mA(n,e,t,i,r){return r!==void 0&&(n=zm(n,r,i)),zm(n,t,i)+e}function Hx(n,e=0,t=1,i,r){n.min=mA(n.min,e,t,i,r),n.max=mA(n.max,e,t,i,r)}function vR(n,{x:e,y:t}){Hx(n.x,e.translate,e.scale,e.originPoint),Hx(n.y,t.translate,t.scale,t.originPoint)}function HF(n,e,t,i=!1){const r=t.length;if(!r)return;e.x=e.y=1;let s,o;for(let a=0;a1.0000000000001||n<.999999999999?n:1}function xo(n,e){n.min=n.min+e,n.max=n.max+e}function vA(n,e,[t,i,r]){const s=e[r]!==void 0?e[r]:.5,o=ln(n.min,n.max,s);Hx(n,e[t],e[i],o,e.scale)}const GF=["x","scaleX","originX"],WF=["y","scaleY","originY"];function lc(n,e){vA(n.x,e,GF),vA(n.y,e,WF)}function yR(n,e){return mR(VF(n.getBoundingClientRect(),e))}function jF(n,e,t){const i=yR(n,t),{scroll:r}=e;return r&&(xo(i.x,r.offset.x),xo(i.y,r.offset.y)),i}const xR=({current:n})=>n?n.ownerDocument.defaultView:null,XF=new WeakMap;class YF{constructor(e){this.openGlobalLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=An(),this.visualElement=e}start(e,{snapToCursor:t=!1}={}){const{presenceContext:i}=this.visualElement;if(i&&i.isPresent===!1)return;const r=h=>{const{dragSnapToOrigin:d}=this.getProps();d?this.pauseAnimation():this.stopAnimation(),t&&this.snapToCursor(yg(h,"page").point)},s=(h,d)=>{const{drag:p,dragPropagation:m,onDragStart:y}=this.getProps();if(p&&!m&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=IP(p),!this.openGlobalLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),dr(x=>{let g=this.getAxisMotionValue(x).get()||0;if(ss.test(g)){const{projection:S}=this.visualElement;if(S&&S.layout){const M=S.layout.layoutBox[x];M&&(g=er(M)*(parseFloat(g)/100))}}this.originPoint[x]=g}),y&&Zt.update(()=>y(h,d),!1,!0);const{animationState:_}=this.visualElement;_&&_.setActive("whileDrag",!0)},o=(h,d)=>{const{dragPropagation:p,dragDirectionLock:m,onDirectionLock:y,onDrag:_}=this.getProps();if(!p&&!this.openGlobalLock)return;const{offset:x}=d;if(m&&this.currentDirection===null){this.currentDirection=qF(x),this.currentDirection!==null&&y&&y(this.currentDirection);return}this.updateAxis("x",d.point,x),this.updateAxis("y",d.point,x),this.visualElement.render(),_&&_(h,d)},a=(h,d)=>this.stop(h,d),c=()=>dr(h=>{var d;return this.getAnimationState(h)==="paused"&&((d=this.getAxisMotionValue(h).animation)===null||d===void 0?void 0:d.play())}),{dragSnapToOrigin:f}=this.getProps();this.panSession=new dR(e,{onSessionStart:r,onStart:s,onMove:o,onSessionEnd:a,resumeAnimation:c},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:f,contextWindow:xR(this.visualElement)})}stop(e,t){const i=this.isDragging;if(this.cancel(),!i)return;const{velocity:r}=t;this.startAnimation(r);const{onDragEnd:s}=this.getProps();s&&Zt.update(()=>s(e,t))}cancel(){this.isDragging=!1;const{projection:e,animationState:t}=this.visualElement;e&&(e.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:i}=this.getProps();!i&&this.openGlobalLock&&(this.openGlobalLock(),this.openGlobalLock=null),t&&t.setActive("whileDrag",!1)}updateAxis(e,t,i){const{drag:r}=this.getProps();if(!i||!Hd(e,r,this.currentDirection))return;const s=this.getAxisMotionValue(e);let o=this.originPoint[e]+i[e];this.constraints&&this.constraints[e]&&(o=DF(o,this.constraints[e],this.elastic[e])),s.set(o)}resolveConstraints(){var e;const{dragConstraints:t,dragElastic:i}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(e=this.visualElement.projection)===null||e===void 0?void 0:e.layout,s=this.constraints;t&&sc(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=UF(r.layoutBox,t):this.constraints=!1,this.elastic=zF(i),s!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&dr(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=FF(r.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:e,onMeasureDragConstraints:t}=this.getProps();if(!e||!sc(e))return!1;const i=e.current,{projection:r}=this.visualElement;if(!r||!r.layout)return!1;const s=jF(i,r.root,this.visualElement.getTransformPagePoint());let o=OF(r.layout.layoutBox,s);if(t){const a=t(BF(o));this.hasMutatedConstraints=!!a,a&&(o=mR(a))}return o}startAnimation(e){const{drag:t,dragMomentum:i,dragElastic:r,dragTransition:s,dragSnapToOrigin:o,onDragTransitionEnd:a}=this.getProps(),c=this.constraints||{},f=dr(h=>{if(!Hd(h,t,this.currentDirection))return;let d=c&&c[h]||{};o&&(d={min:0,max:0});const p=r?200:1e6,m=r?40:1e7,y={type:"inertia",velocity:i?e[h]:0,bounceStiffness:p,bounceDamping:m,timeConstant:750,restDelta:1,restSpeed:10,...s,...d};return this.startAxisValueAnimation(h,y)});return Promise.all(f).then(a)}startAxisValueAnimation(e,t){const i=this.getAxisMotionValue(e);return i.start(eS(e,i,0,t))}stopAnimation(){dr(e=>this.getAxisMotionValue(e).stop())}pauseAnimation(){dr(e=>{var t;return(t=this.getAxisMotionValue(e).animation)===null||t===void 0?void 0:t.pause()})}getAnimationState(e){var t;return(t=this.getAxisMotionValue(e).animation)===null||t===void 0?void 0:t.state}getAxisMotionValue(e){const t="_drag"+e.toUpperCase(),i=this.visualElement.getProps(),r=i[t];return r||this.visualElement.getValue(e,(i.initial?i.initial[e]:void 0)||0)}snapToCursor(e){dr(t=>{const{drag:i}=this.getProps();if(!Hd(t,i,this.currentDirection))return;const{projection:r}=this.visualElement,s=this.getAxisMotionValue(t);if(r&&r.layout){const{min:o,max:a}=r.layout.layoutBox[t];s.set(e[t]-ln(o,a,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:e,dragConstraints:t}=this.getProps(),{projection:i}=this.visualElement;if(!sc(t)||!i||!this.constraints)return;this.stopAnimation();const r={x:0,y:0};dr(o=>{const a=this.getAxisMotionValue(o);if(a){const c=a.get();r[o]=kF({min:c,max:c},this.constraints[o])}});const{transformTemplate:s}=this.visualElement.getProps();this.visualElement.current.style.transform=s?s({},""):"none",i.root&&i.root.updateScroll(),i.updateLayout(),this.resolveConstraints(),dr(o=>{if(!Hd(o,e,null))return;const a=this.getAxisMotionValue(o),{min:c,max:f}=this.constraints[o];a.set(ln(c,f,r[o]))})}addListeners(){if(!this.visualElement.current)return;XF.set(this.visualElement,this);const e=this.visualElement.current,t=Ds(e,"pointerdown",c=>{const{drag:f,dragListener:h=!0}=this.getProps();f&&h&&this.start(c)}),i=()=>{const{dragConstraints:c}=this.getProps();sc(c)&&(this.constraints=this.resolveRefConstraints())},{projection:r}=this.visualElement,s=r.addEventListener("measure",i);r&&!r.layout&&(r.root&&r.root.updateScroll(),r.updateLayout()),i();const o=Ls(window,"resize",()=>this.scalePositionWithinConstraints()),a=r.addEventListener("didUpdate",({delta:c,hasLayoutChanged:f})=>{this.isDragging&&f&&(dr(h=>{const d=this.getAxisMotionValue(h);d&&(this.originPoint[h]+=c[h].translate,d.set(d.get()+c[h].translate))}),this.visualElement.render())});return()=>{o(),t(),s(),a&&a()}}getProps(){const e=this.visualElement.getProps(),{drag:t=!1,dragDirectionLock:i=!1,dragPropagation:r=!1,dragConstraints:s=!1,dragElastic:o=Bx,dragMomentum:a=!0}=e;return{...e,drag:t,dragDirectionLock:i,dragPropagation:r,dragConstraints:s,dragElastic:o,dragMomentum:a}}}function Hd(n,e,t){return(e===!0||e===n)&&(t===null||t===n)}function qF(n,e=10){let t=null;return Math.abs(n.y)>e?t="y":Math.abs(n.x)>e&&(t="x"),t}class KF extends Wo{constructor(e){super(e),this.removeGroupControls=gn,this.removeListeners=gn,this.controls=new YF(e)}mount(){const{dragControls:e}=this.node.getProps();e&&(this.removeGroupControls=e.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||gn}unmount(){this.removeGroupControls(),this.removeListeners()}}const yA=n=>(e,t)=>{n&&Zt.update(()=>n(e,t))};class ZF extends Wo{constructor(){super(...arguments),this.removePointerDownListener=gn}onPointerDown(e){this.session=new dR(e,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:xR(this.node)})}createPanHandlers(){const{onPanSessionStart:e,onPanStart:t,onPan:i,onPanEnd:r}=this.node.getProps();return{onSessionStart:yA(e),onStart:yA(t),onMove:i,onEnd:(s,o)=>{delete this.session,r&&Zt.update(()=>r(s,o))}}}mount(){this.removePointerDownListener=Ds(this.node.current,"pointerdown",e=>this.onPointerDown(e))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}function JF(){const n=W.useContext(dg);if(n===null)return[!0,null];const{isPresent:e,onExitComplete:t,register:i}=n,r=W.useId();return W.useEffect(()=>i(r),[]),!e&&t?[!1,()=>t&&t(r)]:[!0]}const $p={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function xA(n,e){return e.max===e.min?0:n/(e.max-e.min)*100}const Su={correct:(n,e)=>{if(!e.target)return n;if(typeof n=="string")if(ht.test(n))n=parseFloat(n);else return n;const t=xA(n,e.target.x),i=xA(n,e.target.y);return`${t}% ${i}%`}},QF={correct:(n,{treeScale:e,projectionDelta:t})=>{const i=n,r=Fo.parse(n);if(r.length>5)return i;const s=Fo.createTransformer(n),o=typeof r[0]!="number"?1:0,a=t.x.scale*e.x,c=t.y.scale*e.y;r[0+o]/=a,r[1+o]/=c;const f=ln(a,c,.5);return typeof r[2+o]=="number"&&(r[2+o]/=f),typeof r[3+o]=="number"&&(r[3+o]/=f),s(r)}};class $F extends Zm.Component{componentDidMount(){const{visualElement:e,layoutGroup:t,switchLayoutGroup:i,layoutId:r}=this.props,{projection:s}=e;oO(e4),s&&(t.group&&t.group.add(s),i&&i.register&&r&&i.register(s),s.root.didUpdate(),s.addEventListener("animationComplete",()=>{this.safeToRemove()}),s.setOptions({...s.options,onExitComplete:()=>this.safeToRemove()})),$p.hasEverUpdated=!0}getSnapshotBeforeUpdate(e){const{layoutDependency:t,visualElement:i,drag:r,isPresent:s}=this.props,o=i.projection;return o&&(o.isPresent=s,r||e.layoutDependency!==t||t===void 0?o.willUpdate():this.safeToRemove(),e.isPresent!==s&&(s?o.promote():o.relegate()||Zt.postRender(()=>{const a=o.getStack();(!a||!a.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:e}=this.props.visualElement;e&&(e.root.didUpdate(),queueMicrotask(()=>{!e.currentAnimation&&e.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:e,layoutGroup:t,switchLayoutGroup:i}=this.props,{projection:r}=e;r&&(r.scheduleCheckAfterUnmount(),t&&t.group&&t.group.remove(r),i&&i.deregister&&i.deregister(r))}safeToRemove(){const{safeToRemove:e}=this.props;e&&e()}render(){return null}}function _R(n){const[e,t]=JF(),i=W.useContext(B1);return Zm.createElement($F,{...n,layoutGroup:i,switchLayoutGroup:W.useContext(mP),isPresent:e,safeToRemove:t})}const e4={borderRadius:{...Su,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Su,borderTopRightRadius:Su,borderBottomLeftRadius:Su,borderBottomRightRadius:Su,boxShadow:QF},SR=["TopLeft","TopRight","BottomLeft","BottomRight"],t4=SR.length,_A=n=>typeof n=="string"?parseFloat(n):n,SA=n=>typeof n=="number"||ht.test(n);function n4(n,e,t,i,r,s){r?(n.opacity=ln(0,t.opacity!==void 0?t.opacity:1,i4(i)),n.opacityExit=ln(e.opacity!==void 0?e.opacity:1,0,r4(i))):s&&(n.opacity=ln(e.opacity!==void 0?e.opacity:1,t.opacity!==void 0?t.opacity:1,i));for(let o=0;oie?1:t(Rf(n,e,i))}function wA(n,e){n.min=e.min,n.max=e.max}function fr(n,e){wA(n.x,e.x),wA(n.y,e.y)}function EA(n,e,t,i,r){return n-=e,n=zm(n,1/t,i),r!==void 0&&(n=zm(n,1/r,i)),n}function s4(n,e=0,t=1,i=.5,r,s=n,o=n){if(ss.test(e)&&(e=parseFloat(e),e=ln(o.min,o.max,e/100)-o.min),typeof e!="number")return;let a=ln(s.min,s.max,i);n===s&&(a-=e),n.min=EA(n.min,e,t,a,r),n.max=EA(n.max,e,t,a,r)}function AA(n,e,[t,i,r],s,o){s4(n,e[t],e[i],e[r],e.scale,s,o)}const o4=["x","scaleX","originX"],a4=["y","scaleY","originY"];function TA(n,e,t,i){AA(n.x,e,o4,t?t.x:void 0,i?i.x:void 0),AA(n.y,e,a4,t?t.y:void 0,i?i.y:void 0)}function bA(n){return n.translate===0&&n.scale===1}function wR(n){return bA(n.x)&&bA(n.y)}function l4(n,e){return n.x.min===e.x.min&&n.x.max===e.x.max&&n.y.min===e.y.min&&n.y.max===e.y.max}function ER(n,e){return Math.round(n.x.min)===Math.round(e.x.min)&&Math.round(n.x.max)===Math.round(e.x.max)&&Math.round(n.y.min)===Math.round(e.y.min)&&Math.round(n.y.max)===Math.round(e.y.max)}function CA(n){return er(n.x)/er(n.y)}class c4{constructor(){this.members=[]}add(e){tS(this.members,e),e.scheduleRender()}remove(e){if(nS(this.members,e),e===this.prevLead&&(this.prevLead=void 0),e===this.lead){const t=this.members[this.members.length-1];t&&this.promote(t)}}relegate(e){const t=this.members.findIndex(r=>e===r);if(t===0)return!1;let i;for(let r=t;r>=0;r--){const s=this.members[r];if(s.isPresent!==!1){i=s;break}}return i?(this.promote(i),!0):!1}promote(e,t){const i=this.lead;if(e!==i&&(this.prevLead=i,this.lead=e,e.show(),i)){i.instance&&i.scheduleRender(),e.scheduleRender(),e.resumeFrom=i,t&&(e.resumeFrom.preserveOpacity=!0),i.snapshot&&(e.snapshot=i.snapshot,e.snapshot.latestValues=i.animationValues||i.latestValues),e.root&&e.root.isUpdating&&(e.isLayoutDirty=!0);const{crossfade:r}=e.options;r===!1&&i.hide()}}exitAnimationComplete(){this.members.forEach(e=>{const{options:t,resumingFrom:i}=e;t.onExitComplete&&t.onExitComplete(),i&&i.options.onExitComplete&&i.options.onExitComplete()})}scheduleRender(){this.members.forEach(e=>{e.instance&&e.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function PA(n,e,t){let i="";const r=n.x.translate/e.x,s=n.y.translate/e.y;if((r||s)&&(i=`translate3d(${r}px, ${s}px, 0) `),(e.x!==1||e.y!==1)&&(i+=`scale(${1/e.x}, ${1/e.y}) `),t){const{rotate:c,rotateX:f,rotateY:h}=t;c&&(i+=`rotate(${c}deg) `),f&&(i+=`rotateX(${f}deg) `),h&&(i+=`rotateY(${h}deg) `)}const o=n.x.scale*e.x,a=n.y.scale*e.y;return(o!==1||a!==1)&&(i+=`scale(${o}, ${a})`),i||"none"}const u4=(n,e)=>n.depth-e.depth;class f4{constructor(){this.children=[],this.isDirty=!1}add(e){tS(this.children,e),this.isDirty=!0}remove(e){nS(this.children,e),this.isDirty=!0}forEach(e){this.isDirty&&this.children.sort(u4),this.isDirty=!1,this.children.forEach(e)}}function h4(n,e){const t=performance.now(),i=({timestamp:r})=>{const s=r-t;s>=e&&(Hs(i),n(s-e))};return Zt.read(i,!0),()=>Hs(i)}function d4(n){window.MotionDebug&&window.MotionDebug.record(n)}function p4(n){return n instanceof SVGElement&&n.tagName!=="svg"}function m4(n,e,t){const i=ki(n)?n:Rc(n);return i.start(eS("",i,e,t)),i.animation}const RA=["","X","Y","Z"],g4={visibility:"hidden"},LA=1e3;let v4=0;const _a={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0};function AR({attachResizeListener:n,defaultParent:e,measureScroll:t,checkIsScrollRoot:i,resetTransform:r}){return class{constructor(o={},a=e==null?void 0:e()){this.id=v4++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,_a.totalNodes=_a.resolvedTargetDeltas=_a.recalculatedProjection=0,this.nodes.forEach(_4),this.nodes.forEach(A4),this.nodes.forEach(T4),this.nodes.forEach(S4),d4(_a)},this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=o,this.root=a?a.root||a:this,this.path=a?[...a.path,a]:[],this.parent=a,this.depth=a?a.depth+1:0;for(let c=0;cthis.root.updateBlockedByResize=!1;n(o,()=>{this.root.updateBlockedByResize=!0,d&&d(),d=h4(p,250),$p.hasAnimatedSinceResize&&($p.hasAnimatedSinceResize=!1,this.nodes.forEach(NA))})}c&&this.root.registerSharedNode(c,this),this.options.animate!==!1&&h&&(c||f)&&this.addEventListener("didUpdate",({delta:d,hasLayoutChanged:p,hasRelativeTargetChanged:m,layout:y})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const _=this.options.transition||h.getDefaultTransition()||L4,{onLayoutAnimationStart:x,onLayoutAnimationComplete:g}=h.getProps(),S=!this.targetLayout||!ER(this.targetLayout,y)||m,M=!p&&m;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||M||p&&(S||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(d,M);const A={...$1(_,"layout"),onPlay:x,onComplete:g};(h.shouldReduceMotion||this.options.layoutRoot)&&(A.delay=0,A.type=!1),this.startAnimation(A)}else p||NA(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=y})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const o=this.getStack();o&&o.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,Hs(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(b4),this.animationId++)}getTransformTemplate(){const{visualElement:o}=this.options;return o&&o.getProps().transformTemplate}willUpdate(o=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let h=0;hthis.update()))}clearAllSnapshots(){this.nodes.forEach(M4),this.sharedNodes.forEach(C4)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Zt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Zt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let c=0;c{const R=A/1e3;DA(d.x,o.x,R),DA(d.y,o.y,R),this.setTargetDelta(d),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(sf(p,this.layout.layoutBox,this.relativeParent.layout.layoutBox),P4(this.relativeTarget,this.relativeTargetOrigin,p,R),M&&l4(this.relativeTarget,M)&&(this.isProjectionDirty=!1),M||(M=An()),fr(M,this.relativeTarget)),_&&(this.animationValues=h,n4(h,f,this.latestValues,R,S,g)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=R},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(o){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(Hs(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Zt.update(()=>{$p.hasAnimatedSinceResize=!0,this.currentAnimation=m4(0,LA,{...o,onUpdate:a=>{this.mixTargetDelta(a),o.onUpdate&&o.onUpdate(a)},onComplete:()=>{o.onComplete&&o.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const o=this.getStack();o&&o.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(LA),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const o=this.getLead();let{targetWithTransforms:a,target:c,layout:f,latestValues:h}=o;if(!(!a||!c||!f)){if(this!==o&&this.layout&&f&&TR(this.options.animationType,this.layout.layoutBox,f.layoutBox)){c=this.target||An();const d=er(this.layout.layoutBox.x);c.x.min=o.target.x.min,c.x.max=c.x.min+d;const p=er(this.layout.layoutBox.y);c.y.min=o.target.y.min,c.y.max=c.y.min+p}fr(a,c),lc(a,h),rf(this.projectionDeltaWithTransform,this.layoutCorrected,a,h)}}registerSharedNode(o,a){this.sharedNodes.has(o)||this.sharedNodes.set(o,new c4),this.sharedNodes.get(o).add(a);const f=a.options.initialPromotionConfig;a.promote({transition:f?f.transition:void 0,preserveFollowOpacity:f&&f.shouldPreserveFollowOpacity?f.shouldPreserveFollowOpacity(a):void 0})}isLead(){const o=this.getStack();return o?o.lead===this:!0}getLead(){var o;const{layoutId:a}=this.options;return a?((o=this.getStack())===null||o===void 0?void 0:o.lead)||this:this}getPrevLead(){var o;const{layoutId:a}=this.options;return a?(o=this.getStack())===null||o===void 0?void 0:o.prevLead:void 0}getStack(){const{layoutId:o}=this.options;if(o)return this.root.sharedNodes.get(o)}promote({needsReset:o,transition:a,preserveFollowOpacity:c}={}){const f=this.getStack();f&&f.promote(this,c),o&&(this.projectionDelta=void 0,this.needsReset=!0),a&&this.setOptions({transition:a})}relegate(){const o=this.getStack();return o?o.relegate(this):!1}resetRotation(){const{visualElement:o}=this.options;if(!o)return;let a=!1;const{latestValues:c}=o;if((c.rotate||c.rotateX||c.rotateY||c.rotateZ)&&(a=!0),!a)return;const f={};for(let h=0;h{var a;return(a=o.currentAnimation)===null||a===void 0?void 0:a.stop()}),this.root.nodes.forEach(IA),this.root.sharedNodes.clear()}}}function y4(n){n.updateLayout()}function x4(n){var e;const t=((e=n.resumeFrom)===null||e===void 0?void 0:e.snapshot)||n.snapshot;if(n.isLead()&&n.layout&&t&&n.hasListeners("didUpdate")){const{layoutBox:i,measuredBox:r}=n.layout,{animationType:s}=n.options,o=t.source!==n.layout.source;s==="size"?dr(d=>{const p=o?t.measuredBox[d]:t.layoutBox[d],m=er(p);p.min=i[d].min,p.max=p.min+m}):TR(s,t.layoutBox,i)&&dr(d=>{const p=o?t.measuredBox[d]:t.layoutBox[d],m=er(i[d]);p.max=p.min+m,n.relativeTarget&&!n.currentAnimation&&(n.isProjectionDirty=!0,n.relativeTarget[d].max=n.relativeTarget[d].min+m)});const a=ac();rf(a,i,t.layoutBox);const c=ac();o?rf(c,n.applyTransform(r,!0),t.measuredBox):rf(c,i,t.layoutBox);const f=!wR(a);let h=!1;if(!n.resumeFrom){const d=n.getClosestProjectingParent();if(d&&!d.resumeFrom){const{snapshot:p,layout:m}=d;if(p&&m){const y=An();sf(y,t.layoutBox,p.layoutBox);const _=An();sf(_,i,m.layoutBox),ER(y,_)||(h=!0),d.options.layoutRoot&&(n.relativeTarget=_,n.relativeTargetOrigin=y,n.relativeParent=d)}}}n.notifyListeners("didUpdate",{layout:i,snapshot:t,delta:c,layoutDelta:a,hasLayoutChanged:f,hasRelativeTargetChanged:h})}else if(n.isLead()){const{onExitComplete:i}=n.options;i&&i()}n.options.transition=void 0}function _4(n){_a.totalNodes++,n.parent&&(n.isProjecting()||(n.isProjectionDirty=n.parent.isProjectionDirty),n.isSharedProjectionDirty||(n.isSharedProjectionDirty=!!(n.isProjectionDirty||n.parent.isProjectionDirty||n.parent.isSharedProjectionDirty)),n.isTransformDirty||(n.isTransformDirty=n.parent.isTransformDirty))}function S4(n){n.isProjectionDirty=n.isSharedProjectionDirty=n.isTransformDirty=!1}function M4(n){n.clearSnapshot()}function IA(n){n.clearMeasurements()}function w4(n){n.isLayoutDirty=!1}function E4(n){const{visualElement:e}=n.options;e&&e.getProps().onBeforeLayoutMeasure&&e.notify("BeforeLayoutMeasure"),n.resetTransform()}function NA(n){n.finishAnimation(),n.targetDelta=n.relativeTarget=n.target=void 0,n.isProjectionDirty=!0}function A4(n){n.resolveTargetDelta()}function T4(n){n.calcProjection()}function b4(n){n.resetRotation()}function C4(n){n.removeLeadSnapshot()}function DA(n,e,t){n.translate=ln(e.translate,0,t),n.scale=ln(e.scale,1,t),n.origin=e.origin,n.originPoint=e.originPoint}function UA(n,e,t,i){n.min=ln(e.min,t.min,i),n.max=ln(e.max,t.max,i)}function P4(n,e,t,i){UA(n.x,e.x,t.x,i),UA(n.y,e.y,t.y,i)}function R4(n){return n.animationValues&&n.animationValues.opacityExit!==void 0}const L4={duration:.45,ease:[.4,0,.1,1]},OA=n=>typeof navigator<"u"&&navigator.userAgent.toLowerCase().includes(n),kA=OA("applewebkit/")&&!OA("chrome/")?Math.round:gn;function FA(n){n.min=kA(n.min),n.max=kA(n.max)}function I4(n){FA(n.x),FA(n.y)}function TR(n,e,t){return n==="position"||n==="preserve-aspect"&&!zx(CA(e),CA(t),.2)}const N4=AR({attachResizeListener:(n,e)=>Ls(n,"resize",e),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Vv={current:void 0},bR=AR({measureScroll:n=>({x:n.scrollLeft,y:n.scrollTop}),defaultParent:()=>{if(!Vv.current){const n=new N4({});n.mount(window),n.setOptions({layoutScroll:!0}),Vv.current=n}return Vv.current},resetTransform:(n,e)=>{n.style.transform=e!==void 0?e:"none"},checkIsScrollRoot:n=>window.getComputedStyle(n).position==="fixed"}),D4={pan:{Feature:ZF},drag:{Feature:KF,ProjectionNode:bR,MeasureLayout:_R}},U4=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function O4(n){const e=U4.exec(n);if(!e)return[,];const[,t,i]=e;return[t,i]}function Gx(n,e,t=1){const[i,r]=O4(n);if(!i)return;const s=window.getComputedStyle(e).getPropertyValue(i);if(s){const o=s.trim();return cR(o)?parseFloat(o):o}else return Ix(r)?Gx(r,e,t+1):r}function k4(n,{...e},t){const i=n.current;if(!(i instanceof Element))return{target:e,transitionEnd:t};t&&(t={...t}),n.values.forEach(r=>{const s=r.get();if(!Ix(s))return;const o=Gx(s,i);o&&r.set(o)});for(const r in e){const s=e[r];if(!Ix(s))continue;const o=Gx(s,i);o&&(e[r]=o,t||(t={}),t[r]===void 0&&(t[r]=s))}return{target:e,transitionEnd:t}}const F4=new Set(["width","height","top","left","right","bottom","x","y","translateX","translateY"]),CR=n=>F4.has(n),z4=n=>Object.keys(n).some(CR),zA=n=>n===nl||n===ht,BA=(n,e)=>parseFloat(n.split(", ")[e]),VA=(n,e)=>(t,{transform:i})=>{if(i==="none"||!i)return 0;const r=i.match(/^matrix3d\((.+)\)$/);if(r)return BA(r[1],e);{const s=i.match(/^matrix\((.+)\)$/);return s?BA(s[1],n):0}},B4=new Set(["x","y","z"]),V4=oh.filter(n=>!B4.has(n));function H4(n){const e=[];return V4.forEach(t=>{const i=n.getValue(t);i!==void 0&&(e.push([t,i.get()]),i.set(t.startsWith("scale")?1:0))}),e.length&&n.render(),e}const Lc={width:({x:n},{paddingLeft:e="0",paddingRight:t="0"})=>n.max-n.min-parseFloat(e)-parseFloat(t),height:({y:n},{paddingTop:e="0",paddingBottom:t="0"})=>n.max-n.min-parseFloat(e)-parseFloat(t),top:(n,{top:e})=>parseFloat(e),left:(n,{left:e})=>parseFloat(e),bottom:({y:n},{top:e})=>parseFloat(e)+(n.max-n.min),right:({x:n},{left:e})=>parseFloat(e)+(n.max-n.min),x:VA(4,13),y:VA(5,14)};Lc.translateX=Lc.x;Lc.translateY=Lc.y;const G4=(n,e,t)=>{const i=e.measureViewportBox(),r=e.current,s=getComputedStyle(r),{display:o}=s,a={};o==="none"&&e.setStaticValue("display",n.display||"block"),t.forEach(f=>{a[f]=Lc[f](i,s)}),e.render();const c=e.measureViewportBox();return t.forEach(f=>{const h=e.getValue(f);h&&h.jump(a[f]),n[f]=Lc[f](c,s)}),n},W4=(n,e,t={},i={})=>{e={...e},i={...i};const r=Object.keys(e).filter(CR);let s=[],o=!1;const a=[];if(r.forEach(c=>{const f=n.getValue(c);if(!n.hasValue(c))return;let h=t[c],d=_u(h);const p=e[c];let m;if(Dm(p)){const y=p.length,_=p[0]===null?1:0;h=p[_],d=_u(h);for(let x=_;x=0?window.pageYOffset:null,f=G4(e,n,a);return s.length&&s.forEach(([h,d])=>{n.getValue(h).set(d)}),n.render(),pg&&c!==null&&window.scrollTo({top:c}),{target:f,transitionEnd:i}}else return{target:e,transitionEnd:i}};function j4(n,e,t,i){return z4(e)?W4(n,e,t,i):{target:e,transitionEnd:i}}const X4=(n,e,t,i)=>{const r=k4(n,e,i);return e=r.target,i=r.transitionEnd,j4(n,e,t,i)},Wx={current:null},PR={current:!1};function Y4(){if(PR.current=!0,!!pg)if(window.matchMedia){const n=window.matchMedia("(prefers-reduced-motion)"),e=()=>Wx.current=n.matches;n.addListener(e),e()}else Wx.current=!1}function q4(n,e,t){const{willChange:i}=e;for(const r in e){const s=e[r],o=t[r];if(ki(s))n.addValue(r,s),Fm(i)&&i.add(r);else if(ki(o))n.addValue(r,Rc(s,{owner:n})),Fm(i)&&i.remove(r);else if(o!==s)if(n.hasValue(r)){const a=n.getValue(r);!a.hasAnimated&&a.set(s)}else{const a=n.getStaticValue(r);n.addValue(r,Rc(a!==void 0?a:s,{owner:n}))}}for(const r in t)e[r]===void 0&&n.removeValue(r);return e}const HA=new WeakMap,RR=Object.keys(Pf),K4=RR.length,GA=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],Z4=z1.length;class J4{constructor({parent:e,props:t,presenceContext:i,reducedMotionConfig:r,visualState:s},o={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.scheduleRender=()=>Zt.render(this.render,!1,!0);const{latestValues:a,renderState:c}=s;this.latestValues=a,this.baseTarget={...a},this.initialValues=t.initial?{...a}:{},this.renderState=c,this.parent=e,this.props=t,this.presenceContext=i,this.depth=e?e.depth+1:0,this.reducedMotionConfig=r,this.options=o,this.isControllingVariants=gg(t),this.isVariantNode=pP(t),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(e&&e.current);const{willChange:f,...h}=this.scrapeMotionValuesFromProps(t,{});for(const d in h){const p=h[d];a[d]!==void 0&&ki(p)&&(p.set(a[d],!1),Fm(f)&&f.add(d))}}scrapeMotionValuesFromProps(e,t){return{}}mount(e){this.current=e,HA.set(e,this),this.projection&&!this.projection.instance&&this.projection.mount(e),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((t,i)=>this.bindToMotionValue(i,t)),PR.current||Y4(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:Wx.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){HA.delete(this.current),this.projection&&this.projection.unmount(),Hs(this.notifyUpdate),Hs(this.render),this.valueSubscriptions.forEach(e=>e()),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const e in this.events)this.events[e].clear();for(const e in this.features)this.features[e].unmount();this.current=null}bindToMotionValue(e,t){const i=tl.has(e),r=t.on("change",o=>{this.latestValues[e]=o,this.props.onUpdate&&Zt.update(this.notifyUpdate,!1,!0),i&&this.projection&&(this.projection.isTransformDirty=!0)}),s=t.on("renderRequest",this.scheduleRender);this.valueSubscriptions.set(e,()=>{r(),s()})}sortNodePosition(e){return!this.current||!this.sortInstanceNodePosition||this.type!==e.type?0:this.sortInstanceNodePosition(this.current,e.current)}loadFeatures({children:e,...t},i,r,s){let o,a;for(let c=0;cthis.scheduleRender(),animationType:typeof f=="string"?f:"both",initialPromotionConfig:s,layoutScroll:p,layoutRoot:m})}return a}updateFeatures(){for(const e in this.features){const t=this.features[e];t.isMounted?t.update():(t.mount(),t.isMounted=!0)}}triggerBuild(){this.build(this.renderState,this.latestValues,this.options,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):An()}getStaticValue(e){return this.latestValues[e]}setStaticValue(e,t){this.latestValues[e]=t}makeTargetAnimatable(e,t=!0){return this.makeTargetAnimatableFromInstance(e,this.props,t)}update(e,t){(e.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=e,this.prevPresenceContext=this.presenceContext,this.presenceContext=t;for(let i=0;it.variantChildren.delete(e)}addValue(e,t){t!==this.values.get(e)&&(this.removeValue(e),this.bindToMotionValue(e,t)),this.values.set(e,t),this.latestValues[e]=t.get()}removeValue(e){this.values.delete(e);const t=this.valueSubscriptions.get(e);t&&(t(),this.valueSubscriptions.delete(e)),delete this.latestValues[e],this.removeValueFromRenderState(e,this.renderState)}hasValue(e){return this.values.has(e)}getValue(e,t){if(this.props.values&&this.props.values[e])return this.props.values[e];let i=this.values.get(e);return i===void 0&&t!==void 0&&(i=Rc(t,{owner:this}),this.addValue(e,i)),i}readValue(e){var t;return this.latestValues[e]!==void 0||!this.current?this.latestValues[e]:(t=this.getBaseTargetFromProps(this.props,e))!==null&&t!==void 0?t:this.readValueFromInstance(this.current,e,this.options)}setBaseTarget(e,t){this.baseTarget[e]=t}getBaseTarget(e){var t;const{initial:i}=this.props,r=typeof i=="string"||typeof i=="object"?(t=Y1(this.props,i))===null||t===void 0?void 0:t[e]:void 0;if(i&&r!==void 0)return r;const s=this.getBaseTargetFromProps(this.props,e);return s!==void 0&&!ki(s)?s:this.initialValues[e]!==void 0&&r===void 0?void 0:this.baseTarget[e]}on(e,t){return this.events[e]||(this.events[e]=new iS),this.events[e].add(t)}notify(e,...t){this.events[e]&&this.events[e].notify(...t)}}class LR extends J4{sortInstanceNodePosition(e,t){return e.compareDocumentPosition(t)&2?1:-1}getBaseTargetFromProps(e,t){return e.style?e.style[t]:void 0}removeValueFromRenderState(e,{vars:t,style:i}){delete t[e],delete i[e]}makeTargetAnimatableFromInstance({transition:e,transitionEnd:t,...i},{transformValues:r},s){let o=pF(i,e||{},this);if(r&&(t&&(t=r(t)),i&&(i=r(i)),o&&(o=r(o))),s){hF(this,i,o);const a=X4(this,i,o,t);t=a.transitionEnd,i=a.target}return{transition:e,transitionEnd:t,...i}}}function Q4(n){return window.getComputedStyle(n)}class $4 extends LR{constructor(){super(...arguments),this.type="html"}readValueFromInstance(e,t){if(tl.has(t)){const i=Q1(t);return i&&i.default||0}else{const i=Q4(e),r=(yP(t)?i.getPropertyValue(t):i[t])||0;return typeof r=="string"?r.trim():r}}measureInstanceViewportBox(e,{transformPagePoint:t}){return yR(e,t)}build(e,t,i,r){H1(e,t,i,r.transformTemplate)}scrapeMotionValuesFromProps(e,t){return X1(e,t)}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:e}=this.props;ki(e)&&(this.childSubscription=e.on("change",t=>{this.current&&(this.current.textContent=`${t}`)}))}renderInstance(e,t,i,r){EP(e,t,i,r)}}class ez extends LR{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1}getBaseTargetFromProps(e,t){return e[t]}readValueFromInstance(e,t){if(tl.has(t)){const i=Q1(t);return i&&i.default||0}return t=AP.has(t)?t:k1(t),e.getAttribute(t)}measureInstanceViewportBox(){return An()}scrapeMotionValuesFromProps(e,t){return bP(e,t)}build(e,t,i,r){W1(e,t,i,this.isSVGTag,r.transformTemplate)}renderInstance(e,t,i,r){TP(e,t,i,r)}mount(e){this.isSVGTag=j1(e.tagName),super.mount(e)}}const tz=(n,e)=>V1(n)?new ez(e,{enableHardwareAcceleration:!1}):new $4(e,{enableHardwareAcceleration:!0}),nz={layout:{ProjectionNode:bR,MeasureLayout:_R}},iz={...PF,...KO,...D4,...nz},si=rO((n,e)=>OO(n,e,iz,tz));function IR(){const n=W.useRef(!1);return O1(()=>(n.current=!0,()=>{n.current=!1}),[]),n}function rz(){const n=IR(),[e,t]=W.useState(0),i=W.useCallback(()=>{n.current&&t(e+1)},[e]);return[W.useCallback(()=>Zt.postRender(i),[i]),e]}class sz extends W.Component{getSnapshotBeforeUpdate(e){const t=this.props.childRef.current;if(t&&e.isPresent&&!this.props.isPresent){const i=this.props.sizeRef.current;i.height=t.offsetHeight||0,i.width=t.offsetWidth||0,i.top=t.offsetTop,i.left=t.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function oz({children:n,isPresent:e}){const t=W.useId(),i=W.useRef(null),r=W.useRef({width:0,height:0,top:0,left:0});return W.useInsertionEffect(()=>{const{width:s,height:o,top:a,left:c}=r.current;if(e||!i.current||!s||!o)return;i.current.dataset.motionPopId=t;const f=document.createElement("style");return document.head.appendChild(f),f.sheet&&f.sheet.insertRule(` - [data-motion-pop-id="${t}"] { - position: absolute !important; - width: ${s}px !important; - height: ${o}px !important; - top: ${a}px !important; - left: ${c}px !important; - } - `),()=>{document.head.removeChild(f)}},[e]),W.createElement(sz,{isPresent:e,childRef:i,sizeRef:r},W.cloneElement(n,{ref:i}))}const Hv=({children:n,initial:e,isPresent:t,onExitComplete:i,custom:r,presenceAffectsLayout:s,mode:o})=>{const a=CP(az),c=W.useId(),f=W.useMemo(()=>({id:c,initial:e,isPresent:t,custom:r,onExitComplete:h=>{a.set(h,!0);for(const d of a.values())if(!d)return;i&&i()},register:h=>(a.set(h,!1),()=>a.delete(h))}),s?void 0:[t]);return W.useMemo(()=>{a.forEach((h,d)=>a.set(d,!1))},[t]),W.useEffect(()=>{!t&&!a.size&&i&&i()},[t]),o==="popLayout"&&(n=W.createElement(oz,{isPresent:t},n)),W.createElement(dg.Provider,{value:f},n)};function az(){return new Map}function lz(n){return W.useEffect(()=>()=>n(),[])}const Sa=n=>n.key||"";function cz(n,e){n.forEach(t=>{const i=Sa(t);e.set(i,t)})}function uz(n){const e=[];return W.Children.forEach(n,t=>{W.isValidElement(t)&&e.push(t)}),e}const WA=({children:n,custom:e,initial:t=!0,onExitComplete:i,exitBeforeEnter:r,presenceAffectsLayout:s=!0,mode:o="sync"})=>{const a=W.useContext(B1).forceRender||rz()[0],c=IR(),f=uz(n);let h=f;const d=W.useRef(new Map).current,p=W.useRef(h),m=W.useRef(new Map).current,y=W.useRef(!0);if(O1(()=>{y.current=!1,cz(f,m),p.current=h}),lz(()=>{y.current=!0,m.clear(),d.clear()}),y.current)return W.createElement(W.Fragment,null,h.map(S=>W.createElement(Hv,{key:Sa(S),isPresent:!0,initial:t?void 0:!1,presenceAffectsLayout:s,mode:o},S)));h=[...h];const _=p.current.map(Sa),x=f.map(Sa),g=_.length;for(let S=0;S{if(x.indexOf(M)!==-1)return;const A=m.get(M);if(!A)return;const R=_.indexOf(M);let C=S;if(!C){const L=()=>{d.delete(M);const I=Array.from(m.keys()).filter(P=>!x.includes(P));if(I.forEach(P=>m.delete(P)),p.current=f.filter(P=>{const b=Sa(P);return b===M||I.includes(b)}),!d.size){if(c.current===!1)return;a(),i&&i()}};C=W.createElement(Hv,{key:Sa(A),isPresent:!1,onExitComplete:L,custom:e,presenceAffectsLayout:s,mode:o},A),d.set(M,C)}h.splice(R,0,C)}),h=h.map(S=>{const M=S.key;return d.has(M)?S:W.createElement(Hv,{key:Sa(S),isPresent:!0,presenceAffectsLayout:s,mode:o},S)}),W.createElement(W.Fragment,null,d.size?h:h.map(S=>W.cloneElement(S)))},uh=n=>({hidden:{y:-50,opacity:0},show:{y:0,opacity:1,transition:{type:"spring",duration:1.25,delay:n}}}),zc=(n,e,t,i)=>({hidden:{x:n==="left"?100:n==="right"?-100:0,y:n==="up"?100:n==="down"?-100:0,opacity:0},show:{x:0,y:0,opacity:1,transition:{type:e,delay:t,duration:i,ease:"easeOut"}}}),fz=(n,e)=>({hidden:{},show:{transition:{staggerChildren:n,delayChildren:e||0}}}),Bc=(n,e)=>function(){return H.jsxs(si.section,{variants:fz(),initial:"hidden",whileInView:"show",viewport:{once:!0,amount:0},exit:"hidden",className:`${ci.padding} max-w-7xl mx-auto relative z-0`,children:[H.jsx("span",{className:"hash-span",id:e,children:" "}),H.jsx(n,{})]})};var hz=Object.defineProperty,dz=Object.defineProperties,pz=Object.getOwnPropertyDescriptors,jA=Object.getOwnPropertySymbols,mz=Object.prototype.hasOwnProperty,gz=Object.prototype.propertyIsEnumerable,XA=(n,e,t)=>e in n?hz(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Mu=(n,e)=>{for(var t in e||(e={}))mz.call(e,t)&&XA(n,t,e[t]);if(jA)for(var t of jA(e))gz.call(e,t)&&XA(n,t,e[t]);return n},wu=(n,e)=>dz(n,pz(e)),_g=class extends W.Component{constructor(n){super(n),this.ref=Zm.createRef(),this.state={style:{}};const e={reverse:!1,max:35,perspective:1e3,easing:"cubic-bezier(.03,.98,.52,.99)",scale:"1.1",speed:"1000",transition:!0,axis:null,reset:!0};this.width=null,this.height=null,this.left=null,this.top=null,this.transitionTimeout=null,this.updateCall=null,this.element=null,this.settings=Object.assign({},e,this.props.options),this.reverse=this.settings.reverse?-1:1,this.onMouseEnter=this.onMouseEnter.bind(this,this.props.onMouseEnter),this.onMouseMove=this.onMouseMove.bind(this,this.props.onMouseMove),this.onMouseLeave=this.onMouseLeave.bind(this,this.props.onMouseLeave)}componentDidMount(){this.element=this.ref.current,setTimeout(()=>{this.element.parentElement.querySelector(":hover")===this.element&&this.onMouseEnter()},0)}componentWillUnmount(){clearTimeout(this.transitionTimeout),cancelAnimationFrame(this.updateCall)}onMouseEnter(n=()=>{},e){return this.updateElementPosition(),this.setState(Object.assign({},this.state,{style:wu(Mu({},this.state.style),{willChange:"transform"})})),this.setTransition(),n(e)}reset(){window.requestAnimationFrame(()=>{this.setState(Object.assign({},this.state,{style:wu(Mu({},this.state.style),{transform:`perspective(${this.settings.perspective}px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)`})}))})}onMouseMove(n=()=>{},e){return e.persist(),this.updateCall!==null&&window.cancelAnimationFrame(this.updateCall),this.event=e,this.updateCall=requestAnimationFrame(this.update.bind(this,e)),n(e)}setTransition(){clearTimeout(this.transitionTimeout),this.setState(Object.assign({},this.state,{style:wu(Mu({},this.state.style),{transition:`${this.settings.speed}ms ${this.settings.easing}`})})),this.transitionTimeout=setTimeout(()=>{this.setState(Object.assign({},this.state,{style:wu(Mu({},this.state.style),{transition:""})}))},this.settings.speed)}onMouseLeave(n=()=>{},e){return this.setTransition(),this.settings.reset&&this.reset(),n(e)}getValues(n){const e=(n.nativeEvent.clientX-this.left)/this.width,t=(n.nativeEvent.clientY-this.top)/this.height,i=Math.min(Math.max(e,0),1),r=Math.min(Math.max(t,0),1),s=(this.reverse*(this.settings.max/2-i*this.settings.max)).toFixed(2),o=(this.reverse*(r*this.settings.max-this.settings.max/2)).toFixed(2),a=i*100,c=r*100;return{tiltX:s,tiltY:o,percentageX:a,percentageY:c}}updateElementPosition(){const n=this.element.getBoundingClientRect();this.width=this.element.offsetWidth,this.height=this.element.offsetHeight,this.left=n.left,this.top=n.top}update(n){const e=this.getValues(n);this.setState(Object.assign({},this.state,{style:wu(Mu({},this.state.style),{transform:`perspective(${this.settings.perspective}px) rotateX(${this.settings.axis==="x"?0:e.tiltY}deg) rotateY(${this.settings.axis==="y"?0:e.tiltX}deg) scale3d(${this.settings.scale}, ${this.settings.scale}, ${this.settings.scale})`})})),this.updateCall=null}render(){const n=Object.assign({},this.props.style,this.state.style);return H.jsx("div",{style:n,ref:this.ref,className:this.props.className,onMouseEnter:this.onMouseEnter,onMouseMove:this.onMouseMove,onMouseLeave:this.onMouseLeave,children:this.props.children})}};const vz="/portfolio-react-threejs/assets/web-0c6824d5.webp",yz="/portfolio-react-threejs/assets/mobile-84df6906.webp",xz="/portfolio-react-threejs/assets/creator-ab86683b.webp",_z="/portfolio-react-threejs/assets/csi-1f769921.webp",Sz="/portfolio-react-threejs/assets/msc-abe50c5d.webp",Mz="/portfolio-react-threejs/assets/nettv4u-35143e02.webp",wz="/portfolio-react-threejs/assets/shapeout-d15c331a.webp",Ez="/portfolio-react-threejs/assets/facedetection-65dc0246.webp",Az="/portfolio-react-threejs/assets/Hi-783be2bb.webp",Tz="/portfolio-react-threejs/assets/langgo-41707292.webp",bz="/portfolio-react-threejs/assets/lifeoverseas-fd137d40.webp",Cz="/portfolio-react-threejs/assets/velox-429d856c.webp",Pz="/portfolio-react-threejs/assets/yolo-9ff20b51.webp",Rz="/portfolio-react-threejs/assets/anon_exchange-3f3d612c.webp",Lz="/portfolio-react-threejs/assets/banana_class-8925bee5.webp",Iz="/portfolio-react-threejs/assets/convogen-ba953cbd.webp",Nz="/portfolio-react-threejs/assets/downloadtube-64b5de57.webp",YA=[{id:"HeroSection",title:"Home",type:"route"},{id:"AboutSection",title:"About",type:"route"},{id:"ExperienceSection",title:"Experience",type:"route"},{id:"TechSkillsSection",title:"Skills",type:"route"},{id:"ResumeSection",title:"Resume",type:"route"},{id:"ProjectsSection",title:"Projects",type:"route"},{id:"BlogsSections",title:"Blogs",type:"route"},{id:"ContactSection",title:"Contact",type:"route"},{id:"freetools",title:"Free Tools",type:"tools"}],Dz=[{id:"DownloadTube",title:"DownloadTube (Youtube Downloader)",type:"video",url:"https://downloadtube-iota.vercel.app/"}],Uz=[{title:"Full Stack Web Development",icon:vz},{title:"Designing",icon:xz},{title:"ML and DL Learner",icon:yz}],Oz=[{title:"Technical Content Writer",company_name:"Nettv4u",icon:Mz,iconBg:"white",date:"October 2023 - December 2023 (2 Months)",points:["Writing Professional articles related to IT.","Ensuring use of no AI content in articles.","Creating articles on real facts and data."]},{title:"Technical member",company_name:"Microsoft Student Chapter",icon:Sz,iconBg:"black",date:"October 2022 - March 2023 (6 Months)",points:["Maintaining the website and ensuring that it is up-to-date and functioning properly.","Collaborating with other members of the chapter to identify areas for improvement on the website.","Implementing changes and updates to the website using programming languages such as React.js, tailwind and JavaScript.","Debugging any issues or errors that arise on the website and working to resolve them."]},{title:"V open source member",company_name:"CSI Chapter",icon:_z,iconBg:"white",date:"Augest 2021 - June 2022 (11 Months)",points:["Conducting regular meetings to discuss open source projects and new initiatives.","Conducting workshops and training sessions to help members learn more about open source technologies.","Coordinating with other teams within the CSI chapter to ensure smooth execution of events."]}],kz=[{name:"Downloadtube",description:"DownloadTube offers a fast, free, and easy way to download your favorite YouTube videos and music directly to your device. Enjoy high-quality video and audio downloads with no subscription required. Explore a variety of formats and resolutions to suit all your playback needs. ",tags:[{name:"next.js",color:"blue-text-gradient"},{name:"js",color:"green-text-gradient"},{name:"Youtube API",color:"pink-text-gradient"}],image:Nz,source_code_link:{Live:"https://downloadtube-iota.vercel.app/",Github:"https://downloadtube-iota.vercel.app/"},date:"February 2024"},{name:"ConvoGen AI",description:"'ConvoGen' is the virtual embodiment of me, a chatbot that offers lifelike insights and information about my experiences, interests, and personality. Engage in conversations that feel as real as speaking with me in person, as 'ConvoGen' shares a wealth of personal details and knowledge, creating a truly immersive and authentic chatbot experience.",tags:[{name:"T5 model",color:"blue-text-gradient"},{name:"Transformer",color:"green-text-gradient"},{name:"Colab",color:"pink-text-gradient"}],image:Iz,source_code_link:{Colab:"https://colab.research.google.com/drive/1a6LATySYKaS8qqfk_4maSaV4guvTRA-8?usp=sharing"},date:"October 2023"},{name:"Anon Exchange - Anonymous chatting app",description:"An innovative anonymous chatting app that redefines digital interactions. This project empowers strangers to connect seamlessly, engaging in candid conversations without the constraints of identity. What sets us apart is our commitment to privacy, allowing users to create exclusive private chat rooms for confidential discussions.",tags:[{name:"vitejs",color:"blue-text-gradient"},{name:"supabase",color:"green-text-gradient"},{name:"tailwind CSS",color:"pink-text-gradient"}],image:Rz,source_code_link:{Live:"https://anon-exchange-lyart.vercel.app/",Github:"https://github.com/bedead/Anon-Exchange-chatting"},date:"August 2023"},{name:"Banana disease classification",description:"Banana disease classification is a project that uses a YOLOv8 deep learning model to detect and identify various diseases affecting banana plants. The project is based on a custom dataset of images of banana leaves with different types of infections. The project aims to provide a fast and accurate diagnosis of banana diseases, which can help farmers and researchers to prevent crop losses and improve banana production.",tags:[{name:"YOLOv8",color:"green-text-gradient"},{name:"Colab",color:"pink-text-gradient"}],image:Lz,source_code_link:{Colab:"https://colab.research.google.com/drive/1TLumA28dCY-9_lzouIJtt2CsCjONGdNy?usp=sharing"},date:"August 2023"},{name:"PATENT - CLASSIFICATION OF LUNG CANCER USING DEEP LEARNING TECHNIQUES.",description:"Application No - 202341039647 The model is based on a YOLOv8 (Deep learning Neural network architecture) and is trained on the publicly available dataset, which consists of lung CT scans of patients with and without lung cancer.",tags:[{name:"Gradio",color:"blue-text-gradient"},{name:"YOLO",color:"green-text-gradient"},{name:"Roboflow",color:"pink-text-gradient"}],image:Pz,source_code_link:{Huggingface:"https://huggingface.co/spaces/bedead/Lung-cancer-classification",Github:"https://github.com/bedead/lung-cancer-classification-yoloV8---gradio.git"},date:"June 2023"},{name:"Face Detection",description:"'FACE-DETECTOR' is a GitHub repository showcasing an OpenCV project for detecting human faces using a cascade classifier. The project utilizes the OpenCV library, which is a popular computer vision library in Python, to detect human faces in images or video streams.",tags:[{name:"Cascade classifier",color:"blue-text-gradient"},{name:"Python",color:"green-text-gradient"},{name:"OpenCV",color:"pink-text-gradient"}],image:Ez,source_code_link:{Github:"https://github.com/bedead/FACE-DETECTOR.git"},date:"Feb 2023"},{name:"Life Overseas",description:"Life Overseas is a concept website that aims to provide students with valuable resources and information to successfully clear entrance exams for foreign colleges.",tags:[{name:"Flask",color:"blue-text-gradient"},{name:"Python",color:"green-text-gradient"}],image:bz,source_code_link:{Live:"https://full-dashing-age.glitch.me/",Github:"https://github.com/bedead/Life-Overseas-webiste.git"},date:"Jan 2023"},{name:"Velox Todo",description:"Velox Todo is a Windows application built using JavaFX and JSON files. It is a task management tool designed to help users organize and prioritize their daily tasks efficiently.",tags:[{name:"Java",color:"blue-text-gradient"},{name:"JavaFX",color:"green-text-gradient"},{name:"JSON",color:"pink-text-gradient"}],image:Cz,source_code_link:{Github:"https://github.com/bedead/Velox-Todo-Application.git"},date:"Sep 2022"},{name:"HI",description:"'HI' is a console-based conversational app written in Python. It utilizes various libraries such as pyinstaller, pyjokes, PyDictionary, platform, psutil, requests, getpass, pywhatkit, pyttsx3, speechrecognition, Wikipedia, Pyaudio, speedtest-cli, pyautogui, and py-cpuinfo to provide a wide range of functionalities.",tags:[{name:"Python",color:"blue-text-gradient"},{name:"JSON",color:"green-text-gradient"}],image:Az,source_code_link:{Github:"https://github.com/bedead/HI_2021.12.22.4.git"},date:"Mar 2022"},{name:"Lang go",description:"'Lang Go' is a language translation app that is built using the Kivy and KivyMD frameworks in Python. The app utilizes the TextBlob library for translation capabilities. With 'Lang Go', users can input text in one language and translate it to another language seamlessly.",tags:[{name:"Kivy",color:"blue-text-gradient"},{name:"Kivymd",color:"green-text-gradient"},{name:"textBlob",color:"pink-text-gradient"}],image:Tz,source_code_link:{Github:"https://github.com/bedead/kivymd-language-translation-app.git"},date:"Mar 2022"},{name:"Shape out",description:"'Shape Out' is a 2D platformer game available on Amazon, created using the Godot game engine. The game features intuitive controls, colorful graphics, and engaging gameplay that requires players to jump, run, and solve puzzles to progress through the levels.",tags:[{name:"Godot engine",color:"blue-text-gradient"},{name:"GD-script",color:"green-text-gradient"}],image:wz,source_code_link:{Appstore:"https://www.amazon.com/Bedead-Shape-Out-2d-platformer/dp/B0999LHBYN"},date:"Aug 2021"}],Fz=[{name:"Handling missing data using pandas, and sklearn for data cleaning",date:"Aug 28, 2024",img:"https://miro.medium.com/v2/resize:fit:640/format:webp/1*-3g9afffrv_mrOKLreOQUA.png",link:"https://medium.com/@Satyam_Mishra/handling-missing-data-using-pandas-and-sklearn-for-data-cleaning-4687fc87669c"},{name:"React router deployment to gh-pages (issue fixed)",date:"Jan 8, 2024",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/0*KBr7PR6pMmxKnoOn",link:"https://medium.com/@Satyam_Mishra/react-router-deployment-to-gh-pages-issue-fixed-2024-bc7fd80946ad"},{name:"Vite website file not updating without restarting the development server.",date:"Oct 15, 2023",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/0*tvWtuvWK1j4r4c1V",link:"https://medium.com/@Satyam_Mishra/vite-website-file-not-updating-without-restarting-the-development-server-68a7a252186b"},{name:"Deploy your vite (react) app to GitHub pages",date:"Oct 5, 2023",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/1*Ndj_GnufQCzvRyT6454_-Q.png",link:"https://medium.com/@Satyam_Mishra/deploy-your-vite-react-app-to-github-pages-a6342dda470a"},{name:"Two of the best free resources for continuous learning",date:"May 6, 2023",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/1*E8m74KMwm304e_mdPI9g6Q.png",link:"https://medium.com/@Satyam_Mishra/two-of-the-best-free-resources-for-continuous-learning-665fdf52be9b"},{name:"How to set up Vite (react.js) application to have multiple endpoints",date:"Jan 20, 2023",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/1*BnZlZbw6_YmuZ_00h9TNrg.png",link:"https://medium.com/@Satyam_Mishra/how-to-set-up-vite-react-js-application-to-have-multiple-endpoints-a27a388cbbc3"},{name:"Structuring Flask application for multiple apps",date:"Dec 22, 2022",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/1*qNHflWY5VgqfzO35htz8Yw.png",link:"https://medium.com/@Satyam_Mishra/structuring-flask-application-for-multiple-apps-part-2-79eefca094de"},{name:"MUST HAVE DEVELOPER / PROGRAMMERS GEARS.",date:"Dec 17, 2022",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/1*tx9sts6K-tG2myM-OA69vg.png",link:"https://medium.com/@Satyam_Mishra/must-have-developer-programmers-gears-3fd5f805186"},{name:"Learn the basics of Python",date:"Aug 3, 2022",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/0*G9WB3cWh6SmHFA_2",link:"https://medium.com/@Satyam_Mishra/learn-basics-of-python-part-1-9919303c1b3a"},{name:"Create your first Flask application",date:"Jul 29, 2022",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/1*2fA099YHqxNlcxWOK9hMoA.png",link:"https://medium.com/@Satyam_Mishra/create-your-first-flask-application-48a698b524ca"},{name:"Java vs Python (The Ultimate Programming Language)",date:"Jul 22, 2022",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/1*Y_ycyItZ76XNpY9TM76JMg.jpeg",link:"https://medium.com/@Satyam_Mishra/java-vs-python-the-ultimate-programming-language-8c00a5b49cc"},{name:"Getting started with JavaFx in vscode (Beginner way)",date:"Jul 17, 2022",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/1*4PYrphm6D1qQ5GfRGLJllw.jpeg",link:"https://medium.com/@Satyam_Mishra/getting-started-with-javafx-in-vscode-beginner-way-9fed580fd4f"},{name:"A Simple guide to script your first movable car in Godot engine.",date:"Jan 10, 2022",img:"https://miro.medium.com/v2/resize:fit:828/format:webp/1*S4dHJNkanZ_ZQ4-w8fT1nQ.png",link:"https://medium.com/@Satyam_Mishra/a-simple-guide-to-script-your-first-movable-car-in-godot-engine-93177db71472"}],zz=({index:n,title:e,icon:t})=>H.jsx(_g,{className:"xs:w-[250px] w-full",children:H.jsx(si.div,{variants:zc("right","spring",.5*n,.75),className:"w-full green-pink-gradient p-[1px] rounded-[20px] shadow-[#fcd4d4] shadow-card",children:H.jsxs("div",{options:{max:45,scale:1,speed:450},className:"bg-primary rounded-[20px] py-5 px-12 min-h-[280px] flex justify-evenly items-center flex-col",children:[H.jsx("img",{src:t,alt:e,className:"w-16 h-16 object-contain"}),H.jsx("h3",{className:"text-black text-[20px] font-bold text-center",children:e})]})})}),Bz=()=>H.jsxs("section",{children:[H.jsxs(si.div,{variants:uh(0),children:[H.jsx("h2",{className:`${ci.sectionHeadText} text-center`,children:"Overview."}),H.jsxs(si.p,{variants:zc("","",.1,1),className:`${ci.sectionSubText} text-center`,children:["Introduction? Nahh",H.jsx("br",{}),"I do this 👇"]})]}),H.jsx("div",{className:"mt-20 flex flex-wrap justify-center gap-10",children:Uz.map((n,e)=>H.jsx(zz,{index:e,...n},n.title))})]}),Vz=Bc(Bz,"AboutSection");var Sg={},NR={exports:{}},Hz="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Gz=Hz,Wz=Gz;function DR(){}function UR(){}UR.resetWarningCache=DR;var jz=function(){function n(i,r,s,o,a,c){if(c!==Wz){var f=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw f.name="Invariant Violation",f}}n.isRequired=n;function e(){return n}var t={array:n,bigint:n,bool:n,func:n,number:n,object:n,string:n,symbol:n,any:n,arrayOf:e,element:n,elementType:n,instanceOf:e,node:n,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:UR,resetWarningCache:DR};return t.PropTypes=t,t};NR.exports=jz();var OR=NR.exports,kR={exports:{}};/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/(function(n){(function(){var e={}.hasOwnProperty;function t(){for(var s="",o=0;o(typeof window=="object"&&document.documentElement.style.setProperty("--line-color",i),Xz.default.createElement("div",{className:(0,Yz.default)(e,"vertical-timeline",{"vertical-timeline--animate":n,"vertical-timeline--two-columns":t==="2-columns","vertical-timeline--one-column-left":t==="1-column"||t==="1-column-left","vertical-timeline--one-column-right":t==="1-column-right"})},r));zR.propTypes={children:so.default.oneOfType([so.default.arrayOf(so.default.node),so.default.node]).isRequired,className:so.default.string,animate:so.default.bool,layout:so.default.oneOf(["1-column-left","1-column","2-columns","1-column-right"]),lineColor:so.default.string};var qz=zR;Sg.default=qz;var Mg={};function jx(){return jx=Object.assign||function(n){for(var e=1;e=0)&&(t[r]=n[r]);return t}var Yx=new Map,Gd=new WeakMap,qA=0,BR=void 0;function Jz(n){BR=n}function Qz(n){return n?(Gd.has(n)||(qA+=1,Gd.set(n,qA.toString())),Gd.get(n)):"0"}function $z(n){return Object.keys(n).sort().filter(function(e){return n[e]!==void 0}).map(function(e){return e+"_"+(e==="root"?Qz(n.root):n[e])}).toString()}function eB(n){var e=$z(n),t=Yx.get(e);if(!t){var i=new Map,r,s=new IntersectionObserver(function(o){o.forEach(function(a){var c,f=a.isIntersecting&&r.some(function(h){return a.intersectionRatio>=h});n.trackVisibility&&typeof a.isVisible>"u"&&(a.isVisible=f),(c=i.get(a.target))==null||c.forEach(function(h){h(f,a)})})},n);r=s.thresholds||(Array.isArray(n.threshold)?n.threshold:[n.threshold||0]),t={id:e,observer:s,elements:i},Yx.set(e,t)}return t}function sS(n,e,t,i){if(t===void 0&&(t={}),i===void 0&&(i=BR),typeof window.IntersectionObserver>"u"&&i!==void 0){var r=n.getBoundingClientRect();return e(i,{isIntersecting:i,target:n,intersectionRatio:typeof t.threshold=="number"?t.threshold:0,time:0,boundingClientRect:r,intersectionRect:r,rootBounds:r}),function(){}}var s=eB(t),o=s.id,a=s.observer,c=s.elements,f=c.get(n)||[];return c.has(n)||c.set(n,f),f.push(e),a.observe(n),function(){f.splice(f.indexOf(e),1),f.length===0&&(c.delete(n),a.unobserve(n)),c.size===0&&(a.disconnect(),Yx.delete(o))}}var tB=["children","as","triggerOnce","threshold","root","rootMargin","onChange","skip","trackVisibility","delay","initialInView","fallbackInView"];function KA(n){return typeof n.children!="function"}var Bm=function(n){Kz(e,n);function e(i){var r;return r=n.call(this,i)||this,r.node=null,r._unobserveCb=null,r.handleNode=function(s){r.node&&(r.unobserve(),!s&&!r.props.triggerOnce&&!r.props.skip&&r.setState({inView:!!r.props.initialInView,entry:void 0})),r.node=s||null,r.observeNode()},r.handleChange=function(s,o){s&&r.props.triggerOnce&&r.unobserve(),KA(r.props)||r.setState({inView:s,entry:o}),r.props.onChange&&r.props.onChange(s,o)},r.state={inView:!!i.initialInView,entry:void 0},r}var t=e.prototype;return t.componentDidUpdate=function(r){(r.rootMargin!==this.props.rootMargin||r.root!==this.props.root||r.threshold!==this.props.threshold||r.skip!==this.props.skip||r.trackVisibility!==this.props.trackVisibility||r.delay!==this.props.delay)&&(this.unobserve(),this.observeNode())},t.componentWillUnmount=function(){this.unobserve(),this.node=null},t.observeNode=function(){if(!(!this.node||this.props.skip)){var r=this.props,s=r.threshold,o=r.root,a=r.rootMargin,c=r.trackVisibility,f=r.delay,h=r.fallbackInView;this._unobserveCb=sS(this.node,this.handleChange,{threshold:s,root:o,rootMargin:a,trackVisibility:c,delay:f},h)}},t.unobserve=function(){this._unobserveCb&&(this._unobserveCb(),this._unobserveCb=null)},t.render=function(){if(!KA(this.props)){var r=this.state,s=r.inView,o=r.entry;return this.props.children({inView:s,entry:o,ref:this.handleNode})}var a=this.props,c=a.children,f=a.as,h=Zz(a,tB);return W.createElement(f||"div",jx({ref:this.handleNode},h),c)},e}(W.Component);Bm.displayName="InView";Bm.defaultProps={threshold:0,triggerOnce:!1,initialInView:!1};function nB(n){var e=n===void 0?{}:n,t=e.threshold,i=e.delay,r=e.trackVisibility,s=e.rootMargin,o=e.root,a=e.triggerOnce,c=e.skip,f=e.initialInView,h=e.fallbackInView,d=W.useRef(),p=W.useState({inView:!!f}),m=p[0],y=p[1],_=W.useCallback(function(g){d.current!==void 0&&(d.current(),d.current=void 0),!c&&g&&(d.current=sS(g,function(S,M){y({inView:S,entry:M}),M.isIntersecting&&a&&d.current&&(d.current(),d.current=void 0)},{root:o,rootMargin:s,threshold:t,trackVisibility:r,delay:i},h))},[Array.isArray(t)?t.toString():t,o,s,a,c,r,h,i]);W.useEffect(function(){!d.current&&m.entry&&!a&&!c&&y({inView:!!f})});var x=[_,m.inView,m.entry];return x.ref=x[0],x.inView=x[1],x.entry=x[2],x}const iB=Object.freeze(Object.defineProperty({__proto__:null,InView:Bm,default:Bm,defaultFallbackInView:Jz,observe:sS,useInView:nB},Symbol.toStringTag,{value:"Module"})),rB=MN(iB);Mg.__esModule=!0;Mg.default=void 0;var oo=oS(W),nn=oS(OR),Wd=oS(FR),sB=rB;function oS(n){return n&&n.__esModule?n:{default:n}}const VR=({children:n="",className:e="",contentArrowStyle:t=null,contentStyle:i=null,date:r="",dateClassName:s="",icon:o=null,iconClassName:a="",iconOnClick:c=null,onTimelineElementClick:f=null,iconStyle:h=null,id:d="",position:p="",style:m=null,textClassName:y="",intersectionObserverProps:_={rootMargin:"0px 0px -40px 0px",triggerOnce:!0},visible:x=!1})=>oo.default.createElement(sB.InView,_,({inView:g,ref:S})=>oo.default.createElement("div",{ref:S,id:d,className:(0,Wd.default)(e,"vertical-timeline-element",{"vertical-timeline-element--left":p==="left","vertical-timeline-element--right":p==="right","vertical-timeline-element--no-children":n===""}),style:m},oo.default.createElement(oo.default.Fragment,null,oo.default.createElement("span",{style:h,onClick:c,className:(0,Wd.default)(a,"vertical-timeline-element-icon",{"bounce-in":g||x,"is-hidden":!(g||x)})},o),oo.default.createElement("div",{style:i,onClick:f,className:(0,Wd.default)(y,"vertical-timeline-element-content",{"bounce-in":g||x,"is-hidden":!(g||x)})},oo.default.createElement("div",{style:t,className:"vertical-timeline-element-content-arrow"}),n,oo.default.createElement("span",{className:(0,Wd.default)(s,"vertical-timeline-element-date")},r)))));VR.propTypes={children:nn.default.oneOfType([nn.default.arrayOf(nn.default.node),nn.default.node]),className:nn.default.string,contentArrowStyle:nn.default.shape({}),contentStyle:nn.default.shape({}),date:nn.default.node,dateClassName:nn.default.string,icon:nn.default.element,iconClassName:nn.default.string,iconStyle:nn.default.shape({}),iconOnClick:nn.default.func,onTimelineElementClick:nn.default.func,id:nn.default.string,position:nn.default.string,style:nn.default.shape({}),textClassName:nn.default.string,visible:nn.default.bool,intersectionObserverProps:nn.default.shape({root:nn.default.object,rootMargin:nn.default.string,threshold:nn.default.number,triggerOnce:nn.default.bool})};var oB=VR;Mg.default=oB;var HR={VerticalTimeline:Sg.default,VerticalTimelineElement:Mg.default};const aB=({experience:n})=>H.jsxs(HR.VerticalTimelineElement,{contentStyle:{background:"black",color:"black"},contentArrowStyle:{borderRight:"7px solid black"},date:n.date,iconStyle:{background:n.iconBg},icon:H.jsx("div",{className:"flex justify-center items-center w-full h-full",children:H.jsx("img",{src:n.icon,alt:n.company_name,className:"w-[75%] h-[75%] object-contain"})}),children:[H.jsxs("div",{children:[H.jsx("h3",{className:"text-[#fcd4d4] text-[24px] font-bold",children:n.title}),H.jsx("p",{className:"text-white text-[16px] font-semibold",style:{margin:0},children:n.company_name})]}),H.jsx("ul",{className:"mt-5 list-disc ml-5 space-y-2",children:n.points.map((e,t)=>H.jsx("li",{className:"text-white-100 text-[14px] pl-1 tracking-wider",children:e},`experience-point-${t}`))})]}),lB=()=>H.jsxs("section",{children:[H.jsxs(si.div,{variants:uh(),children:[H.jsx("h2",{className:`${ci.sectionHeadText} text-center`,children:"Work Experience."}),H.jsx("p",{className:`${ci.sectionSubText} text-center`,children:"Where I have worked so far?"})]}),H.jsx("div",{className:"mt-20 flex flex-col",children:H.jsx(HR.VerticalTimeline,{lineColor:"#373737",children:Oz.map((n,e)=>H.jsx(aB,{experience:n},`experience-${e}`))})})]}),cB=Bc(lB,"ExperienceSection"),uB=()=>H.jsxs("div",{id:"HeroSection",className:"relative bg-black text-white h-fit flex flex-col rounded-b-[356px]",children:[H.jsxs("div",{className:"flex-grow flex flex-col justify-center items-center text-center px-6 py-32",children:[H.jsxs("h1",{className:"text-6xl font-bold",children:["Hello, I am Satyam ",H.jsx("br",{})," Mishra"]}),H.jsx("p",{className:"mt-6 max-w-md text-gray-400",children:"I'm a computer science student with a simple and curious mind."}),H.jsx("a",{href:"https://medium.com/@Satyam_Mishra/",target:"_blank",children:H.jsxs("button",{className:"mt-8 bg-yellow-400 hover:bg-yellow-500 text-black font-bold py-3 px-8 rounded-full flex items-center",children:["Read my blogs ",H.jsx("span",{className:"ml-2",children:"▶"})]})})]}),H.jsx("div",{className:" absolute z-10 xs:bottom-8 bottom-8 w-full flex justify-center items-center",children:H.jsx("a",{href:"#AboutSection",children:H.jsx("div",{className:"w-[35px] h-[64px] rounded-3xl border-4 border-primary flex justify-center items-start p-2",children:H.jsx(si.div,{animate:{y:[0,24,0]},transition:{duration:1.5,repeat:1/0,repeatType:"loop"},className:"w-3 h-3 rounded-full bg-primary mb-2"})})})})]});function fB(){return H.jsxs("div",{children:[H.jsx(uB,{}),H.jsx(Vz,{}),H.jsx(cB,{})]})}const Lf={_origin:"https://api.emailjs.com"},hB=(n,e="https://api.emailjs.com")=>{Lf._userID=n,Lf._origin=e},GR=(n,e,t)=>{if(!n)throw"The public key is required. Visit https://dashboard.emailjs.com/admin/account";if(!e)throw"The service ID is required. Visit https://dashboard.emailjs.com/admin";if(!t)throw"The template ID is required. Visit https://dashboard.emailjs.com/admin/templates";return!0};class ZA{constructor(e){this.status=e?e.status:0,this.text=e?e.responseText:"Network Error"}}const WR=(n,e,t={})=>new Promise((i,r)=>{const s=new XMLHttpRequest;s.addEventListener("load",({target:o})=>{const a=new ZA(o);a.status===200||a.text==="OK"?i(a):r(a)}),s.addEventListener("error",({target:o})=>{r(new ZA(o))}),s.open("POST",Lf._origin+n,!0),Object.keys(t).forEach(o=>{s.setRequestHeader(o,t[o])}),s.send(e)}),dB=(n,e,t,i)=>{const r=i||Lf._userID;return GR(r,n,e),WR("/api/v1.0/email/send",JSON.stringify({lib_version:"3.12.1",user_id:r,service_id:n,template_id:e,template_params:t}),{"Content-type":"application/json"})},pB=n=>{let e;if(typeof n=="string"?e=document.querySelector(n):e=n,!e||e.nodeName!=="FORM")throw"The 3rd parameter is expected to be the HTML form element or the style selector of form";return e},mB=(n,e,t,i)=>{const r=i||Lf._userID,s=pB(t);GR(r,n,e);const o=new FormData(s);return o.append("lib_version","3.12.1"),o.append("service_id",n),o.append("template_id",e),o.append("user_id",r),WR("/api/v1.0/email/send-form",o)},JA={init:hB,send:dB,sendForm:mB},gB="/portfolio-react-threejs/assets/logo-white-f51edd31.webp",vB="/portfolio-react-threejs/assets/bars-solid-dd6e31d5.svg",yB="/portfolio-react-threejs/assets/circle-xmark-regular-11645b29.svg",xB=()=>{const[n,e]=W.useState(""),[t,i]=W.useState(!1),[r,s]=W.useState(!1);return H.jsx(si.nav,{className:`${ci.paddingX} w-full flex items-center py-5 fixed top-0 z-20 bg-black`,children:H.jsxs("div",{className:"w-full flex justify-between items-center max-w-7xl mx-auto",children:[H.jsxs("a",{href:"",className:"flex items-center gap-2",onClick:()=>{e(""),window.scrollTo(0,0)},children:[H.jsx("img",{src:gB,className:"w-10 h-10 object-contain",alt:"logo"}),H.jsxs("div",{className:"text-primary text-[18px] md:block lg:flex ",children:[H.jsx("p",{className:"flex",children:"Satyam Mishra  "}),H.jsx("span",{className:"sm:block hidden",children:"| Bedead"})]})]}),H.jsxs("ul",{className:"list-none hidden sm:flex flex-row md:gap-4 items-center",children:[YA.map(o=>H.jsx("li",{className:o.type=="tools"?"bg-secondary text-gray-400 hover:text-primary py-2 px-3 rounded-xl text-[18px] font-medium cursor-pointer":`${n==o.title?"text-primary":"text-gray-400"} - hover:text-primary underline-offset-8 text-[18px] font-medium cursor-pointer`,onClick:()=>{e(o.title),o.type=="tools"&&s(!r)},children:o.type=="tools"?o.title:H.jsxs("a",{href:` #${o.id}`,children:[o.title," "]})},o.id))," "]}),H.jsx(WA,{children:r&&H.jsx(si.div,{className:`${r?"flex":"hidden"} p-6 bg-primary absolute - top-60 right-40 sm:top-20 sm:right-5 mx-4 my-2 min-w-[140px] z-10 rounded-xl outline`,initial:{scale:.1,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.1,opacity:0},transition:{type:"spring",damping:10},children:H.jsxs("ul",{className:"list-none flex justify-end items-start flex-col gap-2",children:[Dz.map(o=>H.jsx(si.li,{variants:zc("right","spring",.1,.75),className:`${n==o.title?"text-black underline":"text-secondary"} font-poppins hover:underline underline-offset-8 font-medium cursor-pointer text-[16px] hover:text-secondary`,onClick:()=>{o.type=="tools"&&s(!r),e(o.title),window.open(o.url,"_blank")},children:o.type=="tools"?o.title:H.jsxs("a",{to:`#${o.id}`,children:[o.id," "]})},o.id))," "]})})}),H.jsxs("div",{className:"sm:hidden flex flex-1 justify-end items-center",children:[H.jsx("img",{src:t?yB:vB,alt:"menu",className:"w-[28px] h-[28px] object-contain cursor-pointer",onClick:()=>{i(!t),r==!0&&s(!1)}}),H.jsx(WA,{children:t&&H.jsx(si.div,{className:`${t?"flex":"hidden"} p-6 bg-gradient-to-r from-[#f6f6f6] to-white absolute - top-20 right-0 mx-4 my-2 min-w-[140px] z-10 rounded-xl outline`,initial:{scale:.1,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.1,opacity:0},transition:{type:"spring",damping:10},children:H.jsxs("ul",{className:"list-none flex justify-end items-start flex-col gap-2",children:[YA.map(o=>H.jsx("li",{className:`${n==o.title?"text-black underline":"text-secondary"} font-poppins hover:underline underline-offset-8 font-medium cursor-pointer text-[16px] hover:text-secondary`,onClick:()=>{o.type!="tools"&&i(!t),e(o.title),o.type=="tools"&&s(!r)},children:o.type=="tools"?o.title:H.jsxs("a",{href:`#${o.id}`,children:[o.title," "]})},o.id))," "]})})})]})]})})};/** - * @license - * Copyright 2010-2024 Three.js Authors - * SPDX-License-Identifier: MIT - */const wg="165",Ma={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},wa={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},jR=0,qx=1,XR=2,_B=3,YR=0,Eg=1,of=2,Pr=3,Gs=0,Si=1,Nr=2,Os=0,Fa=1,Kx=2,Zx=3,Jx=4,qR=5,Mo=100,KR=101,ZR=102,JR=103,QR=104,$R=200,e3=201,t3=202,n3=203,Vm=204,Hm=205,i3=206,r3=207,s3=208,o3=209,a3=210,l3=211,c3=212,u3=213,f3=214,h3=0,d3=1,p3=2,If=3,m3=4,g3=5,v3=6,y3=7,fh=0,x3=1,_3=2,os=0,S3=1,M3=2,w3=3,aS=4,E3=5,A3=6,T3=7,Qx="attached",b3="detached",Ag=300,Ws=301,zo=302,Nf=303,Df=304,Vc=306,Uf=1e3,yr=1001,Of=1002,Vn=1003,lS=1004,SB=1004,cc=1005,MB=1005,bn=1006,af=1007,wB=1007,ts=1008,EB=1008,ls=1009,C3=1010,P3=1011,kf=1012,cS=1013,qa=1014,Zi=1015,hh=1016,uS=1017,fS=1018,Ka=1020,R3=35902,L3=1021,I3=1022,xi=1023,N3=1024,D3=1025,za=1026,Za=1027,hS=1028,dS=1029,U3=1030,pS=1031,mS=1033,em=33776,tm=33777,nm=33778,im=33779,$x=35840,e_=35841,t_=35842,n_=35843,i_=36196,r_=37492,s_=37496,o_=37808,a_=37809,l_=37810,c_=37811,u_=37812,f_=37813,h_=37814,d_=37815,p_=37816,m_=37817,g_=37818,v_=37819,y_=37820,x_=37821,rm=36492,__=36494,S_=36495,O3=36283,M_=36284,w_=36285,E_=36286,k3=2200,F3=2201,z3=2202,Ff=2300,Gm=2301,sm=2302,La=2400,Ia=2401,zf=2402,Tg=2500,gS=2501,AB=0,TB=1,bB=2,B3=3200,V3=3201,jo=0,H3=1,bs="",pr="srgb",Ys="srgb-linear",bg="display-p3",dh="display-p3-linear",Bf="linear",Yt="srgb",Vf="rec709",Hf="p3",CB=0,Ea=7680,PB=7681,RB=7682,LB=7683,IB=34055,NB=34056,DB=5386,UB=512,OB=513,kB=514,FB=515,zB=516,BB=517,VB=518,A_=519,G3=512,W3=513,j3=514,vS=515,X3=516,Y3=517,q3=518,K3=519,Gf=35044,HB=35048,GB=35040,WB=35045,jB=35049,XB=35041,YB=35046,qB=35050,KB=35042,ZB="100",T_="300 es",ns=2e3,Wf=2001;class cs{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const i=this._listeners;return i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const r=this._listeners[e];if(r!==void 0){const s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const i=this._listeners[e.type];if(i!==void 0){e.target=this;const r=i.slice(0);for(let s=0,o=r.length;s>8&255]+ei[n>>16&255]+ei[n>>24&255]+"-"+ei[e&255]+ei[e>>8&255]+"-"+ei[e>>16&15|64]+ei[e>>24&255]+"-"+ei[t&63|128]+ei[t>>8&255]+"-"+ei[t>>16&255]+ei[t>>24&255]+ei[i&255]+ei[i>>8&255]+ei[i>>16&255]+ei[i>>24&255]).toLowerCase()}function mn(n,e,t){return Math.max(e,Math.min(t,n))}function yS(n,e){return(n%e+e)%e}function JB(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function QB(n,e,t){return n!==e?(t-n)/(e-n):0}function lf(n,e,t){return(1-t)*n+t*e}function $B(n,e,t,i){return lf(n,e,1-Math.exp(-t*i))}function eV(n,e=1){return e-Math.abs(yS(n,e*2)-e)}function tV(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function nV(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function iV(n,e){return n+Math.floor(Math.random()*(e-n+1))}function rV(n,e){return n+Math.random()*(e-n)}function sV(n){return n*(.5-Math.random())}function oV(n){n!==void 0&&(QA=n);let e=QA+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function aV(n){return n*Ba}function lV(n){return n*Ic}function cV(n){return(n&n-1)===0&&n!==0}function uV(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function fV(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function hV(n,e,t,i,r){const s=Math.cos,o=Math.sin,a=s(t/2),c=o(t/2),f=s((e+i)/2),h=o((e+i)/2),d=s((e-i)/2),p=o((e-i)/2),m=s((i-e)/2),y=o((i-e)/2);switch(r){case"XYX":n.set(a*h,c*d,c*p,a*f);break;case"YZY":n.set(c*p,a*h,c*d,a*f);break;case"ZXZ":n.set(c*d,c*p,a*h,a*f);break;case"XZX":n.set(a*h,c*y,c*m,a*f);break;case"YXY":n.set(c*m,a*h,c*y,a*f);break;case"ZYZ":n.set(c*y,c*m,a*h,a*f);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function yi(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function _t(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const Z3={DEG2RAD:Ba,RAD2DEG:Ic,generateUUID:Qi,clamp:mn,euclideanModulo:yS,mapLinear:JB,inverseLerp:QB,lerp:lf,damp:$B,pingpong:eV,smoothstep:tV,smootherstep:nV,randInt:iV,randFloat:rV,randFloatSpread:sV,seededRandom:oV,degToRad:aV,radToDeg:lV,isPowerOfTwo:cV,ceilPowerOfTwo:uV,floorPowerOfTwo:fV,setQuaternionFromProperEuler:hV,normalize:_t,denormalize:yi};class pe{constructor(e=0,t=0){pe.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6],this.y=r[1]*t+r[4]*i+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(mn(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),r=Math.sin(t),s=this.x-e.x,o=this.y-e.y;return this.x=s*i-o*r+e.x,this.y=s*r+o*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class xt{constructor(e,t,i,r,s,o,a,c,f){xt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,o,a,c,f)}set(e,t,i,r,s,o,a,c,f){const h=this.elements;return h[0]=e,h[1]=r,h[2]=a,h[3]=t,h[4]=s,h[5]=c,h[6]=i,h[7]=o,h[8]=f,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,s=this.elements,o=i[0],a=i[3],c=i[6],f=i[1],h=i[4],d=i[7],p=i[2],m=i[5],y=i[8],_=r[0],x=r[3],g=r[6],S=r[1],M=r[4],A=r[7],R=r[2],C=r[5],L=r[8];return s[0]=o*_+a*S+c*R,s[3]=o*x+a*M+c*C,s[6]=o*g+a*A+c*L,s[1]=f*_+h*S+d*R,s[4]=f*x+h*M+d*C,s[7]=f*g+h*A+d*L,s[2]=p*_+m*S+y*R,s[5]=p*x+m*M+y*C,s[8]=p*g+m*A+y*L,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],c=e[6],f=e[7],h=e[8];return t*o*h-t*a*f-i*s*h+i*a*c+r*s*f-r*o*c}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],c=e[6],f=e[7],h=e[8],d=h*o-a*f,p=a*c-h*s,m=f*s-o*c,y=t*d+i*p+r*m;if(y===0)return this.set(0,0,0,0,0,0,0,0,0);const _=1/y;return e[0]=d*_,e[1]=(r*f-h*i)*_,e[2]=(a*i-r*o)*_,e[3]=p*_,e[4]=(h*t-r*c)*_,e[5]=(r*s-a*t)*_,e[6]=m*_,e[7]=(i*c-f*t)*_,e[8]=(o*t-i*s)*_,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,s,o,a){const c=Math.cos(s),f=Math.sin(s);return this.set(i*c,i*f,-i*(c*o+f*a)+o+e,-r*f,r*c,-r*(-f*o+c*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(Gv.makeScale(e,t)),this}rotate(e){return this.premultiply(Gv.makeRotation(-e)),this}translate(e,t){return this.premultiply(Gv.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Gv=new xt;function J3(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}const dV={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function uc(n,e){return new dV[n](e)}function jf(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function Q3(){const n=jf("canvas");return n.style.display="block",n}const $A={};function xS(n){n in $A||($A[n]=!0,console.warn(n))}function pV(n,e,t){return new Promise(function(i,r){function s(){switch(n.clientWaitSync(e,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:r();break;case n.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:i()}}setTimeout(s,t)})}const eT=new xt().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),tT=new xt().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),jd={[Ys]:{transfer:Bf,primaries:Vf,toReference:n=>n,fromReference:n=>n},[pr]:{transfer:Yt,primaries:Vf,toReference:n=>n.convertSRGBToLinear(),fromReference:n=>n.convertLinearToSRGB()},[dh]:{transfer:Bf,primaries:Hf,toReference:n=>n.applyMatrix3(tT),fromReference:n=>n.applyMatrix3(eT)},[bg]:{transfer:Yt,primaries:Hf,toReference:n=>n.convertSRGBToLinear().applyMatrix3(tT),fromReference:n=>n.applyMatrix3(eT).convertLinearToSRGB()}},mV=new Set([Ys,dh]),zt={enabled:!0,_workingColorSpace:Ys,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(n){if(!mV.has(n))throw new Error(`Unsupported working color space, "${n}".`);this._workingColorSpace=n},convert:function(n,e,t){if(this.enabled===!1||e===t||!e||!t)return n;const i=jd[e].toReference,r=jd[t].fromReference;return r(i(n))},fromWorkingColorSpace:function(n,e){return this.convert(n,this._workingColorSpace,e)},toWorkingColorSpace:function(n,e){return this.convert(n,e,this._workingColorSpace)},getPrimaries:function(n){return jd[n].primaries},getTransfer:function(n){return n===bs?Bf:jd[n].transfer}};function Mc(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Wv(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let Ml;class $3{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Ml===void 0&&(Ml=jf("canvas")),Ml.width=e.width,Ml.height=e.height;const i=Ml.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=Ml}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=jf("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const r=i.getImageData(0,0,e.width,e.height),s=r.data;for(let o=0;o0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==Ag)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Uf:e.x=e.x-Math.floor(e.x);break;case yr:e.x=e.x<0?0:1;break;case Of:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Uf:e.y=e.y-Math.floor(e.y);break;case yr:e.y=e.y<0?0:1;break;case Of:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}$t.DEFAULT_IMAGE=null;$t.DEFAULT_MAPPING=Ag;$t.DEFAULT_ANISOTROPY=1;class Bt{constructor(e=0,t=0,i=0,r=1){Bt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,r=this.z,s=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*r+o[12]*s,this.y=o[1]*t+o[5]*i+o[9]*r+o[13]*s,this.z=o[2]*t+o[6]*i+o[10]*r+o[14]*s,this.w=o[3]*t+o[7]*i+o[11]*r+o[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,r,s;const c=e.elements,f=c[0],h=c[4],d=c[8],p=c[1],m=c[5],y=c[9],_=c[2],x=c[6],g=c[10];if(Math.abs(h-p)<.01&&Math.abs(d-_)<.01&&Math.abs(y-x)<.01){if(Math.abs(h+p)<.1&&Math.abs(d+_)<.1&&Math.abs(y+x)<.1&&Math.abs(f+m+g-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const M=(f+1)/2,A=(m+1)/2,R=(g+1)/2,C=(h+p)/4,L=(d+_)/4,I=(y+x)/4;return M>A&&M>R?M<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(M),r=C/i,s=L/i):A>R?A<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(A),i=C/r,s=I/r):R<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(R),i=L/s,r=I/s),this.set(i,r,s,t),this}let S=Math.sqrt((x-y)*(x-y)+(d-_)*(d-_)+(p-h)*(p-h));return Math.abs(S)<.001&&(S=1),this.x=(x-y)/S,this.y=(d-_)/S,this.z=(p-h)/S,this.w=Math.acos((f+m+g-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class eL extends cs{constructor(e=1,t=1,i={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Bt(0,0,e,t),this.scissorTest=!1,this.viewport=new Bt(0,0,e,t);const r={width:e,height:t,depth:1};i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:bn,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},i);const s=new $t(r,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.colorSpace);s.flipY=!1,s.generateMipmaps=i.generateMipmaps,s.internalFormat=i.internalFormat,this.textures=[];const o=i.count;for(let a=0;a=0?1:-1,M=1-g*g;if(M>Number.EPSILON){const R=Math.sqrt(M),C=Math.atan2(R,g*S);x=Math.sin(x*C)/R,a=Math.sin(a*C)/R}const A=a*S;if(c=c*x+p*A,f=f*x+m*A,h=h*x+y*A,d=d*x+_*A,x===1-a){const R=1/Math.sqrt(c*c+f*f+h*h+d*d);c*=R,f*=R,h*=R,d*=R}}e[t]=c,e[t+1]=f,e[t+2]=h,e[t+3]=d}static multiplyQuaternionsFlat(e,t,i,r,s,o){const a=i[r],c=i[r+1],f=i[r+2],h=i[r+3],d=s[o],p=s[o+1],m=s[o+2],y=s[o+3];return e[t]=a*y+h*d+c*m-f*p,e[t+1]=c*y+h*p+f*d-a*m,e[t+2]=f*y+h*m+a*p-c*d,e[t+3]=h*y-a*d-c*p-f*m,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const i=e._x,r=e._y,s=e._z,o=e._order,a=Math.cos,c=Math.sin,f=a(i/2),h=a(r/2),d=a(s/2),p=c(i/2),m=c(r/2),y=c(s/2);switch(o){case"XYZ":this._x=p*h*d+f*m*y,this._y=f*m*d-p*h*y,this._z=f*h*y+p*m*d,this._w=f*h*d-p*m*y;break;case"YXZ":this._x=p*h*d+f*m*y,this._y=f*m*d-p*h*y,this._z=f*h*y-p*m*d,this._w=f*h*d+p*m*y;break;case"ZXY":this._x=p*h*d-f*m*y,this._y=f*m*d+p*h*y,this._z=f*h*y+p*m*d,this._w=f*h*d-p*m*y;break;case"ZYX":this._x=p*h*d-f*m*y,this._y=f*m*d+p*h*y,this._z=f*h*y-p*m*d,this._w=f*h*d+p*m*y;break;case"YZX":this._x=p*h*d+f*m*y,this._y=f*m*d+p*h*y,this._z=f*h*y-p*m*d,this._w=f*h*d-p*m*y;break;case"XZY":this._x=p*h*d-f*m*y,this._y=f*m*d-p*h*y,this._z=f*h*y+p*m*d,this._w=f*h*d+p*m*y;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,r=Math.sin(i);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],r=t[4],s=t[8],o=t[1],a=t[5],c=t[9],f=t[2],h=t[6],d=t[10],p=i+a+d;if(p>0){const m=.5/Math.sqrt(p+1);this._w=.25/m,this._x=(h-c)*m,this._y=(s-f)*m,this._z=(o-r)*m}else if(i>a&&i>d){const m=2*Math.sqrt(1+i-a-d);this._w=(h-c)/m,this._x=.25*m,this._y=(r+o)/m,this._z=(s+f)/m}else if(a>d){const m=2*Math.sqrt(1+a-i-d);this._w=(s-f)/m,this._x=(r+o)/m,this._y=.25*m,this._z=(c+h)/m}else{const m=2*Math.sqrt(1+d-i-a);this._w=(o-r)/m,this._x=(s+f)/m,this._y=(c+h)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(mn(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(i===0)return this;const r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,r=e._y,s=e._z,o=e._w,a=t._x,c=t._y,f=t._z,h=t._w;return this._x=i*h+o*a+r*f-s*c,this._y=r*h+o*c+s*a-i*f,this._z=s*h+o*f+i*c-r*a,this._w=o*h-i*a-r*c-s*f,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const i=this._x,r=this._y,s=this._z,o=this._w;let a=o*e._w+i*e._x+r*e._y+s*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=i,this._y=r,this._z=s,this;const c=1-a*a;if(c<=Number.EPSILON){const m=1-t;return this._w=m*o+t*this._w,this._x=m*i+t*this._x,this._y=m*r+t*this._y,this._z=m*s+t*this._z,this.normalize(),this}const f=Math.sqrt(c),h=Math.atan2(f,a),d=Math.sin((1-t)*h)/f,p=Math.sin(t*h)/f;return this._w=o*d+this._w*p,this._x=i*d+this._x*p,this._y=r*d+this._y*p,this._z=s*d+this._z*p,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),r=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class O{constructor(e=0,t=0,i=0){O.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(nT.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(nT.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6]*r,this.y=s[1]*t+s[4]*i+s[7]*r,this.z=s[2]*t+s[5]*i+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,r=this.z,s=e.elements,o=1/(s[3]*t+s[7]*i+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*i+s[8]*r+s[12])*o,this.y=(s[1]*t+s[5]*i+s[9]*r+s[13])*o,this.z=(s[2]*t+s[6]*i+s[10]*r+s[14])*o,this}applyQuaternion(e){const t=this.x,i=this.y,r=this.z,s=e.x,o=e.y,a=e.z,c=e.w,f=2*(o*r-a*i),h=2*(a*t-s*r),d=2*(s*i-o*t);return this.x=t+c*f+o*d-a*h,this.y=i+c*h+a*f-s*d,this.z=r+c*d+s*h-o*f,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r,this.y=s[1]*t+s[5]*i+s[9]*r,this.z=s[2]*t+s[6]*i+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,r=e.y,s=e.z,o=t.x,a=t.y,c=t.z;return this.x=r*c-s*a,this.y=s*o-i*c,this.z=i*a-r*o,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return Xv.copy(this).projectOnVector(e),this.sub(Xv)}reflect(e){return this.sub(Xv.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(mn(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Xv=new O,nT=new oi;class Mi{constructor(e=new O(1/0,1/0,1/0),t=new O(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,Ar),Ar.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Eu),Yd.subVectors(this.max,Eu),wl.subVectors(e.a,Eu),El.subVectors(e.b,Eu),Al.subVectors(e.c,Eu),ao.subVectors(El,wl),lo.subVectors(Al,El),sa.subVectors(wl,Al);let t=[0,-ao.z,ao.y,0,-lo.z,lo.y,0,-sa.z,sa.y,ao.z,0,-ao.x,lo.z,0,-lo.x,sa.z,0,-sa.x,-ao.y,ao.x,0,-lo.y,lo.x,0,-sa.y,sa.x,0];return!Yv(t,wl,El,Al,Yd)||(t=[1,0,0,0,1,0,0,0,1],!Yv(t,wl,El,Al,Yd))?!1:(qd.crossVectors(ao,lo),t=[qd.x,qd.y,qd.z],Yv(t,wl,El,Al,Yd))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Ar).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Ar).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(ys[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),ys[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),ys[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),ys[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),ys[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),ys[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),ys[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),ys[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(ys),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const ys=[new O,new O,new O,new O,new O,new O,new O,new O],Ar=new O,Xd=new Mi,wl=new O,El=new O,Al=new O,ao=new O,lo=new O,sa=new O,Eu=new O,Yd=new O,qd=new O,oa=new O;function Yv(n,e,t,i,r){for(let s=0,o=n.length-3;s<=o;s+=3){oa.fromArray(n,s);const a=r.x*Math.abs(oa.x)+r.y*Math.abs(oa.y)+r.z*Math.abs(oa.z),c=e.dot(oa),f=t.dot(oa),h=i.dot(oa);if(Math.max(-Math.max(c,f,h),Math.min(c,f,h))>a)return!1}return!0}const _V=new Mi,Au=new O,qv=new O;class ai{constructor(e=new O,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;t!==void 0?i.copy(t):_V.setFromPoints(e).getCenter(i);let r=0;for(let s=0,o=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Au.subVectors(e,this.center);const t=Au.lengthSq();if(t>this.radius*this.radius){const i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(Au,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(qv.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Au.copy(e.center).add(qv)),this.expandByPoint(Au.copy(e.center).sub(qv))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const xs=new O,Kv=new O,Kd=new O,co=new O,Zv=new O,Zd=new O,Jv=new O;class il{constructor(e=new O,t=new O(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,xs)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=xs.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(xs.copy(this.origin).addScaledVector(this.direction,t),xs.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){Kv.copy(e).add(t).multiplyScalar(.5),Kd.copy(t).sub(e).normalize(),co.copy(this.origin).sub(Kv);const s=e.distanceTo(t)*.5,o=-this.direction.dot(Kd),a=co.dot(this.direction),c=-co.dot(Kd),f=co.lengthSq(),h=Math.abs(1-o*o);let d,p,m,y;if(h>0)if(d=o*c-a,p=o*a-c,y=s*h,d>=0)if(p>=-y)if(p<=y){const _=1/h;d*=_,p*=_,m=d*(d+o*p+2*a)+p*(o*d+p+2*c)+f}else p=s,d=Math.max(0,-(o*p+a)),m=-d*d+p*(p+2*c)+f;else p=-s,d=Math.max(0,-(o*p+a)),m=-d*d+p*(p+2*c)+f;else p<=-y?(d=Math.max(0,-(-o*s+a)),p=d>0?-s:Math.min(Math.max(-s,-c),s),m=-d*d+p*(p+2*c)+f):p<=y?(d=0,p=Math.min(Math.max(-s,-c),s),m=p*(p+2*c)+f):(d=Math.max(0,-(o*s+a)),p=d>0?s:Math.min(Math.max(-s,-c),s),m=-d*d+p*(p+2*c)+f);else p=o>0?-s:s,d=Math.max(0,-(o*p+a)),m=-d*d+p*(p+2*c)+f;return i&&i.copy(this.origin).addScaledVector(this.direction,d),r&&r.copy(Kv).addScaledVector(Kd,p),m}intersectSphere(e,t){xs.subVectors(e.center,this.origin);const i=xs.dot(this.direction),r=xs.dot(xs)-i*i,s=e.radius*e.radius;if(r>s)return null;const o=Math.sqrt(s-r),a=i-o,c=i+o;return c<0?null:a<0?this.at(c,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,s,o,a,c;const f=1/this.direction.x,h=1/this.direction.y,d=1/this.direction.z,p=this.origin;return f>=0?(i=(e.min.x-p.x)*f,r=(e.max.x-p.x)*f):(i=(e.max.x-p.x)*f,r=(e.min.x-p.x)*f),h>=0?(s=(e.min.y-p.y)*h,o=(e.max.y-p.y)*h):(s=(e.max.y-p.y)*h,o=(e.min.y-p.y)*h),i>o||s>r||((s>i||isNaN(i))&&(i=s),(o=0?(a=(e.min.z-p.z)*d,c=(e.max.z-p.z)*d):(a=(e.max.z-p.z)*d,c=(e.min.z-p.z)*d),i>c||a>r)||((a>i||i!==i)&&(i=a),(c=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,xs)!==null}intersectTriangle(e,t,i,r,s){Zv.subVectors(t,e),Zd.subVectors(i,e),Jv.crossVectors(Zv,Zd);let o=this.direction.dot(Jv),a;if(o>0){if(r)return null;a=1}else if(o<0)a=-1,o=-o;else return null;co.subVectors(this.origin,e);const c=a*this.direction.dot(Zd.crossVectors(co,Zd));if(c<0)return null;const f=a*this.direction.dot(Zv.cross(co));if(f<0||c+f>o)return null;const h=-a*co.dot(Jv);return h<0?null:this.at(h/o,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class at{constructor(e,t,i,r,s,o,a,c,f,h,d,p,m,y,_,x){at.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,o,a,c,f,h,d,p,m,y,_,x)}set(e,t,i,r,s,o,a,c,f,h,d,p,m,y,_,x){const g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=r,g[1]=s,g[5]=o,g[9]=a,g[13]=c,g[2]=f,g[6]=h,g[10]=d,g[14]=p,g[3]=m,g[7]=y,g[11]=_,g[15]=x,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new at().fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,r=1/Tl.setFromMatrixColumn(e,0).length(),s=1/Tl.setFromMatrixColumn(e,1).length(),o=1/Tl.setFromMatrixColumn(e,2).length();return t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t[3]=0,t[4]=i[4]*s,t[5]=i[5]*s,t[6]=i[6]*s,t[7]=0,t[8]=i[8]*o,t[9]=i[9]*o,t[10]=i[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,r=e.y,s=e.z,o=Math.cos(i),a=Math.sin(i),c=Math.cos(r),f=Math.sin(r),h=Math.cos(s),d=Math.sin(s);if(e.order==="XYZ"){const p=o*h,m=o*d,y=a*h,_=a*d;t[0]=c*h,t[4]=-c*d,t[8]=f,t[1]=m+y*f,t[5]=p-_*f,t[9]=-a*c,t[2]=_-p*f,t[6]=y+m*f,t[10]=o*c}else if(e.order==="YXZ"){const p=c*h,m=c*d,y=f*h,_=f*d;t[0]=p+_*a,t[4]=y*a-m,t[8]=o*f,t[1]=o*d,t[5]=o*h,t[9]=-a,t[2]=m*a-y,t[6]=_+p*a,t[10]=o*c}else if(e.order==="ZXY"){const p=c*h,m=c*d,y=f*h,_=f*d;t[0]=p-_*a,t[4]=-o*d,t[8]=y+m*a,t[1]=m+y*a,t[5]=o*h,t[9]=_-p*a,t[2]=-o*f,t[6]=a,t[10]=o*c}else if(e.order==="ZYX"){const p=o*h,m=o*d,y=a*h,_=a*d;t[0]=c*h,t[4]=y*f-m,t[8]=p*f+_,t[1]=c*d,t[5]=_*f+p,t[9]=m*f-y,t[2]=-f,t[6]=a*c,t[10]=o*c}else if(e.order==="YZX"){const p=o*c,m=o*f,y=a*c,_=a*f;t[0]=c*h,t[4]=_-p*d,t[8]=y*d+m,t[1]=d,t[5]=o*h,t[9]=-a*h,t[2]=-f*h,t[6]=m*d+y,t[10]=p-_*d}else if(e.order==="XZY"){const p=o*c,m=o*f,y=a*c,_=a*f;t[0]=c*h,t[4]=-d,t[8]=f*h,t[1]=p*d+_,t[5]=o*h,t[9]=m*d-y,t[2]=y*d-m,t[6]=a*h,t[10]=_*d+p}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(SV,e,MV)}lookAt(e,t,i){const r=this.elements;return Wi.subVectors(e,t),Wi.lengthSq()===0&&(Wi.z=1),Wi.normalize(),uo.crossVectors(i,Wi),uo.lengthSq()===0&&(Math.abs(i.z)===1?Wi.x+=1e-4:Wi.z+=1e-4,Wi.normalize(),uo.crossVectors(i,Wi)),uo.normalize(),Jd.crossVectors(Wi,uo),r[0]=uo.x,r[4]=Jd.x,r[8]=Wi.x,r[1]=uo.y,r[5]=Jd.y,r[9]=Wi.y,r[2]=uo.z,r[6]=Jd.z,r[10]=Wi.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,s=this.elements,o=i[0],a=i[4],c=i[8],f=i[12],h=i[1],d=i[5],p=i[9],m=i[13],y=i[2],_=i[6],x=i[10],g=i[14],S=i[3],M=i[7],A=i[11],R=i[15],C=r[0],L=r[4],I=r[8],P=r[12],b=r[1],D=r[5],j=r[9],X=r[13],te=r[2],ne=r[6],Q=r[10],le=r[14],k=r[3],q=r[7],J=r[11],$=r[15];return s[0]=o*C+a*b+c*te+f*k,s[4]=o*L+a*D+c*ne+f*q,s[8]=o*I+a*j+c*Q+f*J,s[12]=o*P+a*X+c*le+f*$,s[1]=h*C+d*b+p*te+m*k,s[5]=h*L+d*D+p*ne+m*q,s[9]=h*I+d*j+p*Q+m*J,s[13]=h*P+d*X+p*le+m*$,s[2]=y*C+_*b+x*te+g*k,s[6]=y*L+_*D+x*ne+g*q,s[10]=y*I+_*j+x*Q+g*J,s[14]=y*P+_*X+x*le+g*$,s[3]=S*C+M*b+A*te+R*k,s[7]=S*L+M*D+A*ne+R*q,s[11]=S*I+M*j+A*Q+R*J,s[15]=S*P+M*X+A*le+R*$,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],r=e[8],s=e[12],o=e[1],a=e[5],c=e[9],f=e[13],h=e[2],d=e[6],p=e[10],m=e[14],y=e[3],_=e[7],x=e[11],g=e[15];return y*(+s*c*d-r*f*d-s*a*p+i*f*p+r*a*m-i*c*m)+_*(+t*c*m-t*f*p+s*o*p-r*o*m+r*f*h-s*c*h)+x*(+t*f*d-t*a*m-s*o*d+i*o*m+s*a*h-i*f*h)+g*(-r*a*h-t*c*d+t*a*p+r*o*d-i*o*p+i*c*h)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],c=e[6],f=e[7],h=e[8],d=e[9],p=e[10],m=e[11],y=e[12],_=e[13],x=e[14],g=e[15],S=d*x*f-_*p*f+_*c*m-a*x*m-d*c*g+a*p*g,M=y*p*f-h*x*f-y*c*m+o*x*m+h*c*g-o*p*g,A=h*_*f-y*d*f+y*a*m-o*_*m-h*a*g+o*d*g,R=y*d*c-h*_*c-y*a*p+o*_*p+h*a*x-o*d*x,C=t*S+i*M+r*A+s*R;if(C===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const L=1/C;return e[0]=S*L,e[1]=(_*p*s-d*x*s-_*r*m+i*x*m+d*r*g-i*p*g)*L,e[2]=(a*x*s-_*c*s+_*r*f-i*x*f-a*r*g+i*c*g)*L,e[3]=(d*c*s-a*p*s-d*r*f+i*p*f+a*r*m-i*c*m)*L,e[4]=M*L,e[5]=(h*x*s-y*p*s+y*r*m-t*x*m-h*r*g+t*p*g)*L,e[6]=(y*c*s-o*x*s-y*r*f+t*x*f+o*r*g-t*c*g)*L,e[7]=(o*p*s-h*c*s+h*r*f-t*p*f-o*r*m+t*c*m)*L,e[8]=A*L,e[9]=(y*d*s-h*_*s-y*i*m+t*_*m+h*i*g-t*d*g)*L,e[10]=(o*_*s-y*a*s+y*i*f-t*_*f-o*i*g+t*a*g)*L,e[11]=(h*a*s-o*d*s-h*i*f+t*d*f+o*i*m-t*a*m)*L,e[12]=R*L,e[13]=(h*_*r-y*d*r+y*i*p-t*_*p-h*i*x+t*d*x)*L,e[14]=(y*a*r-o*_*r-y*i*c+t*_*c+o*i*x-t*a*x)*L,e[15]=(o*d*r-h*a*r+h*i*c-t*d*c-o*i*p+t*a*p)*L,this}scale(e){const t=this.elements,i=e.x,r=e.y,s=e.z;return t[0]*=i,t[4]*=r,t[8]*=s,t[1]*=i,t[5]*=r,t[9]*=s,t[2]*=i,t[6]*=r,t[10]*=s,t[3]*=i,t[7]*=r,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,r))}makeTranslation(e,t,i){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),r=Math.sin(t),s=1-i,o=e.x,a=e.y,c=e.z,f=s*o,h=s*a;return this.set(f*o+i,f*a-r*c,f*c+r*a,0,f*a+r*c,h*a+i,h*c-r*o,0,f*c-r*a,h*c+r*o,s*c*c+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,r,s,o){return this.set(1,i,s,0,e,1,o,0,t,r,1,0,0,0,0,1),this}compose(e,t,i){const r=this.elements,s=t._x,o=t._y,a=t._z,c=t._w,f=s+s,h=o+o,d=a+a,p=s*f,m=s*h,y=s*d,_=o*h,x=o*d,g=a*d,S=c*f,M=c*h,A=c*d,R=i.x,C=i.y,L=i.z;return r[0]=(1-(_+g))*R,r[1]=(m+A)*R,r[2]=(y-M)*R,r[3]=0,r[4]=(m-A)*C,r[5]=(1-(p+g))*C,r[6]=(x+S)*C,r[7]=0,r[8]=(y+M)*L,r[9]=(x-S)*L,r[10]=(1-(p+_))*L,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,i){const r=this.elements;let s=Tl.set(r[0],r[1],r[2]).length();const o=Tl.set(r[4],r[5],r[6]).length(),a=Tl.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),e.x=r[12],e.y=r[13],e.z=r[14],Tr.copy(this);const f=1/s,h=1/o,d=1/a;return Tr.elements[0]*=f,Tr.elements[1]*=f,Tr.elements[2]*=f,Tr.elements[4]*=h,Tr.elements[5]*=h,Tr.elements[6]*=h,Tr.elements[8]*=d,Tr.elements[9]*=d,Tr.elements[10]*=d,t.setFromRotationMatrix(Tr),i.x=s,i.y=o,i.z=a,this}makePerspective(e,t,i,r,s,o,a=ns){const c=this.elements,f=2*s/(t-e),h=2*s/(i-r),d=(t+e)/(t-e),p=(i+r)/(i-r);let m,y;if(a===ns)m=-(o+s)/(o-s),y=-2*o*s/(o-s);else if(a===Wf)m=-o/(o-s),y=-o*s/(o-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);return c[0]=f,c[4]=0,c[8]=d,c[12]=0,c[1]=0,c[5]=h,c[9]=p,c[13]=0,c[2]=0,c[6]=0,c[10]=m,c[14]=y,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,i,r,s,o,a=ns){const c=this.elements,f=1/(t-e),h=1/(i-r),d=1/(o-s),p=(t+e)*f,m=(i+r)*h;let y,_;if(a===ns)y=(o+s)*d,_=-2*d;else if(a===Wf)y=s*d,_=-1*d;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);return c[0]=2*f,c[4]=0,c[8]=0,c[12]=-p,c[1]=0,c[5]=2*h,c[9]=0,c[13]=-m,c[2]=0,c[6]=0,c[10]=_,c[14]=-y,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<16;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const Tl=new O,Tr=new at,SV=new O(0,0,0),MV=new O(1,1,1),uo=new O,Jd=new O,Wi=new O,iT=new at,rT=new oi;class wi{constructor(e=0,t=0,i=0,r=wi.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,r=this._order){return this._x=e,this._y=t,this._z=i,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const r=e.elements,s=r[0],o=r[4],a=r[8],c=r[1],f=r[5],h=r[9],d=r[2],p=r[6],m=r[10];switch(t){case"XYZ":this._y=Math.asin(mn(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,m),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(p,f),this._z=0);break;case"YXZ":this._x=Math.asin(-mn(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,m),this._z=Math.atan2(c,f)):(this._y=Math.atan2(-d,s),this._z=0);break;case"ZXY":this._x=Math.asin(mn(p,-1,1)),Math.abs(p)<.9999999?(this._y=Math.atan2(-d,m),this._z=Math.atan2(-o,f)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-mn(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(p,m),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,f));break;case"YZX":this._z=Math.asin(mn(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,f),this._y=Math.atan2(-d,s)):(this._x=0,this._y=Math.atan2(a,m));break;case"XZY":this._z=Math.asin(-mn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(p,f),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-h,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return iT.makeRotationFromQuaternion(e),this.setFromRotationMatrix(iT,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return rT.setFromEuler(this),this.setFromQuaternion(rT,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}wi.DEFAULT_ORDER="XYZ";class Va{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(a=>({boxInitialized:a.boxInitialized,boxMin:a.box.min.toArray(),boxMax:a.box.max.toArray(),sphereInitialized:a.sphereInitialized,sphereRadius:a.sphere.radius,sphereCenter:a.sphere.center.toArray()})),r.maxGeometryCount=this._maxGeometryCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));function s(a,c){return a[c.uuid]===void 0&&(a[c.uuid]=c.toJSON(e)),c.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);const a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){const c=a.shapes;if(Array.isArray(c))for(let f=0,h=c.length;f0){r.children=[];for(let a=0;a0){r.animations=[];for(let a=0;a0&&(i.geometries=a),c.length>0&&(i.materials=c),f.length>0&&(i.textures=f),h.length>0&&(i.images=h),d.length>0&&(i.shapes=d),p.length>0&&(i.skeletons=p),m.length>0&&(i.animations=m),y.length>0&&(i.nodes=y)}return i.object=r,i;function o(a){const c=[];for(const f in a){const h=a[f];delete h.metadata,c.push(h)}return c}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,i,r,s){br.subVectors(r,t),Ss.subVectors(i,t),$v.subVectors(e,t);const o=br.dot(br),a=br.dot(Ss),c=br.dot($v),f=Ss.dot(Ss),h=Ss.dot($v),d=o*f-a*a;if(d===0)return s.set(0,0,0),null;const p=1/d,m=(f*c-a*h)*p,y=(o*h-a*c)*p;return s.set(1-m-y,y,m)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,Ms)===null?!1:Ms.x>=0&&Ms.y>=0&&Ms.x+Ms.y<=1}static getInterpolation(e,t,i,r,s,o,a,c){return this.getBarycoord(e,t,i,r,Ms)===null?(c.x=0,c.y=0,"z"in c&&(c.z=0),"w"in c&&(c.w=0),null):(c.setScalar(0),c.addScaledVector(s,Ms.x),c.addScaledVector(o,Ms.y),c.addScaledVector(a,Ms.z),c)}static isFrontFacing(e,t,i,r){return br.subVectors(i,t),Ss.subVectors(e,t),br.cross(Ss).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return br.subVectors(this.c,this.b),Ss.subVectors(this.a,this.b),br.cross(Ss).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return qi.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return qi.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,i,r,s){return qi.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}containsPoint(e){return qi.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return qi.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,r=this.b,s=this.c;let o,a;Pl.subVectors(r,i),Rl.subVectors(s,i),ey.subVectors(e,i);const c=Pl.dot(ey),f=Rl.dot(ey);if(c<=0&&f<=0)return t.copy(i);ty.subVectors(e,r);const h=Pl.dot(ty),d=Rl.dot(ty);if(h>=0&&d<=h)return t.copy(r);const p=c*d-h*f;if(p<=0&&c>=0&&h<=0)return o=c/(c-h),t.copy(i).addScaledVector(Pl,o);ny.subVectors(e,s);const m=Pl.dot(ny),y=Rl.dot(ny);if(y>=0&&m<=y)return t.copy(s);const _=m*f-c*y;if(_<=0&&f>=0&&y<=0)return a=f/(f-y),t.copy(i).addScaledVector(Rl,a);const x=h*y-m*d;if(x<=0&&d-h>=0&&m-y>=0)return uT.subVectors(s,r),a=(d-h)/(d-h+(m-y)),t.copy(r).addScaledVector(uT,a);const g=1/(x+_+p);return o=_*g,a=p*g,t.copy(i).addScaledVector(Pl,o).addScaledVector(Rl,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const tL={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},fo={h:0,s:0,l:0},$d={h:0,s:0,l:0};function iy(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}class je{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=pr){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,zt.toWorkingColorSpace(this,t),this}setRGB(e,t,i,r=zt.workingColorSpace){return this.r=e,this.g=t,this.b=i,zt.toWorkingColorSpace(this,r),this}setHSL(e,t,i,r=zt.workingColorSpace){if(e=yS(e,1),t=mn(t,0,1),i=mn(i,0,1),t===0)this.r=this.g=this.b=i;else{const s=i<=.5?i*(1+t):i+t-i*t,o=2*i-s;this.r=iy(o,s,e+1/3),this.g=iy(o,s,e),this.b=iy(o,s,e-1/3)}return zt.toWorkingColorSpace(this,r),this}setStyle(e,t=pr){function i(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const o=r[1],a=r[2];switch(o){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=r[1],o=s.length;if(o===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=pr){const i=tL[e.toLowerCase()];return i!==void 0?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Mc(e.r),this.g=Mc(e.g),this.b=Mc(e.b),this}copyLinearToSRGB(e){return this.r=Wv(e.r),this.g=Wv(e.g),this.b=Wv(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=pr){return zt.fromWorkingColorSpace(ti.copy(this),e),Math.round(mn(ti.r*255,0,255))*65536+Math.round(mn(ti.g*255,0,255))*256+Math.round(mn(ti.b*255,0,255))}getHexString(e=pr){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=zt.workingColorSpace){zt.fromWorkingColorSpace(ti.copy(this),t);const i=ti.r,r=ti.g,s=ti.b,o=Math.max(i,r,s),a=Math.min(i,r,s);let c,f;const h=(a+o)/2;if(a===o)c=0,f=0;else{const d=o-a;switch(f=h<=.5?d/(o+a):d/(2-o-a),o){case i:c=(r-s)/d+(r0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const i=e[t];if(i===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const i={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==Fa&&(i.blending=this.blending),this.side!==Gs&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==Vm&&(i.blendSrc=this.blendSrc),this.blendDst!==Hm&&(i.blendDst=this.blendDst),this.blendEquation!==Mo&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==If&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==A_&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Ea&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Ea&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Ea&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function r(s){const o=[];for(const a in s){const c=s[a];delete c.metadata,o.push(c)}return o}if(t){const s=r(e.textures),o=r(e.images);s.length>0&&(i.textures=s),o.length>0&&(i.images=o)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(t!==null){const r=t.length;i=new Array(r);for(let s=0;s!==r;++s)i[s]=t[s].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class Xo extends Yn{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new je(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new wi,this.combine=fh,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Cs=CV();function CV(){const n=new ArrayBuffer(4),e=new Float32Array(n),t=new Uint32Array(n),i=new Uint32Array(512),r=new Uint32Array(512);for(let c=0;c<256;++c){const f=c-127;f<-27?(i[c]=0,i[c|256]=32768,r[c]=24,r[c|256]=24):f<-14?(i[c]=1024>>-f-14,i[c|256]=1024>>-f-14|32768,r[c]=-f-1,r[c|256]=-f-1):f<=15?(i[c]=f+15<<10,i[c|256]=f+15<<10|32768,r[c]=13,r[c|256]=13):f<128?(i[c]=31744,i[c|256]=64512,r[c]=24,r[c|256]=24):(i[c]=31744,i[c|256]=64512,r[c]=13,r[c|256]=13)}const s=new Uint32Array(2048),o=new Uint32Array(64),a=new Uint32Array(64);for(let c=1;c<1024;++c){let f=c<<13,h=0;for(;!(f&8388608);)f<<=1,h-=8388608;f&=-8388609,h+=947912704,s[c]=f|h}for(let c=1024;c<2048;++c)s[c]=939524096+(c-1024<<13);for(let c=1;c<31;++c)o[c]=c<<23;o[31]=1199570944,o[32]=2147483648;for(let c=33;c<63;++c)o[c]=2147483648+(c-32<<23);o[63]=3347054592;for(let c=1;c<64;++c)c!==32&&(a[c]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:r,mantissaTable:s,exponentTable:o,offsetTable:a}}function Li(n){Math.abs(n)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),n=mn(n,-65504,65504),Cs.floatView[0]=n;const e=Cs.uint32View[0],t=e>>23&511;return Cs.baseTable[t]+((e&8388607)>>Cs.shiftTable[t])}function Wu(n){const e=n>>10;return Cs.uint32View[0]=Cs.mantissaTable[Cs.offsetTable[e]+(n&1023)]+Cs.exponentTable[e],Cs.floatView[0]}const PV={toHalfFloat:Li,fromHalfFloat:Wu},En=new O,ep=new pe;class Ht{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=Gf,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=Zi,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}get updateRange(){return xS("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,s=this.itemSize;r0&&(e.userData=this.userData),this.parameters!==void 0){const c=this.parameters;for(const f in c)c[f]!==void 0&&(e[f]=c[f]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const c in i){const f=i[c];e.data.attributes[c]=f.toJSON(e.data)}const r={};let s=!1;for(const c in this.morphAttributes){const f=this.morphAttributes[c],h=[];for(let d=0,p=f.length;d0&&(r[c]=h,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;i!==null&&this.setIndex(i.clone(t));const r=e.attributes;for(const f in r){const h=r[f];this.setAttribute(f,h.clone(t))}const s=e.morphAttributes;for(const f in s){const h=[],d=s[f];for(let p=0,m=d.length;p0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;s(e.far-e.near)**2))&&(fT.copy(s).invert(),aa.copy(e.ray).applyMatrix4(fT),!(i.boundingBox!==null&&aa.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,aa)))}_computeIntersections(e,t,i){let r;const s=this.geometry,o=this.material,a=s.index,c=s.attributes.position,f=s.attributes.uv,h=s.attributes.uv1,d=s.attributes.normal,p=s.groups,m=s.drawRange;if(a!==null)if(Array.isArray(o))for(let y=0,_=p.length;y<_;y++){const x=p[y],g=o[x.materialIndex],S=Math.max(x.start,m.start),M=Math.min(a.count,Math.min(x.start+x.count,m.start+m.count));for(let A=S,R=M;At.far?null:{distance:f,point:ap.clone(),object:n}}function lp(n,e,t,i,r,s,o,a,c,f){n.getVertexPosition(a,Il),n.getVertexPosition(c,Nl),n.getVertexPosition(f,Dl);const h=kV(n,e,t,i,Il,Nl,Dl,op);if(h){r&&(ip.fromBufferAttribute(r,a),rp.fromBufferAttribute(r,c),sp.fromBufferAttribute(r,f),h.uv=qi.getInterpolation(op,Il,Nl,Dl,ip,rp,sp,new pe)),s&&(ip.fromBufferAttribute(s,a),rp.fromBufferAttribute(s,c),sp.fromBufferAttribute(s,f),h.uv1=qi.getInterpolation(op,Il,Nl,Dl,ip,rp,sp,new pe)),o&&(dT.fromBufferAttribute(o,a),pT.fromBufferAttribute(o,c),mT.fromBufferAttribute(o,f),h.normal=qi.getInterpolation(op,Il,Nl,Dl,dT,pT,mT,new O),h.normal.dot(i.direction)>0&&h.normal.multiplyScalar(-1));const d={a,b:c,c:f,normal:new O,materialIndex:0};qi.getNormal(Il,Nl,Dl,d.normal),h.face=d}return h}class rl extends St{constructor(e=1,t=1,i=1,r=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:r,heightSegments:s,depthSegments:o};const a=this;r=Math.floor(r),s=Math.floor(s),o=Math.floor(o);const c=[],f=[],h=[],d=[];let p=0,m=0;y("z","y","x",-1,-1,i,t,e,o,s,0),y("z","y","x",1,-1,i,t,-e,o,s,1),y("x","z","y",1,1,e,i,t,r,o,2),y("x","z","y",1,-1,e,i,-t,r,o,3),y("x","y","z",1,-1,e,t,i,r,s,4),y("x","y","z",-1,-1,e,t,-i,r,s,5),this.setIndex(c),this.setAttribute("position",new Ze(f,3)),this.setAttribute("normal",new Ze(h,3)),this.setAttribute("uv",new Ze(d,2));function y(_,x,g,S,M,A,R,C,L,I,P){const b=A/L,D=R/I,j=A/2,X=R/2,te=C/2,ne=L+1,Q=I+1;let le=0,k=0;const q=new O;for(let J=0;J0?1:-1,h.push(q.x,q.y,q.z),d.push(_e/L),d.push(1-J/I),le+=1}}for(let J=0;J0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const i={};for(const r in this.extensions)this.extensions[r]===!0&&(i[r]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class ph extends Ut{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new at,this.projectionMatrix=new at,this.projectionMatrixInverse=new at,this.coordinateSystem=ns}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const ho=new O,gT=new pe,vT=new pe;class sn extends ph{constructor(e=50,t=1,i=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Ic*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Ba*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Ic*2*Math.atan(Math.tan(Ba*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,i){ho.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(ho.x,ho.y).multiplyScalar(-e/ho.z),ho.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),i.set(ho.x,ho.y).multiplyScalar(-e/ho.z)}getViewSize(e,t){return this.getViewBounds(e,gT,vT),t.subVectors(vT,gT)}setViewOffset(e,t,i,r,s,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Ba*.5*this.fov)/this.zoom,i=2*t,r=this.aspect*i,s=-.5*r;const o=this.view;if(this.view!==null&&this.view.enabled){const c=o.fullWidth,f=o.fullHeight;s+=o.offsetX*r/c,t-=o.offsetY*i/f,r*=o.width/c,i*=o.height/f}const a=this.filmOffset;a!==0&&(s+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,t,t-i,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const Ul=-90,Ol=1;class wS extends Ut{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new sn(Ul,Ol,e,t);r.layers=this.layers,this.add(r);const s=new sn(Ul,Ol,e,t);s.layers=this.layers,this.add(s);const o=new sn(Ul,Ol,e,t);o.layers=this.layers,this.add(o);const a=new sn(Ul,Ol,e,t);a.layers=this.layers,this.add(a);const c=new sn(Ul,Ol,e,t);c.layers=this.layers,this.add(c);const f=new sn(Ul,Ol,e,t);f.layers=this.layers,this.add(f)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[i,r,s,o,a,c]=t;for(const f of t)this.remove(f);if(e===ns)i.up.set(0,1,0),i.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),c.up.set(0,1,0),c.lookAt(0,0,-1);else if(e===Wf)i.up.set(0,-1,0),i.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),c.up.set(0,-1,0),c.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const f of t)this.add(f),f.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:i,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[s,o,a,c,f,h]=this.children,d=e.getRenderTarget(),p=e.getActiveCubeFace(),m=e.getActiveMipmapLevel(),y=e.xr.enabled;e.xr.enabled=!1;const _=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0,r),e.render(t,s),e.setRenderTarget(i,1,r),e.render(t,o),e.setRenderTarget(i,2,r),e.render(t,a),e.setRenderTarget(i,3,r),e.render(t,c),e.setRenderTarget(i,4,r),e.render(t,f),i.texture.generateMipmaps=_,e.setRenderTarget(i,5,r),e.render(t,h),e.setRenderTarget(d,p,m),e.xr.enabled=y,i.texture.needsPMREMUpdate=!0}}class mh extends $t{constructor(e,t,i,r,s,o,a,c,f,h){e=e!==void 0?e:[],t=t!==void 0?t:Ws,super(e,t,i,r,s,o,a,c,f,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class ES extends Fr{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];this.texture=new mh(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:bn}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:` - - varying vec3 vWorldDirection; - - vec3 transformDirection( in vec3 dir, in mat4 matrix ) { - - return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); - - } - - void main() { - - vWorldDirection = transformDirection( position, modelMatrix ); - - #include - #include - - } - `,fragmentShader:` - - uniform sampler2D tEquirect; - - varying vec3 vWorldDirection; - - #include - - void main() { - - vec3 direction = normalize( vWorldDirection ); - - vec2 sampleUV = equirectUv( direction ); - - gl_FragColor = texture2D( tEquirect, sampleUV ); - - } - `},r=new rl(5,5,5),s=new zr({name:"CubemapFromEquirect",uniforms:Nc(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Si,blending:Os});s.uniforms.tEquirect.value=t;const o=new _n(r,s),a=t.minFilter;return t.minFilter===ts&&(t.minFilter=bn),new wS(1,10,this).update(e,o),t.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,i,r){const s=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,i,r);e.setRenderTarget(s)}}const oy=new O,VV=new O,HV=new xt;class Ts{constructor(e=new O(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,r){return this.normal.set(e,t,i),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){const r=oy.subVectors(i,t).cross(VV.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const i=e.delta(oy),r=this.normal.dot(i);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/r;return s<0||s>1?null:t.copy(e.start).addScaledVector(i,s)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||HV.getNormalMatrix(e),r=this.coplanarPoint(oy).applyMatrix4(e),s=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const la=new ai,cp=new O;class gh{constructor(e=new Ts,t=new Ts,i=new Ts,r=new Ts,s=new Ts,o=new Ts){this.planes=[e,t,i,r,s,o]}set(e,t,i,r,s,o){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(r),a[4].copy(s),a[5].copy(o),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=ns){const i=this.planes,r=e.elements,s=r[0],o=r[1],a=r[2],c=r[3],f=r[4],h=r[5],d=r[6],p=r[7],m=r[8],y=r[9],_=r[10],x=r[11],g=r[12],S=r[13],M=r[14],A=r[15];if(i[0].setComponents(c-s,p-f,x-m,A-g).normalize(),i[1].setComponents(c+s,p+f,x+m,A+g).normalize(),i[2].setComponents(c+o,p+h,x+y,A+S).normalize(),i[3].setComponents(c-o,p-h,x-y,A-S).normalize(),i[4].setComponents(c-a,p-d,x-_,A-M).normalize(),t===ns)i[5].setComponents(c+a,p+d,x+_,A+M).normalize();else if(t===Wf)i[5].setComponents(a,d,_,M).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),la.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),la.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(la)}intersectsSprite(e){return la.center.set(0,0,0),la.radius=.7071067811865476,la.applyMatrix4(e.matrixWorld),this.intersectsSphere(la)}intersectsSphere(e){const t=this.planes,i=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(i)0?e.max.x:e.min.x,cp.y=r.normal.y>0?e.max.y:e.min.y,cp.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(cp)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function rL(){let n=null,e=!1,t=null,i=null;function r(s,o){t(s,o),i=n.requestAnimationFrame(r)}return{start:function(){e!==!0&&t!==null&&(i=n.requestAnimationFrame(r),e=!0)},stop:function(){n.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){n=s}}}function GV(n){const e=new WeakMap;function t(a,c){const f=a.array,h=a.usage,d=f.byteLength,p=n.createBuffer();n.bindBuffer(c,p),n.bufferData(c,f,h),a.onUploadCallback();let m;if(f instanceof Float32Array)m=n.FLOAT;else if(f instanceof Uint16Array)a.isFloat16BufferAttribute?m=n.HALF_FLOAT:m=n.UNSIGNED_SHORT;else if(f instanceof Int16Array)m=n.SHORT;else if(f instanceof Uint32Array)m=n.UNSIGNED_INT;else if(f instanceof Int32Array)m=n.INT;else if(f instanceof Int8Array)m=n.BYTE;else if(f instanceof Uint8Array)m=n.UNSIGNED_BYTE;else if(f instanceof Uint8ClampedArray)m=n.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+f);return{buffer:p,type:m,bytesPerElement:f.BYTES_PER_ELEMENT,version:a.version,size:d}}function i(a,c,f){const h=c.array,d=c._updateRange,p=c.updateRanges;if(n.bindBuffer(f,a),d.count===-1&&p.length===0&&n.bufferSubData(f,0,h),p.length!==0){for(let m=0,y=p.length;m 0 - vec4 plane; - #ifdef ALPHA_TO_COVERAGE - float distanceToPlane, distanceGradient; - float clipOpacity = 1.0; - #pragma unroll_loop_start - for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; - distanceGradient = fwidth( distanceToPlane ) / 2.0; - clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); - if ( clipOpacity == 0.0 ) discard; - } - #pragma unroll_loop_end - #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES - float unionClipOpacity = 1.0; - #pragma unroll_loop_start - for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; - distanceGradient = fwidth( distanceToPlane ) / 2.0; - unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); - } - #pragma unroll_loop_end - clipOpacity *= 1.0 - unionClipOpacity; - #endif - diffuseColor.a *= clipOpacity; - if ( diffuseColor.a == 0.0 ) discard; - #else - #pragma unroll_loop_start - for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; - } - #pragma unroll_loop_end - #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES - bool clipped = true; - #pragma unroll_loop_start - for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; - } - #pragma unroll_loop_end - if ( clipped ) discard; - #endif - #endif -#endif`,o5=`#if NUM_CLIPPING_PLANES > 0 - varying vec3 vClipPosition; - uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,a5=`#if NUM_CLIPPING_PLANES > 0 - varying vec3 vClipPosition; -#endif`,l5=`#if NUM_CLIPPING_PLANES > 0 - vClipPosition = - mvPosition.xyz; -#endif`,c5=`#if defined( USE_COLOR_ALPHA ) - diffuseColor *= vColor; -#elif defined( USE_COLOR ) - diffuseColor.rgb *= vColor; -#endif`,u5=`#if defined( USE_COLOR_ALPHA ) - varying vec4 vColor; -#elif defined( USE_COLOR ) - varying vec3 vColor; -#endif`,f5=`#if defined( USE_COLOR_ALPHA ) - varying vec4 vColor; -#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) - varying vec3 vColor; -#endif`,h5=`#if defined( USE_COLOR_ALPHA ) - vColor = vec4( 1.0 ); -#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) - vColor = vec3( 1.0 ); -#endif -#ifdef USE_COLOR - vColor *= color; -#endif -#ifdef USE_INSTANCING_COLOR - vColor.xyz *= instanceColor.xyz; -#endif -#ifdef USE_BATCHING_COLOR - vec3 batchingColor = getBatchingColor( batchId ); - vColor.xyz *= batchingColor.xyz; -#endif`,d5=`#define PI 3.141592653589793 -#define PI2 6.283185307179586 -#define PI_HALF 1.5707963267948966 -#define RECIPROCAL_PI 0.3183098861837907 -#define RECIPROCAL_PI2 0.15915494309189535 -#define EPSILON 1e-6 -#ifndef saturate -#define saturate( a ) clamp( a, 0.0, 1.0 ) -#endif -#define whiteComplement( a ) ( 1.0 - saturate( a ) ) -float pow2( const in float x ) { return x*x; } -vec3 pow2( const in vec3 x ) { return x*x; } -float pow3( const in float x ) { return x*x*x; } -float pow4( const in float x ) { float x2 = x*x; return x2*x2; } -float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } -float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } -highp float rand( const in vec2 uv ) { - const highp float a = 12.9898, b = 78.233, c = 43758.5453; - highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); - return fract( sin( sn ) * c ); -} -#ifdef HIGH_PRECISION - float precisionSafeLength( vec3 v ) { return length( v ); } -#else - float precisionSafeLength( vec3 v ) { - float maxComponent = max3( abs( v ) ); - return length( v / maxComponent ) * maxComponent; - } -#endif -struct IncidentLight { - vec3 color; - vec3 direction; - bool visible; -}; -struct ReflectedLight { - vec3 directDiffuse; - vec3 directSpecular; - vec3 indirectDiffuse; - vec3 indirectSpecular; -}; -#ifdef USE_ALPHAHASH - varying vec3 vPosition; -#endif -vec3 transformDirection( in vec3 dir, in mat4 matrix ) { - return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); -} -vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { - return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); -} -mat3 transposeMat3( const in mat3 m ) { - mat3 tmp; - tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); - tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); - tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); - return tmp; -} -float luminance( const in vec3 rgb ) { - const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 ); - return dot( weights, rgb ); -} -bool isPerspectiveMatrix( mat4 m ) { - return m[ 2 ][ 3 ] == - 1.0; -} -vec2 equirectUv( in vec3 dir ) { - float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; - float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; - return vec2( u, v ); -} -vec3 BRDF_Lambert( const in vec3 diffuseColor ) { - return RECIPROCAL_PI * diffuseColor; -} -vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { - float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); - return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); -} -float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { - float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); - return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); -} // validated`,p5=`#ifdef ENVMAP_TYPE_CUBE_UV - #define cubeUV_minMipLevel 4.0 - #define cubeUV_minTileSize 16.0 - float getFace( vec3 direction ) { - vec3 absDirection = abs( direction ); - float face = - 1.0; - if ( absDirection.x > absDirection.z ) { - if ( absDirection.x > absDirection.y ) - face = direction.x > 0.0 ? 0.0 : 3.0; - else - face = direction.y > 0.0 ? 1.0 : 4.0; - } else { - if ( absDirection.z > absDirection.y ) - face = direction.z > 0.0 ? 2.0 : 5.0; - else - face = direction.y > 0.0 ? 1.0 : 4.0; - } - return face; - } - vec2 getUV( vec3 direction, float face ) { - vec2 uv; - if ( face == 0.0 ) { - uv = vec2( direction.z, direction.y ) / abs( direction.x ); - } else if ( face == 1.0 ) { - uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); - } else if ( face == 2.0 ) { - uv = vec2( - direction.x, direction.y ) / abs( direction.z ); - } else if ( face == 3.0 ) { - uv = vec2( - direction.z, direction.y ) / abs( direction.x ); - } else if ( face == 4.0 ) { - uv = vec2( - direction.x, direction.z ) / abs( direction.y ); - } else { - uv = vec2( direction.x, direction.y ) / abs( direction.z ); - } - return 0.5 * ( uv + 1.0 ); - } - vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { - float face = getFace( direction ); - float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); - mipInt = max( mipInt, cubeUV_minMipLevel ); - float faceSize = exp2( mipInt ); - highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; - if ( face > 2.0 ) { - uv.y += faceSize; - face -= 3.0; - } - uv.x += face * faceSize; - uv.x += filterInt * 3.0 * cubeUV_minTileSize; - uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); - uv.x *= CUBEUV_TEXEL_WIDTH; - uv.y *= CUBEUV_TEXEL_HEIGHT; - #ifdef texture2DGradEXT - return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; - #else - return texture2D( envMap, uv ).rgb; - #endif - } - #define cubeUV_r0 1.0 - #define cubeUV_m0 - 2.0 - #define cubeUV_r1 0.8 - #define cubeUV_m1 - 1.0 - #define cubeUV_r4 0.4 - #define cubeUV_m4 2.0 - #define cubeUV_r5 0.305 - #define cubeUV_m5 3.0 - #define cubeUV_r6 0.21 - #define cubeUV_m6 4.0 - float roughnessToMip( float roughness ) { - float mip = 0.0; - if ( roughness >= cubeUV_r1 ) { - mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; - } else if ( roughness >= cubeUV_r4 ) { - mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; - } else if ( roughness >= cubeUV_r5 ) { - mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; - } else if ( roughness >= cubeUV_r6 ) { - mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; - } else { - mip = - 2.0 * log2( 1.16 * roughness ); } - return mip; - } - vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { - float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); - float mipF = fract( mip ); - float mipInt = floor( mip ); - vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); - if ( mipF == 0.0 ) { - return vec4( color0, 1.0 ); - } else { - vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); - return vec4( mix( color0, color1, mipF ), 1.0 ); - } - } -#endif`,m5=`vec3 transformedNormal = objectNormal; -#ifdef USE_TANGENT - vec3 transformedTangent = objectTangent; -#endif -#ifdef USE_BATCHING - mat3 bm = mat3( batchingMatrix ); - transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); - transformedNormal = bm * transformedNormal; - #ifdef USE_TANGENT - transformedTangent = bm * transformedTangent; - #endif -#endif -#ifdef USE_INSTANCING - mat3 im = mat3( instanceMatrix ); - transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); - transformedNormal = im * transformedNormal; - #ifdef USE_TANGENT - transformedTangent = im * transformedTangent; - #endif -#endif -transformedNormal = normalMatrix * transformedNormal; -#ifdef FLIP_SIDED - transformedNormal = - transformedNormal; -#endif -#ifdef USE_TANGENT - transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; - #ifdef FLIP_SIDED - transformedTangent = - transformedTangent; - #endif -#endif`,g5=`#ifdef USE_DISPLACEMENTMAP - uniform sampler2D displacementMap; - uniform float displacementScale; - uniform float displacementBias; -#endif`,v5=`#ifdef USE_DISPLACEMENTMAP - transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,y5=`#ifdef USE_EMISSIVEMAP - vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); - totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,x5=`#ifdef USE_EMISSIVEMAP - uniform sampler2D emissiveMap; -#endif`,_5="gl_FragColor = linearToOutputTexel( gl_FragColor );",S5=` -const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( - vec3( 0.8224621, 0.177538, 0.0 ), - vec3( 0.0331941, 0.9668058, 0.0 ), - vec3( 0.0170827, 0.0723974, 0.9105199 ) -); -const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( - vec3( 1.2249401, - 0.2249404, 0.0 ), - vec3( - 0.0420569, 1.0420571, 0.0 ), - vec3( - 0.0196376, - 0.0786361, 1.0982735 ) -); -vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { - return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); -} -vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { - return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); -} -vec4 LinearTransferOETF( in vec4 value ) { - return value; -} -vec4 sRGBTransferOETF( in vec4 value ) { - return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); -} -vec4 LinearToLinear( in vec4 value ) { - return value; -} -vec4 LinearTosRGB( in vec4 value ) { - return sRGBTransferOETF( value ); -}`,M5=`#ifdef USE_ENVMAP - #ifdef ENV_WORLDPOS - vec3 cameraToFrag; - if ( isOrthographic ) { - cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); - } else { - cameraToFrag = normalize( vWorldPosition - cameraPosition ); - } - vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); - #ifdef ENVMAP_MODE_REFLECTION - vec3 reflectVec = reflect( cameraToFrag, worldNormal ); - #else - vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); - #endif - #else - vec3 reflectVec = vReflect; - #endif - #ifdef ENVMAP_TYPE_CUBE - vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); - #else - vec4 envColor = vec4( 0.0 ); - #endif - #ifdef ENVMAP_BLENDING_MULTIPLY - outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); - #elif defined( ENVMAP_BLENDING_MIX ) - outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); - #elif defined( ENVMAP_BLENDING_ADD ) - outgoingLight += envColor.xyz * specularStrength * reflectivity; - #endif -#endif`,w5=`#ifdef USE_ENVMAP - uniform float envMapIntensity; - uniform float flipEnvMap; - uniform mat3 envMapRotation; - #ifdef ENVMAP_TYPE_CUBE - uniform samplerCube envMap; - #else - uniform sampler2D envMap; - #endif - -#endif`,E5=`#ifdef USE_ENVMAP - uniform float reflectivity; - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) - #define ENV_WORLDPOS - #endif - #ifdef ENV_WORLDPOS - varying vec3 vWorldPosition; - uniform float refractionRatio; - #else - varying vec3 vReflect; - #endif -#endif`,A5=`#ifdef USE_ENVMAP - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) - #define ENV_WORLDPOS - #endif - #ifdef ENV_WORLDPOS - - varying vec3 vWorldPosition; - #else - varying vec3 vReflect; - uniform float refractionRatio; - #endif -#endif`,T5=`#ifdef USE_ENVMAP - #ifdef ENV_WORLDPOS - vWorldPosition = worldPosition.xyz; - #else - vec3 cameraToVertex; - if ( isOrthographic ) { - cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); - } else { - cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); - } - vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); - #ifdef ENVMAP_MODE_REFLECTION - vReflect = reflect( cameraToVertex, worldNormal ); - #else - vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); - #endif - #endif -#endif`,b5=`#ifdef USE_FOG - vFogDepth = - mvPosition.z; -#endif`,C5=`#ifdef USE_FOG - varying float vFogDepth; -#endif`,P5=`#ifdef USE_FOG - #ifdef FOG_EXP2 - float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); - #else - float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); - #endif - gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); -#endif`,R5=`#ifdef USE_FOG - uniform vec3 fogColor; - varying float vFogDepth; - #ifdef FOG_EXP2 - uniform float fogDensity; - #else - uniform float fogNear; - uniform float fogFar; - #endif -#endif`,L5=`#ifdef USE_GRADIENTMAP - uniform sampler2D gradientMap; -#endif -vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { - float dotNL = dot( normal, lightDirection ); - vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); - #ifdef USE_GRADIENTMAP - return vec3( texture2D( gradientMap, coord ).r ); - #else - vec2 fw = fwidth( coord ) * 0.5; - return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); - #endif -}`,I5=`#ifdef USE_LIGHTMAP - uniform sampler2D lightMap; - uniform float lightMapIntensity; -#endif`,N5=`LambertMaterial material; -material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,D5=`varying vec3 vViewPosition; -struct LambertMaterial { - vec3 diffuseColor; - float specularStrength; -}; -void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { - float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); - vec3 irradiance = dotNL * directLight.color; - reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -#define RE_Direct RE_Direct_Lambert -#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,U5=`uniform bool receiveShadow; -uniform vec3 ambientLightColor; -#if defined( USE_LIGHT_PROBES ) - uniform vec3 lightProbe[ 9 ]; -#endif -vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { - float x = normal.x, y = normal.y, z = normal.z; - vec3 result = shCoefficients[ 0 ] * 0.886227; - result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; - result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; - result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; - result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; - result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; - result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); - result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; - result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); - return result; -} -vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { - vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); - vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); - return irradiance; -} -vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { - vec3 irradiance = ambientLightColor; - return irradiance; -} -float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { - float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); - if ( cutoffDistance > 0.0 ) { - distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); - } - return distanceFalloff; -} -float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { - return smoothstep( coneCosine, penumbraCosine, angleCosine ); -} -#if NUM_DIR_LIGHTS > 0 - struct DirectionalLight { - vec3 direction; - vec3 color; - }; - uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; - void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { - light.color = directionalLight.color; - light.direction = directionalLight.direction; - light.visible = true; - } -#endif -#if NUM_POINT_LIGHTS > 0 - struct PointLight { - vec3 position; - vec3 color; - float distance; - float decay; - }; - uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; - void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { - vec3 lVector = pointLight.position - geometryPosition; - light.direction = normalize( lVector ); - float lightDistance = length( lVector ); - light.color = pointLight.color; - light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); - light.visible = ( light.color != vec3( 0.0 ) ); - } -#endif -#if NUM_SPOT_LIGHTS > 0 - struct SpotLight { - vec3 position; - vec3 direction; - vec3 color; - float distance; - float decay; - float coneCos; - float penumbraCos; - }; - uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; - void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { - vec3 lVector = spotLight.position - geometryPosition; - light.direction = normalize( lVector ); - float angleCos = dot( light.direction, spotLight.direction ); - float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); - if ( spotAttenuation > 0.0 ) { - float lightDistance = length( lVector ); - light.color = spotLight.color * spotAttenuation; - light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); - light.visible = ( light.color != vec3( 0.0 ) ); - } else { - light.color = vec3( 0.0 ); - light.visible = false; - } - } -#endif -#if NUM_RECT_AREA_LIGHTS > 0 - struct RectAreaLight { - vec3 color; - vec3 position; - vec3 halfWidth; - vec3 halfHeight; - }; - uniform sampler2D ltc_1; uniform sampler2D ltc_2; - uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; -#endif -#if NUM_HEMI_LIGHTS > 0 - struct HemisphereLight { - vec3 direction; - vec3 skyColor; - vec3 groundColor; - }; - uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; - vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { - float dotNL = dot( normal, hemiLight.direction ); - float hemiDiffuseWeight = 0.5 * dotNL + 0.5; - vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); - return irradiance; - } -#endif`,O5=`#ifdef USE_ENVMAP - vec3 getIBLIrradiance( const in vec3 normal ) { - #ifdef ENVMAP_TYPE_CUBE_UV - vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); - vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); - return PI * envMapColor.rgb * envMapIntensity; - #else - return vec3( 0.0 ); - #endif - } - vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { - #ifdef ENVMAP_TYPE_CUBE_UV - vec3 reflectVec = reflect( - viewDir, normal ); - reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); - reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); - vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); - return envMapColor.rgb * envMapIntensity; - #else - return vec3( 0.0 ); - #endif - } - #ifdef USE_ANISOTROPY - vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { - #ifdef ENVMAP_TYPE_CUBE_UV - vec3 bentNormal = cross( bitangent, viewDir ); - bentNormal = normalize( cross( bentNormal, bitangent ) ); - bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); - return getIBLRadiance( viewDir, bentNormal, roughness ); - #else - return vec3( 0.0 ); - #endif - } - #endif -#endif`,k5=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,F5=`varying vec3 vViewPosition; -struct ToonMaterial { - vec3 diffuseColor; -}; -void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { - vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; - reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -#define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,z5=`BlinnPhongMaterial material; -material.diffuseColor = diffuseColor.rgb; -material.specularColor = specular; -material.specularShininess = shininess; -material.specularStrength = specularStrength;`,B5=`varying vec3 vViewPosition; -struct BlinnPhongMaterial { - vec3 diffuseColor; - vec3 specularColor; - float specularShininess; - float specularStrength; -}; -void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { - float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); - vec3 irradiance = dotNL * directLight.color; - reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); - reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; -} -void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -#define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,V5=`PhysicalMaterial material; -material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); -vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); -float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); -material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; -material.roughness = min( material.roughness, 1.0 ); -#ifdef IOR - material.ior = ior; - #ifdef USE_SPECULAR - float specularIntensityFactor = specularIntensity; - vec3 specularColorFactor = specularColor; - #ifdef USE_SPECULAR_COLORMAP - specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; - #endif - #ifdef USE_SPECULAR_INTENSITYMAP - specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; - #endif - material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); - #else - float specularIntensityFactor = 1.0; - vec3 specularColorFactor = vec3( 1.0 ); - material.specularF90 = 1.0; - #endif - material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); -#else - material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); - material.specularF90 = 1.0; -#endif -#ifdef USE_CLEARCOAT - material.clearcoat = clearcoat; - material.clearcoatRoughness = clearcoatRoughness; - material.clearcoatF0 = vec3( 0.04 ); - material.clearcoatF90 = 1.0; - #ifdef USE_CLEARCOATMAP - material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; - #endif - #ifdef USE_CLEARCOAT_ROUGHNESSMAP - material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; - #endif - material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); - material.clearcoatRoughness += geometryRoughness; - material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); -#endif -#ifdef USE_DISPERSION - material.dispersion = dispersion; -#endif -#ifdef USE_IRIDESCENCE - material.iridescence = iridescence; - material.iridescenceIOR = iridescenceIOR; - #ifdef USE_IRIDESCENCEMAP - material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; - #endif - #ifdef USE_IRIDESCENCE_THICKNESSMAP - material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; - #else - material.iridescenceThickness = iridescenceThicknessMaximum; - #endif -#endif -#ifdef USE_SHEEN - material.sheenColor = sheenColor; - #ifdef USE_SHEEN_COLORMAP - material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; - #endif - material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); - #ifdef USE_SHEEN_ROUGHNESSMAP - material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; - #endif -#endif -#ifdef USE_ANISOTROPY - #ifdef USE_ANISOTROPYMAP - mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); - vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; - vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; - #else - vec2 anisotropyV = anisotropyVector; - #endif - material.anisotropy = length( anisotropyV ); - if( material.anisotropy == 0.0 ) { - anisotropyV = vec2( 1.0, 0.0 ); - } else { - anisotropyV /= material.anisotropy; - material.anisotropy = saturate( material.anisotropy ); - } - material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); - material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; - material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; -#endif`,H5=`struct PhysicalMaterial { - vec3 diffuseColor; - float roughness; - vec3 specularColor; - float specularF90; - float dispersion; - #ifdef USE_CLEARCOAT - float clearcoat; - float clearcoatRoughness; - vec3 clearcoatF0; - float clearcoatF90; - #endif - #ifdef USE_IRIDESCENCE - float iridescence; - float iridescenceIOR; - float iridescenceThickness; - vec3 iridescenceFresnel; - vec3 iridescenceF0; - #endif - #ifdef USE_SHEEN - vec3 sheenColor; - float sheenRoughness; - #endif - #ifdef IOR - float ior; - #endif - #ifdef USE_TRANSMISSION - float transmission; - float transmissionAlpha; - float thickness; - float attenuationDistance; - vec3 attenuationColor; - #endif - #ifdef USE_ANISOTROPY - float anisotropy; - float alphaT; - vec3 anisotropyT; - vec3 anisotropyB; - #endif -}; -vec3 clearcoatSpecularDirect = vec3( 0.0 ); -vec3 clearcoatSpecularIndirect = vec3( 0.0 ); -vec3 sheenSpecularDirect = vec3( 0.0 ); -vec3 sheenSpecularIndirect = vec3(0.0 ); -vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { - float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); - float x2 = x * x; - float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); - return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); -} -float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { - float a2 = pow2( alpha ); - float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); - float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); - return 0.5 / max( gv + gl, EPSILON ); -} -float D_GGX( const in float alpha, const in float dotNH ) { - float a2 = pow2( alpha ); - float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; - return RECIPROCAL_PI * a2 / pow2( denom ); -} -#ifdef USE_ANISOTROPY - float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { - float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); - float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); - float v = 0.5 / ( gv + gl ); - return saturate(v); - } - float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { - float a2 = alphaT * alphaB; - highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); - highp float v2 = dot( v, v ); - float w2 = a2 / v2; - return RECIPROCAL_PI * a2 * pow2 ( w2 ); - } -#endif -#ifdef USE_CLEARCOAT - vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { - vec3 f0 = material.clearcoatF0; - float f90 = material.clearcoatF90; - float roughness = material.clearcoatRoughness; - float alpha = pow2( roughness ); - vec3 halfDir = normalize( lightDir + viewDir ); - float dotNL = saturate( dot( normal, lightDir ) ); - float dotNV = saturate( dot( normal, viewDir ) ); - float dotNH = saturate( dot( normal, halfDir ) ); - float dotVH = saturate( dot( viewDir, halfDir ) ); - vec3 F = F_Schlick( f0, f90, dotVH ); - float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); - float D = D_GGX( alpha, dotNH ); - return F * ( V * D ); - } -#endif -vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { - vec3 f0 = material.specularColor; - float f90 = material.specularF90; - float roughness = material.roughness; - float alpha = pow2( roughness ); - vec3 halfDir = normalize( lightDir + viewDir ); - float dotNL = saturate( dot( normal, lightDir ) ); - float dotNV = saturate( dot( normal, viewDir ) ); - float dotNH = saturate( dot( normal, halfDir ) ); - float dotVH = saturate( dot( viewDir, halfDir ) ); - vec3 F = F_Schlick( f0, f90, dotVH ); - #ifdef USE_IRIDESCENCE - F = mix( F, material.iridescenceFresnel, material.iridescence ); - #endif - #ifdef USE_ANISOTROPY - float dotTL = dot( material.anisotropyT, lightDir ); - float dotTV = dot( material.anisotropyT, viewDir ); - float dotTH = dot( material.anisotropyT, halfDir ); - float dotBL = dot( material.anisotropyB, lightDir ); - float dotBV = dot( material.anisotropyB, viewDir ); - float dotBH = dot( material.anisotropyB, halfDir ); - float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); - float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); - #else - float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); - float D = D_GGX( alpha, dotNH ); - #endif - return F * ( V * D ); -} -vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { - const float LUT_SIZE = 64.0; - const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; - const float LUT_BIAS = 0.5 / LUT_SIZE; - float dotNV = saturate( dot( N, V ) ); - vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); - uv = uv * LUT_SCALE + LUT_BIAS; - return uv; -} -float LTC_ClippedSphereFormFactor( const in vec3 f ) { - float l = length( f ); - return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); -} -vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { - float x = dot( v1, v2 ); - float y = abs( x ); - float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; - float b = 3.4175940 + ( 4.1616724 + y ) * y; - float v = a / b; - float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; - return cross( v1, v2 ) * theta_sintheta; -} -vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { - vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; - vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; - vec3 lightNormal = cross( v1, v2 ); - if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); - vec3 T1, T2; - T1 = normalize( V - N * dot( V, N ) ); - T2 = - cross( N, T1 ); - mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); - vec3 coords[ 4 ]; - coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); - coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); - coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); - coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); - coords[ 0 ] = normalize( coords[ 0 ] ); - coords[ 1 ] = normalize( coords[ 1 ] ); - coords[ 2 ] = normalize( coords[ 2 ] ); - coords[ 3 ] = normalize( coords[ 3 ] ); - vec3 vectorFormFactor = vec3( 0.0 ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); - float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); - return vec3( result ); -} -#if defined( USE_SHEEN ) -float D_Charlie( float roughness, float dotNH ) { - float alpha = pow2( roughness ); - float invAlpha = 1.0 / alpha; - float cos2h = dotNH * dotNH; - float sin2h = max( 1.0 - cos2h, 0.0078125 ); - return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); -} -float V_Neubelt( float dotNV, float dotNL ) { - return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); -} -vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { - vec3 halfDir = normalize( lightDir + viewDir ); - float dotNL = saturate( dot( normal, lightDir ) ); - float dotNV = saturate( dot( normal, viewDir ) ); - float dotNH = saturate( dot( normal, halfDir ) ); - float D = D_Charlie( sheenRoughness, dotNH ); - float V = V_Neubelt( dotNV, dotNL ); - return sheenColor * ( D * V ); -} -#endif -float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { - float dotNV = saturate( dot( normal, viewDir ) ); - float r2 = roughness * roughness; - float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; - float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; - float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); - return saturate( DG * RECIPROCAL_PI ); -} -vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { - float dotNV = saturate( dot( normal, viewDir ) ); - const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); - const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); - vec4 r = roughness * c0 + c1; - float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; - vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; - return fab; -} -vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { - vec2 fab = DFGApprox( normal, viewDir, roughness ); - return specularColor * fab.x + specularF90 * fab.y; -} -#ifdef USE_IRIDESCENCE -void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { -#else -void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { -#endif - vec2 fab = DFGApprox( normal, viewDir, roughness ); - #ifdef USE_IRIDESCENCE - vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); - #else - vec3 Fr = specularColor; - #endif - vec3 FssEss = Fr * fab.x + specularF90 * fab.y; - float Ess = fab.x + fab.y; - float Ems = 1.0 - Ess; - vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); - singleScatter += FssEss; - multiScatter += Fms * Ems; -} -#if NUM_RECT_AREA_LIGHTS > 0 - void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { - vec3 normal = geometryNormal; - vec3 viewDir = geometryViewDir; - vec3 position = geometryPosition; - vec3 lightPos = rectAreaLight.position; - vec3 halfWidth = rectAreaLight.halfWidth; - vec3 halfHeight = rectAreaLight.halfHeight; - vec3 lightColor = rectAreaLight.color; - float roughness = material.roughness; - vec3 rectCoords[ 4 ]; - rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; - rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; - rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; - vec2 uv = LTC_Uv( normal, viewDir, roughness ); - vec4 t1 = texture2D( ltc_1, uv ); - vec4 t2 = texture2D( ltc_2, uv ); - mat3 mInv = mat3( - vec3( t1.x, 0, t1.y ), - vec3( 0, 1, 0 ), - vec3( t1.z, 0, t1.w ) - ); - vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); - reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); - reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); - } -#endif -void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { - float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); - vec3 irradiance = dotNL * directLight.color; - #ifdef USE_CLEARCOAT - float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); - vec3 ccIrradiance = dotNLcc * directLight.color; - clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); - #endif - #ifdef USE_SHEEN - sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); - #endif - reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); - reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { - #ifdef USE_CLEARCOAT - clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); - #endif - #ifdef USE_SHEEN - sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); - #endif - vec3 singleScattering = vec3( 0.0 ); - vec3 multiScattering = vec3( 0.0 ); - vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; - #ifdef USE_IRIDESCENCE - computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); - #else - computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); - #endif - vec3 totalScattering = singleScattering + multiScattering; - vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); - reflectedLight.indirectSpecular += radiance * singleScattering; - reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; - reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; -} -#define RE_Direct RE_Direct_Physical -#define RE_Direct_RectArea RE_Direct_RectArea_Physical -#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical -#define RE_IndirectSpecular RE_IndirectSpecular_Physical -float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { - return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); -}`,G5=` -vec3 geometryPosition = - vViewPosition; -vec3 geometryNormal = normal; -vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); -vec3 geometryClearcoatNormal = vec3( 0.0 ); -#ifdef USE_CLEARCOAT - geometryClearcoatNormal = clearcoatNormal; -#endif -#ifdef USE_IRIDESCENCE - float dotNVi = saturate( dot( normal, geometryViewDir ) ); - if ( material.iridescenceThickness == 0.0 ) { - material.iridescence = 0.0; - } else { - material.iridescence = saturate( material.iridescence ); - } - if ( material.iridescence > 0.0 ) { - material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); - material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); - } -#endif -IncidentLight directLight; -#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) - PointLight pointLight; - #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 - PointLightShadow pointLightShadow; - #endif - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { - pointLight = pointLights[ i ]; - getPointLightInfo( pointLight, geometryPosition, directLight ); - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) - pointLightShadow = pointLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; - #endif - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) - SpotLight spotLight; - vec4 spotColor; - vec3 spotLightCoord; - bool inSpotLightMap; - #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 - SpotLightShadow spotLightShadow; - #endif - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { - spotLight = spotLights[ i ]; - getSpotLightInfo( spotLight, geometryPosition, directLight ); - #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) - #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX - #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS - #else - #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) - #endif - #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) - spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; - inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); - spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); - directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; - #endif - #undef SPOT_LIGHT_MAP_INDEX - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - spotLightShadow = spotLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; - #endif - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) - DirectionalLight directionalLight; - #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLightShadow; - #endif - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - directionalLight = directionalLights[ i ]; - getDirectionalLightInfo( directionalLight, directLight ); - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) - directionalLightShadow = directionalLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - #endif - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) - RectAreaLight rectAreaLight; - #pragma unroll_loop_start - for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { - rectAreaLight = rectAreaLights[ i ]; - RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if defined( RE_IndirectDiffuse ) - vec3 iblIrradiance = vec3( 0.0 ); - vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); - #if defined( USE_LIGHT_PROBES ) - irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); - #endif - #if ( NUM_HEMI_LIGHTS > 0 ) - #pragma unroll_loop_start - for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { - irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); - } - #pragma unroll_loop_end - #endif -#endif -#if defined( RE_IndirectSpecular ) - vec3 radiance = vec3( 0.0 ); - vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,W5=`#if defined( RE_IndirectDiffuse ) - #ifdef USE_LIGHTMAP - vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); - vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; - irradiance += lightMapIrradiance; - #endif - #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) - iblIrradiance += getIBLIrradiance( geometryNormal ); - #endif -#endif -#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) - #ifdef USE_ANISOTROPY - radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); - #else - radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); - #endif - #ifdef USE_CLEARCOAT - clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); - #endif -#endif`,j5=`#if defined( RE_IndirectDiffuse ) - RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); -#endif -#if defined( RE_IndirectSpecular ) - RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); -#endif`,X5=`#if defined( USE_LOGDEPTHBUF ) - gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,Y5=`#if defined( USE_LOGDEPTHBUF ) - uniform float logDepthBufFC; - varying float vFragDepth; - varying float vIsPerspective; -#endif`,q5=`#ifdef USE_LOGDEPTHBUF - varying float vFragDepth; - varying float vIsPerspective; -#endif`,K5=`#ifdef USE_LOGDEPTHBUF - vFragDepth = 1.0 + gl_Position.w; - vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); -#endif`,Z5=`#ifdef USE_MAP - vec4 sampledDiffuseColor = texture2D( map, vMapUv ); - #ifdef DECODE_VIDEO_TEXTURE - sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); - - #endif - diffuseColor *= sampledDiffuseColor; -#endif`,J5=`#ifdef USE_MAP - uniform sampler2D map; -#endif`,Q5=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) - #if defined( USE_POINTS_UV ) - vec2 uv = vUv; - #else - vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; - #endif -#endif -#ifdef USE_MAP - diffuseColor *= texture2D( map, uv ); -#endif -#ifdef USE_ALPHAMAP - diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,$5=`#if defined( USE_POINTS_UV ) - varying vec2 vUv; -#else - #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) - uniform mat3 uvTransform; - #endif -#endif -#ifdef USE_MAP - uniform sampler2D map; -#endif -#ifdef USE_ALPHAMAP - uniform sampler2D alphaMap; -#endif`,eH=`float metalnessFactor = metalness; -#ifdef USE_METALNESSMAP - vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); - metalnessFactor *= texelMetalness.b; -#endif`,tH=`#ifdef USE_METALNESSMAP - uniform sampler2D metalnessMap; -#endif`,nH=`#ifdef USE_INSTANCING_MORPH - float morphTargetInfluences[ MORPHTARGETS_COUNT ]; - float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; - for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { - morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; - } -#endif`,iH=`#if defined( USE_MORPHCOLORS ) - vColor *= morphTargetBaseInfluence; - for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { - #if defined( USE_COLOR_ALPHA ) - if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; - #elif defined( USE_COLOR ) - if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; - #endif - } -#endif`,rH=`#ifdef USE_MORPHNORMALS - objectNormal *= morphTargetBaseInfluence; - for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { - if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; - } -#endif`,sH=`#ifdef USE_MORPHTARGETS - #ifndef USE_INSTANCING_MORPH - uniform float morphTargetBaseInfluence; - uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; - #endif - uniform sampler2DArray morphTargetsTexture; - uniform ivec2 morphTargetsTextureSize; - vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { - int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; - int y = texelIndex / morphTargetsTextureSize.x; - int x = texelIndex - y * morphTargetsTextureSize.x; - ivec3 morphUV = ivec3( x, y, morphTargetIndex ); - return texelFetch( morphTargetsTexture, morphUV, 0 ); - } -#endif`,oH=`#ifdef USE_MORPHTARGETS - transformed *= morphTargetBaseInfluence; - for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { - if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; - } -#endif`,aH=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; -#ifdef FLAT_SHADED - vec3 fdx = dFdx( vViewPosition ); - vec3 fdy = dFdy( vViewPosition ); - vec3 normal = normalize( cross( fdx, fdy ) ); -#else - vec3 normal = normalize( vNormal ); - #ifdef DOUBLE_SIDED - normal *= faceDirection; - #endif -#endif -#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) - #ifdef USE_TANGENT - mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); - #else - mat3 tbn = getTangentFrame( - vViewPosition, normal, - #if defined( USE_NORMALMAP ) - vNormalMapUv - #elif defined( USE_CLEARCOAT_NORMALMAP ) - vClearcoatNormalMapUv - #else - vUv - #endif - ); - #endif - #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) - tbn[0] *= faceDirection; - tbn[1] *= faceDirection; - #endif -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - #ifdef USE_TANGENT - mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); - #else - mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); - #endif - #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) - tbn2[0] *= faceDirection; - tbn2[1] *= faceDirection; - #endif -#endif -vec3 nonPerturbedNormal = normal;`,lH=`#ifdef USE_NORMALMAP_OBJECTSPACE - normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; - #ifdef FLIP_SIDED - normal = - normal; - #endif - #ifdef DOUBLE_SIDED - normal = normal * faceDirection; - #endif - normal = normalize( normalMatrix * normal ); -#elif defined( USE_NORMALMAP_TANGENTSPACE ) - vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; - mapN.xy *= normalScale; - normal = normalize( tbn * mapN ); -#elif defined( USE_BUMPMAP ) - normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,cH=`#ifndef FLAT_SHADED - varying vec3 vNormal; - #ifdef USE_TANGENT - varying vec3 vTangent; - varying vec3 vBitangent; - #endif -#endif`,uH=`#ifndef FLAT_SHADED - varying vec3 vNormal; - #ifdef USE_TANGENT - varying vec3 vTangent; - varying vec3 vBitangent; - #endif -#endif`,fH=`#ifndef FLAT_SHADED - vNormal = normalize( transformedNormal ); - #ifdef USE_TANGENT - vTangent = normalize( transformedTangent ); - vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); - #endif -#endif`,hH=`#ifdef USE_NORMALMAP - uniform sampler2D normalMap; - uniform vec2 normalScale; -#endif -#ifdef USE_NORMALMAP_OBJECTSPACE - uniform mat3 normalMatrix; -#endif -#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) - mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { - vec3 q0 = dFdx( eye_pos.xyz ); - vec3 q1 = dFdy( eye_pos.xyz ); - vec2 st0 = dFdx( uv.st ); - vec2 st1 = dFdy( uv.st ); - vec3 N = surf_norm; - vec3 q1perp = cross( q1, N ); - vec3 q0perp = cross( N, q0 ); - vec3 T = q1perp * st0.x + q0perp * st1.x; - vec3 B = q1perp * st0.y + q0perp * st1.y; - float det = max( dot( T, T ), dot( B, B ) ); - float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); - return mat3( T * scale, B * scale, N ); - } -#endif`,dH=`#ifdef USE_CLEARCOAT - vec3 clearcoatNormal = nonPerturbedNormal; -#endif`,pH=`#ifdef USE_CLEARCOAT_NORMALMAP - vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; - clearcoatMapN.xy *= clearcoatNormalScale; - clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,mH=`#ifdef USE_CLEARCOATMAP - uniform sampler2D clearcoatMap; -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - uniform sampler2D clearcoatNormalMap; - uniform vec2 clearcoatNormalScale; -#endif -#ifdef USE_CLEARCOAT_ROUGHNESSMAP - uniform sampler2D clearcoatRoughnessMap; -#endif`,gH=`#ifdef USE_IRIDESCENCEMAP - uniform sampler2D iridescenceMap; -#endif -#ifdef USE_IRIDESCENCE_THICKNESSMAP - uniform sampler2D iridescenceThicknessMap; -#endif`,vH=`#ifdef OPAQUE -diffuseColor.a = 1.0; -#endif -#ifdef USE_TRANSMISSION -diffuseColor.a *= material.transmissionAlpha; -#endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,yH=`vec3 packNormalToRGB( const in vec3 normal ) { - return normalize( normal ) * 0.5 + 0.5; -} -vec3 unpackRGBToNormal( const in vec3 rgb ) { - return 2.0 * rgb.xyz - 1.0; -} -const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; -const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); -const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); -const float ShiftRight8 = 1. / 256.; -vec4 packDepthToRGBA( const in float v ) { - vec4 r = vec4( fract( v * PackFactors ), v ); - r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; -} -float unpackRGBAToDepth( const in vec4 v ) { - return dot( v, UnpackFactors ); -} -vec2 packDepthToRG( in highp float v ) { - return packDepthToRGBA( v ).yx; -} -float unpackRGToDepth( const in highp vec2 v ) { - return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) ); -} -vec4 pack2HalfToRGBA( vec2 v ) { - vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); - return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); -} -vec2 unpackRGBATo2Half( vec4 v ) { - return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); -} -float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { - return ( viewZ + near ) / ( near - far ); -} -float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { - return depth * ( near - far ) - near; -} -float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { - return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); -} -float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { - return ( near * far ) / ( ( far - near ) * depth - far ); -}`,xH=`#ifdef PREMULTIPLIED_ALPHA - gl_FragColor.rgb *= gl_FragColor.a; -#endif`,_H=`vec4 mvPosition = vec4( transformed, 1.0 ); -#ifdef USE_BATCHING - mvPosition = batchingMatrix * mvPosition; -#endif -#ifdef USE_INSTANCING - mvPosition = instanceMatrix * mvPosition; -#endif -mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,SH=`#ifdef DITHERING - gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,MH=`#ifdef DITHERING - vec3 dithering( vec3 color ) { - float grid_position = rand( gl_FragCoord.xy ); - vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); - dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); - return color + dither_shift_RGB; - } -#endif`,wH=`float roughnessFactor = roughness; -#ifdef USE_ROUGHNESSMAP - vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); - roughnessFactor *= texelRoughness.g; -#endif`,EH=`#ifdef USE_ROUGHNESSMAP - uniform sampler2D roughnessMap; -#endif`,AH=`#if NUM_SPOT_LIGHT_COORDS > 0 - varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; -#endif -#if NUM_SPOT_LIGHT_MAPS > 0 - uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; -#endif -#ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; - varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; - struct DirectionalLightShadow { - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; - struct SpotLightShadow { - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; - varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; - struct PointLightShadow { - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - float shadowCameraNear; - float shadowCameraFar; - }; - uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; - #endif - float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { - return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); - } - vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { - return unpackRGBATo2Half( texture2D( shadow, uv ) ); - } - float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ - float occlusion = 1.0; - vec2 distribution = texture2DDistribution( shadow, uv ); - float hard_shadow = step( compare , distribution.x ); - if (hard_shadow != 1.0 ) { - float distance = compare - distribution.x ; - float variance = max( 0.00000, distribution.y * distribution.y ); - float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); - } - return occlusion; - } - float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { - float shadow = 1.0; - shadowCoord.xyz /= shadowCoord.w; - shadowCoord.z += shadowBias; - bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; - bool frustumTest = inFrustum && shadowCoord.z <= 1.0; - if ( frustumTest ) { - #if defined( SHADOWMAP_TYPE_PCF ) - vec2 texelSize = vec2( 1.0 ) / shadowMapSize; - float dx0 = - texelSize.x * shadowRadius; - float dy0 = - texelSize.y * shadowRadius; - float dx1 = + texelSize.x * shadowRadius; - float dy1 = + texelSize.y * shadowRadius; - float dx2 = dx0 / 2.0; - float dy2 = dy0 / 2.0; - float dx3 = dx1 / 2.0; - float dy3 = dy1 / 2.0; - shadow = ( - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) - ) * ( 1.0 / 17.0 ); - #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) - vec2 texelSize = vec2( 1.0 ) / shadowMapSize; - float dx = texelSize.x; - float dy = texelSize.y; - vec2 uv = shadowCoord.xy; - vec2 f = fract( uv * shadowMapSize + 0.5 ); - uv -= f * texelSize; - shadow = ( - texture2DCompare( shadowMap, uv, shadowCoord.z ) + - texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + - texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + - mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), - f.x ) + - mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), - f.x ) + - mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), - f.y ) + - mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), - f.y ) + - mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), - f.x ), - mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), - f.x ), - f.y ) - ) * ( 1.0 / 9.0 ); - #elif defined( SHADOWMAP_TYPE_VSM ) - shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); - #else - shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); - #endif - } - return shadow; - } - vec2 cubeToUV( vec3 v, float texelSizeY ) { - vec3 absV = abs( v ); - float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); - absV *= scaleToCube; - v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); - vec2 planar = v.xy; - float almostATexel = 1.5 * texelSizeY; - float almostOne = 1.0 - almostATexel; - if ( absV.z >= almostOne ) { - if ( v.z > 0.0 ) - planar.x = 4.0 - v.x; - } else if ( absV.x >= almostOne ) { - float signX = sign( v.x ); - planar.x = v.z * signX + 2.0 * signX; - } else if ( absV.y >= almostOne ) { - float signY = sign( v.y ); - planar.x = v.x + 2.0 * signY + 2.0; - planar.y = v.z * signY - 2.0; - } - return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); - } - float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { - float shadow = 1.0; - vec3 lightToPosition = shadowCoord.xyz; - - float lightToPositionLength = length( lightToPosition ); - if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { - float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; - vec3 bd3D = normalize( lightToPosition ); - vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); - #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) - vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; - shadow = ( - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) - ) * ( 1.0 / 9.0 ); - #else - shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); - #endif - } - return shadow; - } -#endif`,TH=`#if NUM_SPOT_LIGHT_COORDS > 0 - uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; - varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; -#endif -#ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; - varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; - struct DirectionalLightShadow { - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - struct SpotLightShadow { - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; - varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; - struct PointLightShadow { - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - float shadowCameraNear; - float shadowCameraFar; - }; - uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; - #endif -#endif`,bH=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) - vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); - vec4 shadowWorldPosition; -#endif -#if defined( USE_SHADOWMAP ) - #if NUM_DIR_LIGHT_SHADOWS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { - shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); - vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; - } - #pragma unroll_loop_end - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { - shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); - vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; - } - #pragma unroll_loop_end - #endif -#endif -#if NUM_SPOT_LIGHT_COORDS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { - shadowWorldPosition = worldPosition; - #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; - #endif - vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; - } - #pragma unroll_loop_end -#endif`,CH=`float getShadowMask() { - float shadow = 1.0; - #ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLight; - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { - directionalLight = directionalLightShadows[ i ]; - shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - } - #pragma unroll_loop_end - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - SpotLightShadow spotLight; - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { - spotLight = spotLightShadows[ i ]; - shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; - } - #pragma unroll_loop_end - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - PointLightShadow pointLight; - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { - pointLight = pointLightShadows[ i ]; - shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; - } - #pragma unroll_loop_end - #endif - #endif - return shadow; -}`,PH=`#ifdef USE_SKINNING - mat4 boneMatX = getBoneMatrix( skinIndex.x ); - mat4 boneMatY = getBoneMatrix( skinIndex.y ); - mat4 boneMatZ = getBoneMatrix( skinIndex.z ); - mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,RH=`#ifdef USE_SKINNING - uniform mat4 bindMatrix; - uniform mat4 bindMatrixInverse; - uniform highp sampler2D boneTexture; - mat4 getBoneMatrix( const in float i ) { - int size = textureSize( boneTexture, 0 ).x; - int j = int( i ) * 4; - int x = j % size; - int y = j / size; - vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); - vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); - vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); - vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); - return mat4( v1, v2, v3, v4 ); - } -#endif`,LH=`#ifdef USE_SKINNING - vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); - vec4 skinned = vec4( 0.0 ); - skinned += boneMatX * skinVertex * skinWeight.x; - skinned += boneMatY * skinVertex * skinWeight.y; - skinned += boneMatZ * skinVertex * skinWeight.z; - skinned += boneMatW * skinVertex * skinWeight.w; - transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,IH=`#ifdef USE_SKINNING - mat4 skinMatrix = mat4( 0.0 ); - skinMatrix += skinWeight.x * boneMatX; - skinMatrix += skinWeight.y * boneMatY; - skinMatrix += skinWeight.z * boneMatZ; - skinMatrix += skinWeight.w * boneMatW; - skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; - objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; - #ifdef USE_TANGENT - objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; - #endif -#endif`,NH=`float specularStrength; -#ifdef USE_SPECULARMAP - vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); - specularStrength = texelSpecular.r; -#else - specularStrength = 1.0; -#endif`,DH=`#ifdef USE_SPECULARMAP - uniform sampler2D specularMap; -#endif`,UH=`#if defined( TONE_MAPPING ) - gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,OH=`#ifndef saturate -#define saturate( a ) clamp( a, 0.0, 1.0 ) -#endif -uniform float toneMappingExposure; -vec3 LinearToneMapping( vec3 color ) { - return saturate( toneMappingExposure * color ); -} -vec3 ReinhardToneMapping( vec3 color ) { - color *= toneMappingExposure; - return saturate( color / ( vec3( 1.0 ) + color ) ); -} -vec3 OptimizedCineonToneMapping( vec3 color ) { - color *= toneMappingExposure; - color = max( vec3( 0.0 ), color - 0.004 ); - return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); -} -vec3 RRTAndODTFit( vec3 v ) { - vec3 a = v * ( v + 0.0245786 ) - 0.000090537; - vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; - return a / b; -} -vec3 ACESFilmicToneMapping( vec3 color ) { - const mat3 ACESInputMat = mat3( - vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), - vec3( 0.04823, 0.01566, 0.83777 ) - ); - const mat3 ACESOutputMat = mat3( - vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), - vec3( -0.07367, -0.00605, 1.07602 ) - ); - color *= toneMappingExposure / 0.6; - color = ACESInputMat * color; - color = RRTAndODTFit( color ); - color = ACESOutputMat * color; - return saturate( color ); -} -const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( - vec3( 1.6605, - 0.1246, - 0.0182 ), - vec3( - 0.5876, 1.1329, - 0.1006 ), - vec3( - 0.0728, - 0.0083, 1.1187 ) -); -const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( - vec3( 0.6274, 0.0691, 0.0164 ), - vec3( 0.3293, 0.9195, 0.0880 ), - vec3( 0.0433, 0.0113, 0.8956 ) -); -vec3 agxDefaultContrastApprox( vec3 x ) { - vec3 x2 = x * x; - vec3 x4 = x2 * x2; - return + 15.5 * x4 * x2 - - 40.14 * x4 * x - + 31.96 * x4 - - 6.868 * x2 * x - + 0.4298 * x2 - + 0.1191 * x - - 0.00232; -} -vec3 AgXToneMapping( vec3 color ) { - const mat3 AgXInsetMatrix = mat3( - vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), - vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), - vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) - ); - const mat3 AgXOutsetMatrix = mat3( - vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), - vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), - vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) - ); - const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; - color *= toneMappingExposure; - color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; - color = AgXInsetMatrix * color; - color = max( color, 1e-10 ); color = log2( color ); - color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); - color = clamp( color, 0.0, 1.0 ); - color = agxDefaultContrastApprox( color ); - color = AgXOutsetMatrix * color; - color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); - color = LINEAR_REC2020_TO_LINEAR_SRGB * color; - color = clamp( color, 0.0, 1.0 ); - return color; -} -vec3 NeutralToneMapping( vec3 color ) { - const float StartCompression = 0.8 - 0.04; - const float Desaturation = 0.15; - color *= toneMappingExposure; - float x = min( color.r, min( color.g, color.b ) ); - float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; - color -= offset; - float peak = max( color.r, max( color.g, color.b ) ); - if ( peak < StartCompression ) return color; - float d = 1. - StartCompression; - float newPeak = 1. - d * d / ( peak + d - StartCompression ); - color *= newPeak / peak; - float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); - return mix( color, vec3( newPeak ), g ); -} -vec3 CustomToneMapping( vec3 color ) { return color; }`,kH=`#ifdef USE_TRANSMISSION - material.transmission = transmission; - material.transmissionAlpha = 1.0; - material.thickness = thickness; - material.attenuationDistance = attenuationDistance; - material.attenuationColor = attenuationColor; - #ifdef USE_TRANSMISSIONMAP - material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; - #endif - #ifdef USE_THICKNESSMAP - material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; - #endif - vec3 pos = vWorldPosition; - vec3 v = normalize( cameraPosition - pos ); - vec3 n = inverseTransformDirection( normal, viewMatrix ); - vec4 transmitted = getIBLVolumeRefraction( - n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, - pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, - material.attenuationColor, material.attenuationDistance ); - material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); - totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); -#endif`,FH=`#ifdef USE_TRANSMISSION - uniform float transmission; - uniform float thickness; - uniform float attenuationDistance; - uniform vec3 attenuationColor; - #ifdef USE_TRANSMISSIONMAP - uniform sampler2D transmissionMap; - #endif - #ifdef USE_THICKNESSMAP - uniform sampler2D thicknessMap; - #endif - uniform vec2 transmissionSamplerSize; - uniform sampler2D transmissionSamplerMap; - uniform mat4 modelMatrix; - uniform mat4 projectionMatrix; - varying vec3 vWorldPosition; - float w0( float a ) { - return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); - } - float w1( float a ) { - return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); - } - float w2( float a ){ - return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); - } - float w3( float a ) { - return ( 1.0 / 6.0 ) * ( a * a * a ); - } - float g0( float a ) { - return w0( a ) + w1( a ); - } - float g1( float a ) { - return w2( a ) + w3( a ); - } - float h0( float a ) { - return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); - } - float h1( float a ) { - return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); - } - vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { - uv = uv * texelSize.zw + 0.5; - vec2 iuv = floor( uv ); - vec2 fuv = fract( uv ); - float g0x = g0( fuv.x ); - float g1x = g1( fuv.x ); - float h0x = h0( fuv.x ); - float h1x = h1( fuv.x ); - float h0y = h0( fuv.y ); - float h1y = h1( fuv.y ); - vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; - vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; - vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; - vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; - return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + - g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); - } - vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { - vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); - vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); - vec2 fLodSizeInv = 1.0 / fLodSize; - vec2 cLodSizeInv = 1.0 / cLodSize; - vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); - vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); - return mix( fSample, cSample, fract( lod ) ); - } - vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { - vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); - vec3 modelScale; - modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); - modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); - modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); - return normalize( refractionVector ) * thickness * modelScale; - } - float applyIorToRoughness( const in float roughness, const in float ior ) { - return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); - } - vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { - float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); - return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); - } - vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { - if ( isinf( attenuationDistance ) ) { - return vec3( 1.0 ); - } else { - vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; - vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; - } - } - vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, - const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, - const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, - const in vec3 attenuationColor, const in float attenuationDistance ) { - vec4 transmittedLight; - vec3 transmittance; - #ifdef USE_DISPERSION - float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; - vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); - for ( int i = 0; i < 3; i ++ ) { - vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); - vec3 refractedRayExit = position + transmissionRay; - - vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); - vec2 refractionCoords = ndcPos.xy / ndcPos.w; - refractionCoords += 1.0; - refractionCoords /= 2.0; - - vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); - transmittedLight[ i ] = transmissionSample[ i ]; - transmittedLight.a += transmissionSample.a; - transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; - } - transmittedLight.a /= 3.0; - - #else - - vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); - vec3 refractedRayExit = position + transmissionRay; - vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); - vec2 refractionCoords = ndcPos.xy / ndcPos.w; - refractionCoords += 1.0; - refractionCoords /= 2.0; - transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); - transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); - - #endif - vec3 attenuatedColor = transmittance * transmittedLight.rgb; - vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); - float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; - return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); - } -#endif`,zH=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) - varying vec2 vUv; -#endif -#ifdef USE_MAP - varying vec2 vMapUv; -#endif -#ifdef USE_ALPHAMAP - varying vec2 vAlphaMapUv; -#endif -#ifdef USE_LIGHTMAP - varying vec2 vLightMapUv; -#endif -#ifdef USE_AOMAP - varying vec2 vAoMapUv; -#endif -#ifdef USE_BUMPMAP - varying vec2 vBumpMapUv; -#endif -#ifdef USE_NORMALMAP - varying vec2 vNormalMapUv; -#endif -#ifdef USE_EMISSIVEMAP - varying vec2 vEmissiveMapUv; -#endif -#ifdef USE_METALNESSMAP - varying vec2 vMetalnessMapUv; -#endif -#ifdef USE_ROUGHNESSMAP - varying vec2 vRoughnessMapUv; -#endif -#ifdef USE_ANISOTROPYMAP - varying vec2 vAnisotropyMapUv; -#endif -#ifdef USE_CLEARCOATMAP - varying vec2 vClearcoatMapUv; -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - varying vec2 vClearcoatNormalMapUv; -#endif -#ifdef USE_CLEARCOAT_ROUGHNESSMAP - varying vec2 vClearcoatRoughnessMapUv; -#endif -#ifdef USE_IRIDESCENCEMAP - varying vec2 vIridescenceMapUv; -#endif -#ifdef USE_IRIDESCENCE_THICKNESSMAP - varying vec2 vIridescenceThicknessMapUv; -#endif -#ifdef USE_SHEEN_COLORMAP - varying vec2 vSheenColorMapUv; -#endif -#ifdef USE_SHEEN_ROUGHNESSMAP - varying vec2 vSheenRoughnessMapUv; -#endif -#ifdef USE_SPECULARMAP - varying vec2 vSpecularMapUv; -#endif -#ifdef USE_SPECULAR_COLORMAP - varying vec2 vSpecularColorMapUv; -#endif -#ifdef USE_SPECULAR_INTENSITYMAP - varying vec2 vSpecularIntensityMapUv; -#endif -#ifdef USE_TRANSMISSIONMAP - uniform mat3 transmissionMapTransform; - varying vec2 vTransmissionMapUv; -#endif -#ifdef USE_THICKNESSMAP - uniform mat3 thicknessMapTransform; - varying vec2 vThicknessMapUv; -#endif`,BH=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) - varying vec2 vUv; -#endif -#ifdef USE_MAP - uniform mat3 mapTransform; - varying vec2 vMapUv; -#endif -#ifdef USE_ALPHAMAP - uniform mat3 alphaMapTransform; - varying vec2 vAlphaMapUv; -#endif -#ifdef USE_LIGHTMAP - uniform mat3 lightMapTransform; - varying vec2 vLightMapUv; -#endif -#ifdef USE_AOMAP - uniform mat3 aoMapTransform; - varying vec2 vAoMapUv; -#endif -#ifdef USE_BUMPMAP - uniform mat3 bumpMapTransform; - varying vec2 vBumpMapUv; -#endif -#ifdef USE_NORMALMAP - uniform mat3 normalMapTransform; - varying vec2 vNormalMapUv; -#endif -#ifdef USE_DISPLACEMENTMAP - uniform mat3 displacementMapTransform; - varying vec2 vDisplacementMapUv; -#endif -#ifdef USE_EMISSIVEMAP - uniform mat3 emissiveMapTransform; - varying vec2 vEmissiveMapUv; -#endif -#ifdef USE_METALNESSMAP - uniform mat3 metalnessMapTransform; - varying vec2 vMetalnessMapUv; -#endif -#ifdef USE_ROUGHNESSMAP - uniform mat3 roughnessMapTransform; - varying vec2 vRoughnessMapUv; -#endif -#ifdef USE_ANISOTROPYMAP - uniform mat3 anisotropyMapTransform; - varying vec2 vAnisotropyMapUv; -#endif -#ifdef USE_CLEARCOATMAP - uniform mat3 clearcoatMapTransform; - varying vec2 vClearcoatMapUv; -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - uniform mat3 clearcoatNormalMapTransform; - varying vec2 vClearcoatNormalMapUv; -#endif -#ifdef USE_CLEARCOAT_ROUGHNESSMAP - uniform mat3 clearcoatRoughnessMapTransform; - varying vec2 vClearcoatRoughnessMapUv; -#endif -#ifdef USE_SHEEN_COLORMAP - uniform mat3 sheenColorMapTransform; - varying vec2 vSheenColorMapUv; -#endif -#ifdef USE_SHEEN_ROUGHNESSMAP - uniform mat3 sheenRoughnessMapTransform; - varying vec2 vSheenRoughnessMapUv; -#endif -#ifdef USE_IRIDESCENCEMAP - uniform mat3 iridescenceMapTransform; - varying vec2 vIridescenceMapUv; -#endif -#ifdef USE_IRIDESCENCE_THICKNESSMAP - uniform mat3 iridescenceThicknessMapTransform; - varying vec2 vIridescenceThicknessMapUv; -#endif -#ifdef USE_SPECULARMAP - uniform mat3 specularMapTransform; - varying vec2 vSpecularMapUv; -#endif -#ifdef USE_SPECULAR_COLORMAP - uniform mat3 specularColorMapTransform; - varying vec2 vSpecularColorMapUv; -#endif -#ifdef USE_SPECULAR_INTENSITYMAP - uniform mat3 specularIntensityMapTransform; - varying vec2 vSpecularIntensityMapUv; -#endif -#ifdef USE_TRANSMISSIONMAP - uniform mat3 transmissionMapTransform; - varying vec2 vTransmissionMapUv; -#endif -#ifdef USE_THICKNESSMAP - uniform mat3 thicknessMapTransform; - varying vec2 vThicknessMapUv; -#endif`,VH=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) - vUv = vec3( uv, 1 ).xy; -#endif -#ifdef USE_MAP - vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; -#endif -#ifdef USE_ALPHAMAP - vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_LIGHTMAP - vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_AOMAP - vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_BUMPMAP - vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_NORMALMAP - vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_DISPLACEMENTMAP - vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_EMISSIVEMAP - vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_METALNESSMAP - vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_ROUGHNESSMAP - vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_ANISOTROPYMAP - vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_CLEARCOATMAP - vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_CLEARCOAT_ROUGHNESSMAP - vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_IRIDESCENCEMAP - vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_IRIDESCENCE_THICKNESSMAP - vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SHEEN_COLORMAP - vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SHEEN_ROUGHNESSMAP - vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SPECULARMAP - vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SPECULAR_COLORMAP - vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SPECULAR_INTENSITYMAP - vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_TRANSMISSIONMAP - vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_THICKNESSMAP - vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,HH=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 - vec4 worldPosition = vec4( transformed, 1.0 ); - #ifdef USE_BATCHING - worldPosition = batchingMatrix * worldPosition; - #endif - #ifdef USE_INSTANCING - worldPosition = instanceMatrix * worldPosition; - #endif - worldPosition = modelMatrix * worldPosition; -#endif`;const GH=`varying vec2 vUv; -uniform mat3 uvTransform; -void main() { - vUv = ( uvTransform * vec3( uv, 1 ) ).xy; - gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,WH=`uniform sampler2D t2D; -uniform float backgroundIntensity; -varying vec2 vUv; -void main() { - vec4 texColor = texture2D( t2D, vUv ); - #ifdef DECODE_VIDEO_TEXTURE - texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); - #endif - texColor.rgb *= backgroundIntensity; - gl_FragColor = texColor; - #include - #include -}`,jH=`varying vec3 vWorldDirection; -#include -void main() { - vWorldDirection = transformDirection( position, modelMatrix ); - #include - #include - gl_Position.z = gl_Position.w; -}`,XH=`#ifdef ENVMAP_TYPE_CUBE - uniform samplerCube envMap; -#elif defined( ENVMAP_TYPE_CUBE_UV ) - uniform sampler2D envMap; -#endif -uniform float flipEnvMap; -uniform float backgroundBlurriness; -uniform float backgroundIntensity; -uniform mat3 backgroundRotation; -varying vec3 vWorldDirection; -#include -void main() { - #ifdef ENVMAP_TYPE_CUBE - vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); - #elif defined( ENVMAP_TYPE_CUBE_UV ) - vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); - #else - vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); - #endif - texColor.rgb *= backgroundIntensity; - gl_FragColor = texColor; - #include - #include -}`,YH=`varying vec3 vWorldDirection; -#include -void main() { - vWorldDirection = transformDirection( position, modelMatrix ); - #include - #include - gl_Position.z = gl_Position.w; -}`,qH=`uniform samplerCube tCube; -uniform float tFlip; -uniform float opacity; -varying vec3 vWorldDirection; -void main() { - vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); - gl_FragColor = texColor; - gl_FragColor.a *= opacity; - #include - #include -}`,KH=`#include -#include -#include -#include -#include -#include -#include -#include -varying vec2 vHighPrecisionZW; -void main() { - #include - #include - #include - #include - #ifdef USE_DISPLACEMENTMAP - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - vHighPrecisionZW = gl_Position.zw; -}`,ZH=`#if DEPTH_PACKING == 3200 - uniform float opacity; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -varying vec2 vHighPrecisionZW; -void main() { - vec4 diffuseColor = vec4( 1.0 ); - #include - #if DEPTH_PACKING == 3200 - diffuseColor.a = opacity; - #endif - #include - #include - #include - #include - #include - float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; - #if DEPTH_PACKING == 3200 - gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); - #elif DEPTH_PACKING == 3201 - gl_FragColor = packDepthToRGBA( fragCoordZ ); - #endif -}`,JH=`#define DISTANCE -varying vec3 vWorldPosition; -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #ifdef USE_DISPLACEMENTMAP - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - vWorldPosition = worldPosition.xyz; -}`,QH=`#define DISTANCE -uniform vec3 referencePosition; -uniform float nearDistance; -uniform float farDistance; -varying vec3 vWorldPosition; -#include -#include -#include -#include -#include -#include -#include -#include -void main () { - vec4 diffuseColor = vec4( 1.0 ); - #include - #include - #include - #include - #include - float dist = length( vWorldPosition - referencePosition ); - dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); - dist = saturate( dist ); - gl_FragColor = packDepthToRGBA( dist ); -}`,$H=`varying vec3 vWorldDirection; -#include -void main() { - vWorldDirection = transformDirection( position, modelMatrix ); - #include - #include -}`,e8=`uniform sampler2D tEquirect; -varying vec3 vWorldDirection; -#include -void main() { - vec3 direction = normalize( vWorldDirection ); - vec2 sampleUV = equirectUv( direction ); - gl_FragColor = texture2D( tEquirect, sampleUV ); - #include - #include -}`,t8=`uniform float scale; -attribute float lineDistance; -varying float vLineDistance; -#include -#include -#include -#include -#include -#include -#include -void main() { - vLineDistance = scale * lineDistance; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -}`,n8=`uniform vec3 diffuse; -uniform float opacity; -uniform float dashSize; -uniform float totalSize; -varying float vLineDistance; -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - if ( mod( vLineDistance, totalSize ) > dashSize ) { - discard; - } - vec3 outgoingLight = vec3( 0.0 ); - #include - #include - #include - outgoingLight = diffuseColor.rgb; - #include - #include - #include - #include - #include -}`,i8=`#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) - #include - #include - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - #include - #include -}`,r8=`uniform vec3 diffuse; -uniform float opacity; -#ifndef FLAT_SHADED - varying vec3 vNormal; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - #include - #include - #include - #include - #include - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - #ifdef USE_LIGHTMAP - vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); - reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; - #else - reflectedLight.indirectDiffuse += vec3( 1.0 ); - #endif - #include - reflectedLight.indirectDiffuse *= diffuseColor.rgb; - vec3 outgoingLight = reflectedLight.indirectDiffuse; - #include - #include - #include - #include - #include - #include - #include -}`,s8=`#define LAMBERT -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include - #include -}`,o8=`#define LAMBERT -uniform vec3 diffuse; -uniform vec3 emissive; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; - #include - #include - #include - #include - #include - #include - #include -}`,a8=`#define MATCAP -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; -}`,l8=`#define MATCAP -uniform vec3 diffuse; -uniform float opacity; -uniform sampler2D matcap; -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 viewDir = normalize( vViewPosition ); - vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); - vec3 y = cross( viewDir, x ); - vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; - #ifdef USE_MATCAP - vec4 matcapColor = texture2D( matcap, uv ); - #else - vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); - #endif - vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; - #include - #include - #include - #include - #include - #include -}`,c8=`#define NORMAL -#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) - varying vec3 vViewPosition; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) - vViewPosition = - mvPosition.xyz; -#endif -}`,u8=`#define NORMAL -uniform float opacity; -#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) - varying vec3 vViewPosition; -#endif -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); - #include - #include - #include - #include - gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); - #ifdef OPAQUE - gl_FragColor.a = 1.0; - #endif -}`,f8=`#define PHONG -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include - #include -}`,h8=`#define PHONG -uniform vec3 diffuse; -uniform vec3 emissive; -uniform vec3 specular; -uniform float shininess; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; - #include - #include - #include - #include - #include - #include - #include -}`,d8=`#define STANDARD -varying vec3 vViewPosition; -#ifdef USE_TRANSMISSION - varying vec3 vWorldPosition; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include -#ifdef USE_TRANSMISSION - vWorldPosition = worldPosition.xyz; -#endif -}`,p8=`#define STANDARD -#ifdef PHYSICAL - #define IOR - #define USE_SPECULAR -#endif -uniform vec3 diffuse; -uniform vec3 emissive; -uniform float roughness; -uniform float metalness; -uniform float opacity; -#ifdef IOR - uniform float ior; -#endif -#ifdef USE_SPECULAR - uniform float specularIntensity; - uniform vec3 specularColor; - #ifdef USE_SPECULAR_COLORMAP - uniform sampler2D specularColorMap; - #endif - #ifdef USE_SPECULAR_INTENSITYMAP - uniform sampler2D specularIntensityMap; - #endif -#endif -#ifdef USE_CLEARCOAT - uniform float clearcoat; - uniform float clearcoatRoughness; -#endif -#ifdef USE_DISPERSION - uniform float dispersion; -#endif -#ifdef USE_IRIDESCENCE - uniform float iridescence; - uniform float iridescenceIOR; - uniform float iridescenceThicknessMinimum; - uniform float iridescenceThicknessMaximum; -#endif -#ifdef USE_SHEEN - uniform vec3 sheenColor; - uniform float sheenRoughness; - #ifdef USE_SHEEN_COLORMAP - uniform sampler2D sheenColorMap; - #endif - #ifdef USE_SHEEN_ROUGHNESSMAP - uniform sampler2D sheenRoughnessMap; - #endif -#endif -#ifdef USE_ANISOTROPY - uniform vec2 anisotropyVector; - #ifdef USE_ANISOTROPYMAP - uniform sampler2D anisotropyMap; - #endif -#endif -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; - vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; - #include - vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; - #ifdef USE_SHEEN - float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); - outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; - #endif - #ifdef USE_CLEARCOAT - float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); - vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); - outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; - #endif - #include - #include - #include - #include - #include - #include -}`,m8=`#define TOON -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include -}`,g8=`#define TOON -uniform vec3 diffuse; -uniform vec3 emissive; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; - #include - #include - #include - #include - #include - #include -}`,v8=`uniform float size; -uniform float scale; -#include -#include -#include -#include -#include -#include -#ifdef USE_POINTS_UV - varying vec2 vUv; - uniform mat3 uvTransform; -#endif -void main() { - #ifdef USE_POINTS_UV - vUv = ( uvTransform * vec3( uv, 1 ) ).xy; - #endif - #include - #include - #include - #include - #include - #include - gl_PointSize = size; - #ifdef USE_SIZEATTENUATION - bool isPerspective = isPerspectiveMatrix( projectionMatrix ); - if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); - #endif - #include - #include - #include - #include -}`,y8=`uniform vec3 diffuse; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - vec3 outgoingLight = vec3( 0.0 ); - #include - #include - #include - #include - #include - outgoingLight = diffuseColor.rgb; - #include - #include - #include - #include - #include -}`,x8=`#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -}`,_8=`uniform vec3 color; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); - #include - #include - #include -}`,S8=`uniform float rotation; -uniform vec2 center; -#include -#include -#include -#include -#include -void main() { - #include - vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); - vec2 scale; - scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); - scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); - #ifndef USE_SIZEATTENUATION - bool isPerspective = isPerspectiveMatrix( projectionMatrix ); - if ( isPerspective ) scale *= - mvPosition.z; - #endif - vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; - vec2 rotatedPosition; - rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; - rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; - mvPosition.xy += rotatedPosition; - gl_Position = projectionMatrix * mvPosition; - #include - #include - #include -}`,M8=`uniform vec3 diffuse; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - vec3 outgoingLight = vec3( 0.0 ); - #include - #include - #include - #include - #include - outgoingLight = diffuseColor.rgb; - #include - #include - #include - #include -}`,Mt={alphahash_fragment:WV,alphahash_pars_fragment:jV,alphamap_fragment:XV,alphamap_pars_fragment:YV,alphatest_fragment:qV,alphatest_pars_fragment:KV,aomap_fragment:ZV,aomap_pars_fragment:JV,batching_pars_vertex:QV,batching_vertex:$V,begin_vertex:e5,beginnormal_vertex:t5,bsdfs:n5,iridescence_fragment:i5,bumpmap_pars_fragment:r5,clipping_planes_fragment:s5,clipping_planes_pars_fragment:o5,clipping_planes_pars_vertex:a5,clipping_planes_vertex:l5,color_fragment:c5,color_pars_fragment:u5,color_pars_vertex:f5,color_vertex:h5,common:d5,cube_uv_reflection_fragment:p5,defaultnormal_vertex:m5,displacementmap_pars_vertex:g5,displacementmap_vertex:v5,emissivemap_fragment:y5,emissivemap_pars_fragment:x5,colorspace_fragment:_5,colorspace_pars_fragment:S5,envmap_fragment:M5,envmap_common_pars_fragment:w5,envmap_pars_fragment:E5,envmap_pars_vertex:A5,envmap_physical_pars_fragment:O5,envmap_vertex:T5,fog_vertex:b5,fog_pars_vertex:C5,fog_fragment:P5,fog_pars_fragment:R5,gradientmap_pars_fragment:L5,lightmap_pars_fragment:I5,lights_lambert_fragment:N5,lights_lambert_pars_fragment:D5,lights_pars_begin:U5,lights_toon_fragment:k5,lights_toon_pars_fragment:F5,lights_phong_fragment:z5,lights_phong_pars_fragment:B5,lights_physical_fragment:V5,lights_physical_pars_fragment:H5,lights_fragment_begin:G5,lights_fragment_maps:W5,lights_fragment_end:j5,logdepthbuf_fragment:X5,logdepthbuf_pars_fragment:Y5,logdepthbuf_pars_vertex:q5,logdepthbuf_vertex:K5,map_fragment:Z5,map_pars_fragment:J5,map_particle_fragment:Q5,map_particle_pars_fragment:$5,metalnessmap_fragment:eH,metalnessmap_pars_fragment:tH,morphinstance_vertex:nH,morphcolor_vertex:iH,morphnormal_vertex:rH,morphtarget_pars_vertex:sH,morphtarget_vertex:oH,normal_fragment_begin:aH,normal_fragment_maps:lH,normal_pars_fragment:cH,normal_pars_vertex:uH,normal_vertex:fH,normalmap_pars_fragment:hH,clearcoat_normal_fragment_begin:dH,clearcoat_normal_fragment_maps:pH,clearcoat_pars_fragment:mH,iridescence_pars_fragment:gH,opaque_fragment:vH,packing:yH,premultiplied_alpha_fragment:xH,project_vertex:_H,dithering_fragment:SH,dithering_pars_fragment:MH,roughnessmap_fragment:wH,roughnessmap_pars_fragment:EH,shadowmap_pars_fragment:AH,shadowmap_pars_vertex:TH,shadowmap_vertex:bH,shadowmask_pars_fragment:CH,skinbase_vertex:PH,skinning_pars_vertex:RH,skinning_vertex:LH,skinnormal_vertex:IH,specularmap_fragment:NH,specularmap_pars_fragment:DH,tonemapping_fragment:UH,tonemapping_pars_fragment:OH,transmission_fragment:kH,transmission_pars_fragment:FH,uv_pars_fragment:zH,uv_pars_vertex:BH,uv_vertex:VH,worldpos_vertex:HH,background_vert:GH,background_frag:WH,backgroundCube_vert:jH,backgroundCube_frag:XH,cube_vert:YH,cube_frag:qH,depth_vert:KH,depth_frag:ZH,distanceRGBA_vert:JH,distanceRGBA_frag:QH,equirect_vert:$H,equirect_frag:e8,linedashed_vert:t8,linedashed_frag:n8,meshbasic_vert:i8,meshbasic_frag:r8,meshlambert_vert:s8,meshlambert_frag:o8,meshmatcap_vert:a8,meshmatcap_frag:l8,meshnormal_vert:c8,meshnormal_frag:u8,meshphong_vert:f8,meshphong_frag:h8,meshphysical_vert:d8,meshphysical_frag:p8,meshtoon_vert:m8,meshtoon_frag:g8,points_vert:v8,points_frag:y8,shadow_vert:x8,shadow_frag:_8,sprite_vert:S8,sprite_frag:M8},Be={common:{diffuse:{value:new je(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new xt},alphaMap:{value:null},alphaMapTransform:{value:new xt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new xt}},envmap:{envMap:{value:null},envMapRotation:{value:new xt},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new xt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new xt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new xt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new xt},normalScale:{value:new pe(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new xt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new xt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new xt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new xt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new je(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new je(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new xt},alphaTest:{value:0},uvTransform:{value:new xt}},sprite:{diffuse:{value:new je(16777215)},opacity:{value:1},center:{value:new pe(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new xt},alphaMap:{value:null},alphaMapTransform:{value:new xt},alphaTest:{value:0}}},Ir={basic:{uniforms:mi([Be.common,Be.specularmap,Be.envmap,Be.aomap,Be.lightmap,Be.fog]),vertexShader:Mt.meshbasic_vert,fragmentShader:Mt.meshbasic_frag},lambert:{uniforms:mi([Be.common,Be.specularmap,Be.envmap,Be.aomap,Be.lightmap,Be.emissivemap,Be.bumpmap,Be.normalmap,Be.displacementmap,Be.fog,Be.lights,{emissive:{value:new je(0)}}]),vertexShader:Mt.meshlambert_vert,fragmentShader:Mt.meshlambert_frag},phong:{uniforms:mi([Be.common,Be.specularmap,Be.envmap,Be.aomap,Be.lightmap,Be.emissivemap,Be.bumpmap,Be.normalmap,Be.displacementmap,Be.fog,Be.lights,{emissive:{value:new je(0)},specular:{value:new je(1118481)},shininess:{value:30}}]),vertexShader:Mt.meshphong_vert,fragmentShader:Mt.meshphong_frag},standard:{uniforms:mi([Be.common,Be.envmap,Be.aomap,Be.lightmap,Be.emissivemap,Be.bumpmap,Be.normalmap,Be.displacementmap,Be.roughnessmap,Be.metalnessmap,Be.fog,Be.lights,{emissive:{value:new je(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Mt.meshphysical_vert,fragmentShader:Mt.meshphysical_frag},toon:{uniforms:mi([Be.common,Be.aomap,Be.lightmap,Be.emissivemap,Be.bumpmap,Be.normalmap,Be.displacementmap,Be.gradientmap,Be.fog,Be.lights,{emissive:{value:new je(0)}}]),vertexShader:Mt.meshtoon_vert,fragmentShader:Mt.meshtoon_frag},matcap:{uniforms:mi([Be.common,Be.bumpmap,Be.normalmap,Be.displacementmap,Be.fog,{matcap:{value:null}}]),vertexShader:Mt.meshmatcap_vert,fragmentShader:Mt.meshmatcap_frag},points:{uniforms:mi([Be.points,Be.fog]),vertexShader:Mt.points_vert,fragmentShader:Mt.points_frag},dashed:{uniforms:mi([Be.common,Be.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Mt.linedashed_vert,fragmentShader:Mt.linedashed_frag},depth:{uniforms:mi([Be.common,Be.displacementmap]),vertexShader:Mt.depth_vert,fragmentShader:Mt.depth_frag},normal:{uniforms:mi([Be.common,Be.bumpmap,Be.normalmap,Be.displacementmap,{opacity:{value:1}}]),vertexShader:Mt.meshnormal_vert,fragmentShader:Mt.meshnormal_frag},sprite:{uniforms:mi([Be.sprite,Be.fog]),vertexShader:Mt.sprite_vert,fragmentShader:Mt.sprite_frag},background:{uniforms:{uvTransform:{value:new xt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Mt.background_vert,fragmentShader:Mt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new xt}},vertexShader:Mt.backgroundCube_vert,fragmentShader:Mt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Mt.cube_vert,fragmentShader:Mt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Mt.equirect_vert,fragmentShader:Mt.equirect_frag},distanceRGBA:{uniforms:mi([Be.common,Be.displacementmap,{referencePosition:{value:new O},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Mt.distanceRGBA_vert,fragmentShader:Mt.distanceRGBA_frag},shadow:{uniforms:mi([Be.lights,Be.fog,{color:{value:new je(0)},opacity:{value:1}}]),vertexShader:Mt.shadow_vert,fragmentShader:Mt.shadow_frag}};Ir.physical={uniforms:mi([Ir.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new xt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new xt},clearcoatNormalScale:{value:new pe(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new xt},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new xt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new xt},sheen:{value:0},sheenColor:{value:new je(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new xt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new xt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new xt},transmissionSamplerSize:{value:new pe},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new xt},attenuationDistance:{value:0},attenuationColor:{value:new je(0)},specularColor:{value:new je(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new xt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new xt},anisotropyVector:{value:new pe},anisotropyMap:{value:null},anisotropyMapTransform:{value:new xt}}]),vertexShader:Mt.meshphysical_vert,fragmentShader:Mt.meshphysical_frag};const up={r:0,b:0,g:0},ca=new wi,w8=new at;function E8(n,e,t,i,r,s,o){const a=new je(0);let c=s===!0?0:1,f,h,d=null,p=0,m=null;function y(S){let M=S.isScene===!0?S.background:null;return M&&M.isTexture&&(M=(S.backgroundBlurriness>0?t:e).get(M)),M}function _(S){let M=!1;const A=y(S);A===null?g(a,c):A&&A.isColor&&(g(A,1),M=!0);const R=n.xr.getEnvironmentBlendMode();R==="additive"?i.buffers.color.setClear(0,0,0,1,o):R==="alpha-blend"&&i.buffers.color.setClear(0,0,0,0,o),(n.autoClear||M)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function x(S,M){const A=y(M);A&&(A.isCubeTexture||A.mapping===Vc)?(h===void 0&&(h=new _n(new rl(1,1,1),new zr({name:"BackgroundCubeMaterial",uniforms:Nc(Ir.backgroundCube.uniforms),vertexShader:Ir.backgroundCube.vertexShader,fragmentShader:Ir.backgroundCube.fragmentShader,side:Si,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(R,C,L){this.matrixWorld.copyPosition(L.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(h)),ca.copy(M.backgroundRotation),ca.x*=-1,ca.y*=-1,ca.z*=-1,A.isCubeTexture&&A.isRenderTargetTexture===!1&&(ca.y*=-1,ca.z*=-1),h.material.uniforms.envMap.value=A,h.material.uniforms.flipEnvMap.value=A.isCubeTexture&&A.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=M.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4(w8.makeRotationFromEuler(ca)),h.material.toneMapped=zt.getTransfer(A.colorSpace)!==Yt,(d!==A||p!==A.version||m!==n.toneMapping)&&(h.material.needsUpdate=!0,d=A,p=A.version,m=n.toneMapping),h.layers.enableAll(),S.unshift(h,h.geometry,h.material,0,0,null)):A&&A.isTexture&&(f===void 0&&(f=new _n(new Hc(2,2),new zr({name:"BackgroundMaterial",uniforms:Nc(Ir.background.uniforms),vertexShader:Ir.background.vertexShader,fragmentShader:Ir.background.fragmentShader,side:Gs,depthTest:!1,depthWrite:!1,fog:!1})),f.geometry.deleteAttribute("normal"),Object.defineProperty(f.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(f)),f.material.uniforms.t2D.value=A,f.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,f.material.toneMapped=zt.getTransfer(A.colorSpace)!==Yt,A.matrixAutoUpdate===!0&&A.updateMatrix(),f.material.uniforms.uvTransform.value.copy(A.matrix),(d!==A||p!==A.version||m!==n.toneMapping)&&(f.material.needsUpdate=!0,d=A,p=A.version,m=n.toneMapping),f.layers.enableAll(),S.unshift(f,f.geometry,f.material,0,0,null))}function g(S,M){S.getRGB(up,nL(n)),i.buffers.color.setClear(up.r,up.g,up.b,M,o)}return{getClearColor:function(){return a},setClearColor:function(S,M=1){a.set(S),c=M,g(a,c)},getClearAlpha:function(){return c},setClearAlpha:function(S){c=S,g(a,c)},render:_,addToRenderList:x}}function A8(n,e){const t=n.getParameter(n.MAX_VERTEX_ATTRIBS),i={},r=p(null);let s=r,o=!1;function a(b,D,j,X,te){let ne=!1;const Q=d(X,j,D);s!==Q&&(s=Q,f(s.object)),ne=m(b,X,j,te),ne&&y(b,X,j,te),te!==null&&e.update(te,n.ELEMENT_ARRAY_BUFFER),(ne||o)&&(o=!1,A(b,D,j,X),te!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e.get(te).buffer))}function c(){return n.createVertexArray()}function f(b){return n.bindVertexArray(b)}function h(b){return n.deleteVertexArray(b)}function d(b,D,j){const X=j.wireframe===!0;let te=i[b.id];te===void 0&&(te={},i[b.id]=te);let ne=te[D.id];ne===void 0&&(ne={},te[D.id]=ne);let Q=ne[X];return Q===void 0&&(Q=p(c()),ne[X]=Q),Q}function p(b){const D=[],j=[],X=[];for(let te=0;te=0){const J=te[k];let $=ne[k];if($===void 0&&(k==="instanceMatrix"&&b.instanceMatrix&&($=b.instanceMatrix),k==="instanceColor"&&b.instanceColor&&($=b.instanceColor)),J===void 0||J.attribute!==$||$&&J.data!==$.data)return!0;Q++}return s.attributesNum!==Q||s.index!==X}function y(b,D,j,X){const te={},ne=D.attributes;let Q=0;const le=j.getAttributes();for(const k in le)if(le[k].location>=0){let J=ne[k];J===void 0&&(k==="instanceMatrix"&&b.instanceMatrix&&(J=b.instanceMatrix),k==="instanceColor"&&b.instanceColor&&(J=b.instanceColor));const $={};$.attribute=J,J&&J.data&&($.data=J.data),te[k]=$,Q++}s.attributes=te,s.attributesNum=Q,s.index=X}function _(){const b=s.newAttributes;for(let D=0,j=b.length;D=0){let q=te[le];if(q===void 0&&(le==="instanceMatrix"&&b.instanceMatrix&&(q=b.instanceMatrix),le==="instanceColor"&&b.instanceColor&&(q=b.instanceColor)),q!==void 0){const J=q.normalized,$=q.itemSize,_e=e.get(q);if(_e===void 0)continue;const De=_e.buffer,oe=_e.type,ve=_e.bytesPerElement,Te=oe===n.INT||oe===n.UNSIGNED_INT||q.gpuType===cS;if(q.isInterleavedBufferAttribute){const we=q.data,nt=we.stride,it=q.offset;if(we.isInstancedInterleavedBuffer){for(let Xe=0;Xe0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";C="mediump"}return C==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let f=t.precision!==void 0?t.precision:"highp";const h=c(f);h!==f&&(console.warn("THREE.WebGLRenderer:",f,"not supported, using",h,"instead."),f=h);const d=t.logarithmicDepthBuffer===!0,p=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),m=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),y=n.getParameter(n.MAX_TEXTURE_SIZE),_=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),x=n.getParameter(n.MAX_VERTEX_ATTRIBS),g=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),S=n.getParameter(n.MAX_VARYING_VECTORS),M=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),A=m>0,R=n.getParameter(n.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:c,textureFormatReadable:o,textureTypeReadable:a,precision:f,logarithmicDepthBuffer:d,maxTextures:p,maxVertexTextures:m,maxTextureSize:y,maxCubemapSize:_,maxAttributes:x,maxVertexUniforms:g,maxVaryings:S,maxFragmentUniforms:M,vertexTextures:A,maxSamples:R}}function C8(n){const e=this;let t=null,i=0,r=!1,s=!1;const o=new Ts,a=new xt,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(d,p){const m=d.length!==0||p||i!==0||r;return r=p,i=d.length,m},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(d,p){t=h(d,p,0)},this.setState=function(d,p,m){const y=d.clippingPlanes,_=d.clipIntersection,x=d.clipShadows,g=n.get(d);if(!r||y===null||y.length===0||s&&!x)s?h(null):f();else{const S=s?0:i,M=S*4;let A=g.clippingState||null;c.value=A,A=h(y,p,M,m);for(let R=0;R!==M;++R)A[R]=t[R];g.clippingState=A,this.numIntersection=_?this.numPlanes:0,this.numPlanes+=S}};function f(){c.value!==t&&(c.value=t,c.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function h(d,p,m,y){const _=d!==null?d.length:0;let x=null;if(_!==0){if(x=c.value,y!==!0||x===null){const g=m+_*4,S=p.matrixWorldInverse;a.getNormalMatrix(S),(x===null||x.length0){const f=new ES(c.height);return f.fromEquirectangularTexture(n,o),e.set(o,f),o.addEventListener("dispose",r),t(f.texture,o.mapping)}else return null}}return o}function r(o){const a=o.target;a.removeEventListener("dispose",r);const c=e.get(a);c!==void 0&&(e.delete(a),c.dispose())}function s(){e=new WeakMap}return{get:i,dispose:s}}class Dr extends ph{constructor(e=-1,t=1,i=1,r=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=r,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,r,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let s=i-e,o=i+e,a=r+t,c=r-t;if(this.view!==null&&this.view.enabled){const f=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=f*this.view.offsetX,o=s+f*this.view.width,a-=h*this.view.offsetY,c=a-h*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,c,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}const fc=4,yT=[.125,.215,.35,.446,.526,.582],Ta=20,ay=new Dr,xT=new je;let ly=null,cy=0,uy=0,fy=!1;const Aa=(1+Math.sqrt(5))/2,kl=1/Aa,_T=[new O(-Aa,kl,0),new O(Aa,kl,0),new O(-kl,0,Aa),new O(kl,0,Aa),new O(0,Aa,-kl),new O(0,Aa,kl),new O(-1,1,-1),new O(1,1,-1),new O(-1,1,1),new O(1,1,1)];class b_{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,r=100){ly=this._renderer.getRenderTarget(),cy=this._renderer.getActiveCubeFace(),uy=this._renderer.getActiveMipmapLevel(),fy=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(e,i,r,s),t>0&&this._blur(s,0,0,t),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=wT(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=MT(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?M:0,M,M),h.setRenderTarget(r),_&&h.render(y,a),h.render(e,a)}y.geometry.dispose(),y.material.dispose(),h.toneMapping=p,h.autoClear=d,e.background=x}_textureToCubeUV(e,t){const i=this._renderer,r=e.mapping===Ws||e.mapping===zo;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=wT()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=MT());const s=r?this._cubemapMaterial:this._equirectMaterial,o=new _n(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=e;const c=this._cubeSize;fp(t,0,0,3*c,2*c),i.setRenderTarget(t),i.render(o,ay)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;const r=this._lodPlanes.length;for(let s=1;sTa&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${x} samples when the maximum is set to ${Ta}`);const g=[];let S=0;for(let L=0;LM-fc?r-M+fc:0),C=4*(this._cubeSize-A);fp(t,R,C,3*A,2*A),c.setRenderTarget(t),c.render(d,ay)}}function R8(n){const e=[],t=[],i=[];let r=n;const s=n-fc+1+yT.length;for(let o=0;on-fc?c=yT[o-n+fc-1]:o===0&&(c=0),i.push(c);const f=1/(a-2),h=-f,d=1+f,p=[h,h,d,h,d,d,h,h,d,d,h,d],m=6,y=6,_=3,x=2,g=1,S=new Float32Array(_*y*m),M=new Float32Array(x*y*m),A=new Float32Array(g*y*m);for(let C=0;C2?0:-1,P=[L,I,0,L+2/3,I,0,L+2/3,I+1,0,L,I,0,L+2/3,I+1,0,L,I+1,0];S.set(P,_*y*C),M.set(p,x*y*C);const b=[C,C,C,C,C,C];A.set(b,g*y*C)}const R=new St;R.setAttribute("position",new Ht(S,_)),R.setAttribute("uv",new Ht(M,x)),R.setAttribute("faceIndex",new Ht(A,g)),e.push(R),r>fc&&r--}return{lodPlanes:e,sizeLods:t,sigmas:i}}function ST(n,e,t){const i=new Fr(n,e,t);return i.texture.mapping=Vc,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function fp(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function L8(n,e,t){const i=new Float32Array(Ta),r=new O(0,1,0);return new zr({name:"SphericalGaussianBlur",defines:{n:Ta,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:AS(),fragmentShader:` - - precision mediump float; - precision mediump int; - - varying vec3 vOutputDirection; - - uniform sampler2D envMap; - uniform int samples; - uniform float weights[ n ]; - uniform bool latitudinal; - uniform float dTheta; - uniform float mipInt; - uniform vec3 poleAxis; - - #define ENVMAP_TYPE_CUBE_UV - #include - - vec3 getSample( float theta, vec3 axis ) { - - float cosTheta = cos( theta ); - // Rodrigues' axis-angle rotation - vec3 sampleDirection = vOutputDirection * cosTheta - + cross( axis, vOutputDirection ) * sin( theta ) - + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); - - return bilinearCubeUV( envMap, sampleDirection, mipInt ); - - } - - void main() { - - vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); - - if ( all( equal( axis, vec3( 0.0 ) ) ) ) { - - axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); - - } - - axis = normalize( axis ); - - gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); - gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); - - for ( int i = 1; i < n; i++ ) { - - if ( i >= samples ) { - - break; - - } - - float theta = dTheta * float( i ); - gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); - gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); - - } - - } - `,blending:Os,depthTest:!1,depthWrite:!1})}function MT(){return new zr({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:AS(),fragmentShader:` - - precision mediump float; - precision mediump int; - - varying vec3 vOutputDirection; - - uniform sampler2D envMap; - - #include - - void main() { - - vec3 outputDirection = normalize( vOutputDirection ); - vec2 uv = equirectUv( outputDirection ); - - gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); - - } - `,blending:Os,depthTest:!1,depthWrite:!1})}function wT(){return new zr({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:AS(),fragmentShader:` - - precision mediump float; - precision mediump int; - - uniform float flipEnvMap; - - varying vec3 vOutputDirection; - - uniform samplerCube envMap; - - void main() { - - gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); - - } - `,blending:Os,depthTest:!1,depthWrite:!1})}function AS(){return` - - precision mediump float; - precision mediump int; - - attribute float faceIndex; - - varying vec3 vOutputDirection; - - // RH coordinate system; PMREM face-indexing convention - vec3 getDirection( vec2 uv, float face ) { - - uv = 2.0 * uv - 1.0; - - vec3 direction = vec3( uv, 1.0 ); - - if ( face == 0.0 ) { - - direction = direction.zyx; // ( 1, v, u ) pos x - - } else if ( face == 1.0 ) { - - direction = direction.xzy; - direction.xz *= -1.0; // ( -u, 1, -v ) pos y - - } else if ( face == 2.0 ) { - - direction.x *= -1.0; // ( -u, v, 1 ) pos z - - } else if ( face == 3.0 ) { - - direction = direction.zyx; - direction.xz *= -1.0; // ( -1, v, -u ) neg x - - } else if ( face == 4.0 ) { - - direction = direction.xzy; - direction.xy *= -1.0; // ( -u, -1, v ) neg y - - } else if ( face == 5.0 ) { - - direction.z *= -1.0; // ( u, v, -1 ) neg z - - } - - return direction; - - } - - void main() { - - vOutputDirection = getDirection( uv, faceIndex ); - gl_Position = vec4( position, 1.0 ); - - } - `}function I8(n){let e=new WeakMap,t=null;function i(a){if(a&&a.isTexture){const c=a.mapping,f=c===Nf||c===Df,h=c===Ws||c===zo;if(f||h){let d=e.get(a);const p=d!==void 0?d.texture.pmremVersion:0;if(a.isRenderTargetTexture&&a.pmremVersion!==p)return t===null&&(t=new b_(n)),d=f?t.fromEquirectangular(a,d):t.fromCubemap(a,d),d.texture.pmremVersion=a.pmremVersion,e.set(a,d),d.texture;if(d!==void 0)return d.texture;{const m=a.image;return f&&m&&m.height>0||h&&m&&r(m)?(t===null&&(t=new b_(n)),d=f?t.fromEquirectangular(a):t.fromCubemap(a),d.texture.pmremVersion=a.pmremVersion,e.set(a,d),a.addEventListener("dispose",s),d.texture):null}}}return a}function r(a){let c=0;const f=6;for(let h=0;he.maxTextureSize&&(C=Math.ceil(R/e.maxTextureSize),R=e.maxTextureSize);const L=new Float32Array(R*C*4*d),I=new Cg(L,R,C,d);I.type=Zi,I.needsUpdate=!0;const P=A*4;for(let D=0;D0)return n;const r=e*t;let s=ET[r];if(s===void 0&&(s=new Float32Array(r),ET[r]=s),e!==0){i.toArray(s,0);for(let o=1,a=0;o!==e;++o)a+=t,n[o].toArray(s,a)}return s}function Nn(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t":" "} ${a}: ${t[o]}`)}return i.join(` -`)}function I6(n){const e=zt.getPrimaries(zt.workingColorSpace),t=zt.getPrimaries(n);let i;switch(e===t?i="":e===Hf&&t===Vf?i="LinearDisplayP3ToLinearSRGB":e===Vf&&t===Hf&&(i="LinearSRGBToLinearDisplayP3"),n){case Ys:case dh:return[i,"LinearTransferOETF"];case pr:case bg:return[i,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",n),[i,"LinearTransferOETF"]}}function LT(n,e,t){const i=n.getShaderParameter(e,n.COMPILE_STATUS),r=n.getShaderInfoLog(e).trim();if(i&&r==="")return"";const s=/ERROR: 0:(\d+)/.exec(r);if(s){const o=parseInt(s[1]);return t.toUpperCase()+` - -`+r+` - -`+L6(n.getShaderSource(e),o)}else return r}function N6(n,e){const t=I6(e);return`vec4 ${n}( vec4 value ) { return ${t[0]}( ${t[1]}( value ) ); }`}function D6(n,e){let t;switch(e){case S3:t="Linear";break;case M3:t="Reinhard";break;case w3:t="OptimizedCineon";break;case aS:t="ACESFilmic";break;case A3:t="AgX";break;case T3:t="Neutral";break;case E3:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+n+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function U6(n){return[n.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",n.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(ju).join(` -`)}function O6(n){const e=[];for(const t in n){const i=n[t];i!==!1&&e.push("#define "+t+" "+i)}return e.join(` -`)}function k6(n,e){const t={},i=n.getProgramParameter(e,n.ACTIVE_ATTRIBUTES);for(let r=0;r/gm;function C_(n){return n.replace(F6,B6)}const z6=new Map;function B6(n,e){let t=Mt[e];if(t===void 0){const i=z6.get(e);if(i!==void 0)t=Mt[i],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,i);else throw new Error("Can not resolve #include <"+e+">")}return C_(t)}const V6=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function DT(n){return n.replace(V6,H6)}function H6(n,e,t,i){let r="";for(let s=parseInt(e);s0&&(x+=` -`),g=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,y].filter(ju).join(` -`),g.length>0&&(g+=` -`)):(x=[UT(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,y,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+h:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+c:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` -`].filter(ju).join(` -`),g=[UT(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,y,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+f:"",t.envMap?"#define "+h:"",t.envMap?"#define "+d:"",p?"#define CUBEUV_TEXEL_WIDTH "+p.texelWidth:"",p?"#define CUBEUV_TEXEL_HEIGHT "+p.texelHeight:"",p?"#define CUBEUV_MAX_MIP "+p.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+c:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==os?"#define TONE_MAPPING":"",t.toneMapping!==os?Mt.tonemapping_pars_fragment:"",t.toneMapping!==os?D6("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",Mt.colorspace_pars_fragment,N6("linearToOutputTexel",t.outputColorSpace),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` -`].filter(ju).join(` -`)),o=C_(o),o=IT(o,t),o=NT(o,t),a=C_(a),a=IT(a,t),a=NT(a,t),o=DT(o),a=DT(a),t.isRawShaderMaterial!==!0&&(S=`#version 300 es -`,x=[m,"#define attribute in","#define varying out","#define texture2D texture"].join(` -`)+` -`+x,g=["#define varying in",t.glslVersion===T_?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===T_?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` -`)+` -`+g);const M=S+x+o,A=S+g+a,R=RT(r,r.VERTEX_SHADER,M),C=RT(r,r.FRAGMENT_SHADER,A);r.attachShader(_,R),r.attachShader(_,C),t.index0AttributeName!==void 0?r.bindAttribLocation(_,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(_,0,"position"),r.linkProgram(_);function L(D){if(n.debug.checkShaderErrors){const j=r.getProgramInfoLog(_).trim(),X=r.getShaderInfoLog(R).trim(),te=r.getShaderInfoLog(C).trim();let ne=!0,Q=!0;if(r.getProgramParameter(_,r.LINK_STATUS)===!1)if(ne=!1,typeof n.debug.onShaderError=="function")n.debug.onShaderError(r,_,R,C);else{const le=LT(r,R,"vertex"),k=LT(r,C,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(_,r.VALIDATE_STATUS)+` - -Material Name: `+D.name+` -Material Type: `+D.type+` - -Program Info Log: `+j+` -`+le+` -`+k)}else j!==""?console.warn("THREE.WebGLProgram: Program Info Log:",j):(X===""||te==="")&&(Q=!1);Q&&(D.diagnostics={runnable:ne,programLog:j,vertexShader:{log:X,prefix:x},fragmentShader:{log:te,prefix:g}})}r.deleteShader(R),r.deleteShader(C),I=new om(r,_),P=k6(r,_)}let I;this.getUniforms=function(){return I===void 0&&L(this),I};let P;this.getAttributes=function(){return P===void 0&&L(this),P};let b=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return b===!1&&(b=r.getProgramParameter(_,P6)),b},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(_),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=R6++,this.cacheKey=e,this.usedTimes=1,this.program=_,this.vertexShader=R,this.fragmentShader=C,this}let K6=0;class Z6{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(i),o=this._getShaderCacheForMaterial(e);return o.has(r)===!1&&(o.add(r),r.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return i===void 0&&(i=new J6(e),t.set(e,i)),i}}class J6{constructor(e){this.id=K6++,this.code=e,this.usedTimes=0}}function Q6(n,e,t,i,r,s,o){const a=new Va,c=new Z6,f=new Set,h=[],d=r.logarithmicDepthBuffer,p=r.vertexTextures;let m=r.precision;const y={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function _(P){return f.add(P),P===0?"uv":`uv${P}`}function x(P,b,D,j,X){const te=j.fog,ne=X.geometry,Q=P.isMeshStandardMaterial?j.environment:null,le=(P.isMeshStandardMaterial?t:e).get(P.envMap||Q),k=le&&le.mapping===Vc?le.image.height:null,q=y[P.type];P.precision!==null&&(m=r.getMaxPrecision(P.precision),m!==P.precision&&console.warn("THREE.WebGLProgram.getParameters:",P.precision,"not supported, using",m,"instead."));const J=ne.morphAttributes.position||ne.morphAttributes.normal||ne.morphAttributes.color,$=J!==void 0?J.length:0;let _e=0;ne.morphAttributes.position!==void 0&&(_e=1),ne.morphAttributes.normal!==void 0&&(_e=2),ne.morphAttributes.color!==void 0&&(_e=3);let De,oe,ve,Te;if(q){const bt=Ir[q];De=bt.vertexShader,oe=bt.fragmentShader}else De=P.vertexShader,oe=P.fragmentShader,c.update(P),ve=c.getVertexShaderID(P),Te=c.getFragmentShaderID(P);const we=n.getRenderTarget(),nt=X.isInstancedMesh===!0,it=X.isBatchedMesh===!0,Xe=!!P.map,B=!!P.matcap,de=!!le,fe=!!P.aoMap,Ee=!!P.lightMap,Se=!!P.bumpMap,Ae=!!P.normalMap,Ue=!!P.displacementMap,ke=!!P.emissiveMap,lt=!!P.metalnessMap,z=!!P.roughnessMap,N=P.anisotropy>0,se=P.clearcoat>0,xe=P.dispersion>0,ye=P.iridescence>0,Me=P.sheen>0,Qe=P.transmission>0,Pe=N&&!!P.anisotropyMap,Fe=se&&!!P.clearcoatMap,pt=se&&!!P.clearcoatNormalMap,Ce=se&&!!P.clearcoatRoughnessMap,Je=ye&&!!P.iridescenceMap,wt=ye&&!!P.iridescenceThicknessMap,ut=Me&&!!P.sheenColorMap,ze=Me&&!!P.sheenRoughnessMap,G=!!P.specularMap,me=!!P.specularColorMap,Ge=!!P.specularIntensityMap,V=Qe&&!!P.transmissionMap,Re=Qe&&!!P.thicknessMap,he=!!P.gradientMap,ge=!!P.alphaMap,Ie=P.alphaTest>0,ft=!!P.alphaHash,mt=!!P.extensions;let Rt=os;P.toneMapped&&(we===null||we.isXRRenderTarget===!0)&&(Rt=n.toneMapping);const Wt={shaderID:q,shaderType:P.type,shaderName:P.name,vertexShader:De,fragmentShader:oe,defines:P.defines,customVertexShaderID:ve,customFragmentShaderID:Te,isRawShaderMaterial:P.isRawShaderMaterial===!0,glslVersion:P.glslVersion,precision:m,batching:it,batchingColor:it&&X._colorsTexture!==null,instancing:nt,instancingColor:nt&&X.instanceColor!==null,instancingMorph:nt&&X.morphTexture!==null,supportsVertexTextures:p,outputColorSpace:we===null?n.outputColorSpace:we.isXRRenderTarget===!0?we.texture.colorSpace:Ys,alphaToCoverage:!!P.alphaToCoverage,map:Xe,matcap:B,envMap:de,envMapMode:de&&le.mapping,envMapCubeUVHeight:k,aoMap:fe,lightMap:Ee,bumpMap:Se,normalMap:Ae,displacementMap:p&&Ue,emissiveMap:ke,normalMapObjectSpace:Ae&&P.normalMapType===H3,normalMapTangentSpace:Ae&&P.normalMapType===jo,metalnessMap:lt,roughnessMap:z,anisotropy:N,anisotropyMap:Pe,clearcoat:se,clearcoatMap:Fe,clearcoatNormalMap:pt,clearcoatRoughnessMap:Ce,dispersion:xe,iridescence:ye,iridescenceMap:Je,iridescenceThicknessMap:wt,sheen:Me,sheenColorMap:ut,sheenRoughnessMap:ze,specularMap:G,specularColorMap:me,specularIntensityMap:Ge,transmission:Qe,transmissionMap:V,thicknessMap:Re,gradientMap:he,opaque:P.transparent===!1&&P.blending===Fa&&P.alphaToCoverage===!1,alphaMap:ge,alphaTest:Ie,alphaHash:ft,combine:P.combine,mapUv:Xe&&_(P.map.channel),aoMapUv:fe&&_(P.aoMap.channel),lightMapUv:Ee&&_(P.lightMap.channel),bumpMapUv:Se&&_(P.bumpMap.channel),normalMapUv:Ae&&_(P.normalMap.channel),displacementMapUv:Ue&&_(P.displacementMap.channel),emissiveMapUv:ke&&_(P.emissiveMap.channel),metalnessMapUv:lt&&_(P.metalnessMap.channel),roughnessMapUv:z&&_(P.roughnessMap.channel),anisotropyMapUv:Pe&&_(P.anisotropyMap.channel),clearcoatMapUv:Fe&&_(P.clearcoatMap.channel),clearcoatNormalMapUv:pt&&_(P.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Ce&&_(P.clearcoatRoughnessMap.channel),iridescenceMapUv:Je&&_(P.iridescenceMap.channel),iridescenceThicknessMapUv:wt&&_(P.iridescenceThicknessMap.channel),sheenColorMapUv:ut&&_(P.sheenColorMap.channel),sheenRoughnessMapUv:ze&&_(P.sheenRoughnessMap.channel),specularMapUv:G&&_(P.specularMap.channel),specularColorMapUv:me&&_(P.specularColorMap.channel),specularIntensityMapUv:Ge&&_(P.specularIntensityMap.channel),transmissionMapUv:V&&_(P.transmissionMap.channel),thicknessMapUv:Re&&_(P.thicknessMap.channel),alphaMapUv:ge&&_(P.alphaMap.channel),vertexTangents:!!ne.attributes.tangent&&(Ae||N),vertexColors:P.vertexColors,vertexAlphas:P.vertexColors===!0&&!!ne.attributes.color&&ne.attributes.color.itemSize===4,pointsUvs:X.isPoints===!0&&!!ne.attributes.uv&&(Xe||ge),fog:!!te,useFog:P.fog===!0,fogExp2:!!te&&te.isFogExp2,flatShading:P.flatShading===!0,sizeAttenuation:P.sizeAttenuation===!0,logarithmicDepthBuffer:d,skinning:X.isSkinnedMesh===!0,morphTargets:ne.morphAttributes.position!==void 0,morphNormals:ne.morphAttributes.normal!==void 0,morphColors:ne.morphAttributes.color!==void 0,morphTargetsCount:$,morphTextureStride:_e,numDirLights:b.directional.length,numPointLights:b.point.length,numSpotLights:b.spot.length,numSpotLightMaps:b.spotLightMap.length,numRectAreaLights:b.rectArea.length,numHemiLights:b.hemi.length,numDirLightShadows:b.directionalShadowMap.length,numPointLightShadows:b.pointShadowMap.length,numSpotLightShadows:b.spotShadowMap.length,numSpotLightShadowsWithMaps:b.numSpotLightShadowsWithMaps,numLightProbes:b.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:P.dithering,shadowMapEnabled:n.shadowMap.enabled&&D.length>0,shadowMapType:n.shadowMap.type,toneMapping:Rt,decodeVideoTexture:Xe&&P.map.isVideoTexture===!0&&zt.getTransfer(P.map.colorSpace)===Yt,premultipliedAlpha:P.premultipliedAlpha,doubleSided:P.side===Nr,flipSided:P.side===Si,useDepthPacking:P.depthPacking>=0,depthPacking:P.depthPacking||0,index0AttributeName:P.index0AttributeName,extensionClipCullDistance:mt&&P.extensions.clipCullDistance===!0&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:mt&&P.extensions.multiDraw===!0&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:P.customProgramCacheKey()};return Wt.vertexUv1s=f.has(1),Wt.vertexUv2s=f.has(2),Wt.vertexUv3s=f.has(3),f.clear(),Wt}function g(P){const b=[];if(P.shaderID?b.push(P.shaderID):(b.push(P.customVertexShaderID),b.push(P.customFragmentShaderID)),P.defines!==void 0)for(const D in P.defines)b.push(D),b.push(P.defines[D]);return P.isRawShaderMaterial===!1&&(S(b,P),M(b,P),b.push(n.outputColorSpace)),b.push(P.customProgramCacheKey),b.join()}function S(P,b){P.push(b.precision),P.push(b.outputColorSpace),P.push(b.envMapMode),P.push(b.envMapCubeUVHeight),P.push(b.mapUv),P.push(b.alphaMapUv),P.push(b.lightMapUv),P.push(b.aoMapUv),P.push(b.bumpMapUv),P.push(b.normalMapUv),P.push(b.displacementMapUv),P.push(b.emissiveMapUv),P.push(b.metalnessMapUv),P.push(b.roughnessMapUv),P.push(b.anisotropyMapUv),P.push(b.clearcoatMapUv),P.push(b.clearcoatNormalMapUv),P.push(b.clearcoatRoughnessMapUv),P.push(b.iridescenceMapUv),P.push(b.iridescenceThicknessMapUv),P.push(b.sheenColorMapUv),P.push(b.sheenRoughnessMapUv),P.push(b.specularMapUv),P.push(b.specularColorMapUv),P.push(b.specularIntensityMapUv),P.push(b.transmissionMapUv),P.push(b.thicknessMapUv),P.push(b.combine),P.push(b.fogExp2),P.push(b.sizeAttenuation),P.push(b.morphTargetsCount),P.push(b.morphAttributeCount),P.push(b.numDirLights),P.push(b.numPointLights),P.push(b.numSpotLights),P.push(b.numSpotLightMaps),P.push(b.numHemiLights),P.push(b.numRectAreaLights),P.push(b.numDirLightShadows),P.push(b.numPointLightShadows),P.push(b.numSpotLightShadows),P.push(b.numSpotLightShadowsWithMaps),P.push(b.numLightProbes),P.push(b.shadowMapType),P.push(b.toneMapping),P.push(b.numClippingPlanes),P.push(b.numClipIntersection),P.push(b.depthPacking)}function M(P,b){a.disableAll(),b.supportsVertexTextures&&a.enable(0),b.instancing&&a.enable(1),b.instancingColor&&a.enable(2),b.instancingMorph&&a.enable(3),b.matcap&&a.enable(4),b.envMap&&a.enable(5),b.normalMapObjectSpace&&a.enable(6),b.normalMapTangentSpace&&a.enable(7),b.clearcoat&&a.enable(8),b.iridescence&&a.enable(9),b.alphaTest&&a.enable(10),b.vertexColors&&a.enable(11),b.vertexAlphas&&a.enable(12),b.vertexUv1s&&a.enable(13),b.vertexUv2s&&a.enable(14),b.vertexUv3s&&a.enable(15),b.vertexTangents&&a.enable(16),b.anisotropy&&a.enable(17),b.alphaHash&&a.enable(18),b.batching&&a.enable(19),b.dispersion&&a.enable(20),b.batchingColor&&a.enable(21),P.push(a.mask),a.disableAll(),b.fog&&a.enable(0),b.useFog&&a.enable(1),b.flatShading&&a.enable(2),b.logarithmicDepthBuffer&&a.enable(3),b.skinning&&a.enable(4),b.morphTargets&&a.enable(5),b.morphNormals&&a.enable(6),b.morphColors&&a.enable(7),b.premultipliedAlpha&&a.enable(8),b.shadowMapEnabled&&a.enable(9),b.doubleSided&&a.enable(10),b.flipSided&&a.enable(11),b.useDepthPacking&&a.enable(12),b.dithering&&a.enable(13),b.transmission&&a.enable(14),b.sheen&&a.enable(15),b.opaque&&a.enable(16),b.pointsUvs&&a.enable(17),b.decodeVideoTexture&&a.enable(18),b.alphaToCoverage&&a.enable(19),P.push(a.mask)}function A(P){const b=y[P.type];let D;if(b){const j=Ir[b];D=iL.clone(j.uniforms)}else D=P.uniforms;return D}function R(P,b){let D;for(let j=0,X=h.length;j0?i.push(g):m.transparent===!0?r.push(g):t.push(g)}function c(d,p,m,y,_,x){const g=o(d,p,m,y,_,x);m.transmission>0?i.unshift(g):m.transparent===!0?r.unshift(g):t.unshift(g)}function f(d,p){t.length>1&&t.sort(d||eG),i.length>1&&i.sort(p||OT),r.length>1&&r.sort(p||OT)}function h(){for(let d=e,p=n.length;d=s.length?(o=new kT,s.push(o)):o=s[r],o}function t(){n=new WeakMap}return{get:e,dispose:t}}function nG(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new O,color:new je};break;case"SpotLight":t={position:new O,direction:new O,color:new je,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new O,color:new je,distance:0,decay:0};break;case"HemisphereLight":t={direction:new O,skyColor:new je,groundColor:new je};break;case"RectAreaLight":t={color:new je,position:new O,halfWidth:new O,halfHeight:new O};break}return n[e.id]=t,t}}}function iG(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new pe};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new pe};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new pe,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}let rG=0;function sG(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function oG(n){const e=new nG,t=iG(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let f=0;f<9;f++)i.probe.push(new O);const r=new O,s=new at,o=new at;function a(f){let h=0,d=0,p=0;for(let P=0;P<9;P++)i.probe[P].set(0,0,0);let m=0,y=0,_=0,x=0,g=0,S=0,M=0,A=0,R=0,C=0,L=0;f.sort(sG);for(let P=0,b=f.length;P0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=Be.LTC_FLOAT_1,i.rectAreaLTC2=Be.LTC_FLOAT_2):(i.rectAreaLTC1=Be.LTC_HALF_1,i.rectAreaLTC2=Be.LTC_HALF_2)),i.ambient[0]=h,i.ambient[1]=d,i.ambient[2]=p;const I=i.hash;(I.directionalLength!==m||I.pointLength!==y||I.spotLength!==_||I.rectAreaLength!==x||I.hemiLength!==g||I.numDirectionalShadows!==S||I.numPointShadows!==M||I.numSpotShadows!==A||I.numSpotMaps!==R||I.numLightProbes!==L)&&(i.directional.length=m,i.spot.length=_,i.rectArea.length=x,i.point.length=y,i.hemi.length=g,i.directionalShadow.length=S,i.directionalShadowMap.length=S,i.pointShadow.length=M,i.pointShadowMap.length=M,i.spotShadow.length=A,i.spotShadowMap.length=A,i.directionalShadowMatrix.length=S,i.pointShadowMatrix.length=M,i.spotLightMatrix.length=A+R-C,i.spotLightMap.length=R,i.numSpotLightShadowsWithMaps=C,i.numLightProbes=L,I.directionalLength=m,I.pointLength=y,I.spotLength=_,I.rectAreaLength=x,I.hemiLength=g,I.numDirectionalShadows=S,I.numPointShadows=M,I.numSpotShadows=A,I.numSpotMaps=R,I.numLightProbes=L,i.version=rG++)}function c(f,h){let d=0,p=0,m=0,y=0,_=0;const x=h.matrixWorldInverse;for(let g=0,S=f.length;g=o.length?(a=new FT(n),o.push(a)):a=o[s],a}function i(){e=new WeakMap}return{get:t,dispose:i}}class bS extends Yn{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=B3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class CS extends Yn{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const lG=`void main() { - gl_Position = vec4( position, 1.0 ); -}`,cG=`uniform sampler2D shadow_pass; -uniform vec2 resolution; -uniform float radius; -#include -void main() { - const float samples = float( VSM_SAMPLES ); - float mean = 0.0; - float squared_mean = 0.0; - float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); - float uvStart = samples <= 1.0 ? 0.0 : - 1.0; - for ( float i = 0.0; i < samples; i ++ ) { - float uvOffset = uvStart + i * uvStride; - #ifdef HORIZONTAL_PASS - vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); - mean += distribution.x; - squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; - #else - float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); - mean += depth; - squared_mean += depth * depth; - #endif - } - mean = mean / samples; - squared_mean = squared_mean / samples; - float std_dev = sqrt( squared_mean - mean * mean ); - gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`;function uG(n,e,t){let i=new gh;const r=new pe,s=new pe,o=new Bt,a=new bS({depthPacking:V3}),c=new CS,f={},h=t.maxTextureSize,d={[Gs]:Si,[Si]:Gs,[Nr]:Nr},p=new zr({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new pe},radius:{value:4}},vertexShader:lG,fragmentShader:cG}),m=p.clone();m.defines.HORIZONTAL_PASS=1;const y=new St;y.setAttribute("position",new Ht(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const _=new _n(y,p),x=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Eg;let g=this.type;this.render=function(C,L,I){if(x.enabled===!1||x.autoUpdate===!1&&x.needsUpdate===!1||C.length===0)return;const P=n.getRenderTarget(),b=n.getActiveCubeFace(),D=n.getActiveMipmapLevel(),j=n.state;j.setBlending(Os),j.buffers.color.setClear(1,1,1,1),j.buffers.depth.setTest(!0),j.setScissorTest(!1);const X=g!==Pr&&this.type===Pr,te=g===Pr&&this.type!==Pr;for(let ne=0,Q=C.length;neh||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/q.x),r.x=s.x*q.x,k.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/q.y),r.y=s.y*q.y,k.mapSize.y=s.y)),k.map===null||X===!0||te===!0){const $=this.type!==Pr?{minFilter:Vn,magFilter:Vn}:{};k.map!==null&&k.map.dispose(),k.map=new Fr(r.x,r.y,$),k.map.texture.name=le.name+".shadowMap",k.camera.updateProjectionMatrix()}n.setRenderTarget(k.map),n.clear();const J=k.getViewportCount();for(let $=0;$0||L.map&&L.alphaTest>0){const j=b.uuid,X=L.uuid;let te=f[j];te===void 0&&(te={},f[j]=te);let ne=te[X];ne===void 0&&(ne=b.clone(),te[X]=ne,L.addEventListener("dispose",R)),b=ne}if(b.visible=L.visible,b.wireframe=L.wireframe,P===Pr?b.side=L.shadowSide!==null?L.shadowSide:L.side:b.side=L.shadowSide!==null?L.shadowSide:d[L.side],b.alphaMap=L.alphaMap,b.alphaTest=L.alphaTest,b.map=L.map,b.clipShadows=L.clipShadows,b.clippingPlanes=L.clippingPlanes,b.clipIntersection=L.clipIntersection,b.displacementMap=L.displacementMap,b.displacementScale=L.displacementScale,b.displacementBias=L.displacementBias,b.wireframeLinewidth=L.wireframeLinewidth,b.linewidth=L.linewidth,I.isPointLight===!0&&b.isMeshDistanceMaterial===!0){const j=n.properties.get(b);j.light=I}return b}function A(C,L,I,P,b){if(C.visible===!1)return;if(C.layers.test(L.layers)&&(C.isMesh||C.isLine||C.isPoints)&&(C.castShadow||C.receiveShadow&&b===Pr)&&(!C.frustumCulled||i.intersectsObject(C))){C.modelViewMatrix.multiplyMatrices(I.matrixWorldInverse,C.matrixWorld);const X=e.update(C),te=C.material;if(Array.isArray(te)){const ne=X.groups;for(let Q=0,le=ne.length;Q=1):le.indexOf("OpenGL ES")!==-1&&(Q=parseFloat(/^OpenGL ES (\d)/.exec(le)[1]),ne=Q>=2);let k=null,q={};const J=n.getParameter(n.SCISSOR_BOX),$=n.getParameter(n.VIEWPORT),_e=new Bt().fromArray(J),De=new Bt().fromArray($);function oe(V,Re,he,ge){const Ie=new Uint8Array(4),ft=n.createTexture();n.bindTexture(V,ft),n.texParameteri(V,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(V,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let mt=0;mt"u"?!1:/OculusBrowser/g.test(navigator.userAgent),f=new pe,h=new WeakMap;let d;const p=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function y(z,N){return m?new OffscreenCanvas(z,N):jf("canvas")}function _(z,N,se){let xe=1;const ye=lt(z);if((ye.width>se||ye.height>se)&&(xe=se/Math.max(ye.width,ye.height)),xe<1)if(typeof HTMLImageElement<"u"&&z instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&z instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&z instanceof ImageBitmap||typeof VideoFrame<"u"&&z instanceof VideoFrame){const Me=Math.floor(xe*ye.width),Qe=Math.floor(xe*ye.height);d===void 0&&(d=y(Me,Qe));const Pe=N?y(Me,Qe):d;return Pe.width=Me,Pe.height=Qe,Pe.getContext("2d").drawImage(z,0,0,Me,Qe),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+ye.width+"x"+ye.height+") to ("+Me+"x"+Qe+")."),Pe}else return"data"in z&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+ye.width+"x"+ye.height+")."),z;return z}function x(z){return z.generateMipmaps&&z.minFilter!==Vn&&z.minFilter!==bn}function g(z){n.generateMipmap(z)}function S(z,N,se,xe,ye=!1){if(z!==null){if(n[z]!==void 0)return n[z];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+z+"'")}let Me=N;if(N===n.RED&&(se===n.FLOAT&&(Me=n.R32F),se===n.HALF_FLOAT&&(Me=n.R16F),se===n.UNSIGNED_BYTE&&(Me=n.R8)),N===n.RED_INTEGER&&(se===n.UNSIGNED_BYTE&&(Me=n.R8UI),se===n.UNSIGNED_SHORT&&(Me=n.R16UI),se===n.UNSIGNED_INT&&(Me=n.R32UI),se===n.BYTE&&(Me=n.R8I),se===n.SHORT&&(Me=n.R16I),se===n.INT&&(Me=n.R32I)),N===n.RG&&(se===n.FLOAT&&(Me=n.RG32F),se===n.HALF_FLOAT&&(Me=n.RG16F),se===n.UNSIGNED_BYTE&&(Me=n.RG8)),N===n.RG_INTEGER&&(se===n.UNSIGNED_BYTE&&(Me=n.RG8UI),se===n.UNSIGNED_SHORT&&(Me=n.RG16UI),se===n.UNSIGNED_INT&&(Me=n.RG32UI),se===n.BYTE&&(Me=n.RG8I),se===n.SHORT&&(Me=n.RG16I),se===n.INT&&(Me=n.RG32I)),N===n.RGB&&se===n.UNSIGNED_INT_5_9_9_9_REV&&(Me=n.RGB9_E5),N===n.RGBA){const Qe=ye?Bf:zt.getTransfer(xe);se===n.FLOAT&&(Me=n.RGBA32F),se===n.HALF_FLOAT&&(Me=n.RGBA16F),se===n.UNSIGNED_BYTE&&(Me=Qe===Yt?n.SRGB8_ALPHA8:n.RGBA8),se===n.UNSIGNED_SHORT_4_4_4_4&&(Me=n.RGBA4),se===n.UNSIGNED_SHORT_5_5_5_1&&(Me=n.RGB5_A1)}return(Me===n.R16F||Me===n.R32F||Me===n.RG16F||Me===n.RG32F||Me===n.RGBA16F||Me===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Me}function M(z,N){let se;return z?N===null||N===qa||N===Ka?se=n.DEPTH24_STENCIL8:N===Zi?se=n.DEPTH32F_STENCIL8:N===kf&&(se=n.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):N===null||N===qa||N===Ka?se=n.DEPTH_COMPONENT24:N===Zi?se=n.DEPTH_COMPONENT32F:N===kf&&(se=n.DEPTH_COMPONENT16),se}function A(z,N){return x(z)===!0||z.isFramebufferTexture&&z.minFilter!==Vn&&z.minFilter!==bn?Math.log2(Math.max(N.width,N.height))+1:z.mipmaps!==void 0&&z.mipmaps.length>0?z.mipmaps.length:z.isCompressedTexture&&Array.isArray(z.image)?N.mipmaps.length:1}function R(z){const N=z.target;N.removeEventListener("dispose",R),L(N),N.isVideoTexture&&h.delete(N)}function C(z){const N=z.target;N.removeEventListener("dispose",C),P(N)}function L(z){const N=i.get(z);if(N.__webglInit===void 0)return;const se=z.source,xe=p.get(se);if(xe){const ye=xe[N.__cacheKey];ye.usedTimes--,ye.usedTimes===0&&I(z),Object.keys(xe).length===0&&p.delete(se)}i.remove(z)}function I(z){const N=i.get(z);n.deleteTexture(N.__webglTexture);const se=z.source,xe=p.get(se);delete xe[N.__cacheKey],o.memory.textures--}function P(z){const N=i.get(z);if(z.depthTexture&&z.depthTexture.dispose(),z.isWebGLCubeRenderTarget)for(let xe=0;xe<6;xe++){if(Array.isArray(N.__webglFramebuffer[xe]))for(let ye=0;ye=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+z+" texture units while this GPU supports only "+r.maxTextures),b+=1,z}function X(z){const N=[];return N.push(z.wrapS),N.push(z.wrapT),N.push(z.wrapR||0),N.push(z.magFilter),N.push(z.minFilter),N.push(z.anisotropy),N.push(z.internalFormat),N.push(z.format),N.push(z.type),N.push(z.generateMipmaps),N.push(z.premultiplyAlpha),N.push(z.flipY),N.push(z.unpackAlignment),N.push(z.colorSpace),N.join()}function te(z,N){const se=i.get(z);if(z.isVideoTexture&&Ue(z),z.isRenderTargetTexture===!1&&z.version>0&&se.__version!==z.version){const xe=z.image;if(xe===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(xe.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{De(se,z,N);return}}t.bindTexture(n.TEXTURE_2D,se.__webglTexture,n.TEXTURE0+N)}function ne(z,N){const se=i.get(z);if(z.version>0&&se.__version!==z.version){De(se,z,N);return}t.bindTexture(n.TEXTURE_2D_ARRAY,se.__webglTexture,n.TEXTURE0+N)}function Q(z,N){const se=i.get(z);if(z.version>0&&se.__version!==z.version){De(se,z,N);return}t.bindTexture(n.TEXTURE_3D,se.__webglTexture,n.TEXTURE0+N)}function le(z,N){const se=i.get(z);if(z.version>0&&se.__version!==z.version){oe(se,z,N);return}t.bindTexture(n.TEXTURE_CUBE_MAP,se.__webglTexture,n.TEXTURE0+N)}const k={[Uf]:n.REPEAT,[yr]:n.CLAMP_TO_EDGE,[Of]:n.MIRRORED_REPEAT},q={[Vn]:n.NEAREST,[lS]:n.NEAREST_MIPMAP_NEAREST,[cc]:n.NEAREST_MIPMAP_LINEAR,[bn]:n.LINEAR,[af]:n.LINEAR_MIPMAP_NEAREST,[ts]:n.LINEAR_MIPMAP_LINEAR},J={[G3]:n.NEVER,[K3]:n.ALWAYS,[W3]:n.LESS,[vS]:n.LEQUAL,[j3]:n.EQUAL,[q3]:n.GEQUAL,[X3]:n.GREATER,[Y3]:n.NOTEQUAL};function $(z,N){if(N.type===Zi&&e.has("OES_texture_float_linear")===!1&&(N.magFilter===bn||N.magFilter===af||N.magFilter===cc||N.magFilter===ts||N.minFilter===bn||N.minFilter===af||N.minFilter===cc||N.minFilter===ts)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(z,n.TEXTURE_WRAP_S,k[N.wrapS]),n.texParameteri(z,n.TEXTURE_WRAP_T,k[N.wrapT]),(z===n.TEXTURE_3D||z===n.TEXTURE_2D_ARRAY)&&n.texParameteri(z,n.TEXTURE_WRAP_R,k[N.wrapR]),n.texParameteri(z,n.TEXTURE_MAG_FILTER,q[N.magFilter]),n.texParameteri(z,n.TEXTURE_MIN_FILTER,q[N.minFilter]),N.compareFunction&&(n.texParameteri(z,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(z,n.TEXTURE_COMPARE_FUNC,J[N.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(N.magFilter===Vn||N.minFilter!==cc&&N.minFilter!==ts||N.type===Zi&&e.has("OES_texture_float_linear")===!1)return;if(N.anisotropy>1||i.get(N).__currentAnisotropy){const se=e.get("EXT_texture_filter_anisotropic");n.texParameterf(z,se.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(N.anisotropy,r.getMaxAnisotropy())),i.get(N).__currentAnisotropy=N.anisotropy}}}function _e(z,N){let se=!1;z.__webglInit===void 0&&(z.__webglInit=!0,N.addEventListener("dispose",R));const xe=N.source;let ye=p.get(xe);ye===void 0&&(ye={},p.set(xe,ye));const Me=X(N);if(Me!==z.__cacheKey){ye[Me]===void 0&&(ye[Me]={texture:n.createTexture(),usedTimes:0},o.memory.textures++,se=!0),ye[Me].usedTimes++;const Qe=ye[z.__cacheKey];Qe!==void 0&&(ye[z.__cacheKey].usedTimes--,Qe.usedTimes===0&&I(N)),z.__cacheKey=Me,z.__webglTexture=ye[Me].texture}return se}function De(z,N,se){let xe=n.TEXTURE_2D;(N.isDataArrayTexture||N.isCompressedArrayTexture)&&(xe=n.TEXTURE_2D_ARRAY),N.isData3DTexture&&(xe=n.TEXTURE_3D);const ye=_e(z,N),Me=N.source;t.bindTexture(xe,z.__webglTexture,n.TEXTURE0+se);const Qe=i.get(Me);if(Me.version!==Qe.__version||ye===!0){t.activeTexture(n.TEXTURE0+se);const Pe=zt.getPrimaries(zt.workingColorSpace),Fe=N.colorSpace===bs?null:zt.getPrimaries(N.colorSpace),pt=N.colorSpace===bs||Pe===Fe?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,N.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,N.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,N.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,pt);let Ce=_(N.image,!1,r.maxTextureSize);Ce=ke(N,Ce);const Je=s.convert(N.format,N.colorSpace),wt=s.convert(N.type);let ut=S(N.internalFormat,Je,wt,N.colorSpace,N.isVideoTexture);$(xe,N);let ze;const G=N.mipmaps,me=N.isVideoTexture!==!0,Ge=Qe.__version===void 0||ye===!0,V=Me.dataReady,Re=A(N,Ce);if(N.isDepthTexture)ut=M(N.format===Za,N.type),Ge&&(me?t.texStorage2D(n.TEXTURE_2D,1,ut,Ce.width,Ce.height):t.texImage2D(n.TEXTURE_2D,0,ut,Ce.width,Ce.height,0,Je,wt,null));else if(N.isDataTexture)if(G.length>0){me&&Ge&&t.texStorage2D(n.TEXTURE_2D,Re,ut,G[0].width,G[0].height);for(let he=0,ge=G.length;he0){for(const Ie of N.layerUpdates){const ft=ze.width*ze.height;t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,he,0,0,Ie,ze.width,ze.height,1,Je,ze.data.slice(ft*Ie,ft*(Ie+1)),0,0)}N.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,he,0,0,0,ze.width,ze.height,Ce.depth,Je,ze.data,0,0)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,he,ut,ze.width,ze.height,Ce.depth,0,ze.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else me?V&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,he,0,0,0,ze.width,ze.height,Ce.depth,Je,wt,ze.data):t.texImage3D(n.TEXTURE_2D_ARRAY,he,ut,ze.width,ze.height,Ce.depth,0,Je,wt,ze.data)}else{me&&Ge&&t.texStorage2D(n.TEXTURE_2D,Re,ut,G[0].width,G[0].height);for(let he=0,ge=G.length;he0){let he;switch(wt){case n.UNSIGNED_BYTE:switch(Je){case n.ALPHA:he=1;break;case n.LUMINANCE:he=1;break;case n.LUMINANCE_ALPHA:he=2;break;case n.RGB:he=3;break;case n.RGBA:he=4;break;default:throw new Error(`Unknown texel size for format ${Je}.`)}break;case n.UNSIGNED_SHORT_4_4_4_4:case n.UNSIGNED_SHORT_5_5_5_1:case n.UNSIGNED_SHORT_5_6_5:he=1;break;default:throw new Error(`Unknown texel size for type ${wt}.`)}const ge=Ce.width*Ce.height*he;for(const Ie of N.layerUpdates)t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,Ie,Ce.width,Ce.height,1,Je,wt,Ce.data.slice(ge*Ie,ge*(Ie+1)));N.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,Ce.width,Ce.height,Ce.depth,Je,wt,Ce.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,ut,Ce.width,Ce.height,Ce.depth,0,Je,wt,Ce.data);else if(N.isData3DTexture)me?(Ge&&t.texStorage3D(n.TEXTURE_3D,Re,ut,Ce.width,Ce.height,Ce.depth),V&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,Ce.width,Ce.height,Ce.depth,Je,wt,Ce.data)):t.texImage3D(n.TEXTURE_3D,0,ut,Ce.width,Ce.height,Ce.depth,0,Je,wt,Ce.data);else if(N.isFramebufferTexture){if(Ge)if(me)t.texStorage2D(n.TEXTURE_2D,Re,ut,Ce.width,Ce.height);else{let he=Ce.width,ge=Ce.height;for(let Ie=0;Ie>=1,ge>>=1}}else if(G.length>0){if(me&&Ge){const he=lt(G[0]);t.texStorage2D(n.TEXTURE_2D,Re,ut,he.width,he.height)}for(let he=0,ge=G.length;he0&&Re++;const ge=lt(Je[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,Re,G,ge.width,ge.height)}for(let ge=0;ge<6;ge++)if(Ce){me?V&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ge,0,0,0,Je[ge].width,Je[ge].height,ut,ze,Je[ge].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ge,0,G,Je[ge].width,Je[ge].height,0,ut,ze,Je[ge].data);for(let Ie=0;Ie>Me),Je=Math.max(1,N.height>>Me);ye===n.TEXTURE_3D||ye===n.TEXTURE_2D_ARRAY?t.texImage3D(ye,Me,Fe,Ce,Je,N.depth,0,Qe,Pe,null):t.texImage2D(ye,Me,Fe,Ce,Je,0,Qe,Pe,null)}t.bindFramebuffer(n.FRAMEBUFFER,z),Ae(N)?a.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,xe,ye,i.get(se).__webglTexture,0,Se(N)):(ye===n.TEXTURE_2D||ye>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&ye<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,xe,ye,i.get(se).__webglTexture,Me),t.bindFramebuffer(n.FRAMEBUFFER,null)}function Te(z,N,se){if(n.bindRenderbuffer(n.RENDERBUFFER,z),N.depthBuffer){const xe=N.depthTexture,ye=xe&&xe.isDepthTexture?xe.type:null,Me=M(N.stencilBuffer,ye),Qe=N.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Pe=Se(N);Ae(N)?a.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Pe,Me,N.width,N.height):se?n.renderbufferStorageMultisample(n.RENDERBUFFER,Pe,Me,N.width,N.height):n.renderbufferStorage(n.RENDERBUFFER,Me,N.width,N.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,Qe,n.RENDERBUFFER,z)}else{const xe=N.textures;for(let ye=0;ye1;if(Qe||(xe.__webglTexture===void 0&&(xe.__webglTexture=n.createTexture()),xe.__version=N.version,o.memory.textures++),Me){se.__webglFramebuffer=[];for(let Pe=0;Pe<6;Pe++)if(N.mipmaps&&N.mipmaps.length>0){se.__webglFramebuffer[Pe]=[];for(let Fe=0;Fe0){se.__webglFramebuffer=[];for(let Pe=0;Pe0&&Ae(z)===!1){se.__webglMultisampledFramebuffer=n.createFramebuffer(),se.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,se.__webglMultisampledFramebuffer);for(let Pe=0;Pe0)for(let Fe=0;Fe0)for(let Fe=0;Fe0){if(Ae(z)===!1){const N=z.textures,se=z.width,xe=z.height;let ye=n.COLOR_BUFFER_BIT;const Me=z.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Qe=i.get(z),Pe=N.length>1;if(Pe)for(let Fe=0;Fe0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&N.__useRenderToTexture!==!1}function Ue(z){const N=o.render.frame;h.get(z)!==N&&(h.set(z,N),z.update())}function ke(z,N){const se=z.colorSpace,xe=z.format,ye=z.type;return z.isCompressedTexture===!0||z.isVideoTexture===!0||se!==Ys&&se!==bs&&(zt.getTransfer(se)===Yt?(xe!==xi||ye!==ls)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",se)),N}function lt(z){return typeof HTMLImageElement<"u"&&z instanceof HTMLImageElement?(f.width=z.naturalWidth||z.width,f.height=z.naturalHeight||z.height):typeof VideoFrame<"u"&&z instanceof VideoFrame?(f.width=z.displayWidth,f.height=z.displayHeight):(f.width=z.width,f.height=z.height),f}this.allocateTextureUnit=j,this.resetTextureUnits=D,this.setTexture2D=te,this.setTexture2DArray=ne,this.setTexture3D=Q,this.setTextureCube=le,this.rebindTextures=it,this.setupRenderTarget=Xe,this.updateRenderTargetMipmap=B,this.updateMultisampleRenderTarget=Ee,this.setupDepthRenderbuffer=nt,this.setupFrameBufferTexture=ve,this.useMultisampledRTT=Ae}function uL(n,e){function t(i,r=bs){let s;const o=zt.getTransfer(r);if(i===ls)return n.UNSIGNED_BYTE;if(i===uS)return n.UNSIGNED_SHORT_4_4_4_4;if(i===fS)return n.UNSIGNED_SHORT_5_5_5_1;if(i===R3)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===C3)return n.BYTE;if(i===P3)return n.SHORT;if(i===kf)return n.UNSIGNED_SHORT;if(i===cS)return n.INT;if(i===qa)return n.UNSIGNED_INT;if(i===Zi)return n.FLOAT;if(i===hh)return n.HALF_FLOAT;if(i===L3)return n.ALPHA;if(i===I3)return n.RGB;if(i===xi)return n.RGBA;if(i===N3)return n.LUMINANCE;if(i===D3)return n.LUMINANCE_ALPHA;if(i===za)return n.DEPTH_COMPONENT;if(i===Za)return n.DEPTH_STENCIL;if(i===hS)return n.RED;if(i===dS)return n.RED_INTEGER;if(i===U3)return n.RG;if(i===pS)return n.RG_INTEGER;if(i===mS)return n.RGBA_INTEGER;if(i===em||i===tm||i===nm||i===im)if(o===Yt)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===em)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===tm)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===nm)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===im)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===em)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===tm)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===nm)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===im)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===$x||i===e_||i===t_||i===n_)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===$x)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===e_)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===t_)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===n_)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===i_||i===r_||i===s_)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(i===i_||i===r_)return o===Yt?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===s_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(i===o_||i===a_||i===l_||i===c_||i===u_||i===f_||i===h_||i===d_||i===p_||i===m_||i===g_||i===v_||i===y_||i===x_)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(i===o_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===a_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===l_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===c_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===u_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===f_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===h_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===d_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===p_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===m_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===g_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===v_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===y_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===x_)return o===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===rm||i===__||i===S_)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(i===rm)return o===Yt?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===__)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===S_)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===O3||i===M_||i===w_||i===E_)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(i===rm)return s.COMPRESSED_RED_RGTC1_EXT;if(i===M_)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===w_)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===E_)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===Ka?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}class fL extends sn{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class hc extends Ut{constructor(){super(),this.isGroup=!0,this.type="Group"}}const dG={type:"move"};class dy{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new hc,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new hc,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new O,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new O),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new hc,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new O,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new O),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const i of e.hand.values())this._getHandJoint(t,i)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let r=null,s=null,o=null;const a=this._targetRay,c=this._grip,f=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(f&&e.hand){o=!0;for(const _ of e.hand.values()){const x=t.getJointPose(_,i),g=this._getHandJoint(f,_);x!==null&&(g.matrix.fromArray(x.transform.matrix),g.matrix.decompose(g.position,g.rotation,g.scale),g.matrixWorldNeedsUpdate=!0,g.jointRadius=x.radius),g.visible=x!==null}const h=f.joints["index-finger-tip"],d=f.joints["thumb-tip"],p=h.position.distanceTo(d.position),m=.02,y=.005;f.inputState.pinching&&p>m+y?(f.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!f.inputState.pinching&&p<=m-y&&(f.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else c!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,i),s!==null&&(c.matrix.fromArray(s.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),c.matrixWorldNeedsUpdate=!0,s.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(s.linearVelocity)):c.hasLinearVelocity=!1,s.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(s.angularVelocity)):c.hasAngularVelocity=!1));a!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(dG)))}return a!==null&&(a.visible=r!==null),c!==null&&(c.visible=s!==null),f!==null&&(f.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const i=new hc;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}const pG=` -void main() { - - gl_Position = vec4( position, 1.0 ); - -}`,mG=` -uniform sampler2DArray depthColor; -uniform float depthWidth; -uniform float depthHeight; - -void main() { - - vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); - - if ( coord.x >= 1.0 ) { - - gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; - - } else { - - gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; - - } - -}`;class gG{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,i){if(this.texture===null){const r=new $t,s=e.properties.get(r);s.__webglTexture=t.texture,(t.depthNear!=i.depthNear||t.depthFar!=i.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=r}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,i=new zr({vertexShader:pG,fragmentShader:mG,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new _n(new Hc(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}}class vG extends cs{constructor(e,t){super();const i=this;let r=null,s=1,o=null,a="local-floor",c=1,f=null,h=null,d=null,p=null,m=null,y=null;const _=new gG,x=t.getContextAttributes();let g=null,S=null;const M=[],A=[],R=new pe;let C=null;const L=new sn;L.layers.enable(1),L.viewport=new Bt;const I=new sn;I.layers.enable(2),I.viewport=new Bt;const P=[L,I],b=new fL;b.layers.enable(1),b.layers.enable(2);let D=null,j=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(oe){let ve=M[oe];return ve===void 0&&(ve=new dy,M[oe]=ve),ve.getTargetRaySpace()},this.getControllerGrip=function(oe){let ve=M[oe];return ve===void 0&&(ve=new dy,M[oe]=ve),ve.getGripSpace()},this.getHand=function(oe){let ve=M[oe];return ve===void 0&&(ve=new dy,M[oe]=ve),ve.getHandSpace()};function X(oe){const ve=A.indexOf(oe.inputSource);if(ve===-1)return;const Te=M[ve];Te!==void 0&&(Te.update(oe.inputSource,oe.frame,f||o),Te.dispatchEvent({type:oe.type,data:oe.inputSource}))}function te(){r.removeEventListener("select",X),r.removeEventListener("selectstart",X),r.removeEventListener("selectend",X),r.removeEventListener("squeeze",X),r.removeEventListener("squeezestart",X),r.removeEventListener("squeezeend",X),r.removeEventListener("end",te),r.removeEventListener("inputsourceschange",ne);for(let oe=0;oe=0&&(A[we]=null,M[we].disconnect(Te))}for(let ve=0;ve=A.length){A.push(Te),we=it;break}else if(A[it]===null){A[it]=Te,we=it;break}if(we===-1)break}const nt=M[we];nt&&nt.connect(Te)}}const Q=new O,le=new O;function k(oe,ve,Te){Q.setFromMatrixPosition(ve.matrixWorld),le.setFromMatrixPosition(Te.matrixWorld);const we=Q.distanceTo(le),nt=ve.projectionMatrix.elements,it=Te.projectionMatrix.elements,Xe=nt[14]/(nt[10]-1),B=nt[14]/(nt[10]+1),de=(nt[9]+1)/nt[5],fe=(nt[9]-1)/nt[5],Ee=(nt[8]-1)/nt[0],Se=(it[8]+1)/it[0],Ae=Xe*Ee,Ue=Xe*Se,ke=we/(-Ee+Se),lt=ke*-Ee;ve.matrixWorld.decompose(oe.position,oe.quaternion,oe.scale),oe.translateX(lt),oe.translateZ(ke),oe.matrixWorld.compose(oe.position,oe.quaternion,oe.scale),oe.matrixWorldInverse.copy(oe.matrixWorld).invert();const z=Xe+ke,N=B+ke,se=Ae-lt,xe=Ue+(we-lt),ye=de*B/N*z,Me=fe*B/N*z;oe.projectionMatrix.makePerspective(se,xe,ye,Me,z,N),oe.projectionMatrixInverse.copy(oe.projectionMatrix).invert()}function q(oe,ve){ve===null?oe.matrixWorld.copy(oe.matrix):oe.matrixWorld.multiplyMatrices(ve.matrixWorld,oe.matrix),oe.matrixWorldInverse.copy(oe.matrixWorld).invert()}this.updateCamera=function(oe){if(r===null)return;_.texture!==null&&(oe.near=_.depthNear,oe.far=_.depthFar),b.near=I.near=L.near=oe.near,b.far=I.far=L.far=oe.far,(D!==b.near||j!==b.far)&&(r.updateRenderState({depthNear:b.near,depthFar:b.far}),D=b.near,j=b.far,L.near=D,L.far=j,I.near=D,I.far=j,L.updateProjectionMatrix(),I.updateProjectionMatrix(),oe.updateProjectionMatrix());const ve=oe.parent,Te=b.cameras;q(b,ve);for(let we=0;we0&&(x.alphaTest.value=g.alphaTest);const S=e.get(g),M=S.envMap,A=S.envMapRotation;M&&(x.envMap.value=M,ua.copy(A),ua.x*=-1,ua.y*=-1,ua.z*=-1,M.isCubeTexture&&M.isRenderTargetTexture===!1&&(ua.y*=-1,ua.z*=-1),x.envMapRotation.value.setFromMatrix4(yG.makeRotationFromEuler(ua)),x.flipEnvMap.value=M.isCubeTexture&&M.isRenderTargetTexture===!1?-1:1,x.reflectivity.value=g.reflectivity,x.ior.value=g.ior,x.refractionRatio.value=g.refractionRatio),g.lightMap&&(x.lightMap.value=g.lightMap,x.lightMapIntensity.value=g.lightMapIntensity,t(g.lightMap,x.lightMapTransform)),g.aoMap&&(x.aoMap.value=g.aoMap,x.aoMapIntensity.value=g.aoMapIntensity,t(g.aoMap,x.aoMapTransform))}function o(x,g){x.diffuse.value.copy(g.color),x.opacity.value=g.opacity,g.map&&(x.map.value=g.map,t(g.map,x.mapTransform))}function a(x,g){x.dashSize.value=g.dashSize,x.totalSize.value=g.dashSize+g.gapSize,x.scale.value=g.scale}function c(x,g,S,M){x.diffuse.value.copy(g.color),x.opacity.value=g.opacity,x.size.value=g.size*S,x.scale.value=M*.5,g.map&&(x.map.value=g.map,t(g.map,x.uvTransform)),g.alphaMap&&(x.alphaMap.value=g.alphaMap,t(g.alphaMap,x.alphaMapTransform)),g.alphaTest>0&&(x.alphaTest.value=g.alphaTest)}function f(x,g){x.diffuse.value.copy(g.color),x.opacity.value=g.opacity,x.rotation.value=g.rotation,g.map&&(x.map.value=g.map,t(g.map,x.mapTransform)),g.alphaMap&&(x.alphaMap.value=g.alphaMap,t(g.alphaMap,x.alphaMapTransform)),g.alphaTest>0&&(x.alphaTest.value=g.alphaTest)}function h(x,g){x.specular.value.copy(g.specular),x.shininess.value=Math.max(g.shininess,1e-4)}function d(x,g){g.gradientMap&&(x.gradientMap.value=g.gradientMap)}function p(x,g){x.metalness.value=g.metalness,g.metalnessMap&&(x.metalnessMap.value=g.metalnessMap,t(g.metalnessMap,x.metalnessMapTransform)),x.roughness.value=g.roughness,g.roughnessMap&&(x.roughnessMap.value=g.roughnessMap,t(g.roughnessMap,x.roughnessMapTransform)),g.envMap&&(x.envMapIntensity.value=g.envMapIntensity)}function m(x,g,S){x.ior.value=g.ior,g.sheen>0&&(x.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),x.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(x.sheenColorMap.value=g.sheenColorMap,t(g.sheenColorMap,x.sheenColorMapTransform)),g.sheenRoughnessMap&&(x.sheenRoughnessMap.value=g.sheenRoughnessMap,t(g.sheenRoughnessMap,x.sheenRoughnessMapTransform))),g.clearcoat>0&&(x.clearcoat.value=g.clearcoat,x.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(x.clearcoatMap.value=g.clearcoatMap,t(g.clearcoatMap,x.clearcoatMapTransform)),g.clearcoatRoughnessMap&&(x.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap,t(g.clearcoatRoughnessMap,x.clearcoatRoughnessMapTransform)),g.clearcoatNormalMap&&(x.clearcoatNormalMap.value=g.clearcoatNormalMap,t(g.clearcoatNormalMap,x.clearcoatNormalMapTransform),x.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),g.side===Si&&x.clearcoatNormalScale.value.negate())),g.dispersion>0&&(x.dispersion.value=g.dispersion),g.iridescence>0&&(x.iridescence.value=g.iridescence,x.iridescenceIOR.value=g.iridescenceIOR,x.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],x.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(x.iridescenceMap.value=g.iridescenceMap,t(g.iridescenceMap,x.iridescenceMapTransform)),g.iridescenceThicknessMap&&(x.iridescenceThicknessMap.value=g.iridescenceThicknessMap,t(g.iridescenceThicknessMap,x.iridescenceThicknessMapTransform))),g.transmission>0&&(x.transmission.value=g.transmission,x.transmissionSamplerMap.value=S.texture,x.transmissionSamplerSize.value.set(S.width,S.height),g.transmissionMap&&(x.transmissionMap.value=g.transmissionMap,t(g.transmissionMap,x.transmissionMapTransform)),x.thickness.value=g.thickness,g.thicknessMap&&(x.thicknessMap.value=g.thicknessMap,t(g.thicknessMap,x.thicknessMapTransform)),x.attenuationDistance.value=g.attenuationDistance,x.attenuationColor.value.copy(g.attenuationColor)),g.anisotropy>0&&(x.anisotropyVector.value.set(g.anisotropy*Math.cos(g.anisotropyRotation),g.anisotropy*Math.sin(g.anisotropyRotation)),g.anisotropyMap&&(x.anisotropyMap.value=g.anisotropyMap,t(g.anisotropyMap,x.anisotropyMapTransform))),x.specularIntensity.value=g.specularIntensity,x.specularColor.value.copy(g.specularColor),g.specularColorMap&&(x.specularColorMap.value=g.specularColorMap,t(g.specularColorMap,x.specularColorMapTransform)),g.specularIntensityMap&&(x.specularIntensityMap.value=g.specularIntensityMap,t(g.specularIntensityMap,x.specularIntensityMapTransform))}function y(x,g){g.matcap&&(x.matcap.value=g.matcap)}function _(x,g){const S=e.get(g).light;x.referencePosition.value.setFromMatrixPosition(S.matrixWorld),x.nearDistance.value=S.shadow.camera.near,x.farDistance.value=S.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function _G(n,e,t,i){let r={},s={},o=[];const a=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function c(S,M){const A=M.program;i.uniformBlockBinding(S,A)}function f(S,M){let A=r[S.id];A===void 0&&(y(S),A=h(S),r[S.id]=A,S.addEventListener("dispose",x));const R=M.program;i.updateUBOMapping(S,R);const C=e.render.frame;s[S.id]!==C&&(p(S),s[S.id]=C)}function h(S){const M=d();S.__bindingPointIndex=M;const A=n.createBuffer(),R=S.__size,C=S.usage;return n.bindBuffer(n.UNIFORM_BUFFER,A),n.bufferData(n.UNIFORM_BUFFER,R,C),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,M,A),A}function d(){for(let S=0;S0&&(A+=R-C),S.__size=A,S.__cache={},this}function _(S){const M={boundary:0,storage:0};return typeof S=="number"||typeof S=="boolean"?(M.boundary=4,M.storage=4):S.isVector2?(M.boundary=8,M.storage=8):S.isVector3||S.isColor?(M.boundary=16,M.storage=12):S.isVector4?(M.boundary=16,M.storage=16):S.isMatrix3?(M.boundary=48,M.storage=48):S.isMatrix4?(M.boundary=64,M.storage=64):S.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",S),M}function x(S){const M=S.target;M.removeEventListener("dispose",x);const A=o.indexOf(M.__bindingPointIndex);o.splice(A,1),n.deleteBuffer(r[M.id]),delete r[M.id],delete s[M.id]}function g(){for(const S in r)n.deleteBuffer(r[S]);o=[],r={},s={}}return{bind:c,update:f,dispose:g}}class hL{constructor(e={}){const{canvas:t=Q3(),context:i=null,depth:r=!0,stencil:s=!1,alpha:o=!1,antialias:a=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:f=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:d=!1}=e;this.isWebGLRenderer=!0;let p;if(i!==null){if(typeof WebGLRenderingContext<"u"&&i instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");p=i.getContextAttributes().alpha}else p=o;const m=new Uint32Array(4),y=new Int32Array(4);let _=null,x=null;const g=[],S=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=pr,this.toneMapping=os,this.toneMappingExposure=1;const M=this;let A=!1,R=0,C=0,L=null,I=-1,P=null;const b=new Bt,D=new Bt;let j=null;const X=new je(0);let te=0,ne=t.width,Q=t.height,le=1,k=null,q=null;const J=new Bt(0,0,ne,Q),$=new Bt(0,0,ne,Q);let _e=!1;const De=new gh;let oe=!1,ve=!1;const Te=new at,we=new O,nt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let it=!1;function Xe(){return L===null?le:1}let B=i;function de(U,K){return t.getContext(U,K)}try{const U={alpha:!0,depth:r,stencil:s,antialias:a,premultipliedAlpha:c,preserveDrawingBuffer:f,powerPreference:h,failIfMajorPerformanceCaveat:d};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${wg}`),t.addEventListener("webglcontextlost",Re,!1),t.addEventListener("webglcontextrestored",he,!1),t.addEventListener("webglcontextcreationerror",ge,!1),B===null){const K="webgl2";if(B=de(K,U),B===null)throw de(K)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(U){throw console.error("THREE.WebGLRenderer: "+U.message),U}let fe,Ee,Se,Ae,Ue,ke,lt,z,N,se,xe,ye,Me,Qe,Pe,Fe,pt,Ce,Je,wt,ut,ze,G,me;function Ge(){fe=new N8(B),fe.init(),ze=new uL(B,fe),Ee=new b8(B,fe,e,ze),Se=new fG(B),Ae=new O8(B),Ue=new $6,ke=new hG(B,fe,Se,Ue,Ee,ze,Ae),lt=new P8(M),z=new I8(M),N=new GV(B),G=new A8(B,N),se=new D8(B,N,Ae,G),xe=new F8(B,se,N,Ae),Je=new k8(B,Ee,ke),Fe=new C8(Ue),ye=new Q6(M,lt,z,fe,Ee,G,Fe),Me=new xG(M,Ue),Qe=new tG,Pe=new aG(fe),Ce=new E8(M,lt,z,Se,xe,p,c),pt=new uG(M,xe,Ee),me=new _G(B,Ae,Ee,Se),wt=new T8(B,fe,Ae),ut=new U8(B,fe,Ae),Ae.programs=ye.programs,M.capabilities=Ee,M.extensions=fe,M.properties=Ue,M.renderLists=Qe,M.shadowMap=pt,M.state=Se,M.info=Ae}Ge();const V=new vG(M,B);this.xr=V,this.getContext=function(){return B},this.getContextAttributes=function(){return B.getContextAttributes()},this.forceContextLoss=function(){const U=fe.get("WEBGL_lose_context");U&&U.loseContext()},this.forceContextRestore=function(){const U=fe.get("WEBGL_lose_context");U&&U.restoreContext()},this.getPixelRatio=function(){return le},this.setPixelRatio=function(U){U!==void 0&&(le=U,this.setSize(ne,Q,!1))},this.getSize=function(U){return U.set(ne,Q)},this.setSize=function(U,K,re=!0){if(V.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}ne=U,Q=K,t.width=Math.floor(U*le),t.height=Math.floor(K*le),re===!0&&(t.style.width=U+"px",t.style.height=K+"px"),this.setViewport(0,0,U,K)},this.getDrawingBufferSize=function(U){return U.set(ne*le,Q*le).floor()},this.setDrawingBufferSize=function(U,K,re){ne=U,Q=K,le=re,t.width=Math.floor(U*re),t.height=Math.floor(K*re),this.setViewport(0,0,U,K)},this.getCurrentViewport=function(U){return U.copy(b)},this.getViewport=function(U){return U.copy(J)},this.setViewport=function(U,K,re,ae){U.isVector4?J.set(U.x,U.y,U.z,U.w):J.set(U,K,re,ae),Se.viewport(b.copy(J).multiplyScalar(le).round())},this.getScissor=function(U){return U.copy($)},this.setScissor=function(U,K,re,ae){U.isVector4?$.set(U.x,U.y,U.z,U.w):$.set(U,K,re,ae),Se.scissor(D.copy($).multiplyScalar(le).round())},this.getScissorTest=function(){return _e},this.setScissorTest=function(U){Se.setScissorTest(_e=U)},this.setOpaqueSort=function(U){k=U},this.setTransparentSort=function(U){q=U},this.getClearColor=function(U){return U.copy(Ce.getClearColor())},this.setClearColor=function(){Ce.setClearColor.apply(Ce,arguments)},this.getClearAlpha=function(){return Ce.getClearAlpha()},this.setClearAlpha=function(){Ce.setClearAlpha.apply(Ce,arguments)},this.clear=function(U=!0,K=!0,re=!0){let ae=0;if(U){let ee=!1;if(L!==null){const Ne=L.texture.format;ee=Ne===mS||Ne===pS||Ne===dS}if(ee){const Ne=L.texture.type,We=Ne===ls||Ne===qa||Ne===kf||Ne===Ka||Ne===uS||Ne===fS,Ke=Ce.getClearColor(),$e=Ce.getClearAlpha(),ct=Ke.r,st=Ke.g,rt=Ke.b;We?(m[0]=ct,m[1]=st,m[2]=rt,m[3]=$e,B.clearBufferuiv(B.COLOR,0,m)):(y[0]=ct,y[1]=st,y[2]=rt,y[3]=$e,B.clearBufferiv(B.COLOR,0,y))}else ae|=B.COLOR_BUFFER_BIT}K&&(ae|=B.DEPTH_BUFFER_BIT),re&&(ae|=B.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),B.clear(ae)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",Re,!1),t.removeEventListener("webglcontextrestored",he,!1),t.removeEventListener("webglcontextcreationerror",ge,!1),Qe.dispose(),Pe.dispose(),Ue.dispose(),lt.dispose(),z.dispose(),xe.dispose(),G.dispose(),me.dispose(),ye.dispose(),V.dispose(),V.removeEventListener("sessionstart",Cn),V.removeEventListener("sessionend",Un),fs.stop()};function Re(U){U.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),A=!0}function he(){console.log("THREE.WebGLRenderer: Context Restored."),A=!1;const U=Ae.autoReset,K=pt.enabled,re=pt.autoUpdate,ae=pt.needsUpdate,ee=pt.type;Ge(),Ae.autoReset=U,pt.enabled=K,pt.autoUpdate=re,pt.needsUpdate=ae,pt.type=ee}function ge(U){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",U.statusMessage)}function Ie(U){const K=U.target;K.removeEventListener("dispose",Ie),ft(K)}function ft(U){mt(U),Ue.remove(U)}function mt(U){const K=Ue.get(U).programs;K!==void 0&&(K.forEach(function(re){ye.releaseProgram(re)}),U.isShaderMaterial&&ye.releaseShaderCache(U))}this.renderBufferDirect=function(U,K,re,ae,ee,Ne){K===null&&(K=nt);const We=ee.isMesh&&ee.matrixWorld.determinant()<0,Ke=Jg(U,K,re,ae,ee);Se.setMaterial(ae,We);let $e=re.index,ct=1;if(ae.wireframe===!0){if($e=se.getWireframeAttribute(re),$e===void 0)return;ct=2}const st=re.drawRange,rt=re.attributes.position;let Lt=st.start*ct,en=(st.start+st.count)*ct;Ne!==null&&(Lt=Math.max(Lt,Ne.start*ct),en=Math.min(en,(Ne.start+Ne.count)*ct)),$e!==null?(Lt=Math.max(Lt,0),en=Math.min(en,$e.count)):rt!=null&&(Lt=Math.max(Lt,0),en=Math.min(en,rt.count));const jt=en-Lt;if(jt<0||jt===1/0)return;G.setup(ee,ae,Ke,re,$e);let Sn,Tt=wt;if($e!==null&&(Sn=N.get($e),Tt=ut,Tt.setIndex(Sn)),ee.isMesh)ae.wireframe===!0?(Se.setLineWidth(ae.wireframeLinewidth*Xe()),Tt.setMode(B.LINES)):Tt.setMode(B.TRIANGLES);else if(ee.isLine){let Oe=ae.linewidth;Oe===void 0&&(Oe=1),Se.setLineWidth(Oe*Xe()),ee.isLineSegments?Tt.setMode(B.LINES):ee.isLineLoop?Tt.setMode(B.LINE_LOOP):Tt.setMode(B.LINE_STRIP)}else ee.isPoints?Tt.setMode(B.POINTS):ee.isSprite&&Tt.setMode(B.TRIANGLES);if(ee.isBatchedMesh)ee._multiDrawInstances!==null?Tt.renderMultiDrawInstances(ee._multiDrawStarts,ee._multiDrawCounts,ee._multiDrawCount,ee._multiDrawInstances):Tt.renderMultiDraw(ee._multiDrawStarts,ee._multiDrawCounts,ee._multiDrawCount);else if(ee.isInstancedMesh)Tt.renderInstances(Lt,jt,ee.count);else if(re.isInstancedBufferGeometry){const Oe=re._maxInstanceCount!==void 0?re._maxInstanceCount:1/0,yt=Math.min(re.instanceCount,Oe);Tt.renderInstances(Lt,jt,yt)}else Tt.render(Lt,jt)};function Rt(U,K,re){U.transparent===!0&&U.side===Nr&&U.forceSinglePass===!1?(U.side=Si,U.needsUpdate=!0,Hr(U,K,re),U.side=Gs,U.needsUpdate=!0,Hr(U,K,re),U.side=Nr):Hr(U,K,re)}this.compile=function(U,K,re=null){re===null&&(re=U),x=Pe.get(re),x.init(K),S.push(x),re.traverseVisible(function(ee){ee.isLight&&ee.layers.test(K.layers)&&(x.pushLight(ee),ee.castShadow&&x.pushShadow(ee))}),U!==re&&U.traverseVisible(function(ee){ee.isLight&&ee.layers.test(K.layers)&&(x.pushLight(ee),ee.castShadow&&x.pushShadow(ee))}),x.setupLights();const ae=new Set;return U.traverse(function(ee){const Ne=ee.material;if(Ne)if(Array.isArray(Ne))for(let We=0;We{function Ne(){if(ae.forEach(function(We){Ue.get(We).currentProgram.isReady()&&ae.delete(We)}),ae.size===0){ee(U);return}setTimeout(Ne,10)}fe.get("KHR_parallel_shader_compile")!==null?Ne():setTimeout(Ne,10)})};let Wt=null;function bt(U){Wt&&Wt(U)}function Cn(){fs.stop()}function Un(){fs.start()}const fs=new rL;fs.setAnimationLoop(bt),typeof self<"u"&&fs.setContext(self),this.setAnimationLoop=function(U){Wt=U,V.setAnimationLoop(U),U===null?fs.stop():fs.start()},V.addEventListener("sessionstart",Cn),V.addEventListener("sessionend",Un),this.render=function(U,K){if(K!==void 0&&K.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(A===!0)return;if(U.matrixWorldAutoUpdate===!0&&U.updateMatrixWorld(),K.parent===null&&K.matrixWorldAutoUpdate===!0&&K.updateMatrixWorld(),V.enabled===!0&&V.isPresenting===!0&&(V.cameraAutoUpdate===!0&&V.updateCamera(K),K=V.getCamera()),U.isScene===!0&&U.onBeforeRender(M,U,K,L),x=Pe.get(U,S.length),x.init(K),S.push(x),Te.multiplyMatrices(K.projectionMatrix,K.matrixWorldInverse),De.setFromProjectionMatrix(Te),ve=this.localClippingEnabled,oe=Fe.init(this.clippingPlanes,ve),_=Qe.get(U,g.length),_.init(),g.push(_),V.enabled===!0&&V.isPresenting===!0){const Ne=M.xr.getDepthSensingMesh();Ne!==null&&jc(Ne,K,-1/0,M.sortObjects)}jc(U,K,0,M.sortObjects),_.finish(),M.sortObjects===!0&&_.sort(k,q),it=V.enabled===!1||V.isPresenting===!1||V.hasDepthSensing()===!1,it&&Ce.addToRenderList(_,U),this.info.render.frame++,oe===!0&&Fe.beginShadows();const re=x.state.shadowsArray;pt.render(re,U,K),oe===!0&&Fe.endShadows(),this.info.autoReset===!0&&this.info.reset();const ae=_.opaque,ee=_.transmissive;if(x.setupLights(),K.isArrayCamera){const Ne=K.cameras;if(ee.length>0)for(let We=0,Ke=Ne.length;We0&&Xc(ae,ee,U,K),it&&Ce.render(U),Ah(_,U,K);L!==null&&(ke.updateMultisampleRenderTarget(L),ke.updateRenderTargetMipmap(L)),U.isScene===!0&&U.onAfterRender(M,U,K),G.resetDefaultState(),I=-1,P=null,S.pop(),S.length>0?(x=S[S.length-1],oe===!0&&Fe.setGlobalState(M.clippingPlanes,x.state.camera)):x=null,g.pop(),g.length>0?_=g[g.length-1]:_=null};function jc(U,K,re,ae){if(U.visible===!1)return;if(U.layers.test(K.layers)){if(U.isGroup)re=U.renderOrder;else if(U.isLOD)U.autoUpdate===!0&&U.update(K);else if(U.isLight)x.pushLight(U),U.castShadow&&x.pushShadow(U);else if(U.isSprite){if(!U.frustumCulled||De.intersectsSprite(U)){ae&&we.setFromMatrixPosition(U.matrixWorld).applyMatrix4(Te);const We=xe.update(U),Ke=U.material;Ke.visible&&_.push(U,We,Ke,re,we.z,null)}}else if((U.isMesh||U.isLine||U.isPoints)&&(!U.frustumCulled||De.intersectsObject(U))){const We=xe.update(U),Ke=U.material;if(ae&&(U.boundingSphere!==void 0?(U.boundingSphere===null&&U.computeBoundingSphere(),we.copy(U.boundingSphere.center)):(We.boundingSphere===null&&We.computeBoundingSphere(),we.copy(We.boundingSphere.center)),we.applyMatrix4(U.matrixWorld).applyMatrix4(Te)),Array.isArray(Ke)){const $e=We.groups;for(let ct=0,st=$e.length;ct0&&qs(ee,K,re),Ne.length>0&&qs(Ne,K,re),We.length>0&&qs(We,K,re),Se.buffers.depth.setTest(!0),Se.buffers.depth.setMask(!0),Se.buffers.color.setMask(!0),Se.setPolygonOffset(!1)}function Xc(U,K,re,ae){if((re.isScene===!0?re.overrideMaterial:null)!==null)return;x.state.transmissionRenderTarget[ae.id]===void 0&&(x.state.transmissionRenderTarget[ae.id]=new Fr(1,1,{generateMipmaps:!0,type:fe.has("EXT_color_buffer_half_float")||fe.has("EXT_color_buffer_float")?hh:ls,minFilter:ts,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:zt.workingColorSpace}));const Ne=x.state.transmissionRenderTarget[ae.id],We=ae.viewport||b;Ne.setSize(We.z,We.w);const Ke=M.getRenderTarget();M.setRenderTarget(Ne),M.getClearColor(X),te=M.getClearAlpha(),te<1&&M.setClearColor(16777215,.5),it?Ce.render(re):M.clear();const $e=M.toneMapping;M.toneMapping=os;const ct=ae.viewport;if(ae.viewport!==void 0&&(ae.viewport=void 0),x.setupLightsView(ae),oe===!0&&Fe.setGlobalState(M.clippingPlanes,ae),qs(U,re,ae),ke.updateMultisampleRenderTarget(Ne),ke.updateRenderTargetMipmap(Ne),fe.has("WEBGL_multisampled_render_to_texture")===!1){let st=!1;for(let rt=0,Lt=K.length;rt0),rt=!!re.morphAttributes.position,Lt=!!re.morphAttributes.normal,en=!!re.morphAttributes.color;let jt=os;ae.toneMapped&&(L===null||L.isXRRenderTarget===!0)&&(jt=M.toneMapping);const Sn=re.morphAttributes.position||re.morphAttributes.normal||re.morphAttributes.color,Tt=Sn!==void 0?Sn.length:0,Oe=Ue.get(ae),yt=x.state.lights;if(oe===!0&&(ve===!0||U!==P)){const fi=U===P&&ae.id===I;Fe.setState(ae,U,fi)}let Ct=!1;ae.version===Oe.__version?(Oe.needsLights&&Oe.lightsStateVersion!==yt.state.version||Oe.outputColorSpace!==Ke||ee.isBatchedMesh&&Oe.batching===!1||!ee.isBatchedMesh&&Oe.batching===!0||ee.isBatchedMesh&&Oe.batchingColor===!0&&ee.colorTexture===null||ee.isBatchedMesh&&Oe.batchingColor===!1&&ee.colorTexture!==null||ee.isInstancedMesh&&Oe.instancing===!1||!ee.isInstancedMesh&&Oe.instancing===!0||ee.isSkinnedMesh&&Oe.skinning===!1||!ee.isSkinnedMesh&&Oe.skinning===!0||ee.isInstancedMesh&&Oe.instancingColor===!0&&ee.instanceColor===null||ee.isInstancedMesh&&Oe.instancingColor===!1&&ee.instanceColor!==null||ee.isInstancedMesh&&Oe.instancingMorph===!0&&ee.morphTexture===null||ee.isInstancedMesh&&Oe.instancingMorph===!1&&ee.morphTexture!==null||Oe.envMap!==$e||ae.fog===!0&&Oe.fog!==Ne||Oe.numClippingPlanes!==void 0&&(Oe.numClippingPlanes!==Fe.numPlanes||Oe.numIntersection!==Fe.numIntersection)||Oe.vertexAlphas!==ct||Oe.vertexTangents!==st||Oe.morphTargets!==rt||Oe.morphNormals!==Lt||Oe.morphColors!==en||Oe.toneMapping!==jt||Oe.morphTargetsCount!==Tt)&&(Ct=!0):(Ct=!0,Oe.__version=ae.version);let Xt=Oe.currentProgram;Ct===!0&&(Xt=Hr(ae,K,ee));let Pn=!1,ui=!1,Gr=!1;const It=Xt.getUniforms(),zi=Oe.uniforms;if(Se.useProgram(Xt.program)&&(Pn=!0,ui=!0,Gr=!0),ae.id!==I&&(I=ae.id,ui=!0),Pn||P!==U){It.setValue(B,"projectionMatrix",U.projectionMatrix),It.setValue(B,"viewMatrix",U.matrixWorldInverse);const fi=It.map.cameraPosition;fi!==void 0&&fi.setValue(B,we.setFromMatrixPosition(U.matrixWorld)),Ee.logarithmicDepthBuffer&&It.setValue(B,"logDepthBufFC",2/(Math.log(U.far+1)/Math.LN2)),(ae.isMeshPhongMaterial||ae.isMeshToonMaterial||ae.isMeshLambertMaterial||ae.isMeshBasicMaterial||ae.isMeshStandardMaterial||ae.isShaderMaterial)&&It.setValue(B,"isOrthographic",U.isOrthographicCamera===!0),P!==U&&(P=U,ui=!0,Gr=!0)}if(ee.isSkinnedMesh){It.setOptional(B,ee,"bindMatrix"),It.setOptional(B,ee,"bindMatrixInverse");const fi=ee.skeleton;fi&&(fi.boneTexture===null&&fi.computeBoneTexture(),It.setValue(B,"boneTexture",fi.boneTexture,ke))}ee.isBatchedMesh&&(It.setOptional(B,ee,"batchingTexture"),It.setValue(B,"batchingTexture",ee._matricesTexture,ke),It.setOptional(B,ee,"batchingColorTexture"),ee._colorsTexture!==null&&It.setValue(B,"batchingColorTexture",ee._colorsTexture,ke));const ll=re.morphAttributes;if((ll.position!==void 0||ll.normal!==void 0||ll.color!==void 0)&&Je.update(ee,re,Xt),(ui||Oe.receiveShadow!==ee.receiveShadow)&&(Oe.receiveShadow=ee.receiveShadow,It.setValue(B,"receiveShadow",ee.receiveShadow)),ae.isMeshGouraudMaterial&&ae.envMap!==null&&(zi.envMap.value=$e,zi.flipEnvMap.value=$e.isCubeTexture&&$e.isRenderTargetTexture===!1?-1:1),ae.isMeshStandardMaterial&&ae.envMap===null&&K.environment!==null&&(zi.envMapIntensity.value=K.environmentIntensity),ui&&(It.setValue(B,"toneMappingExposure",M.toneMappingExposure),Oe.needsLights&&Qg(zi,Gr),Ne&&ae.fog===!0&&Me.refreshFogUniforms(zi,Ne),Me.refreshMaterialUniforms(zi,ae,le,Q,x.state.transmissionRenderTarget[U.id]),om.upload(B,bh(Oe),zi,ke)),ae.isShaderMaterial&&ae.uniformsNeedUpdate===!0&&(om.upload(B,bh(Oe),zi,ke),ae.uniformsNeedUpdate=!1),ae.isSpriteMaterial&&It.setValue(B,"center",ee.center),It.setValue(B,"modelViewMatrix",ee.modelViewMatrix),It.setValue(B,"normalMatrix",ee.normalMatrix),It.setValue(B,"modelMatrix",ee.matrixWorld),ae.isShaderMaterial||ae.isRawShaderMaterial){const fi=ae.uniformsGroups;for(let Ks=0,Ph=fi.length;Ks0&&ke.useMultisampledRTT(U)===!1?ee=Ue.get(U).__webglMultisampledFramebuffer:Array.isArray(st)?ee=st[re]:ee=st,b.copy(U.viewport),D.copy(U.scissor),j=U.scissorTest}else b.copy(J).multiplyScalar(le).floor(),D.copy($).multiplyScalar(le).floor(),j=_e;if(Se.bindFramebuffer(B.FRAMEBUFFER,ee)&&ae&&Se.drawBuffers(U,ee),Se.viewport(b),Se.scissor(D),Se.setScissorTest(j),Ne){const $e=Ue.get(U.texture);B.framebufferTexture2D(B.FRAMEBUFFER,B.COLOR_ATTACHMENT0,B.TEXTURE_CUBE_MAP_POSITIVE_X+K,$e.__webglTexture,re)}else if(We){const $e=Ue.get(U.texture),ct=K||0;B.framebufferTextureLayer(B.FRAMEBUFFER,B.COLOR_ATTACHMENT0,$e.__webglTexture,re||0,ct)}I=-1},this.readRenderTargetPixels=function(U,K,re,ae,ee,Ne,We){if(!(U&&U.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Ke=Ue.get(U).__webglFramebuffer;if(U.isWebGLCubeRenderTarget&&We!==void 0&&(Ke=Ke[We]),Ke){Se.bindFramebuffer(B.FRAMEBUFFER,Ke);try{const $e=U.texture,ct=$e.format,st=$e.type;if(!Ee.textureFormatReadable(ct)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Ee.textureTypeReadable(st)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}K>=0&&K<=U.width-ae&&re>=0&&re<=U.height-ee&&B.readPixels(K,re,ae,ee,ze.convert(ct),ze.convert(st),Ne)}finally{const $e=L!==null?Ue.get(L).__webglFramebuffer:null;Se.bindFramebuffer(B.FRAMEBUFFER,$e)}}},this.readRenderTargetPixelsAsync=async function(U,K,re,ae,ee,Ne,We){if(!(U&&U.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Ke=Ue.get(U).__webglFramebuffer;if(U.isWebGLCubeRenderTarget&&We!==void 0&&(Ke=Ke[We]),Ke){Se.bindFramebuffer(B.FRAMEBUFFER,Ke);try{const $e=U.texture,ct=$e.format,st=$e.type;if(!Ee.textureFormatReadable(ct))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Ee.textureTypeReadable(st))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(K>=0&&K<=U.width-ae&&re>=0&&re<=U.height-ee){const rt=B.createBuffer();B.bindBuffer(B.PIXEL_PACK_BUFFER,rt),B.bufferData(B.PIXEL_PACK_BUFFER,Ne.byteLength,B.STREAM_READ),B.readPixels(K,re,ae,ee,ze.convert(ct),ze.convert(st),0),B.flush();const Lt=B.fenceSync(B.SYNC_GPU_COMMANDS_COMPLETE,0);await pV(B,Lt,4);try{B.bindBuffer(B.PIXEL_PACK_BUFFER,rt),B.getBufferSubData(B.PIXEL_PACK_BUFFER,0,Ne)}finally{B.deleteBuffer(rt),B.deleteSync(Lt)}return Ne}}finally{const $e=L!==null?Ue.get(L).__webglFramebuffer:null;Se.bindFramebuffer(B.FRAMEBUFFER,$e)}}},this.copyFramebufferToTexture=function(U,K=null,re=0){U.isTexture!==!0&&(console.warn("WebGLRenderer: copyFramebufferToTexture function signature has changed."),K=arguments[0]||null,U=arguments[1]);const ae=Math.pow(2,-re),ee=Math.floor(U.image.width*ae),Ne=Math.floor(U.image.height*ae),We=K!==null?K.x:0,Ke=K!==null?K.y:0;ke.setTexture2D(U,0),B.copyTexSubImage2D(B.TEXTURE_2D,re,0,0,We,Ke,ee,Ne),Se.unbindTexture()},this.copyTextureToTexture=function(U,K,re=null,ae=null,ee=0){U.isTexture!==!0&&(console.warn("WebGLRenderer: copyTextureToTexture function signature has changed."),ae=arguments[0]||null,U=arguments[1],K=arguments[2],ee=arguments[3]||0,re=null);let Ne,We,Ke,$e,ct,st;re!==null?(Ne=re.max.x-re.min.x,We=re.max.y-re.min.y,Ke=re.min.x,$e=re.min.y):(Ne=U.image.width,We=U.image.height,Ke=0,$e=0),ae!==null?(ct=ae.x,st=ae.y):(ct=0,st=0);const rt=ze.convert(K.format),Lt=ze.convert(K.type);ke.setTexture2D(K,0),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,K.flipY),B.pixelStorei(B.UNPACK_PREMULTIPLY_ALPHA_WEBGL,K.premultiplyAlpha),B.pixelStorei(B.UNPACK_ALIGNMENT,K.unpackAlignment);const en=B.getParameter(B.UNPACK_ROW_LENGTH),jt=B.getParameter(B.UNPACK_IMAGE_HEIGHT),Sn=B.getParameter(B.UNPACK_SKIP_PIXELS),Tt=B.getParameter(B.UNPACK_SKIP_ROWS),Oe=B.getParameter(B.UNPACK_SKIP_IMAGES),yt=U.isCompressedTexture?U.mipmaps[ee]:U.image;B.pixelStorei(B.UNPACK_ROW_LENGTH,yt.width),B.pixelStorei(B.UNPACK_IMAGE_HEIGHT,yt.height),B.pixelStorei(B.UNPACK_SKIP_PIXELS,Ke),B.pixelStorei(B.UNPACK_SKIP_ROWS,$e),U.isDataTexture?B.texSubImage2D(B.TEXTURE_2D,ee,ct,st,Ne,We,rt,Lt,yt.data):U.isCompressedTexture?B.compressedTexSubImage2D(B.TEXTURE_2D,ee,ct,st,yt.width,yt.height,rt,yt.data):B.texSubImage2D(B.TEXTURE_2D,ee,ct,st,rt,Lt,yt),B.pixelStorei(B.UNPACK_ROW_LENGTH,en),B.pixelStorei(B.UNPACK_IMAGE_HEIGHT,jt),B.pixelStorei(B.UNPACK_SKIP_PIXELS,Sn),B.pixelStorei(B.UNPACK_SKIP_ROWS,Tt),B.pixelStorei(B.UNPACK_SKIP_IMAGES,Oe),ee===0&&K.generateMipmaps&&B.generateMipmap(B.TEXTURE_2D),Se.unbindTexture()},this.copyTextureToTexture3D=function(U,K,re=null,ae=null,ee=0){U.isTexture!==!0&&(console.warn("WebGLRenderer: copyTextureToTexture3D function signature has changed."),re=arguments[0]||null,ae=arguments[1]||null,U=arguments[2],K=arguments[3],ee=arguments[4]||0);let Ne,We,Ke,$e,ct,st,rt,Lt,en;const jt=U.isCompressedTexture?U.mipmaps[ee]:U.image;re!==null?(Ne=re.max.x-re.min.x,We=re.max.y-re.min.y,Ke=re.max.z-re.min.z,$e=re.min.x,ct=re.min.y,st=re.min.z):(Ne=jt.width,We=jt.height,Ke=jt.depth,$e=0,ct=0,st=0),ae!==null?(rt=ae.x,Lt=ae.y,en=ae.z):(rt=0,Lt=0,en=0);const Sn=ze.convert(K.format),Tt=ze.convert(K.type);let Oe;if(K.isData3DTexture)ke.setTexture3D(K,0),Oe=B.TEXTURE_3D;else if(K.isDataArrayTexture||K.isCompressedArrayTexture)ke.setTexture2DArray(K,0),Oe=B.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,K.flipY),B.pixelStorei(B.UNPACK_PREMULTIPLY_ALPHA_WEBGL,K.premultiplyAlpha),B.pixelStorei(B.UNPACK_ALIGNMENT,K.unpackAlignment);const yt=B.getParameter(B.UNPACK_ROW_LENGTH),Ct=B.getParameter(B.UNPACK_IMAGE_HEIGHT),Xt=B.getParameter(B.UNPACK_SKIP_PIXELS),Pn=B.getParameter(B.UNPACK_SKIP_ROWS),ui=B.getParameter(B.UNPACK_SKIP_IMAGES);B.pixelStorei(B.UNPACK_ROW_LENGTH,jt.width),B.pixelStorei(B.UNPACK_IMAGE_HEIGHT,jt.height),B.pixelStorei(B.UNPACK_SKIP_PIXELS,$e),B.pixelStorei(B.UNPACK_SKIP_ROWS,ct),B.pixelStorei(B.UNPACK_SKIP_IMAGES,st),U.isDataTexture||U.isData3DTexture?B.texSubImage3D(Oe,ee,rt,Lt,en,Ne,We,Ke,Sn,Tt,jt.data):K.isCompressedArrayTexture?B.compressedTexSubImage3D(Oe,ee,rt,Lt,en,Ne,We,Ke,Sn,jt.data):B.texSubImage3D(Oe,ee,rt,Lt,en,Ne,We,Ke,Sn,Tt,jt),B.pixelStorei(B.UNPACK_ROW_LENGTH,yt),B.pixelStorei(B.UNPACK_IMAGE_HEIGHT,Ct),B.pixelStorei(B.UNPACK_SKIP_PIXELS,Xt),B.pixelStorei(B.UNPACK_SKIP_ROWS,Pn),B.pixelStorei(B.UNPACK_SKIP_IMAGES,ui),ee===0&&K.generateMipmaps&&B.generateMipmap(Oe),Se.unbindTexture()},this.initRenderTarget=function(U){Ue.get(U).__webglFramebuffer===void 0&&ke.setupRenderTarget(U)},this.initTexture=function(U){U.isCubeTexture?ke.setTextureCube(U,0):U.isData3DTexture?ke.setTexture3D(U,0):U.isDataArrayTexture||U.isCompressedArrayTexture?ke.setTexture2DArray(U,0):ke.setTexture2D(U,0),Se.unbindTexture()},this.resetState=function(){R=0,C=0,L=null,Se.reset(),G.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return ns}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=e===bg?"display-p3":"srgb",t.unpackColorSpace=zt.workingColorSpace===dh?"display-p3":"srgb"}}class Rg{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new je(e),this.density=t}clone(){return new Rg(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class Lg{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new je(e),this.near=t,this.far=i}clone(){return new Lg(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Wm extends Ut{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new wi,this.environmentIntensity=1,this.environmentRotation=new wi,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class Ig{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Gf,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.version=0,this.uuid=Qi()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}get updateRange(){return xS("THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let r=0,s=this.stride;re.far||t.push({distance:c,point:Cu.clone(),uv:qi.getInterpolation(Cu,hp,Ru,dp,zT,py,BT,new pe),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function pp(n,e,t,i,r,s){Vl.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(Pu.x=s*Vl.x-r*Vl.y,Pu.y=r*Vl.x+s*Vl.y):Pu.copy(Vl),n.copy(e),n.x+=Pu.x,n.y+=Pu.y,n.applyMatrix4(dL)}const mp=new O,VT=new O;class mL extends Ut{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let i=0,r=t.length;i0){let i,r;for(i=1,r=t.length;i0){mp.setFromMatrixPosition(this.matrixWorld);const r=e.ray.origin.distanceTo(mp);this.getObjectForDistance(r).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){mp.setFromMatrixPosition(e.matrixWorld),VT.setFromMatrixPosition(this.matrixWorld);const i=mp.distanceTo(VT)/e.zoom;t[0].object.visible=!0;let r,s;for(r=1,s=t.length;r=o)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r=i.length&&i.push({start:-1,count:-1,z:-1});const s=i[this.index];r.push(s),this.index++,s.start=e.start,s.count=e.count,s.z=t}reset(){this.list.length=0,this.index=0}}const Gl="batchId",po=new at,vy=new at,bG=new at,CG=new je(1,1,1),ZT=new at,yy=new gh,yp=new Mi,fa=new ai,Nu=new O,JT=new O,PG=new O,xy=new TG,ni=new _n,xp=[];function RG(n,e,t=0){const i=e.itemSize;if(n.isInterleavedBufferAttribute||n.array.constructor!==e.array.constructor){const r=n.count;for(let s=0;s65536?new Uint32Array(s):new Uint16Array(s);t.setIndex(new Ht(a,1))}const o=r>65536?new Uint32Array(i):new Uint16Array(i);t.setAttribute(Gl,new Ht(o,1)),this._geometryInitialized=!0}}_validateGeometry(e){if(e.getAttribute(Gl))throw new Error(`BatchedMesh: Geometry cannot use attribute "${Gl}"`);const t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw new Error('BatchedMesh: All geometries must consistently have "index".');for(const i in t.attributes){if(i===Gl)continue;if(!e.hasAttribute(i))throw new Error(`BatchedMesh: Added geometry missing "${i}". All geometries must have consistent attributes.`);const r=e.getAttribute(i),s=t.getAttribute(i);if(r.itemSize!==s.itemSize||r.normalized!==s.normalized)throw new Error("BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Mi);const e=this._geometryCount,t=this.boundingBox,i=this._active;t.makeEmpty();for(let r=0;r=this._maxGeometryCount)throw new Error("BatchedMesh: Maximum geometry count reached.");const r={vertexStart:-1,vertexCount:-1,indexStart:-1,indexCount:-1};let s=null;const o=this._reservedRanges,a=this._drawRanges,c=this._bounds;this._geometryCount!==0&&(s=o[o.length-1]),t===-1?r.vertexCount=e.getAttribute("position").count:r.vertexCount=t,s===null?r.vertexStart=0:r.vertexStart=s.vertexStart+s.vertexCount;const f=e.getIndex(),h=f!==null;if(h&&(i===-1?r.indexCount=f.count:r.indexCount=i,s===null?r.indexStart=0:r.indexStart=s.indexStart+s.indexCount),r.indexStart!==-1&&r.indexStart+r.indexCount>this._maxIndexCount||r.vertexStart+r.vertexCount>this._maxVertexCount)throw new Error("BatchedMesh: Reserved space request exceeds the maximum buffer size.");const d=this._visibility,p=this._active,m=this._matricesTexture,y=this._matricesTexture.image.data,_=this._colorsTexture;d.push(!0),p.push(!0);const x=this._geometryCount;this._geometryCount++,bG.toArray(y,x*16),m.needsUpdate=!0,_!==null&&(CG.toArray(_.image.data,x*4),_.needsUpdate=!0),o.push(r),a.push({start:h?r.indexStart:r.vertexStart,count:-1}),c.push({boxInitialized:!1,box:new Mi,sphereInitialized:!1,sphere:new ai});const g=this.geometry.getAttribute(Gl);for(let S=0;S=this._geometryCount)throw new Error("BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const i=this.geometry,r=i.getIndex()!==null,s=i.getIndex(),o=t.getIndex(),a=this._reservedRanges[e];if(r&&o.count>a.indexCount||t.attributes.position.count>a.vertexCount)throw new Error("BatchedMesh: Reserved space not large enough for provided geometry.");const c=a.vertexStart,f=a.vertexCount;for(const m in i.attributes){if(m===Gl)continue;const y=t.getAttribute(m),_=i.getAttribute(m);RG(y,_,c);const x=y.itemSize;for(let g=y.count,S=f;g=t.length||t[e]===!1?this:(t[e]=!1,this._visibilityChanged=!0,this)}getInstanceCountAt(e){return this._multiDrawInstances===null?null:this._multiDrawInstances[e]}setInstanceCountAt(e,t){return this._multiDrawInstances===null&&(this._multiDrawInstances=new Int32Array(this._maxGeometryCount).fill(1)),this._multiDrawInstances[e]=t,e}getBoundingBoxAt(e,t){if(this._active[e]===!1)return null;const r=this._bounds[e],s=r.box,o=this.geometry;if(r.boxInitialized===!1){s.makeEmpty();const a=o.index,c=o.attributes.position,f=this._drawRanges[e];for(let h=f.start,d=f.start+f.count;h=o||i[e]===!1?this:(t.toArray(s,e*16),r.needsUpdate=!0,this)}getMatrixAt(e,t){const i=this._active,r=this._matricesTexture.image.data,s=this._geometryCount;return e>=s||i[e]===!1?null:t.fromArray(r,e*16)}setColorAt(e,t){this._colorsTexture===null&&this._initColorsTexture();const i=this._active,r=this._colorsTexture,s=this._colorsTexture.image.data,o=this._geometryCount;return e>=o||i[e]===!1?this:(t.toArray(s,e*4),r.needsUpdate=!0,this)}getColorAt(e,t){const i=this._active,r=this._colorsTexture.image.data,s=this._geometryCount;return e>=s||i[e]===!1?null:t.fromArray(r,e*4)}setVisibleAt(e,t){const i=this._visibility,r=this._active,s=this._geometryCount;return e>=s||r[e]===!1||i[e]===t?this:(i[e]=t,this._visibilityChanged=!0,this)}getVisibleAt(e){const t=this._visibility,i=this._active,r=this._geometryCount;return e>=r||i[e]===!1?!1:t[e]}raycast(e,t){const i=this._visibility,r=this._active,s=this._drawRanges,o=this._geometryCount,a=this.matrixWorld,c=this.geometry;ni.material=this.material,ni.geometry.index=c.index,ni.geometry.attributes=c.attributes,ni.geometry.boundingBox===null&&(ni.geometry.boundingBox=new Mi),ni.geometry.boundingSphere===null&&(ni.geometry.boundingSphere=new ai);for(let f=0;f({...t})),this._reservedRanges=e._reservedRanges.map(t=>({...t})),this._visibility=e._visibility.slice(),this._active=e._active.slice(),this._bounds=e._bounds.map(t=>({boxInitialized:t.boxInitialized,box:t.box.clone(),sphereInitialized:t.sphereInitialized,sphere:t.sphere.clone()})),this._maxGeometryCount=e._maxGeometryCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._geometryCount=e._geometryCount,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.slice()),this}dispose(){return this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null),this}onBeforeRender(e,t,i,r,s){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const o=r.getIndex(),a=o===null?1:o.array.BYTES_PER_ELEMENT,c=this._active,f=this._visibility,h=this._multiDrawStarts,d=this._multiDrawCounts,p=this._drawRanges,m=this.perObjectFrustumCulled;m&&(ZT.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse).multiply(this.matrixWorld),yy.setFromProjectionMatrix(ZT,e.coordinateSystem));let y=0;if(this.sortObjects){vy.copy(this.matrixWorld).invert(),Nu.setFromMatrixPosition(i.matrixWorld).applyMatrix4(vy),JT.set(0,0,-1).transformDirection(i.matrixWorld).transformDirection(vy);for(let g=0,S=f.length;g0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;si)return;_y.applyMatrix4(n.matrixWorld);const c=e.ray.origin.distanceTo(_y);if(!(ce.far))return{distance:c,point:$T.clone().applyMatrix4(n.matrixWorld),index:r,face:null,faceIndex:null,object:n}}const eb=new O,tb=new O;class us extends Bo{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,i=[];for(let r=0,s=t.count;r0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;sr.far)return;s.push({distance:f,distanceToRay:Math.sqrt(a),point:c,index:e,face:null,object:o})}}class LG extends $t{constructor(e,t,i,r,s,o,a,c,f){super(e,t,i,r,s,o,a,c,f),this.isVideoTexture=!0,this.minFilter=o!==void 0?o:bn,this.magFilter=s!==void 0?s:bn,this.generateMipmaps=!1;const h=this;function d(){h.needsUpdate=!0,e.requestVideoFrameCallback(d)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(d)}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class IG extends $t{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=Vn,this.minFilter=Vn,this.generateMipmaps=!1,this.needsUpdate=!0}}class Dg extends $t{constructor(e,t,i,r,s,o,a,c,f,h,d,p){super(null,o,a,c,f,h,r,s,d,p),this.isCompressedTexture=!0,this.image={width:t,height:i},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class NG extends Dg{constructor(e,t,i,r,s,o){super(e,t,i,s,o),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=yr,this.layerUpdates=new Set}addLayerUpdates(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class DG extends Dg{constructor(e,t,i){super(void 0,e[0].width,e[0].height,t,i,Ws),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class UG extends $t{constructor(e,t,i,r,s,o,a,c,f){super(e,t,i,r,s,o,a,c,f),this.isCanvasTexture=!0,this.needsUpdate=!0}}class Br{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){const i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let i,r=this.getPoint(0),s=0;t.push(0);for(let o=1;o<=e;o++)i=this.getPoint(o/e),s+=i.distanceTo(r),t.push(s),r=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const i=this.getLengths();let r=0;const s=i.length;let o;t?o=t:o=e*i[s-1];let a=0,c=s-1,f;for(;a<=c;)if(r=Math.floor(a+(c-a)/2),f=i[r]-o,f<0)a=r+1;else if(f>0)c=r-1;else{c=r;break}if(r=c,i[r]===o)return r/(s-1);const h=i[r],p=i[r+1]-h,m=(o-h)/p;return(r+m)/(s-1)}getTangent(e,t){let r=e-1e-4,s=e+1e-4;r<0&&(r=0),s>1&&(s=1);const o=this.getPoint(r),a=this.getPoint(s),c=t||(o.isVector2?new pe:new O);return c.copy(a).sub(o).normalize(),c}getTangentAt(e,t){const i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){const i=new O,r=[],s=[],o=[],a=new O,c=new at;for(let m=0;m<=e;m++){const y=m/e;r[m]=this.getTangentAt(y,new O)}s[0]=new O,o[0]=new O;let f=Number.MAX_VALUE;const h=Math.abs(r[0].x),d=Math.abs(r[0].y),p=Math.abs(r[0].z);h<=f&&(f=h,i.set(1,0,0)),d<=f&&(f=d,i.set(0,1,0)),p<=f&&i.set(0,0,1),a.crossVectors(r[0],i).normalize(),s[0].crossVectors(r[0],a),o[0].crossVectors(r[0],s[0]);for(let m=1;m<=e;m++){if(s[m]=s[m-1].clone(),o[m]=o[m-1].clone(),a.crossVectors(r[m-1],r[m]),a.length()>Number.EPSILON){a.normalize();const y=Math.acos(mn(r[m-1].dot(r[m]),-1,1));s[m].applyMatrix4(c.makeRotationAxis(a,y))}o[m].crossVectors(r[m],s[m])}if(t===!0){let m=Math.acos(mn(s[0].dot(s[e]),-1,1));m/=e,r[0].dot(a.crossVectors(s[0],s[e]))>0&&(m=-m);for(let y=1;y<=e;y++)s[y].applyMatrix4(c.makeRotationAxis(r[y],m*y)),o[y].crossVectors(r[y],s[y])}return{tangents:r,normals:s,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class Ug extends Br{constructor(e=0,t=0,i=1,r=1,s=0,o=Math.PI*2,a=!1,c=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=r,this.aStartAngle=s,this.aEndAngle=o,this.aClockwise=a,this.aRotation=c}getPoint(e,t=new pe){const i=t,r=Math.PI*2;let s=this.aEndAngle-this.aStartAngle;const o=Math.abs(s)r;)s-=r;s0?0:(Math.floor(Math.abs(a)/s)+1)*s:c===0&&a===s-1&&(a=s-2,c=1);let f,h;this.closed||a>0?f=r[(a-1)%s]:(Ep.subVectors(r[0],r[1]).add(r[0]),f=Ep);const d=r[a%s],p=r[(a+1)%s];if(this.closed||a+2r.length-2?r.length-1:o+1],d=r[o>r.length-3?r.length-1:o+2];return i.set(rb(a,c.x,f.x,h.x,d.x),rb(a,c.y,f.y,h.y,d.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t=i){const o=r[s]-i,a=this.curves[s],c=a.getLength(),f=c===0?0:1-o/c;return a.getPointAt(f,t)}s++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let i=0,r=this.curves.length;i1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t0){const d=f.getPoint(0);d.equals(this.currentPoint)||this.lineTo(d.x,d.y)}this.curves.push(f);const h=f.getPoint(1);return this.currentPoint.copy(h),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class vh extends St{constructor(e=[new pe(0,-.5),new pe(.5,0),new pe(0,.5)],t=12,i=0,r=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:i,phiLength:r},t=Math.floor(t),r=mn(r,0,Math.PI*2);const s=[],o=[],a=[],c=[],f=[],h=1/t,d=new O,p=new pe,m=new O,y=new O,_=new O;let x=0,g=0;for(let S=0;S<=e.length-1;S++)switch(S){case 0:x=e[S+1].x-e[S].x,g=e[S+1].y-e[S].y,m.x=g*1,m.y=-x,m.z=g*0,_.copy(m),m.normalize(),c.push(m.x,m.y,m.z);break;case e.length-1:c.push(_.x,_.y,_.z);break;default:x=e[S+1].x-e[S].x,g=e[S+1].y-e[S].y,m.x=g*1,m.y=-x,m.z=g*0,y.copy(m),m.x+=_.x,m.y+=_.y,m.z+=_.z,m.normalize(),c.push(m.x,m.y,m.z),_.copy(y)}for(let S=0;S<=t;S++){const M=i+S*h*r,A=Math.sin(M),R=Math.cos(M);for(let C=0;C<=e.length-1;C++){d.x=e[C].x*A,d.y=e[C].y,d.z=e[C].x*R,o.push(d.x,d.y,d.z),p.x=S/t,p.y=C/(e.length-1),a.push(p.x,p.y);const L=c[3*C+0]*A,I=c[3*C+1],P=c[3*C+0]*R;f.push(L,I,P)}}for(let S=0;S0&&M(!0),t>0&&M(!1)),this.setIndex(h),this.setAttribute("position",new Ze(d,3)),this.setAttribute("normal",new Ze(p,3)),this.setAttribute("uv",new Ze(m,2));function S(){const A=new O,R=new O;let C=0;const L=(t-e)/i;for(let I=0;I<=s;I++){const P=[],b=I/s,D=b*(t-e)+e;for(let j=0;j<=r;j++){const X=j/r,te=X*c+a,ne=Math.sin(te),Q=Math.cos(te);R.x=D*ne,R.y=-b*i+x,R.z=D*Q,d.push(R.x,R.y,R.z),A.set(ne,L,Q).normalize(),p.push(A.x,A.y,A.z),m.push(X,1-b),P.push(y++)}_.push(P)}for(let I=0;I.9&&L<.1&&(M<.2&&(o[S+0]+=1),A<.2&&(o[S+2]+=1),R<.2&&(o[S+4]+=1))}}function p(S){s.push(S.x,S.y,S.z)}function m(S,M){const A=S*3;M.x=e[A+0],M.y=e[A+1],M.z=e[A+2]}function y(){const S=new O,M=new O,A=new O,R=new O,C=new pe,L=new pe,I=new pe;for(let P=0,b=0;P80*t){a=f=n[0],c=h=n[1];for(let y=t;yf&&(f=d),p>h&&(h=p);m=Math.max(f-a,h-c),m=m!==0?32767/m:0}return Yf(s,o,t,a,c,m,0),o}};function bL(n,e,t,i,r){let s,o;if(r===sW(n,e,t,i)>0)for(s=e;s=e;s-=i)o=sb(s,n[s],n[s+1],o);return o&&Bg(o,o.next)&&(Kf(o),o=o.next),o}function Qa(n,e){if(!n)return n;e||(e=n);let t=n,i;do if(i=!1,!t.steiner&&(Bg(t,t.next)||cn(t.prev,t,t.next)===0)){if(Kf(t),t=e=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==e);return e}function Yf(n,e,t,i,r,s,o){if(!n)return;!o&&s&&$G(n,i,r,s);let a=n,c,f;for(;n.prev!==n.next;){if(c=n.prev,f=n.next,s?jG(n,i,r,s):WG(n)){e.push(c.i/t|0),e.push(n.i/t|0),e.push(f.i/t|0),Kf(n),n=f.next,a=f.next;continue}if(n=f,n===a){o?o===1?(n=XG(Qa(n),e,t),Yf(n,e,t,i,r,s,2)):o===2&&YG(n,e,t,i,r,s):Yf(Qa(n),e,t,i,r,s,1);break}}}function WG(n){const e=n.prev,t=n,i=n.next;if(cn(e,t,i)>=0)return!1;const r=e.x,s=t.x,o=i.x,a=e.y,c=t.y,f=i.y,h=rs?r>o?r:o:s>o?s:o,m=a>c?a>f?a:f:c>f?c:f;let y=i.next;for(;y!==e;){if(y.x>=h&&y.x<=p&&y.y>=d&&y.y<=m&&dc(r,a,s,c,o,f,y.x,y.y)&&cn(y.prev,y,y.next)>=0)return!1;y=y.next}return!0}function jG(n,e,t,i){const r=n.prev,s=n,o=n.next;if(cn(r,s,o)>=0)return!1;const a=r.x,c=s.x,f=o.x,h=r.y,d=s.y,p=o.y,m=ac?a>f?a:f:c>f?c:f,x=h>d?h>p?h:p:d>p?d:p,g=R_(m,y,e,t,i),S=R_(_,x,e,t,i);let M=n.prevZ,A=n.nextZ;for(;M&&M.z>=g&&A&&A.z<=S;){if(M.x>=m&&M.x<=_&&M.y>=y&&M.y<=x&&M!==r&&M!==o&&dc(a,h,c,d,f,p,M.x,M.y)&&cn(M.prev,M,M.next)>=0||(M=M.prevZ,A.x>=m&&A.x<=_&&A.y>=y&&A.y<=x&&A!==r&&A!==o&&dc(a,h,c,d,f,p,A.x,A.y)&&cn(A.prev,A,A.next)>=0))return!1;A=A.nextZ}for(;M&&M.z>=g;){if(M.x>=m&&M.x<=_&&M.y>=y&&M.y<=x&&M!==r&&M!==o&&dc(a,h,c,d,f,p,M.x,M.y)&&cn(M.prev,M,M.next)>=0)return!1;M=M.prevZ}for(;A&&A.z<=S;){if(A.x>=m&&A.x<=_&&A.y>=y&&A.y<=x&&A!==r&&A!==o&&dc(a,h,c,d,f,p,A.x,A.y)&&cn(A.prev,A,A.next)>=0)return!1;A=A.nextZ}return!0}function XG(n,e,t){let i=n;do{const r=i.prev,s=i.next.next;!Bg(r,s)&&CL(r,i,i.next,s)&&qf(r,s)&&qf(s,r)&&(e.push(r.i/t|0),e.push(i.i/t|0),e.push(s.i/t|0),Kf(i),Kf(i.next),i=n=s),i=i.next}while(i!==n);return Qa(i)}function YG(n,e,t,i,r,s){let o=n;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&nW(o,a)){let c=PL(o,a);o=Qa(o,o.next),c=Qa(c,c.next),Yf(o,e,t,i,r,s,0),Yf(c,e,t,i,r,s,0);return}a=a.next}o=o.next}while(o!==n)}function qG(n,e,t,i){const r=[];let s,o,a,c,f;for(s=0,o=e.length;s=t.next.y&&t.next.y!==t.y){const p=t.x+(o-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(p<=s&&p>i&&(i=p,r=t.x=t.x&&t.x>=c&&s!==t.x&&dc(or.x||t.x===r.x&&QG(r,t)))&&(r=t,h=d)),t=t.next;while(t!==a);return r}function QG(n,e){return cn(n.prev,n,e.prev)<0&&cn(e.next,n,n.next)<0}function $G(n,e,t,i){let r=n;do r.z===0&&(r.z=R_(r.x,r.y,e,t,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==n);r.prevZ.nextZ=null,r.prevZ=null,eW(r)}function eW(n){let e,t,i,r,s,o,a,c,f=1;do{for(t=n,n=null,s=null,o=0;t;){for(o++,i=t,a=0,e=0;e0||c>0&&i;)a!==0&&(c===0||!i||t.z<=i.z)?(r=t,t=t.nextZ,a--):(r=i,i=i.nextZ,c--),s?s.nextZ=r:n=r,r.prevZ=s,s=r;t=i}s.nextZ=null,f*=2}while(o>1);return n}function R_(n,e,t,i,r){return n=(n-t)*r|0,e=(e-i)*r|0,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,n|e<<1}function tW(n){let e=n,t=n;do(e.x=(n-o)*(s-a)&&(n-o)*(i-a)>=(t-o)*(e-a)&&(t-o)*(s-a)>=(r-o)*(i-a)}function nW(n,e){return n.next.i!==e.i&&n.prev.i!==e.i&&!iW(n,e)&&(qf(n,e)&&qf(e,n)&&rW(n,e)&&(cn(n.prev,n,e.prev)||cn(n,e.prev,e))||Bg(n,e)&&cn(n.prev,n,n.next)>0&&cn(e.prev,e,e.next)>0)}function cn(n,e,t){return(e.y-n.y)*(t.x-e.x)-(e.x-n.x)*(t.y-e.y)}function Bg(n,e){return n.x===e.x&&n.y===e.y}function CL(n,e,t,i){const r=Pp(cn(n,e,t)),s=Pp(cn(n,e,i)),o=Pp(cn(t,i,n)),a=Pp(cn(t,i,e));return!!(r!==s&&o!==a||r===0&&Cp(n,t,e)||s===0&&Cp(n,i,e)||o===0&&Cp(t,n,i)||a===0&&Cp(t,e,i))}function Cp(n,e,t){return e.x<=Math.max(n.x,t.x)&&e.x>=Math.min(n.x,t.x)&&e.y<=Math.max(n.y,t.y)&&e.y>=Math.min(n.y,t.y)}function Pp(n){return n>0?1:n<0?-1:0}function iW(n,e){let t=n;do{if(t.i!==n.i&&t.next.i!==n.i&&t.i!==e.i&&t.next.i!==e.i&&CL(t,t.next,n,e))return!0;t=t.next}while(t!==n);return!1}function qf(n,e){return cn(n.prev,n,n.next)<0?cn(n,e,n.next)>=0&&cn(n,n.prev,e)>=0:cn(n,e,n.prev)<0||cn(n,n.next,e)<0}function rW(n,e){let t=n,i=!1;const r=(n.x+e.x)/2,s=(n.y+e.y)/2;do t.y>s!=t.next.y>s&&t.next.y!==t.y&&r<(t.next.x-t.x)*(s-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==n);return i}function PL(n,e){const t=new L_(n.i,n.x,n.y),i=new L_(e.i,e.x,e.y),r=n.next,s=e.prev;return n.next=e,e.prev=n,t.next=r,r.prev=t,i.next=t,t.prev=i,s.next=i,i.prev=s,i}function sb(n,e,t,i){const r=new L_(n,e,t);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function Kf(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function L_(n,e,t){this.i=n,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function sW(n,e,t,i){let r=0;for(let s=e,o=t-i;s2&&n[e-1].equals(n[0])&&n.pop()}function ab(n,e){for(let t=0;tNumber.EPSILON){const ye=Math.sqrt(se),Me=Math.sqrt(z*z+N*N),Qe=fe.x-lt/ye,Pe=fe.y+ke/ye,Fe=Ee.x-N/Me,pt=Ee.y+z/Me,Ce=((Fe-Qe)*N-(pt-Pe)*z)/(ke*N-lt*z);Se=Qe+ke*Ce-de.x,Ae=Pe+lt*Ce-de.y;const Je=Se*Se+Ae*Ae;if(Je<=2)return new pe(Se,Ae);Ue=Math.sqrt(Je/2)}else{let ye=!1;ke>Number.EPSILON?z>Number.EPSILON&&(ye=!0):ke<-Number.EPSILON?z<-Number.EPSILON&&(ye=!0):Math.sign(lt)===Math.sign(N)&&(ye=!0),ye?(Se=-lt,Ae=ke,Ue=Math.sqrt(se)):(Se=ke,Ae=lt,Ue=Math.sqrt(se/2))}return new pe(Se/Ue,Ae/Ue)}const q=[];for(let de=0,fe=te.length,Ee=fe-1,Se=de+1;de=0;de--){const fe=de/x,Ee=m*Math.cos(fe*Math.PI/2),Se=y*Math.sin(fe*Math.PI/2)+_;for(let Ae=0,Ue=te.length;Ae=0;){const Se=Ee;let Ae=Ee-1;Ae<0&&(Ae=de.length-1);for(let Ue=0,ke=h+x*2;Ue0)&&m.push(M,A,C),(g!==i-1||c0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class DL extends Yn{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new je(16777215),this.specular=new je(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new je(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=jo,this.normalScale=new pe(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new wi,this.combine=fh,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class UL extends Yn{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new je(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new je(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=jo,this.normalScale=new pe(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class OL extends Yn{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=jo,this.normalScale=new pe(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class kL extends Yn{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new je(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new je(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=jo,this.normalScale=new pe(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new wi,this.combine=fh,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class FL extends Yn{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new je(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=jo,this.normalScale=new pe(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}class zL extends Ti{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Da(n,e,t){return!n||!t&&n.constructor===e?n:typeof e.BYTES_PER_ELEMENT=="number"?new e(n):Array.prototype.slice.call(n)}function BL(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function VL(n){function e(r,s){return n[r]-n[s]}const t=n.length,i=new Array(t);for(let r=0;r!==t;++r)i[r]=r;return i.sort(e),i}function I_(n,e,t){const i=n.length,r=new n.constructor(i);for(let s=0,o=0;o!==i;++s){const a=t[s]*e;for(let c=0;c!==e;++c)r[o++]=n[a+c]}return r}function zS(n,e,t,i){let r=1,s=n[0];for(;s!==void 0&&s[i]===void 0;)s=n[r++];if(s===void 0)return;let o=s[i];if(o!==void 0)if(Array.isArray(o))do o=s[i],o!==void 0&&(e.push(s.time),t.push.apply(t,o)),s=n[r++];while(s!==void 0);else if(o.toArray!==void 0)do o=s[i],o!==void 0&&(e.push(s.time),o.toArray(t,t.length)),s=n[r++];while(s!==void 0);else do o=s[i],o!==void 0&&(e.push(s.time),t.push(o)),s=n[r++];while(s!==void 0)}function cW(n,e,t,i,r=30){const s=n.clone();s.name=e;const o=[];for(let c=0;c=i)){d.push(f.times[m]);for(let _=0;_s.tracks[c].times[0]&&(a=s.tracks[c].times[0]);for(let c=0;c=a.times[y]){const g=y*d+h,S=g+d-h;_=a.values.slice(g,S)}else{const g=a.createInterpolant(),S=h,M=d-h;g.evaluate(s),_=g.resultBuffer.slice(S,M)}c==="quaternion"&&new oi().fromArray(_).normalize().conjugate().toArray(_);const x=f.times.length;for(let g=0;g=s)){const a=t[1];e=s)break t}o=i,i=0;break n}break e}for(;i>>1;et;)--o;if(++o,s!==0||o!==r){s>=o&&(o=Math.max(o,1),s=o-1);const a=this.getValueSize();this.times=i.slice(s,o),this.values=this.values.slice(s*a,o*a)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,r=this.values,s=i.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){const c=i[a];if(typeof c=="number"&&isNaN(c)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,c),e=!1;break}if(o!==null&&o>c){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,c,o),e=!1;break}o=c}if(r!==void 0&&BL(r))for(let a=0,c=r.length;a!==c;++a){const f=r[a];if(isNaN(f)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,f),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===sm,s=e.length-1;let o=1;for(let a=1;a0){e[o]=e[s];for(let a=s*i,c=o*i,f=0;f!==i;++f)t[c+f]=t[a+f];++o}return o!==e.length?(this.times=e.slice(0,o),this.values=t.slice(0,o*i)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Vr.prototype.TimeBufferType=Float32Array;Vr.prototype.ValueBufferType=Float32Array;Vr.prototype.DefaultInterpolation=Gm;class sl extends Vr{constructor(e,t,i){super(e,t,i)}}sl.prototype.ValueTypeName="bool";sl.prototype.ValueBufferType=Array;sl.prototype.DefaultInterpolation=Ff;sl.prototype.InterpolantFactoryMethodLinear=void 0;sl.prototype.InterpolantFactoryMethodSmooth=void 0;class VS extends Vr{}VS.prototype.ValueTypeName="color";class Zf extends Vr{}Zf.prototype.ValueTypeName="number";class WL extends _h{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){const s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,c=(i-t)/(r-t);let f=e*a;for(let h=f+a;f!==h;f+=4)oi.slerpFlat(s,0,o,f-a,o,f,c);return s}}class Sh extends Vr{InterpolantFactoryMethodLinear(e){return new WL(this.times,this.values,this.getValueSize(),e)}}Sh.prototype.ValueTypeName="quaternion";Sh.prototype.InterpolantFactoryMethodSmooth=void 0;class ol extends Vr{constructor(e,t,i){super(e,t,i)}}ol.prototype.ValueTypeName="string";ol.prototype.ValueBufferType=Array;ol.prototype.DefaultInterpolation=Ff;ol.prototype.InterpolantFactoryMethodLinear=void 0;ol.prototype.InterpolantFactoryMethodSmooth=void 0;class Jf extends Vr{}Jf.prototype.ValueTypeName="vector";class Qf{constructor(e="",t=-1,i=[],r=Tg){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=Qi(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,r=1/(e.fps||1);for(let o=0,a=i.length;o!==a;++o)t.push(dW(i[o]).scale(r));const s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s}static toJSON(e){const t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let s=0,o=i.length;s!==o;++s)t.push(Vr.toJSON(i[s]));return r}static CreateFromMorphTargetSequence(e,t,i,r){const s=t.length,o=[];for(let a=0;a1){const d=h[1];let p=r[d];p||(r[d]=p=[]),p.push(f)}}const o=[];for(const a in r)o.push(this.CreateFromMorphTargetSequence(a,r[a],t,i));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const i=function(d,p,m,y,_){if(m.length!==0){const x=[],g=[];zS(m,x,g,y),x.length!==0&&_.push(new d(p,x,g))}},r=[],s=e.name||"default",o=e.fps||30,a=e.blendMode;let c=e.length||-1;const f=e.hierarchy||[];for(let d=0;d{t&&t(s),this.manager.itemEnd(e)},0),s;if(ws[e]!==void 0){ws[e].push({onLoad:t,onProgress:i,onError:r});return}ws[e]=[],ws[e].push({onLoad:t,onProgress:i,onError:r});const o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,c=this.responseType;fetch(o).then(f=>{if(f.status===200||f.status===0){if(f.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||f.body===void 0||f.body.getReader===void 0)return f;const h=ws[e],d=f.body.getReader(),p=f.headers.get("X-File-Size")||f.headers.get("Content-Length"),m=p?parseInt(p):0,y=m!==0;let _=0;const x=new ReadableStream({start(g){S();function S(){d.read().then(({done:M,value:A})=>{if(M)g.close();else{_+=A.byteLength;const R=new ProgressEvent("progress",{lengthComputable:y,loaded:_,total:m});for(let C=0,L=h.length;C{g.error(M)})}}});return new Response(x)}else throw new pW(`fetch for "${f.url}" responded with ${f.status}: ${f.statusText}`,f)}).then(f=>{switch(c){case"arraybuffer":return f.arrayBuffer();case"blob":return f.blob();case"document":return f.text().then(h=>new DOMParser().parseFromString(h,a));case"json":return f.json();default:if(a===void 0)return f.text();{const d=/charset="?([^;"\s]*)"?/i.exec(a),p=d&&d[1]?d[1].toLowerCase():void 0,m=new TextDecoder(p);return f.arrayBuffer().then(y=>m.decode(y))}}}).then(f=>{Is.add(e,f);const h=ws[e];delete ws[e];for(let d=0,p=h.length;d{const h=ws[e];if(h===void 0)throw this.manager.itemError(e),f;delete ws[e];for(let d=0,p=h.length;d{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class mW extends Fi{constructor(e){super(e)}load(e,t,i,r){const s=this,o=new js(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){try{t(s.parse(JSON.parse(a)))}catch(c){r?r(c):console.error(c),s.manager.itemError(e)}},i,r)}parse(e){const t=[];for(let i=0;i0:r.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const s in e.uniforms){const o=e.uniforms[s];switch(r.uniforms[s]={},o.type){case"t":r.uniforms[s].value=i(o.value);break;case"c":r.uniforms[s].value=new je().setHex(o.value);break;case"v2":r.uniforms[s].value=new pe().fromArray(o.value);break;case"v3":r.uniforms[s].value=new O().fromArray(o.value);break;case"v4":r.uniforms[s].value=new Bt().fromArray(o.value);break;case"m3":r.uniforms[s].value=new xt().fromArray(o.value);break;case"m4":r.uniforms[s].value=new at().fromArray(o.value);break;default:r.uniforms[s].value=o.value}}if(e.defines!==void 0&&(r.defines=e.defines),e.vertexShader!==void 0&&(r.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(r.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(r.glslVersion=e.glslVersion),e.extensions!==void 0)for(const s in e.extensions)r.extensions[s]=e.extensions[s];if(e.lights!==void 0&&(r.lights=e.lights),e.clipping!==void 0&&(r.clipping=e.clipping),e.size!==void 0&&(r.size=e.size),e.sizeAttenuation!==void 0&&(r.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(r.map=i(e.map)),e.matcap!==void 0&&(r.matcap=i(e.matcap)),e.alphaMap!==void 0&&(r.alphaMap=i(e.alphaMap)),e.bumpMap!==void 0&&(r.bumpMap=i(e.bumpMap)),e.bumpScale!==void 0&&(r.bumpScale=e.bumpScale),e.normalMap!==void 0&&(r.normalMap=i(e.normalMap)),e.normalMapType!==void 0&&(r.normalMapType=e.normalMapType),e.normalScale!==void 0){let s=e.normalScale;Array.isArray(s)===!1&&(s=[s,s]),r.normalScale=new pe().fromArray(s)}return e.displacementMap!==void 0&&(r.displacementMap=i(e.displacementMap)),e.displacementScale!==void 0&&(r.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(r.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(r.roughnessMap=i(e.roughnessMap)),e.metalnessMap!==void 0&&(r.metalnessMap=i(e.metalnessMap)),e.emissiveMap!==void 0&&(r.emissiveMap=i(e.emissiveMap)),e.emissiveIntensity!==void 0&&(r.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(r.specularMap=i(e.specularMap)),e.specularIntensityMap!==void 0&&(r.specularIntensityMap=i(e.specularIntensityMap)),e.specularColorMap!==void 0&&(r.specularColorMap=i(e.specularColorMap)),e.envMap!==void 0&&(r.envMap=i(e.envMap)),e.envMapRotation!==void 0&&r.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(r.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(r.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(r.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(r.lightMap=i(e.lightMap)),e.lightMapIntensity!==void 0&&(r.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(r.aoMap=i(e.aoMap)),e.aoMapIntensity!==void 0&&(r.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(r.gradientMap=i(e.gradientMap)),e.clearcoatMap!==void 0&&(r.clearcoatMap=i(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(r.clearcoatRoughnessMap=i(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(r.clearcoatNormalMap=i(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(r.clearcoatNormalScale=new pe().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(r.iridescenceMap=i(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(r.iridescenceThicknessMap=i(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(r.transmissionMap=i(e.transmissionMap)),e.thicknessMap!==void 0&&(r.thicknessMap=i(e.thicknessMap)),e.anisotropyMap!==void 0&&(r.anisotropyMap=i(e.anisotropyMap)),e.sheenColorMap!==void 0&&(r.sheenColorMap=i(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(r.sheenRoughnessMap=i(e.sheenRoughnessMap)),r}setTextures(e){return this.textures=e,this}static createMaterialFromType(e){const t={ShadowMaterial:LL,SpriteMaterial:PS,RawShaderMaterial:IL,ShaderMaterial:zr,PointsMaterial:LS,MeshPhysicalMaterial:NL,MeshStandardMaterial:FS,MeshPhongMaterial:DL,MeshToonMaterial:UL,MeshNormalMaterial:OL,MeshLambertMaterial:kL,MeshDepthMaterial:bS,MeshDistanceMaterial:CS,MeshBasicMaterial:Xo,MeshMatcapMaterial:FL,LineDashedMaterial:zL,LineBasicMaterial:Ti,Material:Yn};return new t[e]}}class N_{static decodeText(e){if(console.warn("THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead."),typeof TextDecoder<"u")return new TextDecoder().decode(e);let t="";for(let i=0,r=e.length;i0){const c=new HS(t);s=new $f(c),s.setCrossOrigin(this.crossOrigin);for(let f=0,h=e.length;f0){r=new $f(this.manager),r.setCrossOrigin(this.crossOrigin);for(let o=0,a=e.length;o{const x=new Mi;x.min.fromArray(_.boxMin),x.max.fromArray(_.boxMax);const g=new ai;return g.radius=_.sphereRadius,g.center.fromArray(_.sphereCenter),{boxInitialized:_.boxInitialized,box:x,sphereInitialized:_.sphereInitialized,sphere:g}}),o._maxGeometryCount=e.maxGeometryCount,o._maxVertexCount=e.maxVertexCount,o._maxIndexCount=e.maxIndexCount,o._geometryInitialized=e.geometryInitialized,o._geometryCount=e.geometryCount,o._matricesTexture=f(e.matricesTexture.uuid),e.colorsTexture!==void 0&&(o._colorsTexture=f(e.colorsTexture.uuid));break;case"LOD":o=new mL;break;case"Line":o=new Bo(a(e.geometry),c(e.material));break;case"LineLoop":o=new xL(a(e.geometry),c(e.material));break;case"LineSegments":o=new us(a(e.geometry),c(e.material));break;case"PointCloud":case"Points":o=new _L(a(e.geometry),c(e.material));break;case"Sprite":o=new pL(c(e.material));break;case"Group":o=new hc;break;case"Bone":o=new RS;break;default:o=new Ut}if(o.uuid=e.uuid,e.name!==void 0&&(o.name=e.name),e.matrix!==void 0?(o.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(o.matrixAutoUpdate=e.matrixAutoUpdate),o.matrixAutoUpdate&&o.matrix.decompose(o.position,o.quaternion,o.scale)):(e.position!==void 0&&o.position.fromArray(e.position),e.rotation!==void 0&&o.rotation.fromArray(e.rotation),e.quaternion!==void 0&&o.quaternion.fromArray(e.quaternion),e.scale!==void 0&&o.scale.fromArray(e.scale)),e.up!==void 0&&o.up.fromArray(e.up),e.castShadow!==void 0&&(o.castShadow=e.castShadow),e.receiveShadow!==void 0&&(o.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.bias!==void 0&&(o.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(o.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(o.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&o.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(o.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(o.visible=e.visible),e.frustumCulled!==void 0&&(o.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(o.renderOrder=e.renderOrder),e.userData!==void 0&&(o.userData=e.userData),e.layers!==void 0&&(o.layers.mask=e.layers),e.children!==void 0){const p=e.children;for(let m=0;m"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,i,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,o=Is.get(e);if(o!==void 0){if(s.manager.itemStart(e),o.then){o.then(f=>{t&&t(f),s.manager.itemEnd(e)}).catch(f=>{r&&r(f)});return}return setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o}const a={};a.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",a.headers=this.requestHeader;const c=fetch(e,a).then(function(f){return f.blob()}).then(function(f){return createImageBitmap(f,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(f){return Is.add(e,f),t&&t(f),s.manager.itemEnd(e),f}).catch(function(f){r&&r(f),Is.remove(e),s.manager.itemError(e),s.manager.itemEnd(e)});Is.add(e,c),s.manager.itemStart(e)}}let Rp;class WS{static getContext(){return Rp===void 0&&(Rp=new(window.AudioContext||window.webkitAudioContext)),Rp}static setContext(e){Rp=e}}class AW extends Fi{constructor(e){super(e)}load(e,t,i,r){const s=this,o=new js(this.manager);o.setResponseType("arraybuffer"),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(c){try{const f=c.slice(0);WS.getContext().decodeAudioData(f,function(d){t(d)}).catch(a)}catch(f){a(f)}},i,r);function a(c){r?r(c):console.error(c),s.manager.itemError(e)}}}const mb=new at,gb=new at,ha=new at;class TW{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new sn,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new sn,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,ha.copy(e.projectionMatrix);const r=t.eyeSep/2,s=r*t.near/t.focus,o=t.near*Math.tan(Ba*t.fov*.5)/t.zoom;let a,c;gb.elements[12]=-r,mb.elements[12]=r,a=-o*t.aspect+s,c=o*t.aspect+s,ha.elements[0]=2*t.near/(c-a),ha.elements[8]=(c+a)/(c-a),this.cameraL.projectionMatrix.copy(ha),a=-o*t.aspect-s,c=o*t.aspect-s,ha.elements[0]=2*t.near/(c-a),ha.elements[8]=(c+a)/(c-a),this.cameraR.projectionMatrix.copy(ha)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(gb),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(mb)}}class jS{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=vb(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=vb();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function vb(){return(typeof performance>"u"?Date:performance).now()}const da=new O,yb=new oi,bW=new O,pa=new O;class CW extends Ut{constructor(){super(),this.type="AudioListener",this.context=WS.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new jS}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener,i=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(da,yb,bW),pa.set(0,0,-1).applyQuaternion(yb),t.positionX){const r=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(da.x,r),t.positionY.linearRampToValueAtTime(da.y,r),t.positionZ.linearRampToValueAtTime(da.z,r),t.forwardX.linearRampToValueAtTime(pa.x,r),t.forwardY.linearRampToValueAtTime(pa.y,r),t.forwardZ.linearRampToValueAtTime(pa.z,r),t.upX.linearRampToValueAtTime(i.x,r),t.upY.linearRampToValueAtTime(i.y,r),t.upZ.linearRampToValueAtTime(i.z,r)}else t.setPosition(da.x,da.y,da.z),t.setOrientation(pa.x,pa.y,pa.z,i.x,i.y,i.z)}}class tI extends Ut{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let c=t,f=t+t;c!==f;++c)if(i[c]!==i[c+t]){a.setValue(i,r);break}}saveOriginalState(){const e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let s=i,o=r;s!==o;++s)t[s]=t[r+s%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let o=0;o!==s;++o)e[t+o]=e[i+o]}_slerp(e,t,i,r){oi.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,s){const o=this._workIndex*s;oi.multiplyQuaternionsFlat(e,o,e,t,e,i),oi.slerpFlat(e,t,e,t,e,o,r)}_lerp(e,t,i,r,s){const o=1-r;for(let a=0;a!==s;++a){const c=t+a;e[c]=e[c]*o+e[i+a]*r}}_lerpAdditive(e,t,i,r,s){for(let o=0;o!==s;++o){const a=t+o;e[a]=e[a]+e[i+o]*r}}}const XS="\\[\\]\\.:\\/",IW=new RegExp("["+XS+"]","g"),YS="[^"+XS+"]",NW="[^"+XS.replace("\\.","")+"]",DW=/((?:WC+[\/:])*)/.source.replace("WC",YS),UW=/(WCOD+)?/.source.replace("WCOD",NW),OW=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",YS),kW=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",YS),FW=new RegExp("^"+DW+UW+OW+kW+"$"),zW=["material","materials","bones","map"];class BW{constructor(e,t,i){const r=i||Nt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){const i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}}class Nt{constructor(e,t,i){this.path=t,this.parsedPath=i||Nt.parseTrackName(t),this.node=Nt.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new Nt.Composite(e,t,i):new Nt(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(IW,"")}static parseTrackName(e){const t=FW.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const s=i.nodeName.substring(r+1);zW.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){const i=function(s){for(let o=0;o=s){const d=s++,p=e[d];t[p.uuid]=h,e[h]=p,t[f]=d,e[d]=c;for(let m=0,y=r;m!==y;++m){const _=i[m],x=_[d],g=_[h];_[h]=x,_[d]=g}}}this.nCachedObjects_=s}uncache(){const e=this._objects,t=this._indicesByUUID,i=this._bindings,r=i.length;let s=this.nCachedObjects_,o=e.length;for(let a=0,c=arguments.length;a!==c;++a){const f=arguments[a],h=f.uuid,d=t[h];if(d!==void 0)if(delete t[h],d0&&(t[m.uuid]=d),e[d]=m,e.pop();for(let y=0,_=r;y!==_;++y){const x=i[y];x[d]=x[p],x.pop()}}}this.nCachedObjects_=s}subscribe_(e,t){const i=this._bindingsIndicesByPath;let r=i[e];const s=this._bindings;if(r!==void 0)return s[r];const o=this._paths,a=this._parsedPaths,c=this._objects,f=c.length,h=this.nCachedObjects_,d=new Array(f);r=s.length,i[e]=r,o.push(e),a.push(t),s.push(d);for(let p=h,m=c.length;p!==m;++p){const y=c[p];d[p]=new Nt(y,e,t)}return d}unsubscribe_(e){const t=this._bindingsIndicesByPath,i=t[e];if(i!==void 0){const r=this._paths,s=this._parsedPaths,o=this._bindings,a=o.length-1,c=o[a],f=e[a];t[f]=i,o[i]=c,o.pop(),s[i]=s[a],s.pop(),r[i]=r[a],r.pop()}}}class iI{constructor(e,t,i=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=r;const s=t.tracks,o=s.length,a=new Array(o),c={endingStart:La,endingEnd:La};for(let f=0;f!==o;++f){const h=s[f].createInterpolant(null);a[f]=h,h.settings=c}this._interpolantSettings=c,this._interpolants=a,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=F3,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i){if(e.fadeOut(t),this.fadeIn(t),i){const r=this._clip.duration,s=e._clip.duration,o=s/r,a=r/s;e.warp(1,o,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,i){return e.crossFadeFrom(this,t,i)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,i){const r=this._mixer,s=r.time,o=this.timeScale;let a=this._timeScaleInterpolant;a===null&&(a=r._lendControlInterpolant(),this._timeScaleInterpolant=a);const c=a.parameterPositions,f=a.sampleValues;return c[0]=s,c[1]=s+i,f[0]=e/o,f[1]=t/o,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,i,r){if(!this.enabled){this._updateWeight(e);return}const s=this._startTime;if(s!==null){const c=(e-s)*i;c<0||i===0?t=0:(this._startTime=null,t=i*c)}t*=this._updateTimeScale(e);const o=this._updateTime(t),a=this._updateWeight(e);if(a>0){const c=this._interpolants,f=this._propertyBindings;switch(this.blendMode){case gS:for(let h=0,d=c.length;h!==d;++h)c[h].evaluate(o),f[h].accumulateAdditive(a);break;case Tg:default:for(let h=0,d=c.length;h!==d;++h)c[h].evaluate(o),f[h].accumulate(r,a)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const i=this._weightInterpolant;if(i!==null){const r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const i=this._timeScaleInterpolant;if(i!==null){const r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,i=this.loop;let r=this.time+e,s=this._loopCount;const o=i===z3;if(e===0)return s===-1?r:o&&(s&1)===1?t-r:r;if(i===k3){s===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(s===-1&&(e>=0?(s=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),r>=t||r<0){const a=Math.floor(r/t);r-=t*a,s+=Math.abs(a);const c=this.repetitions-s;if(c<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(c===1){const f=e<0;this._setEndings(f,!f,o)}else this._setEndings(!1,!1,o);this._loopCount=s,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:a})}}else this.time=r;if(o&&(s&1)===1)return t-r}return r}_setEndings(e,t,i){const r=this._interpolantSettings;i?(r.endingStart=Ia,r.endingEnd=Ia):(e?r.endingStart=this.zeroSlopeAtStart?Ia:La:r.endingStart=zf,t?r.endingEnd=this.zeroSlopeAtEnd?Ia:La:r.endingEnd=zf)}_scheduleFading(e,t,i){const r=this._mixer,s=r.time;let o=this._weightInterpolant;o===null&&(o=r._lendControlInterpolant(),this._weightInterpolant=o);const a=o.parameterPositions,c=o.sampleValues;return a[0]=s,c[0]=t,a[1]=s+e,c[1]=i,this}}const HW=new Float32Array(1);class GW extends cs{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const i=e._localRoot||this._root,r=e._clip.tracks,s=r.length,o=e._propertyBindings,a=e._interpolants,c=i.uuid,f=this._bindingsByRootAndName;let h=f[c];h===void 0&&(h={},f[c]=h);for(let d=0;d!==s;++d){const p=r[d],m=p.name;let y=h[m];if(y!==void 0)++y.referenceCount,o[d]=y;else{if(y=o[d],y!==void 0){y._cacheIndex===null&&(++y.referenceCount,this._addInactiveBinding(y,c,m));continue}const _=t&&t._propertyBindings[d].binding.parsedPath;y=new nI(Nt.create(i,m,_),p.ValueTypeName,p.getValueSize()),++y.referenceCount,this._addInactiveBinding(y,c,m),o[d]=y}a[d].resultBuffer=y.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const i=(e._localRoot||this._root).uuid,r=e._clip.uuid,s=this._actionsByClip[r];this._bindAction(e,s&&s.knownActions[0]),this._addInactiveAction(e,r,i)}const t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){const s=t[i];s.useCount++===0&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){const s=t[i];--s.useCount===0&&(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;const t=this._actions,i=this._nActiveActions,r=this.time+=e,s=Math.sign(e),o=this._accuIndex^=1;for(let f=0;f!==i;++f)t[f]._update(r,e,s,o);const a=this._bindings,c=this._nActiveBindings;for(let f=0;f!==c;++f)a[f].apply(o);return this}setTime(e){this.time=0;for(let t=0;tthis.max.x||e.ythis.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Mb).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const wb=new O,Lp=new O;class ZW{constructor(e=new O,t=new O){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){wb.subVectors(e,this.start),Lp.subVectors(this.end,this.start);const i=Lp.dot(Lp);let s=Lp.dot(wb)/i;return t&&(s=mn(s,0,1)),s}closestPointToPoint(e,t,i){const r=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const Eb=new O;class JW extends Ut{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const i=new St,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,a=1,c=32;o1)for(let d=0;d.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{Pb.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(Pb,t)}}setLength(e,t=e*.2,i=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class u9 extends us{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new St;r.setAttribute("position",new Ze(t,3)),r.setAttribute("color",new Ze(i,3));const s=new Ti({vertexColors:!0,toneMapped:!1});super(r,s),this.type="AxesHelper"}setColors(e,t,i){const r=new je,s=this.geometry.attributes.color.array;return r.set(e),r.toArray(s,0),r.toArray(s,3),r.set(t),r.toArray(s,6),r.toArray(s,9),r.set(i),r.toArray(s,12),r.toArray(s,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class f9{constructor(){this.type="ShapePath",this.color=new je,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new Xf,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,i,r){return this.currentPath.quadraticCurveTo(e,t,i,r),this}bezierCurveTo(e,t,i,r,s,o){return this.currentPath.bezierCurveTo(e,t,i,r,s,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(g){const S=[];for(let M=0,A=g.length;MNumber.EPSILON){if(b<0&&(L=S[C],P=-P,I=S[R],b=-b),g.yI.y)continue;if(g.y===L.y){if(g.x===L.x)return!0}else{const D=b*(g.x-L.x)-P*(g.y-L.y);if(D===0)return!0;if(D<0)continue;A=!A}}else{if(g.y!==L.y)continue;if(I.x<=g.x&&g.x<=L.x||L.x<=g.x&&g.x<=I.x)return!0}}return A}const r=as.isClockWise,s=this.subPaths;if(s.length===0)return[];let o,a,c;const f=[];if(s.length===1)return a=s[0],c=new Ha,c.curves=a.curves,f.push(c),f;let h=!r(s[0].getPoints());h=e?!h:h;const d=[],p=[];let m=[],y=0,_;p[y]=void 0,m[y]=[];for(let g=0,S=s.length;g1){let g=!1,S=0;for(let M=0,A=p.length;M0&&g===!1&&(m=d)}let x;for(let g=0,S=p.length;g{const d=typeof f=="function"?f(e):f;if(d!==e){const p=e;e=h?d:Object.assign({},e,d),t.forEach(m=>m(e,p))}},r=()=>e,s=(f,h=r,d=Object.is)=>{console.warn("[DEPRECATED] Please use `subscribeWithSelector` middleware");let p=h(e);function m(){const y=h(e);if(!d(p,y)){const _=p;f(p=y,_)}}return t.add(m),()=>t.delete(m)},c={setState:i,getState:r,subscribe:(f,h,d)=>h||d?s(f,h,d):(t.add(f),()=>t.delete(f)),destroy:()=>t.clear()};return e=n(i,r,c),c}const m9=typeof window>"u"||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent),Rb=m9?W.useEffect:W.useLayoutEffect;function aI(n){const e=typeof n=="function"?p9(n):n,t=(i=e.getState,r=Object.is)=>{const[,s]=W.useReducer(x=>x+1,0),o=e.getState(),a=W.useRef(o),c=W.useRef(i),f=W.useRef(r),h=W.useRef(!1),d=W.useRef();d.current===void 0&&(d.current=i(o));let p,m=!1;(a.current!==o||c.current!==i||f.current!==r||h.current)&&(p=i(o),m=!r(d.current,p)),Rb(()=>{m&&(d.current=p),a.current=o,c.current=i,f.current=r,h.current=!1});const y=W.useRef(o);Rb(()=>{const x=()=>{try{const S=e.getState(),M=c.current(S);f.current(d.current,M)||(a.current=S,d.current=M,s())}catch{h.current=!0,s()}},g=e.subscribe(x);return e.getState()!==y.current&&x(),g},[]);const _=m?p:d.current;return W.useDebugValue(_),_};return Object.assign(t,e),t[Symbol.iterator]=function(){console.warn("[useStore, api] = create() is deprecated and will be removed in v4");const i=[t,e];return{next(){const r=i.length<=0;return{value:i.shift(),done:r}}}},t}var lI={exports:{}},cI={exports:{}},uI={};/** - * @license React - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */(function(n){function e(k,q){var J=k.length;k.push(q);e:for(;0>>1,_e=k[$];if(0>>1;$r(ve,J))Te<_e&&0>r(we,ve)?(k[$]=we,k[Te]=J,$=Te):(k[$]=ve,k[oe]=J,$=oe);else if(Te<_e&&0>r(we,J))k[$]=we,k[Te]=J,$=Te;else break e}}return q}function r(k,q){var J=k.sortIndex-q.sortIndex;return J!==0?J:k.id-q.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;n.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var c=[],f=[],h=1,d=null,p=3,m=!1,y=!1,_=!1,x=typeof setTimeout=="function"?setTimeout:null,g=typeof clearTimeout=="function"?clearTimeout:null,S=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function M(k){for(var q=t(f);q!==null;){if(q.callback===null)i(f);else if(q.startTime<=k)i(f),q.sortIndex=q.expirationTime,e(c,q);else break;q=t(f)}}function A(k){if(_=!1,M(k),!y)if(t(c)!==null)y=!0,Q(R);else{var q=t(f);q!==null&&le(A,q.startTime-k)}}function R(k,q){y=!1,_&&(_=!1,g(I),I=-1),m=!0;var J=p;try{for(M(q),d=t(c);d!==null&&(!(d.expirationTime>q)||k&&!D());){var $=d.callback;if(typeof $=="function"){d.callback=null,p=d.priorityLevel;var _e=$(d.expirationTime<=q);q=n.unstable_now(),typeof _e=="function"?d.callback=_e:d===t(c)&&i(c),M(q)}else i(c);d=t(c)}if(d!==null)var De=!0;else{var oe=t(f);oe!==null&&le(A,oe.startTime-q),De=!1}return De}finally{d=null,p=J,m=!1}}var C=!1,L=null,I=-1,P=5,b=-1;function D(){return!(n.unstable_now()-bk||125$?(k.sortIndex=J,e(f,k),t(c)===null&&k===t(f)&&(_?(g(I),I=-1):_=!0,le(A,J-$))):(k.sortIndex=_e,e(c,k),y||m||(y=!0,Q(R))),k},n.unstable_shouldYield=D,n.unstable_wrapCallback=function(k){var q=p;return function(){var J=p;p=q;try{return k.apply(this,arguments)}finally{p=J}}}})(uI);cI.exports=uI;var O_=cI.exports;/** - * @license React - * react-reconciler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var g9=function(e){var t={},i=W,r=O_,s=Object.assign;function o(l){for(var u="https://reactjs.org/docs/error-decoder.html?invariant="+l,v=1;vY||E[F]!==T[Y]){var ue=` -`+E[F].replace(" at new "," at ");return l.displayName&&ue.includes("")&&(ue=ue.replace("",l.displayName)),ue}while(1<=F&&0<=Y);break}}}finally{rt=!1,Error.prepareStackTrace=v}return(l=l?l.displayName||l.name:"")?st(l):""}var en=Object.prototype.hasOwnProperty,jt=[],Sn=-1;function Tt(l){return{current:l}}function Oe(l){0>Sn||(l.current=jt[Sn],jt[Sn]=null,Sn--)}function yt(l,u){Sn++,jt[Sn]=l.current,l.current=u}var Ct={},Xt=Tt(Ct),Pn=Tt(!1),ui=Ct;function Gr(l,u){var v=l.type.contextTypes;if(!v)return Ct;var w=l.stateNode;if(w&&w.__reactInternalMemoizedUnmaskedChildContext===u)return w.__reactInternalMemoizedMaskedChildContext;var E={},T;for(T in v)E[T]=u[T];return w&&(l=l.stateNode,l.__reactInternalMemoizedUnmaskedChildContext=u,l.__reactInternalMemoizedMaskedChildContext=E),E}function It(l){return l=l.childContextTypes,l!=null}function zi(){Oe(Pn),Oe(Xt)}function ll(l,u,v){if(Xt.current!==Ct)throw Error(o(168));yt(Xt,u),yt(Pn,v)}function fi(l,u,v){var w=l.stateNode;if(u=u.childContextTypes,typeof w.getChildContext!="function")return v;w=w.getChildContext();for(var E in w)if(!(E in u))throw Error(o(108,I(l)||"Unknown",E));return s({},v,w)}function Ks(l){return l=(l=l.stateNode)&&l.__reactInternalMemoizedMergedChildContext||Ct,ui=Xt.current,yt(Xt,l),yt(Pn,Pn.current),!0}function Ph(l,u,v){var w=l.stateNode;if(!w)throw Error(o(169));v?(l=fi(l,u,ui),w.__reactInternalMemoizedMergedChildContext=l,Oe(Pn),Oe(Xt),yt(Xt,l)):Oe(Pn),yt(Pn,v)}var bi=Math.clz32?Math.clz32:NI,LI=Math.log,II=Math.LN2;function NI(l){return l>>>=0,l===0?32:31-(LI(l)/II|0)|0}var Rh=64,Lh=4194304;function Yc(l){switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return l&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return l}}function Ih(l,u){var v=l.pendingLanes;if(v===0)return 0;var w=0,E=l.suspendedLanes,T=l.pingedLanes,F=v&268435455;if(F!==0){var Y=F&~E;Y!==0?w=Yc(Y):(T&=F,T!==0&&(w=Yc(T)))}else F=v&~E,F!==0?w=Yc(F):T!==0&&(w=Yc(T));if(w===0)return 0;if(u!==0&&u!==w&&!(u&E)&&(E=w&-w,T=u&-u,E>=T||E===16&&(T&4194240)!==0))return u;if(w&4&&(w|=v&16),u=l.entangledLanes,u!==0)for(l=l.entanglements,u&=w;0v;v++)u.push(l);return u}function qc(l,u,v){l.pendingLanes|=u,u!==536870912&&(l.suspendedLanes=0,l.pingedLanes=0),l=l.eventTimes,u=31-bi(u),l[u]=v}function OI(l,u){var v=l.pendingLanes&~u;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.expiredLanes&=u,l.mutableReadLanes&=u,l.entangledLanes&=u,u=l.entanglements;var w=l.eventTimes;for(l=l.expirationTimes;0>=F,E-=F,ps=1<<32-bi(u)+E|v<kt?(Fn=vt,vt=null):Fn=vt.sibling;var Ft=ot(ie,vt,ce[kt],He);if(Ft===null){vt===null&&(vt=Fn);break}l&&vt&&Ft.alternate===null&&u(ie,vt),Z=T(Ft,Z,kt),Et===null?et=Ft:Et.sibling=Ft,Et=Ft,vt=Fn}if(kt===ce.length)return v(ie,vt),tn&&Zo(ie,kt),et;if(vt===null){for(;ktkt?(Fn=vt,vt=null):Fn=vt.sibling;var io=ot(ie,vt,Ft.value,He);if(io===null){vt===null&&(vt=Fn);break}l&&vt&&io.alternate===null&&u(ie,vt),Z=T(io,Z,kt),Et===null?et=io:Et.sibling=io,Et=io,vt=Fn}if(Ft.done)return v(ie,vt),tn&&Zo(ie,kt),et;if(vt===null){for(;!Ft.done;kt++,Ft=ce.next())Ft=gt(ie,Ft.value,He),Ft!==null&&(Z=T(Ft,Z,kt),Et===null?et=Ft:Et.sibling=Ft,Et=Ft);return tn&&Zo(ie,kt),et}for(vt=w(ie,vt);!Ft.done;kt++,Ft=ce.next())Ft=Gt(vt,ie,kt,Ft.value,He),Ft!==null&&(l&&Ft.alternate!==null&&vt.delete(Ft.key===null?kt:Ft.key),Z=T(Ft,Z,kt),Et===null?et=Ft:Et.sibling=Ft,Et=Ft);return l&&vt.forEach(function(SN){return u(ie,SN)}),tn&&Zo(ie,kt),et}function ur(ie,Z,ce,He){if(typeof ce=="object"&&ce!==null&&ce.type===h&&ce.key===null&&(ce=ce.props.children),typeof ce=="object"&&ce!==null){switch(ce.$$typeof){case c:e:{for(var et=ce.key,Et=Z;Et!==null;){if(Et.key===et){if(et=ce.type,et===h){if(Et.tag===7){v(ie,Et.sibling),Z=E(Et,ce.props.children),Z.return=ie,ie=Z;break e}}else if(Et.elementType===et||typeof et=="object"&&et!==null&&et.$$typeof===M&&mM(et)===Et.type){v(ie,Et.sibling),Z=E(Et,ce.props),Z.ref=Jc(ie,Et,ce),Z.return=ie,ie=Z;break e}v(ie,Et);break}else u(ie,Et);Et=Et.sibling}ce.type===h?(Z=ia(ce.props.children,ie.mode,He,ce.key),Z.return=ie,ie=Z):(He=_d(ce.type,ce.key,ce.props,null,ie.mode,He),He.ref=Jc(ie,Z,ce),He.return=ie,ie=He)}return F(ie);case f:e:{for(Et=ce.key;Z!==null;){if(Z.key===Et)if(Z.tag===4&&Z.stateNode.containerInfo===ce.containerInfo&&Z.stateNode.implementation===ce.implementation){v(ie,Z.sibling),Z=E(Z,ce.children||[]),Z.return=ie,ie=Z;break e}else{v(ie,Z);break}else u(ie,Z);Z=Z.sibling}Z=nv(ce,ie.mode,He),Z.return=ie,ie=Z}return F(ie);case M:return Et=ce._init,ur(ie,Z,Et(ce._payload),He)}if(ne(ce))return tt(ie,Z,ce,He);if(C(ce))return Jn(ie,Z,ce,He);Gh(ie,ce)}return typeof ce=="string"&&ce!==""||typeof ce=="number"?(ce=""+ce,Z!==null&&Z.tag===6?(v(ie,Z.sibling),Z=E(Z,ce),Z.return=ie,ie=Z):(v(ie,Z),Z=tv(ce,ie.mode,He),Z.return=ie,ie=Z),F(ie)):v(ie,Z)}return ur}var pl=gM(!0),vM=gM(!1),Qc={},or=Tt(Qc),$c=Tt(Qc),ml=Tt(Qc);function qr(l){if(l===Qc)throw Error(o(174));return l}function x0(l,u){yt(ml,u),yt($c,l),yt(or,Qc),l=le(u),Oe(or),yt(or,l)}function gl(){Oe(or),Oe($c),Oe(ml)}function yM(l){var u=qr(ml.current),v=qr(or.current);u=k(v,l.type,u),v!==u&&(yt($c,l),yt(or,u))}function _0(l){$c.current===l&&(Oe(or),Oe($c))}var on=Tt(0);function Wh(l){for(var u=l;u!==null;){if(u.tag===13){var v=u.memoizedState;if(v!==null&&(v=v.dehydrated,v===null||Xc(v)||qs(v)))return u}else if(u.tag===19&&u.memoizedProps.revealOrder!==void 0){if(u.flags&128)return u}else if(u.child!==null){u.child.return=u,u=u.child;continue}if(u===l)break;for(;u.sibling===null;){if(u.return===null||u.return===l)return null;u=u.return}u.sibling.return=u.return,u=u.sibling}return null}var S0=[];function M0(){for(var l=0;lv?v:4,l(!0);var w=ar.transition;ar.transition={};try{l(!1),u()}finally{Ot=v,ar.transition=w}}function IM(){return Kr().memoizedState}function qI(l,u,v){var w=eo(l);v={lane:w,action:v,hasEagerState:!1,eagerState:null,next:null},NM(l)?DM(u,v):(UM(l,u,v),v=di(),l=lr(l,w,v),l!==null&&OM(l,u,w))}function KI(l,u,v){var w=eo(l),E={lane:w,action:v,hasEagerState:!1,eagerState:null,next:null};if(NM(l))DM(u,E);else{UM(l,u,E);var T=l.alternate;if(l.lanes===0&&(T===null||T.lanes===0)&&(T=u.lastRenderedReducer,T!==null))try{var F=u.lastRenderedState,Y=T(F,v);if(E.hasEagerState=!0,E.eagerState=Y,jr(Y,F))return}catch{}finally{}v=di(),l=lr(l,w,v),l!==null&&OM(l,u,w)}}function NM(l){var u=l.alternate;return l===hn||u!==null&&u===hn}function DM(l,u){eu=Xh=!0;var v=l.pending;v===null?u.next=u:(u.next=v.next,v.next=u),l.pending=u}function UM(l,u,v){Mn!==null&&l.mode&1&&!(At&2)?(l=u.interleaved,l===null?(v.next=v,Yr===null?Yr=[u]:Yr.push(u)):(v.next=l.next,l.next=v),u.interleaved=v):(l=u.pending,l===null?v.next=v:(v.next=l.next,l.next=v),u.pending=v)}function OM(l,u,v){if(v&4194240){var w=u.lanes;w&=l.pendingLanes,v|=w,u.lanes=v,n0(l,v)}}var Jh={readContext:ir,useCallback:Kn,useContext:Kn,useEffect:Kn,useImperativeHandle:Kn,useInsertionEffect:Kn,useLayoutEffect:Kn,useMemo:Kn,useReducer:Kn,useRef:Kn,useState:Kn,useDebugValue:Kn,useDeferredValue:Kn,useTransition:Kn,useMutableSource:Kn,useSyncExternalStore:Kn,useId:Kn,unstable_isNewReconciler:!1},ZI={readContext:ir,useCallback:function(l,u){return gs().memoizedState=[l,u===void 0?null:u],l},useContext:ir,useEffect:b0,useImperativeHandle:function(l,u,v){return v=v!=null?v.concat([l]):null,Kh(4194308,4,CM.bind(null,u,l),v)},useLayoutEffect:function(l,u){return Kh(4194308,4,l,u)},useInsertionEffect:function(l,u){return Kh(4,2,l,u)},useMemo:function(l,u){var v=gs();return u=u===void 0?null:u,l=l(),v.memoizedState=[l,u],l},useReducer:function(l,u,v){var w=gs();return u=v!==void 0?v(u):u,w.memoizedState=w.baseState=u,l={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:u},w.queue=l,l=l.dispatch=qI.bind(null,hn,l),[w.memoizedState,l]},useRef:function(l){var u=gs();return l={current:l},u.memoizedState=l},useState:T0,useDebugValue:C0,useDeferredValue:function(l){var u=T0(l),v=u[0],w=u[1];return b0(function(){var E=ar.transition;ar.transition={};try{w(l)}finally{ar.transition=E}},[l]),v},useTransition:function(){var l=T0(!1),u=l[0];return l=YI.bind(null,l[1]),gs().memoizedState=l,[u,l]},useMutableSource:function(){},useSyncExternalStore:function(l,u,v){var w=hn,E=gs();if(tn){if(v===void 0)throw Error(o(407));v=v()}else{if(v=u(),Mn===null)throw Error(o(349));vl&30||SM(w,u,v)}E.memoizedState=v;var T={value:v,getSnapshot:u};return E.queue=T,b0(wM.bind(null,w,T,l),[l]),w.flags|=2048,nu(9,MM.bind(null,w,T,v,u),void 0,null),v},useId:function(){var l=gs(),u=Mn.identifierPrefix;if(tn){var v=ms,w=ps;v=(w&~(1<<32-bi(w)-1)).toString(32)+v,u=":"+u+"R"+v,v=tu++,0Y0&&(u.flags|=128,w=!0,ou(E,!1),u.lanes=4194304)}else{if(!w)if(l=Wh(T),l!==null){if(u.flags|=128,w=!0,l=l.updateQueue,l!==null&&(u.updateQueue=l,u.flags|=4),ou(E,!0),E.tail===null&&E.tailMode==="hidden"&&!T.alternate&&!tn)return Zn(u),null}else 2*On()-E.renderingStartTime>Y0&&v!==1073741824&&(u.flags|=128,w=!0,ou(E,!1),u.lanes=4194304);E.isBackwards?(T.sibling=u.child,u.child=T):(l=E.last,l!==null?l.sibling=T:u.child=T,E.last=T)}return E.tail!==null?(u=E.tail,E.rendering=u,E.tail=u.sibling,E.renderingStartTime=On(),u.sibling=null,l=on.current,yt(on,w?l&1|2:l&1),u):(Zn(u),null);case 22:case 23:return Q0(),w=u.memoizedState!==null,l!==null&&l.memoizedState!==null!==w&&(u.flags|=8192),w&&u.mode&1?Gi&1073741824&&(Zn(u),B&&u.subtreeFlags&6&&(u.flags|=8192)):Zn(u),null;case 24:return null;case 25:return null}throw Error(o(156,u.tag))}var tN=a.ReactCurrentOwner,Hi=!1;function hi(l,u,v,w){u.child=l===null?vM(u,null,v,w):pl(u,l.child,v,w)}function WM(l,u,v,w,E){v=v.render;var T=u.ref;return ul(u,E),w=E0(l,u,v,w,T,E),v=A0(),l!==null&&!Hi?(u.updateQueue=l.updateQueue,u.flags&=-2053,l.lanes&=~E,vs(l,u,E)):(tn&&v&&p0(u),u.flags|=1,hi(l,u,w,E),u.child)}function jM(l,u,v,w,E){if(l===null){var T=v.type;return typeof T=="function"&&!ev(T)&&T.defaultProps===void 0&&v.compare===null&&v.defaultProps===void 0?(u.tag=15,u.type=T,XM(l,u,T,w,E)):(l=_d(v.type,null,w,u,u.mode,E),l.ref=u.ref,l.return=u,u.child=l)}if(T=l.child,!(l.lanes&E)){var F=T.memoizedProps;if(v=v.compare,v=v!==null?v:Uh,v(F,w)&&l.ref===u.ref)return vs(l,u,E)}return u.flags|=1,l=no(T,w),l.ref=u.ref,l.return=u,u.child=l}function XM(l,u,v,w,E){if(l!==null&&Uh(l.memoizedProps,w)&&l.ref===u.ref)if(Hi=!1,(l.lanes&E)!==0)l.flags&131072&&(Hi=!0);else return u.lanes=l.lanes,vs(l,u,E);return L0(l,u,v,w,E)}function YM(l,u,v){var w=u.pendingProps,E=w.children,T=l!==null?l.memoizedState:null;if(w.mode==="hidden")if(!(u.mode&1))u.memoizedState={baseLanes:0,cachePool:null},yt(yl,Gi),Gi|=v;else if(v&1073741824)u.memoizedState={baseLanes:0,cachePool:null},w=T!==null?T.baseLanes:v,yt(yl,Gi),Gi|=w;else return l=T!==null?T.baseLanes|v:v,u.lanes=u.childLanes=1073741824,u.memoizedState={baseLanes:l,cachePool:null},u.updateQueue=null,yt(yl,Gi),Gi|=l,null;else T!==null?(w=T.baseLanes|v,u.memoizedState=null):w=v,yt(yl,Gi),Gi|=w;return hi(l,u,E,v),u.child}function qM(l,u){var v=u.ref;(l===null&&v!==null||l!==null&&l.ref!==v)&&(u.flags|=512,u.flags|=2097152)}function L0(l,u,v,w,E){var T=It(v)?ui:Xt.current;return T=Gr(u,T),ul(u,E),v=E0(l,u,v,w,T,E),w=A0(),l!==null&&!Hi?(u.updateQueue=l.updateQueue,u.flags&=-2053,l.lanes&=~E,vs(l,u,E)):(tn&&w&&p0(u),u.flags|=1,hi(l,u,v,E),u.child)}function KM(l,u,v,w,E){if(It(v)){var T=!0;Ks(u)}else T=!1;if(ul(u,E),u.stateNode===null)l!==null&&(l.alternate=null,u.alternate=null,u.flags|=2),cM(u,v,w),d0(u,v,w,E),w=!0;else if(l===null){var F=u.stateNode,Y=u.memoizedProps;F.props=Y;var ue=F.context,Le=v.contextType;typeof Le=="object"&&Le!==null?Le=ir(Le):(Le=It(v)?ui:Xt.current,Le=Gr(u,Le));var qe=v.getDerivedStateFromProps,gt=typeof qe=="function"||typeof F.getSnapshotBeforeUpdate=="function";gt||typeof F.UNSAFE_componentWillReceiveProps!="function"&&typeof F.componentWillReceiveProps!="function"||(Y!==w||ue!==Le)&&uM(u,F,w,Le),Zs=!1;var ot=u.memoizedState;F.state=ot,zh(u,w,F,E),ue=u.memoizedState,Y!==w||ot!==ue||Pn.current||Zs?(typeof qe=="function"&&(h0(u,v,qe,w),ue=u.memoizedState),(Y=Zs||lM(u,v,Y,w,ot,ue,Le))?(gt||typeof F.UNSAFE_componentWillMount!="function"&&typeof F.componentWillMount!="function"||(typeof F.componentWillMount=="function"&&F.componentWillMount(),typeof F.UNSAFE_componentWillMount=="function"&&F.UNSAFE_componentWillMount()),typeof F.componentDidMount=="function"&&(u.flags|=4194308)):(typeof F.componentDidMount=="function"&&(u.flags|=4194308),u.memoizedProps=w,u.memoizedState=ue),F.props=w,F.state=ue,F.context=Le,w=Y):(typeof F.componentDidMount=="function"&&(u.flags|=4194308),w=!1)}else{F=u.stateNode,rM(l,u),Y=u.memoizedProps,Le=u.type===u.elementType?Y:Mr(u.type,Y),F.props=Le,gt=u.pendingProps,ot=F.context,ue=v.contextType,typeof ue=="object"&&ue!==null?ue=ir(ue):(ue=It(v)?ui:Xt.current,ue=Gr(u,ue));var Gt=v.getDerivedStateFromProps;(qe=typeof Gt=="function"||typeof F.getSnapshotBeforeUpdate=="function")||typeof F.UNSAFE_componentWillReceiveProps!="function"&&typeof F.componentWillReceiveProps!="function"||(Y!==gt||ot!==ue)&&uM(u,F,w,ue),Zs=!1,ot=u.memoizedState,F.state=ot,zh(u,w,F,E);var tt=u.memoizedState;Y!==gt||ot!==tt||Pn.current||Zs?(typeof Gt=="function"&&(h0(u,v,Gt,w),tt=u.memoizedState),(Le=Zs||lM(u,v,Le,w,ot,tt,ue)||!1)?(qe||typeof F.UNSAFE_componentWillUpdate!="function"&&typeof F.componentWillUpdate!="function"||(typeof F.componentWillUpdate=="function"&&F.componentWillUpdate(w,tt,ue),typeof F.UNSAFE_componentWillUpdate=="function"&&F.UNSAFE_componentWillUpdate(w,tt,ue)),typeof F.componentDidUpdate=="function"&&(u.flags|=4),typeof F.getSnapshotBeforeUpdate=="function"&&(u.flags|=1024)):(typeof F.componentDidUpdate!="function"||Y===l.memoizedProps&&ot===l.memoizedState||(u.flags|=4),typeof F.getSnapshotBeforeUpdate!="function"||Y===l.memoizedProps&&ot===l.memoizedState||(u.flags|=1024),u.memoizedProps=w,u.memoizedState=tt),F.props=w,F.state=tt,F.context=ue,w=Le):(typeof F.componentDidUpdate!="function"||Y===l.memoizedProps&&ot===l.memoizedState||(u.flags|=4),typeof F.getSnapshotBeforeUpdate!="function"||Y===l.memoizedProps&&ot===l.memoizedState||(u.flags|=1024),w=!1)}return I0(l,u,v,w,T,E)}function I0(l,u,v,w,E,T){qM(l,u);var F=(u.flags&128)!==0;if(!w&&!F)return E&&Ph(u,v,!1),vs(l,u,T);w=u.stateNode,tN.current=u;var Y=F&&typeof v.getDerivedStateFromError!="function"?null:w.render();return u.flags|=1,l!==null&&F?(u.child=pl(u,l.child,null,T),u.child=pl(u,null,Y,T)):hi(l,u,Y,T),u.memoizedState=w.state,E&&Ph(u,v,!0),u.child}function ZM(l){var u=l.stateNode;u.pendingContext?ll(l,u.pendingContext,u.pendingContext!==u.context):u.context&&ll(l,u.context,!1),x0(l,u.containerInfo)}function JM(l,u,v,w,E){return dl(),y0(E),u.flags|=256,hi(l,u,v,w),u.child}var ed={dehydrated:null,treeContext:null,retryLane:0};function td(l){return{baseLanes:l,cachePool:null}}function QM(l,u,v){var w=u.pendingProps,E=on.current,T=!1,F=(u.flags&128)!==0,Y;if((Y=F)||(Y=l!==null&&l.memoizedState===null?!1:(E&2)!==0),Y?(T=!0,u.flags&=-129):(l===null||l.memoizedState!==null)&&(E|=1),yt(on,E&1),l===null)return v0(u),l=u.memoizedState,l!==null&&(l=l.dehydrated,l!==null)?(u.mode&1?qs(l)?u.lanes=8:u.lanes=1073741824:u.lanes=1,null):(E=w.children,l=w.fallback,T?(w=u.mode,T=u.child,E={mode:"hidden",children:E},!(w&1)&&T!==null?(T.childLanes=0,T.pendingProps=E):T=Sd(E,w,0,null),l=ia(l,w,v,null),T.return=u,l.return=u,T.sibling=l,u.child=T,u.child.memoizedState=td(v),u.memoizedState=ed,l):N0(u,E));if(E=l.memoizedState,E!==null){if(Y=E.dehydrated,Y!==null){if(F)return u.flags&256?(u.flags&=-257,nd(l,u,v,Error(o(422)))):u.memoizedState!==null?(u.child=l.child,u.flags|=128,null):(T=w.fallback,E=u.mode,w=Sd({mode:"visible",children:w.children},E,0,null),T=ia(T,E,v,null),T.flags|=2,w.return=u,T.return=u,w.sibling=T,u.child=w,u.mode&1&&pl(u,l.child,null,v),u.child.memoizedState=td(v),u.memoizedState=ed,T);if(!(u.mode&1))u=nd(l,u,v,null);else if(qs(Y))u=nd(l,u,v,Error(o(419)));else if(w=(v&l.childLanes)!==0,Hi||w){if(w=Mn,w!==null){switch(v&-v){case 4:T=2;break;case 16:T=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:T=32;break;case 536870912:T=268435456;break;default:T=0}w=T&(w.suspendedLanes|v)?0:T,w!==0&&w!==E.retryLane&&(E.retryLane=w,lr(l,w,-1))}$0(),u=nd(l,u,v,Error(o(421)))}else Xc(Y)?(u.flags|=128,u.child=l.child,u=pN.bind(null,l),Th(Y,u),u=null):(v=E.treeContext,fe&&(Vi=Jg(Y),Bi=u,tn=!0,wr=null,Kc=!1,v!==null&&(rr[sr++]=ps,rr[sr++]=ms,rr[sr++]=Ko,ps=v.id,ms=v.overflow,Ko=u)),u=N0(u,u.pendingProps.children),u.flags|=4096);return u}return T?(w=ew(l,u,w.children,w.fallback,v),T=u.child,E=l.child.memoizedState,T.memoizedState=E===null?td(v):{baseLanes:E.baseLanes|v,cachePool:null},T.childLanes=l.childLanes&~v,u.memoizedState=ed,w):(v=$M(l,u,w.children,v),u.memoizedState=null,v)}return T?(w=ew(l,u,w.children,w.fallback,v),T=u.child,E=l.child.memoizedState,T.memoizedState=E===null?td(v):{baseLanes:E.baseLanes|v,cachePool:null},T.childLanes=l.childLanes&~v,u.memoizedState=ed,w):(v=$M(l,u,w.children,v),u.memoizedState=null,v)}function N0(l,u){return u=Sd({mode:"visible",children:u},l.mode,0,null),u.return=l,l.child=u}function $M(l,u,v,w){var E=l.child;return l=E.sibling,v=no(E,{mode:"visible",children:v}),!(u.mode&1)&&(v.lanes=w),v.return=u,v.sibling=null,l!==null&&(w=u.deletions,w===null?(u.deletions=[l],u.flags|=16):w.push(l)),u.child=v}function ew(l,u,v,w,E){var T=u.mode;l=l.child;var F=l.sibling,Y={mode:"hidden",children:v};return!(T&1)&&u.child!==l?(v=u.child,v.childLanes=0,v.pendingProps=Y,u.deletions=null):(v=no(l,Y),v.subtreeFlags=l.subtreeFlags&14680064),F!==null?w=no(F,w):(w=ia(w,T,E,null),w.flags|=2),w.return=u,v.return=u,v.sibling=w,u.child=v,w}function nd(l,u,v,w){return w!==null&&y0(w),pl(u,l.child,null,v),l=N0(u,u.pendingProps.children),l.flags|=2,u.memoizedState=null,l}function tw(l,u,v){l.lanes|=u;var w=l.alternate;w!==null&&(w.lanes|=u),u0(l.return,u,v)}function D0(l,u,v,w,E){var T=l.memoizedState;T===null?l.memoizedState={isBackwards:u,rendering:null,renderingStartTime:0,last:w,tail:v,tailMode:E}:(T.isBackwards=u,T.rendering=null,T.renderingStartTime=0,T.last=w,T.tail=v,T.tailMode=E)}function nw(l,u,v){var w=u.pendingProps,E=w.revealOrder,T=w.tail;if(hi(l,u,w.children,v),w=on.current,w&2)w=w&1|2,u.flags|=128;else{if(l!==null&&l.flags&128)e:for(l=u.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&tw(l,v,u);else if(l.tag===19)tw(l,v,u);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===u)break e;for(;l.sibling===null;){if(l.return===null||l.return===u)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}w&=1}if(yt(on,w),!(u.mode&1))u.memoizedState=null;else switch(E){case"forwards":for(v=u.child,E=null;v!==null;)l=v.alternate,l!==null&&Wh(l)===null&&(E=v),v=v.sibling;v=E,v===null?(E=u.child,u.child=null):(E=v.sibling,v.sibling=null),D0(u,!1,E,v,T);break;case"backwards":for(v=null,E=u.child,u.child=null;E!==null;){if(l=E.alternate,l!==null&&Wh(l)===null){u.child=E;break}l=E.sibling,E.sibling=v,v=E,E=l}D0(u,!0,v,null,T);break;case"together":D0(u,!1,null,null,void 0);break;default:u.memoizedState=null}return u.child}function vs(l,u,v){if(l!==null&&(u.dependencies=l.dependencies),xl|=u.lanes,!(v&u.childLanes))return null;if(l!==null&&u.child!==l.child)throw Error(o(153));if(u.child!==null){for(l=u.child,v=no(l,l.pendingProps),u.child=v,v.return=u;l.sibling!==null;)l=l.sibling,v=v.sibling=no(l,l.pendingProps),v.return=u;v.sibling=null}return u.child}function nN(l,u,v){switch(u.tag){case 3:ZM(u),dl();break;case 5:yM(u);break;case 1:It(u.type)&&Ks(u);break;case 4:x0(u,u.stateNode.containerInfo);break;case 10:iM(u,u.type._context,u.memoizedProps.value);break;case 13:var w=u.memoizedState;if(w!==null)return w.dehydrated!==null?(yt(on,on.current&1),u.flags|=128,null):v&u.child.childLanes?QM(l,u,v):(yt(on,on.current&1),l=vs(l,u,v),l!==null?l.sibling:null);yt(on,on.current&1);break;case 19:if(w=(v&u.childLanes)!==0,l.flags&128){if(w)return nw(l,u,v);u.flags|=128}var E=u.memoizedState;if(E!==null&&(E.rendering=null,E.tail=null,E.lastEffect=null),yt(on,on.current),w)break;return null;case 22:case 23:return u.lanes=0,YM(l,u,v)}return vs(l,u,v)}function iN(l,u){switch(m0(u),u.tag){case 1:return It(u.type)&&zi(),l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 3:return gl(),Oe(Pn),Oe(Xt),M0(),l=u.flags,l&65536&&!(l&128)?(u.flags=l&-65537|128,u):null;case 5:return _0(u),null;case 13:if(Oe(on),l=u.memoizedState,l!==null&&l.dehydrated!==null){if(u.alternate===null)throw Error(o(340));dl()}return l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 19:return Oe(on),null;case 4:return gl(),null;case 10:return c0(u.type._context),null;case 22:case 23:return Q0(),null;case 24:return null;default:return null}}var id=!1,Qo=!1,rN=typeof WeakSet=="function"?WeakSet:Set,Ve=null;function rd(l,u){var v=l.ref;if(v!==null)if(typeof v=="function")try{v(null)}catch(w){Ri(l,u,w)}else v.current=null}function U0(l,u,v){try{v()}catch(w){Ri(l,u,w)}}var iw=!1;function sN(l,u){for(q(l.containerInfo),Ve=u;Ve!==null;)if(l=Ve,u=l.child,(l.subtreeFlags&1028)!==0&&u!==null)u.return=l,Ve=u;else for(;Ve!==null;){l=Ve;try{var v=l.alternate;if(l.flags&1024)switch(l.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var w=v.memoizedProps,E=v.memoizedState,T=l.stateNode,F=T.getSnapshotBeforeUpdate(l.elementType===l.type?w:Mr(l.type,w),E);T.__reactInternalSnapshotBeforeUpdate=F}break;case 3:B&&Ie(l.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(Y){Ri(l,l.return,Y)}if(u=l.sibling,u!==null){u.return=l.return,Ve=u;break}Ve=l.return}return v=iw,iw=!1,v}function $o(l,u,v){var w=u.updateQueue;if(w=w!==null?w.lastEffect:null,w!==null){var E=w=w.next;do{if((E.tag&l)===l){var T=E.destroy;E.destroy=void 0,T!==void 0&&U0(u,v,T)}E=E.next}while(E!==w)}}function au(l,u){if(u=u.updateQueue,u=u!==null?u.lastEffect:null,u!==null){var v=u=u.next;do{if((v.tag&l)===l){var w=v.create;v.destroy=w()}v=v.next}while(v!==u)}}function O0(l){var u=l.ref;if(u!==null){var v=l.stateNode;switch(l.tag){case 5:l=Q(v);break;default:l=v}typeof u=="function"?u(l):u.current=l}}function rw(l,u,v){if(Wr&&typeof Wr.onCommitFiberUnmount=="function")try{Wr.onCommitFiberUnmount(Nh,u)}catch{}switch(u.tag){case 0:case 11:case 14:case 15:if(l=u.updateQueue,l!==null&&(l=l.lastEffect,l!==null)){var w=l=l.next;do{var E=w,T=E.destroy;E=E.tag,T!==void 0&&(E&2||E&4)&&U0(u,v,T),w=w.next}while(w!==l)}break;case 1:if(rd(u,v),l=u.stateNode,typeof l.componentWillUnmount=="function")try{l.props=u.memoizedProps,l.state=u.memoizedState,l.componentWillUnmount()}catch(F){Ri(u,v,F)}break;case 5:rd(u,v);break;case 4:B?uw(l,u,v):de&&de&&(u=u.stateNode.containerInfo,v=mt(u),bt(u,v))}}function sw(l,u,v){for(var w=u;;)if(rw(l,w,v),w.child===null||B&&w.tag===4){if(w===u)break;for(;w.sibling===null;){if(w.return===null||w.return===u)return;w=w.return}w.sibling.return=w.return,w=w.sibling}else w.child.return=w,w=w.child}function ow(l){var u=l.alternate;u!==null&&(l.alternate=null,ow(u)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(u=l.stateNode,u!==null&&Ue(u)),l.stateNode=null,l.return=null,l.dependencies=null,l.memoizedProps=null,l.memoizedState=null,l.pendingProps=null,l.stateNode=null,l.updateQueue=null}function aw(l){return l.tag===5||l.tag===3||l.tag===4}function lw(l){e:for(;;){for(;l.sibling===null;){if(l.return===null||aw(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.flags&2||l.child===null||l.tag===4)continue e;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function cw(l){if(B){e:{for(var u=l.return;u!==null;){if(aw(u))break e;u=u.return}throw Error(o(160))}var v=u;switch(v.tag){case 5:u=v.stateNode,v.flags&32&&(Ge(u),v.flags&=-33),v=lw(l),F0(l,v,u);break;case 3:case 4:u=v.stateNode.containerInfo,v=lw(l),k0(l,v,u);break;default:throw Error(o(161))}}}function k0(l,u,v){var w=l.tag;if(w===5||w===6)l=l.stateNode,u?ze(v,l,u):pt(v,l);else if(w!==4&&(l=l.child,l!==null))for(k0(l,u,v),l=l.sibling;l!==null;)k0(l,u,v),l=l.sibling}function F0(l,u,v){var w=l.tag;if(w===5||w===6)l=l.stateNode,u?ut(v,l,u):Fe(v,l);else if(w!==4&&(l=l.child,l!==null))for(F0(l,u,v),l=l.sibling;l!==null;)F0(l,u,v),l=l.sibling}function uw(l,u,v){for(var w=u,E=!1,T,F;;){if(!E){E=w.return;e:for(;;){if(E===null)throw Error(o(160));switch(T=E.stateNode,E.tag){case 5:F=!1;break e;case 3:T=T.containerInfo,F=!0;break e;case 4:T=T.containerInfo,F=!0;break e}E=E.return}E=!0}if(w.tag===5||w.tag===6)sw(l,w,v),F?me(T,w.stateNode):G(T,w.stateNode);else if(w.tag===18)F?Ne(T,w.stateNode):ee(T,w.stateNode);else if(w.tag===4){if(w.child!==null){T=w.stateNode.containerInfo,F=!0,w.child.return=w,w=w.child;continue}}else if(rw(l,w,v),w.child!==null){w.child.return=w,w=w.child;continue}if(w===u)break;for(;w.sibling===null;){if(w.return===null||w.return===u)return;w=w.return,w.tag===4&&(E=!1)}w.sibling.return=w.return,w=w.sibling}}function z0(l,u){if(B){switch(u.tag){case 0:case 11:case 14:case 15:$o(3,u,u.return),au(3,u),$o(5,u,u.return);return;case 1:return;case 5:var v=u.stateNode;if(v!=null){var w=u.memoizedProps;l=l!==null?l.memoizedProps:w;var E=u.type,T=u.updateQueue;u.updateQueue=null,T!==null&&wt(v,T,E,l,w,u)}return;case 6:if(u.stateNode===null)throw Error(o(162));v=u.memoizedProps,Ce(u.stateNode,l!==null?l.memoizedProps:v,v);return;case 3:fe&&l!==null&&l.memoizedState.isDehydrated&&re(u.stateNode.containerInfo);return;case 12:return;case 13:sd(u);return;case 19:sd(u);return;case 17:return}throw Error(o(163))}switch(u.tag){case 0:case 11:case 14:case 15:$o(3,u,u.return),au(3,u),$o(5,u,u.return);return;case 12:return;case 13:sd(u);return;case 19:sd(u);return;case 3:fe&&l!==null&&l.memoizedState.isDehydrated&&re(u.stateNode.containerInfo);break;case 22:case 23:return}e:if(de){switch(u.tag){case 1:case 5:case 6:break e;case 3:case 4:u=u.stateNode,bt(u.containerInfo,u.pendingChildren);break e}throw Error(o(163))}}function sd(l){var u=l.updateQueue;if(u!==null){l.updateQueue=null;var v=l.stateNode;v===null&&(v=l.stateNode=new rN),u.forEach(function(w){var E=mN.bind(null,l,w);v.has(w)||(v.add(w),w.then(E,E))})}}function oN(l,u){for(Ve=u;Ve!==null;){u=Ve;var v=u.deletions;if(v!==null)for(var w=0;w";case ad:return":has("+(H0(l)||"")+")";case ld:return'[role="'+l.value+'"]';case ud:return'"'+l.value+'"';case cd:return'[data-testname="'+l.value+'"]';default:throw Error(o(365))}}function mw(l,u){var v=[];l=[l,0];for(var w=0;wE&&(E=F),w&=~T}if(w=E,w=On()-w,w=(120>w?120:480>w?480:1080>w?1080:1920>w?1920:3e3>w?3e3:4320>w?4320:1960*lN(w/1960))-w,10l?16:l,$s===null)var w=!1;else{if(l=$s,$s=null,md=0,At&6)throw Error(o(331));var E=At;for(At|=4,Ve=l.current;Ve!==null;){var T=Ve,F=T.child;if(Ve.flags&16){var Y=T.deletions;if(Y!==null){for(var ue=0;ueOn()-X0?ea(l,0):j0|=v),Pi(l,u)}function Ew(l,u){u===0&&(l.mode&1?(u=Lh,Lh<<=1,!(Lh&130023424)&&(Lh=4194304)):u=1);var v=di();l=yd(l,u),l!==null&&(qc(l,u,v),Pi(l,v))}function pN(l){var u=l.memoizedState,v=0;u!==null&&(v=u.retryLane),Ew(l,v)}function mN(l,u){var v=0;switch(l.tag){case 13:var w=l.stateNode,E=l.memoizedState;E!==null&&(v=E.retryLane);break;case 19:w=l.stateNode;break;default:throw Error(o(314))}w!==null&&w.delete(u),Ew(l,v)}var Aw;Aw=function(l,u,v){if(l!==null)if(l.memoizedProps!==u.pendingProps||Pn.current)Hi=!0;else{if(!(l.lanes&v)&&!(u.flags&128))return Hi=!1,nN(l,u,v);Hi=!!(l.flags&131072)}else Hi=!1,tn&&u.flags&1048576&&fM(u,Hh,u.index);switch(u.lanes=0,u.tag){case 2:var w=u.type;l!==null&&(l.alternate=null,u.alternate=null,u.flags|=2),l=u.pendingProps;var E=Gr(u,Xt.current);ul(u,v),E=E0(null,u,w,l,E,v);var T=A0();return u.flags|=1,typeof E=="object"&&E!==null&&typeof E.render=="function"&&E.$$typeof===void 0?(u.tag=1,u.memoizedState=null,u.updateQueue=null,It(w)?(T=!0,Ks(u)):T=!1,u.memoizedState=E.state!==null&&E.state!==void 0?E.state:null,f0(u),E.updater=Bh,u.stateNode=E,E._reactInternals=u,d0(u,w,l,v),u=I0(null,u,w,!0,T,v)):(u.tag=0,tn&&T&&p0(u),hi(null,u,E,v),u=u.child),u;case 16:w=u.elementType;e:{switch(l!==null&&(l.alternate=null,u.alternate=null,u.flags|=2),l=u.pendingProps,E=w._init,w=E(w._payload),u.type=w,E=u.tag=vN(w),l=Mr(w,l),E){case 0:u=L0(null,u,w,l,v);break e;case 1:u=KM(null,u,w,l,v);break e;case 11:u=WM(null,u,w,l,v);break e;case 14:u=jM(null,u,w,Mr(w.type,l),v);break e}throw Error(o(306,w,""))}return u;case 0:return w=u.type,E=u.pendingProps,E=u.elementType===w?E:Mr(w,E),L0(l,u,w,E,v);case 1:return w=u.type,E=u.pendingProps,E=u.elementType===w?E:Mr(w,E),KM(l,u,w,E,v);case 3:e:{if(ZM(u),l===null)throw Error(o(387));w=u.pendingProps,T=u.memoizedState,E=T.element,rM(l,u),zh(u,w,null,v);var F=u.memoizedState;if(w=F.element,fe&&T.isDehydrated)if(T={element:w,isDehydrated:!1,cache:F.cache,transitions:F.transitions},u.updateQueue.baseState=T,u.memoizedState=T,u.flags&256){E=Error(o(423)),u=JM(l,u,w,v,E);break e}else if(w!==E){E=Error(o(424)),u=JM(l,u,w,v,E);break e}else for(fe&&(Vi=Ch(u.stateNode.containerInfo),Bi=u,tn=!0,wr=null,Kc=!1),v=vM(u,null,w,v),u.child=v;v;)v.flags=v.flags&-3|4096,v=v.sibling;else{if(dl(),w===E){u=vs(l,u,v);break e}hi(l,u,w,v)}u=u.child}return u;case 5:return yM(u),l===null&&v0(u),w=u.type,E=u.pendingProps,T=l!==null?l.memoizedProps:null,F=E.children,ve(w,E)?F=null:T!==null&&ve(w,T)&&(u.flags|=32),qM(l,u),hi(l,u,F,v),u.child;case 6:return l===null&&v0(u),null;case 13:return QM(l,u,v);case 4:return x0(u,u.stateNode.containerInfo),w=u.pendingProps,l===null?u.child=pl(u,null,w,v):hi(l,u,w,v),u.child;case 11:return w=u.type,E=u.pendingProps,E=u.elementType===w?E:Mr(w,E),WM(l,u,w,E,v);case 7:return hi(l,u,u.pendingProps,v),u.child;case 8:return hi(l,u,u.pendingProps.children,v),u.child;case 12:return hi(l,u,u.pendingProps.children,v),u.child;case 10:e:{if(w=u.type._context,E=u.pendingProps,T=u.memoizedProps,F=E.value,iM(u,w,F),T!==null)if(jr(T.value,F)){if(T.children===E.children&&!Pn.current){u=vs(l,u,v);break e}}else for(T=u.child,T!==null&&(T.return=u);T!==null;){var Y=T.dependencies;if(Y!==null){F=T.child;for(var ue=Y.firstContext;ue!==null;){if(ue.context===w){if(T.tag===1){ue=ds(-1,v&-v),ue.tag=2;var Le=T.updateQueue;if(Le!==null){Le=Le.shared;var qe=Le.pending;qe===null?ue.next=ue:(ue.next=qe.next,qe.next=ue),Le.pending=ue}}T.lanes|=v,ue=T.alternate,ue!==null&&(ue.lanes|=v),u0(T.return,v,u),Y.lanes|=v;break}ue=ue.next}}else if(T.tag===10)F=T.type===u.type?null:T.child;else if(T.tag===18){if(F=T.return,F===null)throw Error(o(341));F.lanes|=v,Y=F.alternate,Y!==null&&(Y.lanes|=v),u0(F,v,u),F=T.sibling}else F=T.child;if(F!==null)F.return=T;else for(F=T;F!==null;){if(F===u){F=null;break}if(T=F.sibling,T!==null){T.return=F.return,F=T;break}F=F.return}T=F}hi(l,u,E.children,v),u=u.child}return u;case 9:return E=u.type,w=u.pendingProps.children,ul(u,v),E=ir(E),w=w(E),u.flags|=1,hi(l,u,w,v),u.child;case 14:return w=u.type,E=Mr(w,u.pendingProps),E=Mr(w.type,E),jM(l,u,w,E,v);case 15:return XM(l,u,u.type,u.pendingProps,v);case 17:return w=u.type,E=u.pendingProps,E=u.elementType===w?E:Mr(w,E),l!==null&&(l.alternate=null,u.alternate=null,u.flags|=2),u.tag=1,It(w)?(l=!0,Ks(u)):l=!1,ul(u,v),cM(u,w,E),d0(u,w,E,v),I0(null,u,w,!0,l,v);case 19:return nw(l,u,v);case 22:return YM(l,u,v)}throw Error(o(156,u.tag))};function Tw(l,u){return i0(l,u)}function gN(l,u,v,w){this.tag=l,this.key=v,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=u,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=w,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function cr(l,u,v,w){return new gN(l,u,v,w)}function ev(l){return l=l.prototype,!(!l||!l.isReactComponent)}function vN(l){if(typeof l=="function")return ev(l)?1:0;if(l!=null){if(l=l.$$typeof,l===_)return 11;if(l===S)return 14}return 2}function no(l,u){var v=l.alternate;return v===null?(v=cr(l.tag,u,l.key,l.mode),v.elementType=l.elementType,v.type=l.type,v.stateNode=l.stateNode,v.alternate=l,l.alternate=v):(v.pendingProps=u,v.type=l.type,v.flags=0,v.subtreeFlags=0,v.deletions=null),v.flags=l.flags&14680064,v.childLanes=l.childLanes,v.lanes=l.lanes,v.child=l.child,v.memoizedProps=l.memoizedProps,v.memoizedState=l.memoizedState,v.updateQueue=l.updateQueue,u=l.dependencies,v.dependencies=u===null?null:{lanes:u.lanes,firstContext:u.firstContext},v.sibling=l.sibling,v.index=l.index,v.ref=l.ref,v}function _d(l,u,v,w,E,T){var F=2;if(w=l,typeof l=="function")ev(l)&&(F=1);else if(typeof l=="string")F=5;else e:switch(l){case h:return ia(v.children,E,T,u);case d:F=8,E|=8;break;case p:return l=cr(12,v,u,E|2),l.elementType=p,l.lanes=T,l;case x:return l=cr(13,v,u,E),l.elementType=x,l.lanes=T,l;case g:return l=cr(19,v,u,E),l.elementType=g,l.lanes=T,l;case A:return Sd(v,E,T,u);default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case m:F=10;break e;case y:F=9;break e;case _:F=11;break e;case S:F=14;break e;case M:F=16,w=null;break e}throw Error(o(130,l==null?l:typeof l,""))}return u=cr(F,v,u,E),u.elementType=l,u.type=w,u.lanes=T,u}function ia(l,u,v,w){return l=cr(7,l,w,u),l.lanes=v,l}function Sd(l,u,v,w){return l=cr(22,l,w,u),l.elementType=A,l.lanes=v,l.stateNode={},l}function tv(l,u,v){return l=cr(6,l,null,u),l.lanes=v,l}function nv(l,u,v){return u=cr(4,l.children!==null?l.children:[],l.key,u),u.lanes=v,u.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},u}function yN(l,u,v,w,E){this.tag=u,this.containerInfo=l,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=it,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=t0(0),this.expirationTimes=t0(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=t0(0),this.identifierPrefix=w,this.onRecoverableError=E,fe&&(this.mutableSourceEagerHydrationData=null)}function bw(l,u,v,w,E,T,F,Y,ue){return l=new yN(l,u,v,Y,ue),u===1?(u=1,T===!0&&(u|=8)):u=0,T=cr(3,null,null,u),l.current=T,T.stateNode=l,T.memoizedState={element:w,isDehydrated:v,cache:null,transitions:null},f0(T),l}function Cw(l){if(!l)return Ct;l=l._reactInternals;e:{if(P(l)!==l||l.tag!==1)throw Error(o(170));var u=l;do{switch(u.tag){case 3:u=u.stateNode.context;break e;case 1:if(It(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break e}}u=u.return}while(u!==null);throw Error(o(171))}if(l.tag===1){var v=l.type;if(It(v))return fi(l,v,u)}return u}function Pw(l){var u=l._reactInternals;if(u===void 0)throw typeof l.render=="function"?Error(o(188)):(l=Object.keys(l).join(","),Error(o(268,l)));return l=j(u),l===null?null:l.stateNode}function Rw(l,u){if(l=l.memoizedState,l!==null&&l.dehydrated!==null){var v=l.retryLane;l.retryLane=v!==0&&v=Le&&T>=gt&&E<=qe&&F<=ot){l.splice(u,1);break}else if(w!==Le||v.width!==ue.width||otF){if(!(T!==gt||v.height!==ue.height||qeE)){Le>w&&(ue.width+=Le-w,ue.x=w),qeT&&(ue.height+=gt-T,ue.y=T),otv&&(v=F)),F ")+` - -No matching component was found for: - `)+l.join(" > ")}return null},t.getPublicRootInstance=function(l){if(l=l.current,!l.child)return null;switch(l.child.tag){case 5:return Q(l.child.stateNode);default:return l.child.stateNode}},t.injectIntoDevTools=function(l){if(l={bundleType:l.bundleType,version:l.version,rendererPackageName:l.rendererPackageName,rendererConfig:l.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:a.ReactCurrentDispatcher,findHostInstanceByFiber:xN,findFiberByHostInstance:l.findFiberByHostInstance||_N,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.0.0-fc46dba67-20220329"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")l=!1;else{var u=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(u.isDisabled||!u.supportsFiber)l=!0;else{try{Nh=u.inject(l),Wr=u}catch{}l=!!u.checkDCE}}return l},t.isAlreadyRendering=function(){return!1},t.observeVisibleRects=function(l,u,v,w){if(!z)throw Error(o(363));l=G0(l,u);var E=Pe(l,v,w).disconnect;return{disconnect:function(){E()}}},t.registerMutableSourceForHydration=function(l,u){var v=u._getVersion;v=v(u._source),l.mutableSourceEagerHydrationData==null?l.mutableSourceEagerHydrationData=[u,v]:l.mutableSourceEagerHydrationData.push(u,v)},t.runWithPriority=function(l,u){var v=Ot;try{return Ot=l,u()}finally{Ot=v}},t.shouldError=function(){return null},t.shouldSuspend=function(){return!1},t.updateContainer=function(l,u,v,w){var E=u.current,T=di(),F=eo(E);return v=Cw(v),u.context===null?u.context=v:u.pendingContext=v,u=ds(T,F),u.payload={element:l},w=w===void 0?null:w,w!==null&&(u.callback=w),Js(E,u),l=lr(E,F,T),l!==null&&Fh(l,E,F),F},t};lI.exports=g9;var v9=lI.exports;const y9=V_(v9),x9=n=>typeof n=="object"&&typeof n.then=="function",Ua=[];function fI(n,e,t=(i,r)=>i===r){if(n===e)return!0;if(!n||!e)return!1;const i=n.length;if(e.length!==i)return!1;for(let r=0;r0&&(s.timeout&&clearTimeout(s.timeout),s.timeout=setTimeout(s.remove,i.lifespan)),s.response;if(!t)throw s.promise}const r={keys:e,equal:i.equal,remove:()=>{const s=Ua.indexOf(r);s!==-1&&Ua.splice(s,1)},promise:(x9(n)?n:n(...e)).then(s=>{r.response=s,i.lifespan&&i.lifespan>0&&(r.timeout=setTimeout(r.remove,i.lifespan))}).catch(s=>r.error=s)};if(Ua.push(r),!t)throw r.promise}const _9=(n,e,t)=>hI(n,e,!1,t),S9=(n,e,t)=>void hI(n,e,!0,t),M9=n=>{if(n===void 0||n.length===0)Ua.splice(0,Ua.length);else{const e=Ua.find(t=>fI(n,t.keys,t.equal));e&&e.remove()}},KS={},w9=n=>void Object.assign(KS,n);function E9(n,e){function t(h,{args:d=[],attach:p,...m},y){let _=`${h[0].toUpperCase()}${h.slice(1)}`,x;if(h==="primitive"){if(m.object===void 0)throw new Error("R3F: Primitives without 'object' are invalid!");const g=m.object;x=jl(g,{type:h,root:y,attach:p,primitive:!0})}else{const g=KS[_];if(!g)throw new Error(`R3F: ${_} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if(!Array.isArray(d))throw new Error("R3F: The args prop must be an array!");x=jl(new g(...d),{type:h,root:y,attach:p,memoizedProps:{args:d}})}return x.__r3f.attach===void 0&&(x instanceof St?x.__r3f.attach="geometry":x instanceof Yn&&(x.__r3f.attach="material")),_!=="inject"&&Ly(x,m),x}function i(h,d){let p=!1;if(d){var m,y;(m=d.__r3f)!=null&&m.attach?Ry(h,d,d.__r3f.attach):d.isObject3D&&h.isObject3D&&(h.add(d),p=!0),p||(y=h.__r3f)==null||y.objects.push(d),d.__r3f||jl(d,{}),d.__r3f.parent=h,F_(d),Xl(d)}}function r(h,d,p){let m=!1;if(d){var y,_;if((y=d.__r3f)!=null&&y.attach)Ry(h,d,d.__r3f.attach);else if(d.isObject3D&&h.isObject3D){d.parent=h,d.dispatchEvent({type:"added"}),h.dispatchEvent({type:"childadded",child:d});const x=h.children.filter(S=>S!==d),g=x.indexOf(p);h.children=[...x.slice(0,g),d,...x.slice(g)],m=!0}m||(_=h.__r3f)==null||_.objects.push(d),d.__r3f||jl(d,{}),d.__r3f.parent=h,F_(d),Xl(d)}}function s(h,d,p=!1){h&&[...h].forEach(m=>o(d,m,p))}function o(h,d,p){if(d){var m,y,_;if(d.__r3f&&(d.__r3f.parent=null),(m=h.__r3f)!=null&&m.objects&&(h.__r3f.objects=h.__r3f.objects.filter(A=>A!==d)),(y=d.__r3f)!=null&&y.attach)Ub(h,d,d.__r3f.attach);else if(d.isObject3D&&h.isObject3D){var x;h.remove(d),(x=d.__r3f)!=null&&x.root&&N9(am(d),d)}const S=(_=d.__r3f)==null?void 0:_.primitive,M=!S&&(p===void 0?d.dispose!==null:p);if(!S){var g;s((g=d.__r3f)==null?void 0:g.objects,d,M),s(d.children,d,M)}if(delete d.__r3f,M&&d.dispose&&d.type!=="Scene"){const A=()=>{try{d.dispose()}catch{}};typeof IS_REACT_ACT_ENVIRONMENT>"u"?O_.unstable_scheduleCallback(O_.unstable_IdlePriority,A):A()}Xl(h)}}function a(h,d,p,m){var y;const _=(y=h.__r3f)==null?void 0:y.parent;if(!_)return;const x=t(d,p,h.__r3f.root);if(h.children){for(const g of h.children)g.__r3f&&i(x,g);h.children=h.children.filter(g=>!g.__r3f)}h.__r3f.objects.forEach(g=>i(x,g)),h.__r3f.objects=[],h.__r3f.autoRemovedBeforeAppend||o(_,h),x.parent&&(x.__r3f.autoRemovedBeforeAppend=!0),i(_,x),x.raycast&&x.__r3f.eventCount&&am(x).getState().internal.interaction.push(x),[m,m.alternate].forEach(g=>{g!==null&&(g.stateNode=x,g.ref&&(typeof g.ref=="function"?g.ref(x):g.ref.current=x))})}const c=()=>console.warn("Text is not allowed in the R3F tree! This could be stray whitespace or characters.");return{reconciler:y9({createInstance:t,removeChild:o,appendChild:i,appendInitialChild:i,insertBefore:r,supportsMutation:!0,isPrimaryRenderer:!1,supportsPersistence:!1,supportsHydration:!1,noTimeout:-1,appendChildToContainer:(h,d)=>{if(!d)return;const p=h.getState().scene;p.__r3f&&(p.__r3f.root=h,i(p,d))},removeChildFromContainer:(h,d)=>{d&&o(h.getState().scene,d)},insertInContainerBefore:(h,d,p)=>{if(!d||!p)return;const m=h.getState().scene;m.__r3f&&r(m,d,p)},getRootHostContext:()=>null,getChildHostContext:h=>h,finalizeInitialChildren(h){var d;return!!((d=h==null?void 0:h.__r3f)!=null?d:{}).handlers},prepareUpdate(h,d,p,m){var y;if(((y=h==null?void 0:h.__r3f)!=null?y:{}).primitive&&m.object&&m.object!==h)return[!0];{const{args:x=[],children:g,...S}=m,{args:M=[],children:A,...R}=p;if(!Array.isArray(x))throw new Error("R3F: the args prop must be an array!");if(x.some((L,I)=>L!==M[I]))return[!0];const C=xI(h,S,R,!0);return C.changes.length?[!1,C]:null}},commitUpdate(h,[d,p],m,y,_,x){d?a(h,m,_,x):Ly(h,p)},commitMount(h,d,p,m){var y;const _=(y=h.__r3f)!=null?y:{};h.raycast&&_.handlers&&_.eventCount&&am(h).getState().internal.interaction.push(h)},getPublicInstance:h=>h,prepareForCommit:()=>null,preparePortalMount:h=>jl(h.getState().scene),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance(h){var d;const{attach:p,parent:m}=(d=h.__r3f)!=null?d:{};p&&m&&Ub(m,h,p),h.isObject3D&&(h.visible=!1),Xl(h)},unhideInstance(h,d){var p;const{attach:m,parent:y}=(p=h.__r3f)!=null?p:{};m&&y&&Ry(y,h,m),(h.isObject3D&&d.visible==null||d.visible)&&(h.visible=!0),Xl(h)},createTextInstance:c,hideTextInstance:c,unhideTextInstance:c,getCurrentEventPriority:()=>e?e():mc.DefaultEventPriority,beforeActiveInstanceBlur:()=>{},afterActiveInstanceBlur:()=>{},detachDeletedInstance:()=>{},now:typeof performance<"u"&&qt.fun(performance.now)?performance.now:qt.fun(Date.now)?Date.now:()=>0,scheduleTimeout:qt.fun(setTimeout)?setTimeout:void 0,cancelTimeout:qt.fun(clearTimeout)?clearTimeout:void 0}),applyProps:Ly}}var Lb,Ib;const Py=n=>"colorSpace"in n||"outputColorSpace"in n,dI=()=>{var n;return(n=KS.ColorManagement)!=null?n:null},pI=n=>n&&n.isOrthographicCamera,A9=n=>n&&n.hasOwnProperty("current"),Mh=typeof window<"u"&&((Lb=window.document)!=null&&Lb.createElement||((Ib=window.navigator)==null?void 0:Ib.product)==="ReactNative")?W.useLayoutEffect:W.useEffect;function mI(n){const e=W.useRef(n);return Mh(()=>void(e.current=n),[n]),e}function T9({set:n}){return Mh(()=>(n(new Promise(()=>null)),()=>n(!1)),[n]),null}class gI extends W.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}gI.getDerivedStateFromError=()=>({error:!0});const vI="__default",Nb=new Map,b9=n=>n&&!!n.memoized&&!!n.changes;function yI(n){var e;const t=typeof window<"u"?(e=window.devicePixelRatio)!=null?e:2:1;return Array.isArray(n)?Math.min(Math.max(n[0],t),n[1]):n}const Ou=n=>{var e;return(e=n.__r3f)==null?void 0:e.root.getState()};function am(n){let e=n.__r3f.root;for(;e.getState().previousRoot;)e=e.getState().previousRoot;return e}const qt={obj:n=>n===Object(n)&&!qt.arr(n)&&typeof n!="function",fun:n=>typeof n=="function",str:n=>typeof n=="string",num:n=>typeof n=="number",boo:n=>typeof n=="boolean",und:n=>n===void 0,arr:n=>Array.isArray(n),equ(n,e,{arrays:t="shallow",objects:i="reference",strict:r=!0}={}){if(typeof n!=typeof e||!!n!=!!e)return!1;if(qt.str(n)||qt.num(n)||qt.boo(n))return n===e;const s=qt.obj(n);if(s&&i==="reference")return n===e;const o=qt.arr(n);if(o&&t==="reference")return n===e;if((o||s)&&n===e)return!0;let a;for(a in n)if(!(a in e))return!1;if(s&&t==="shallow"&&i==="shallow"){for(a in r?e:n)if(!qt.equ(n[a],e[a],{strict:r,objects:"reference"}))return!1}else for(a in r?e:n)if(n[a]!==e[a])return!1;if(qt.und(a)){if(o&&n.length===0&&e.length===0||s&&Object.keys(n).length===0&&Object.keys(e).length===0)return!0;if(n!==e)return!1}return!0}};function C9(n){const e={nodes:{},materials:{}};return n&&n.traverse(t=>{t.name&&(e.nodes[t.name]=t),t.material&&!e.materials[t.material.name]&&(e.materials[t.material.name]=t.material)}),e}function P9(n){n.dispose&&n.type!=="Scene"&&n.dispose();for(const e in n)e.dispose==null||e.dispose(),delete n[e]}function jl(n,e){const t=n;return t.__r3f={type:"",root:null,previousAttach:null,memoizedProps:{},eventCount:0,handlers:{},objects:[],parent:null,...e},n}function k_(n,e){let t=n;if(e.includes("-")){const i=e.split("-"),r=i.pop();return t=i.reduce((s,o)=>s[o],n),{target:t,key:r}}else return{target:t,key:e}}const Db=/-\d+$/;function Ry(n,e,t){if(qt.str(t)){if(Db.test(t)){const s=t.replace(Db,""),{target:o,key:a}=k_(n,s);Array.isArray(o[a])||(o[a]=[])}const{target:i,key:r}=k_(n,t);e.__r3f.previousAttach=i[r],i[r]=e}else e.__r3f.previousAttach=t(n,e)}function Ub(n,e,t){var i,r;if(qt.str(t)){const{target:s,key:o}=k_(n,t),a=e.__r3f.previousAttach;a===void 0?delete s[o]:s[o]=a}else(i=e.__r3f)==null||i.previousAttach==null||i.previousAttach(n,e);(r=e.__r3f)==null||delete r.previousAttach}function xI(n,{children:e,key:t,ref:i,...r},{children:s,key:o,ref:a,...c}={},f=!1){const h=n.__r3f,d=Object.entries(r),p=[];if(f){const y=Object.keys(c);for(let _=0;_{var x;if((x=n.__r3f)!=null&&x.primitive&&y==="object"||qt.equ(_,c[y]))return;if(/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(y))return p.push([y,_,!0,[]]);let g=[];y.includes("-")&&(g=y.split("-")),p.push([y,_,!1,g]);for(const S in r){const M=r[S];S.startsWith(`${y}-`)&&p.push([S,M,!1,S.split("-")])}});const m={...r};return h!=null&&h.memoizedProps&&h!=null&&h.memoizedProps.args&&(m.args=h.memoizedProps.args),h!=null&&h.memoizedProps&&h!=null&&h.memoizedProps.attach&&(m.attach=h.memoizedProps.attach),{memoized:m,changes:p}}const R9=typeof process<"u"&&!1;function Ly(n,e){var t;const i=n.__r3f,r=i==null?void 0:i.root,s=r==null||r.getState==null?void 0:r.getState(),{memoized:o,changes:a}=b9(e)?e:xI(n,e),c=i==null?void 0:i.eventCount;n.__r3f&&(n.__r3f.memoizedProps=o);for(let h=0;hg[S],n),!(x&&x.set))){const[g,...S]=y.reverse();_=S.reverse().reduce((M,A)=>M[A],n),d=g}if(p===vI+"remove")if(_.constructor){let g=Nb.get(_.constructor);g||(g=new _.constructor,Nb.set(_.constructor,g)),p=g[d]}else p=0;if(m&&i)p?i.handlers[d]=p:delete i.handlers[d],i.eventCount=Object.keys(i.handlers).length;else if(x&&x.set&&(x.copy||x instanceof Va)){if(Array.isArray(p))x.fromArray?x.fromArray(p):x.set(...p);else if(x.copy&&p&&p.constructor&&(R9?x.constructor.name===p.constructor.name:x.constructor===p.constructor))x.copy(p);else if(p!==void 0){const g=x instanceof je;!g&&x.setScalar?x.setScalar(p):x instanceof Va&&p instanceof Va?x.mask=p.mask:x.set(p),!dI()&&s&&!s.linear&&g&&x.convertSRGBToLinear()}}else if(_[d]=p,_[d]instanceof $t&&_[d].format===xi&&_[d].type===ls&&s){const g=_[d];Py(g)&&Py(s.gl)?g.colorSpace=s.gl.outputColorSpace:g.encoding=s.gl.outputEncoding}Xl(n)}if(i&&i.parent&&n.raycast&&c!==i.eventCount){const h=am(n).getState().internal,d=h.interaction.indexOf(n);d>-1&&h.interaction.splice(d,1),i.eventCount&&h.interaction.push(n)}return!(a.length===1&&a[0][0]==="onUpdate")&&a.length&&(t=n.__r3f)!=null&&t.parent&&F_(n),n}function Xl(n){var e,t;const i=(e=n.__r3f)==null||(t=e.root)==null||t.getState==null?void 0:t.getState();i&&i.internal.frames===0&&i.invalidate()}function F_(n){n.onUpdate==null||n.onUpdate(n)}function L9(n,e){n.manual||(pI(n)?(n.left=e.width/-2,n.right=e.width/2,n.top=e.height/2,n.bottom=e.height/-2):n.aspect=e.width/e.height,n.updateProjectionMatrix(),n.updateMatrixWorld())}function kp(n){return(n.eventObject||n.object).uuid+"/"+n.index+n.instanceId}function I9(){var n;const e=typeof self<"u"&&self||typeof window<"u"&&window;if(!e)return mc.DefaultEventPriority;switch((n=e.event)==null?void 0:n.type){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return mc.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return mc.ContinuousEventPriority;default:return mc.DefaultEventPriority}}function _I(n,e,t,i){const r=t.get(e);r&&(t.delete(e),t.size===0&&(n.delete(i),r.target.releasePointerCapture(i)))}function N9(n,e){const{internal:t}=n.getState();t.interaction=t.interaction.filter(i=>i!==e),t.initialHits=t.initialHits.filter(i=>i!==e),t.hovered.forEach((i,r)=>{(i.eventObject===e||i.object===e)&&t.hovered.delete(r)}),t.capturedMap.forEach((i,r)=>{_I(t.capturedMap,e,i,r)})}function D9(n){function e(c){const{internal:f}=n.getState(),h=c.offsetX-f.initialClick[0],d=c.offsetY-f.initialClick[1];return Math.round(Math.sqrt(h*h+d*d))}function t(c){return c.filter(f=>["Move","Over","Enter","Out","Leave"].some(h=>{var d;return(d=f.__r3f)==null?void 0:d.handlers["onPointer"+h]}))}function i(c,f){const h=n.getState(),d=new Set,p=[],m=f?f(h.internal.interaction):h.internal.interaction;for(let g=0;g{const M=Ou(g.object),A=Ou(S.object);return!M||!A?g.distance-S.distance:A.events.priority-M.events.priority||g.distance-S.distance}).filter(g=>{const S=kp(g);return d.has(S)?!1:(d.add(S),!0)});h.events.filter&&(_=h.events.filter(_,h));for(const g of _){let S=g.object;for(;S;){var x;(x=S.__r3f)!=null&&x.eventCount&&p.push({...g,eventObject:S}),S=S.parent}}if("pointerId"in c&&h.internal.capturedMap.has(c.pointerId))for(let g of h.internal.capturedMap.get(c.pointerId).values())d.has(kp(g.intersection))||p.push(g.intersection);return p}function r(c,f,h,d){const p=n.getState();if(c.length){const m={stopped:!1};for(const y of c){const _=Ou(y.object)||p,{raycaster:x,pointer:g,camera:S,internal:M}=_,A=new O(g.x,g.y,0).unproject(S),R=b=>{var D,j;return(D=(j=M.capturedMap.get(b))==null?void 0:j.has(y.eventObject))!=null?D:!1},C=b=>{const D={intersection:y,target:f.target};M.capturedMap.has(b)?M.capturedMap.get(b).set(y.eventObject,D):M.capturedMap.set(b,new Map([[y.eventObject,D]])),f.target.setPointerCapture(b)},L=b=>{const D=M.capturedMap.get(b);D&&_I(M.capturedMap,y.eventObject,D,b)};let I={};for(let b in f){let D=f[b];typeof D!="function"&&(I[b]=D)}let P={...y,...I,pointer:g,intersections:c,stopped:m.stopped,delta:h,unprojectedPoint:A,ray:x.ray,camera:S,stopPropagation(){const b="pointerId"in f&&M.capturedMap.get(f.pointerId);if((!b||b.has(y.eventObject))&&(P.stopped=m.stopped=!0,M.hovered.size&&Array.from(M.hovered.values()).find(D=>D.eventObject===y.eventObject))){const D=c.slice(0,c.indexOf(y));s([...D,y])}},target:{hasPointerCapture:R,setPointerCapture:C,releasePointerCapture:L},currentTarget:{hasPointerCapture:R,setPointerCapture:C,releasePointerCapture:L},nativeEvent:f};if(d(P),m.stopped===!0)break}}return c}function s(c){const{internal:f}=n.getState();for(const h of f.hovered.values())if(!c.length||!c.find(d=>d.object===h.object&&d.index===h.index&&d.instanceId===h.instanceId)){const p=h.eventObject.__r3f,m=p==null?void 0:p.handlers;if(f.hovered.delete(kp(h)),p!=null&&p.eventCount){const y={...h,intersections:c};m.onPointerOut==null||m.onPointerOut(y),m.onPointerLeave==null||m.onPointerLeave(y)}}}function o(c,f){for(let h=0;hs([]);case"onLostPointerCapture":return f=>{const{internal:h}=n.getState();"pointerId"in f&&h.capturedMap.has(f.pointerId)&&requestAnimationFrame(()=>{h.capturedMap.has(f.pointerId)&&(h.capturedMap.delete(f.pointerId),s([]))})}}return function(h){const{onPointerMissed:d,internal:p}=n.getState();p.lastEvent.current=h;const m=c==="onPointerMove",y=c==="onClick"||c==="onContextMenu"||c==="onDoubleClick",x=i(h,m?t:void 0),g=y?e(h):0;c==="onPointerDown"&&(p.initialClick=[h.offsetX,h.offsetY],p.initialHits=x.map(M=>M.eventObject)),y&&!x.length&&g<=2&&(o(h,p.interaction),d&&d(h)),m&&s(x);function S(M){const A=M.eventObject,R=A.__r3f,C=R==null?void 0:R.handlers;if(R!=null&&R.eventCount)if(m){if(C.onPointerOver||C.onPointerEnter||C.onPointerOut||C.onPointerLeave){const L=kp(M),I=p.hovered.get(L);I?I.stopped&&M.stopPropagation():(p.hovered.set(L,M),C.onPointerOver==null||C.onPointerOver(M),C.onPointerEnter==null||C.onPointerEnter(M))}C.onPointerMove==null||C.onPointerMove(M)}else{const L=C[c];L?(!y||p.initialHits.includes(A))&&(o(h,p.interaction.filter(I=>!p.initialHits.includes(I))),L(M)):y&&p.initialHits.includes(A)&&o(h,p.interaction.filter(I=>!p.initialHits.includes(I)))}}r(x,h,g,S)}}return{handlePointer:a}}const SI=n=>!!(n!=null&&n.render),MI=W.createContext(null),U9=(n,e)=>{const t=aI((a,c)=>{const f=new O,h=new O,d=new O;function p(g=c().camera,S=h,M=c().size){const{width:A,height:R,top:C,left:L}=M,I=A/R;S instanceof O?d.copy(S):d.set(...S);const P=g.getWorldPosition(f).distanceTo(d);if(pI(g))return{width:A/g.zoom,height:R/g.zoom,top:C,left:L,factor:1,distance:P,aspect:I};{const b=g.fov*Math.PI/180,D=2*Math.tan(b/2)*P,j=D*(A/R);return{width:j,height:D,top:C,left:L,factor:A/j,distance:P,aspect:I}}}let m;const y=g=>a(S=>({performance:{...S.performance,current:g}})),_=new pe;return{set:a,get:c,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},xr:null,scene:null,invalidate:(g=1)=>n(c(),g),advance:(g,S)=>e(g,S,c()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new jS,pointer:_,mouse:_,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{const g=c();m&&clearTimeout(m),g.performance.current!==g.performance.min&&y(g.performance.min),m=setTimeout(()=>y(c().performance.max),g.performance.debounce)}},size:{width:0,height:0,top:0,left:0,updateStyle:!1},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:p},setEvents:g=>a(S=>({...S,events:{...S.events,...g}})),setSize:(g,S,M,A,R)=>{const C=c().camera,L={width:g,height:S,top:A||0,left:R||0,updateStyle:M};a(I=>({size:L,viewport:{...I.viewport,...p(C,h,L)}}))},setDpr:g=>a(S=>{const M=yI(g);return{viewport:{...S.viewport,dpr:M,initialDpr:S.viewport.initialDpr||M}}}),setFrameloop:(g="always")=>{const S=c().clock;S.stop(),S.elapsedTime=0,g!=="never"&&(S.start(),S.elapsedTime=0),a(()=>({frameloop:g}))},previousRoot:void 0,internal:{active:!1,priority:0,frames:0,lastEvent:W.createRef(),interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,subscribe:(g,S,M)=>{const A=c().internal;return A.priority=A.priority+(S>0?1:0),A.subscribers.push({ref:g,priority:S,store:M}),A.subscribers=A.subscribers.sort((R,C)=>R.priority-C.priority),()=>{const R=c().internal;R!=null&&R.subscribers&&(R.priority=R.priority-(S>0?1:0),R.subscribers=R.subscribers.filter(C=>C.ref!==g))}}}}}),i=t.getState();let r=i.size,s=i.viewport.dpr,o=i.camera;return t.subscribe(()=>{const{camera:a,size:c,viewport:f,gl:h,set:d}=t.getState();if(c.width!==r.width||c.height!==r.height||f.dpr!==s){var p;r=c,s=f.dpr,L9(a,c),h.setPixelRatio(f.dpr);const m=(p=c.updateStyle)!=null?p:typeof HTMLCanvasElement<"u"&&h.domElement instanceof HTMLCanvasElement;h.setSize(c.width,c.height,m)}a!==o&&(o=a,d(m=>({viewport:{...m.viewport,...m.viewport.getCurrentViewport(a)}})))}),t.subscribe(a=>n(a)),t};let Fp,O9=new Set,k9=new Set,F9=new Set;function Iy(n,e){if(n.size)for(const{callback:t}of n.values())t(e)}function ku(n,e){switch(n){case"before":return Iy(O9,e);case"after":return Iy(k9,e);case"tail":return Iy(F9,e)}}let Ny,Dy;function Uy(n,e,t){let i=e.clock.getDelta();for(e.frameloop==="never"&&typeof n=="number"&&(i=n-e.clock.elapsedTime,e.clock.oldTime=e.clock.elapsedTime,e.clock.elapsedTime=n),Ny=e.internal.subscribers,Fp=0;Fp0)&&!((h=s.gl.xr)!=null&&h.isPresenting)&&(i+=Uy(f,s))}if(t=!1,ku("after",f),i===0)return ku("tail",f),e=!1,cancelAnimationFrame(r)}function a(f,h=1){var d;if(!f)return n.forEach(p=>a(p.store.getState(),h));(d=f.gl.xr)!=null&&d.isPresenting||!f.internal.active||f.frameloop==="never"||(h>1?f.internal.frames=Math.min(60,f.internal.frames+h):t?f.internal.frames=2:f.internal.frames=1,e||(e=!0,requestAnimationFrame(o)))}function c(f,h=!0,d,p){if(h&&ku("before",f),d)Uy(f,d,p);else for(const m of n.values())Uy(f,m.store.getState());h&&ku("after",f)}return{loop:o,invalidate:a,advance:c}}function wI(){const n=W.useContext(MI);if(!n)throw new Error("R3F: Hooks can only be used within the Canvas component!");return n}function Yi(n=t=>t,e){return wI()(n,e)}function ZS(n,e=0){const t=wI(),i=t.getState().internal.subscribe,r=mI(n);return Mh(()=>i(r,e,t),[e,i,t]),null}const Ob=new WeakMap;function EI(n,e){return function(t,...i){let r=Ob.get(t);return r||(r=new t,Ob.set(t,r)),n&&n(r),Promise.all(i.map(s=>new Promise((o,a)=>r.load(s,c=>{c.scene&&Object.assign(c,C9(c.scene)),o(c)},e,c=>a(new Error(`Could not load ${s}: ${c==null?void 0:c.message}`))))))}}function wh(n,e,t,i){const r=Array.isArray(e)?e:[e],s=_9(EI(t,i),[n,...r],{equal:qt.equ});return Array.isArray(e)?s:s[0]}wh.preload=function(n,e,t){const i=Array.isArray(e)?e:[e];return S9(EI(t),[n,...i])};wh.clear=function(n,e){const t=Array.isArray(e)?e:[e];return M9([n,...t])};const Uc=new Map,{invalidate:kb,advance:Fb}=z9(Uc),{reconciler:qm,applyProps:$r}=E9(Uc,I9),Wl={objects:"shallow",strict:!1},B9=(n,e)=>{const t=typeof n=="function"?n(e):n;return SI(t)?t:new hL({powerPreference:"high-performance",canvas:e,antialias:!0,alpha:!0,...n})};function V9(n,e){const t=typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement;if(e){const{width:i,height:r,top:s,left:o,updateStyle:a=t}=e;return{width:i,height:r,top:s,left:o,updateStyle:a}}else if(typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement&&n.parentElement){const{width:i,height:r,top:s,left:o}=n.parentElement.getBoundingClientRect();return{width:i,height:r,top:s,left:o,updateStyle:t}}else if(typeof OffscreenCanvas<"u"&&n instanceof OffscreenCanvas)return{width:n.width,height:n.height,top:0,left:0,updateStyle:t};return{width:0,height:0,top:0,left:0}}function H9(n){const e=Uc.get(n),t=e==null?void 0:e.fiber,i=e==null?void 0:e.store;e&&console.warn("R3F.createRoot should only be called once!");const r=typeof reportError=="function"?reportError:console.error,s=i||U9(kb,Fb),o=t||qm.createContainer(s,mc.ConcurrentRoot,null,!1,null,"",r,null);e||Uc.set(n,{fiber:o,store:s});let a,c=!1,f;return{configure(h={}){let{gl:d,size:p,scene:m,events:y,onCreated:_,shadows:x=!1,linear:g=!1,flat:S=!1,legacy:M=!1,orthographic:A=!1,frameloop:R="always",dpr:C=[1,2],performance:L,raycaster:I,camera:P,onPointerMissed:b}=h,D=s.getState(),j=D.gl;D.gl||D.set({gl:j=B9(d,n)});let X=D.raycaster;X||D.set({raycaster:X=new rI});const{params:te,...ne}=I||{};if(qt.equ(ne,X,Wl)||$r(X,{...ne}),qt.equ(te,X.params,Wl)||$r(X,{params:{...X.params,...te}}),!D.camera||D.camera===f&&!qt.equ(f,P,Wl)){f=P;const J=P instanceof ph,$=J?P:A?new Dr(0,0,0,0,.1,1e3):new sn(75,0,.1,1e3);J||($.position.z=5,P&&($r($,P),("aspect"in P||"left"in P||"right"in P||"bottom"in P||"top"in P)&&($.manual=!0,$.updateProjectionMatrix())),!D.camera&&!(P!=null&&P.rotation)&&$.lookAt(0,0,0)),D.set({camera:$}),X.camera=$}if(!D.scene){let J;m instanceof Wm?J=m:(J=new Wm,m&&$r(J,m)),D.set({scene:jl(J)})}if(!D.xr){var Q;const J=(De,oe)=>{const ve=s.getState();ve.frameloop!=="never"&&Fb(De,!0,ve,oe)},$=()=>{const De=s.getState();De.gl.xr.enabled=De.gl.xr.isPresenting,De.gl.xr.setAnimationLoop(De.gl.xr.isPresenting?J:null),De.gl.xr.isPresenting||kb(De)},_e={connect(){const De=s.getState().gl;De.xr.addEventListener("sessionstart",$),De.xr.addEventListener("sessionend",$)},disconnect(){const De=s.getState().gl;De.xr.removeEventListener("sessionstart",$),De.xr.removeEventListener("sessionend",$)}};typeof((Q=j.xr)==null?void 0:Q.addEventListener)=="function"&&_e.connect(),D.set({xr:_e})}if(j.shadowMap){const J=j.shadowMap.enabled,$=j.shadowMap.type;if(j.shadowMap.enabled=!!x,qt.boo(x))j.shadowMap.type=of;else if(qt.str(x)){var le;const _e={basic:YR,percentage:Eg,soft:of,variance:Pr};j.shadowMap.type=(le=_e[x])!=null?le:of}else qt.obj(x)&&Object.assign(j.shadowMap,x);(J!==j.shadowMap.enabled||$!==j.shadowMap.type)&&(j.shadowMap.needsUpdate=!0)}const k=dI();k&&("enabled"in k?k.enabled=!M:"legacyMode"in k&&(k.legacyMode=M)),c||$r(j,{outputEncoding:g?3e3:3001,toneMapping:S?os:aS}),D.legacy!==M&&D.set(()=>({legacy:M})),D.linear!==g&&D.set(()=>({linear:g})),D.flat!==S&&D.set(()=>({flat:S})),d&&!qt.fun(d)&&!SI(d)&&!qt.equ(d,j,Wl)&&$r(j,d),y&&!D.events.handlers&&D.set({events:y(s)});const q=V9(n,p);return qt.equ(q,D.size,Wl)||D.setSize(q.width,q.height,q.updateStyle,q.top,q.left),C&&D.viewport.dpr!==yI(C)&&D.setDpr(C),D.frameloop!==R&&D.setFrameloop(R),D.onPointerMissed||D.set({onPointerMissed:b}),L&&!qt.equ(L,D.performance,Wl)&&D.set(J=>({performance:{...J.performance,...L}})),a=_,c=!0,this},render(h){return c||this.configure(),qm.updateContainer(H.jsx(G9,{store:s,children:h,onCreated:a,rootElement:n}),o,null,()=>{}),s},unmount(){AI(n)}}}function G9({store:n,children:e,onCreated:t,rootElement:i}){return Mh(()=>{const r=n.getState();r.set(s=>({internal:{...s.internal,active:!0}})),t&&t(r),n.getState().events.connected||r.events.connect==null||r.events.connect(i)},[]),H.jsx(MI.Provider,{value:n,children:e})}function AI(n,e){const t=Uc.get(n),i=t==null?void 0:t.fiber;if(i){const r=t==null?void 0:t.store.getState();r&&(r.internal.active=!1),qm.updateContainer(null,i,null,()=>{r&&setTimeout(()=>{try{var s,o,a,c;r.events.disconnect==null||r.events.disconnect(),(s=r.gl)==null||(o=s.renderLists)==null||o.dispose==null||o.dispose(),(a=r.gl)==null||a.forceContextLoss==null||a.forceContextLoss(),(c=r.gl)!=null&&c.xr&&r.xr.disconnect(),P9(r),Uc.delete(n),e&&e(n)}catch{}},500)})}}qm.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:W.version});function z_(n,e,t){var i,r,s,o,a;e==null&&(e=100);function c(){var h=Date.now()-o;h=0?i=setTimeout(c,e-h):(i=null,t||(a=n.apply(s,r),s=r=null))}var f=function(){s=this,r=arguments,o=Date.now();var h=t&&!i;return i||(i=setTimeout(c,e)),h&&(a=n.apply(s,r),s=r=null),a};return f.clear=function(){i&&(clearTimeout(i),i=null)},f.flush=function(){i&&(a=n.apply(s,r),s=r=null,clearTimeout(i),i=null)},f}z_.debounce=z_;var W9=z_;const zb=V_(W9);function j9(n){let{debounce:e,scroll:t,polyfill:i,offsetSize:r}=n===void 0?{debounce:0,scroll:!1,offsetSize:!1}:n;const s=i||(typeof window>"u"?class{}:window.ResizeObserver);if(!s)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[o,a]=W.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),c=W.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:o}),f=e?typeof e=="number"?e:e.scroll:null,h=e?typeof e=="number"?e:e.resize:null,d=W.useRef(!1);W.useEffect(()=>(d.current=!0,()=>void(d.current=!1)));const[p,m,y]=W.useMemo(()=>{const S=()=>{if(!c.current.element)return;const{left:M,top:A,width:R,height:C,bottom:L,right:I,x:P,y:b}=c.current.element.getBoundingClientRect(),D={left:M,top:A,width:R,height:C,bottom:L,right:I,x:P,y:b};c.current.element instanceof HTMLElement&&r&&(D.height=c.current.element.offsetHeight,D.width=c.current.element.offsetWidth),Object.freeze(D),d.current&&!K9(c.current.lastBounds,D)&&a(c.current.lastBounds=D)};return[S,h?zb(S,h):S,f?zb(S,f):S]},[a,r,f,h]);function _(){c.current.scrollContainers&&(c.current.scrollContainers.forEach(S=>S.removeEventListener("scroll",y,!0)),c.current.scrollContainers=null),c.current.resizeObserver&&(c.current.resizeObserver.disconnect(),c.current.resizeObserver=null)}function x(){c.current.element&&(c.current.resizeObserver=new s(y),c.current.resizeObserver.observe(c.current.element),t&&c.current.scrollContainers&&c.current.scrollContainers.forEach(S=>S.addEventListener("scroll",y,{capture:!0,passive:!0})))}const g=S=>{!S||S===c.current.element||(_(),c.current.element=S,c.current.scrollContainers=TI(S),x())};return Y9(y,!!t),X9(m),W.useEffect(()=>{_(),x()},[t,y,m]),W.useEffect(()=>_,[]),[g,o,p]}function X9(n){W.useEffect(()=>{const e=n;return window.addEventListener("resize",e),()=>void window.removeEventListener("resize",e)},[n])}function Y9(n,e){W.useEffect(()=>{if(e){const t=n;return window.addEventListener("scroll",t,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",t,!0)}},[n,e])}function TI(n){const e=[];if(!n||n===document.body)return e;const{overflow:t,overflowX:i,overflowY:r}=window.getComputedStyle(n);return[t,i,r].some(s=>s==="auto"||s==="scroll")&&e.push(n),[...e,...TI(n.parentElement)]}const q9=["x","y","top","bottom","left","right","width","height"],K9=(n,e)=>q9.every(t=>n[t]===e[t]);var Z9=Object.defineProperty,J9=Object.defineProperties,Q9=Object.getOwnPropertyDescriptors,Bb=Object.getOwnPropertySymbols,$9=Object.prototype.hasOwnProperty,e7=Object.prototype.propertyIsEnumerable,Vb=(n,e,t)=>e in n?Z9(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Hb=(n,e)=>{for(var t in e||(e={}))$9.call(e,t)&&Vb(n,t,e[t]);if(Bb)for(var t of Bb(e))e7.call(e,t)&&Vb(n,t,e[t]);return n},t7=(n,e)=>J9(n,Q9(e)),Gb,Wb;typeof window<"u"&&((Gb=window.document)!=null&&Gb.createElement||((Wb=window.navigator)==null?void 0:Wb.product)==="ReactNative")?W.useLayoutEffect:W.useEffect;function bI(n,e,t){if(!n)return;if(t(n)===!0)return n;let i=e?n.return:n.child;for(;i;){const r=bI(i,e,t);if(r)return r;i=e?null:i.sibling}}function CI(n){try{return Object.defineProperties(n,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return n}}const jb=console.error;console.error=function(){const n=[...arguments].join("");if(n!=null&&n.startsWith("Warning:")&&n.includes("useContext")){console.error=jb;return}return jb.apply(this,arguments)};const JS=CI(W.createContext(null));class PI extends W.Component{render(){return W.createElement(JS.Provider,{value:this._reactInternals},this.props.children)}}function n7(){const n=W.useContext(JS);if(n===null)throw new Error("its-fine: useFiber must be called within a !");const e=W.useId();return W.useMemo(()=>{for(const i of[n,n==null?void 0:n.alternate]){if(!i)continue;const r=bI(i,!1,s=>{let o=s.memoizedState;for(;o;){if(o.memoizedState===e)return!0;o=o.next}});if(r)return r}},[n,e])}function i7(){const n=n7(),[e]=W.useState(()=>new Map);e.clear();let t=n;for(;t;){if(t.type&&typeof t.type=="object"){const r=t.type._context===void 0&&t.type.Provider===t.type?t.type:t.type._context;r&&r!==JS&&!e.has(r)&&e.set(r,W.useContext(CI(r)))}t=t.return}return e}function r7(){const n=i7();return W.useMemo(()=>Array.from(n.keys()).reduce((e,t)=>i=>W.createElement(e,null,W.createElement(t.Provider,t7(Hb({},i),{value:n.get(t)}))),e=>W.createElement(PI,Hb({},e))),[n])}const Oy={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function s7(n){const{handlePointer:e}=D9(n);return{priority:1,enabled:!0,compute(t,i,r){i.pointer.set(t.offsetX/i.size.width*2-1,-(t.offsetY/i.size.height)*2+1),i.raycaster.setFromCamera(i.pointer,i.camera)},connected:void 0,handlers:Object.keys(Oy).reduce((t,i)=>({...t,[i]:e(i)}),{}),update:()=>{var t;const{events:i,internal:r}=n.getState();(t=r.lastEvent)!=null&&t.current&&i.handlers&&i.handlers.onPointerMove(r.lastEvent.current)},connect:t=>{var i;const{set:r,events:s}=n.getState();s.disconnect==null||s.disconnect(),r(o=>({events:{...o.events,connected:t}})),Object.entries((i=s.handlers)!=null?i:[]).forEach(([o,a])=>{const[c,f]=Oy[o];t.addEventListener(c,a,{passive:f})})},disconnect:()=>{const{set:t,events:i}=n.getState();if(i.connected){var r;Object.entries((r=i.handlers)!=null?r:[]).forEach(([s,o])=>{if(i&&i.connected instanceof HTMLElement){const[a]=Oy[s];i.connected.removeEventListener(a,o)}}),t(s=>({events:{...s.events,connected:void 0}}))}}}}const o7=W.forwardRef(function({children:e,fallback:t,resize:i,style:r,gl:s,events:o=s7,eventSource:a,eventPrefix:c,shadows:f,linear:h,flat:d,legacy:p,orthographic:m,frameloop:y,dpr:_,performance:x,raycaster:g,camera:S,scene:M,onPointerMissed:A,onCreated:R,...C},L){W.useMemo(()=>w9(d9),[]);const I=r7(),[P,b]=j9({scroll:!0,debounce:{scroll:50,resize:0},...i}),D=W.useRef(null),j=W.useRef(null);W.useImperativeHandle(L,()=>D.current);const X=mI(A),[te,ne]=W.useState(!1),[Q,le]=W.useState(!1);if(te)throw te;if(Q)throw Q;const k=W.useRef(null);Mh(()=>{const J=D.current;b.width>0&&b.height>0&&J&&(k.current||(k.current=H9(J)),k.current.configure({gl:s,events:o,shadows:f,linear:h,flat:d,legacy:p,orthographic:m,frameloop:y,dpr:_,performance:x,raycaster:g,camera:S,scene:M,size:b,onPointerMissed:(...$)=>X.current==null?void 0:X.current(...$),onCreated:$=>{$.events.connect==null||$.events.connect(a?A9(a)?a.current:a:j.current),c&&$.setEvents({compute:(_e,De)=>{const oe=_e[c+"X"],ve=_e[c+"Y"];De.pointer.set(oe/De.size.width*2-1,-(ve/De.size.height)*2+1),De.raycaster.setFromCamera(De.pointer,De.camera)}}),R==null||R($)}}),k.current.render(H.jsx(I,{children:H.jsx(gI,{set:le,children:H.jsx(W.Suspense,{fallback:H.jsx(T9,{set:ne}),children:e})})})))}),W.useEffect(()=>{const J=D.current;if(J)return()=>AI(J)},[]);const q=a?"none":"auto";return H.jsx("div",{ref:j,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:q,...r},...C,children:H.jsx("div",{ref:P,style:{width:"100%",height:"100%"},children:H.jsx("canvas",{ref:D,style:{display:"block"},children:t})})})}),a7=W.forwardRef(function(e,t){return H.jsx(PI,{children:H.jsx(o7,{...e,ref:t})})});function eh(){return eh=Object.assign?Object.assign.bind():function(n){for(var e=1;eMath.PI/2}function f7(n,e,t,i){const r=Eh.setFromMatrixPosition(n.matrixWorld),s=r.clone();s.project(e),Xb.set(s.x,s.y),t.setFromCamera(Xb,e);const o=t.intersectObjects(i,!0);if(o.length){const a=o[0].distance;return r.distanceTo(t.ray.origin)Math.abs(n)<1e-10?0:n;function RI(n,e,t=""){let i="matrix3d(";for(let r=0;r!==16;r++)i+=B_(e[r]*n.elements[r])+(r!==15?",":")");return t+i}const p7=(n=>e=>RI(e,n))([1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1]),m7=(n=>(e,t)=>RI(e,n(t),"translate(-50%,-50%)"))(n=>[1/n,1/n,1/n,1,-1/n,-1/n,-1/n,-1,1/n,1/n,1/n,1,1,1,1,1]);function g7(n){return n&&typeof n=="object"&&"current"in n}const v7=W.forwardRef(({children:n,eps:e=.001,style:t,className:i,prepend:r,center:s,fullscreen:o,portal:a,distanceFactor:c,sprite:f=!1,transform:h=!1,occlude:d,onOcclude:p,castShadow:m,receiveShadow:y,material:_,geometry:x,zIndexRange:g=[16777271,0],calculatePosition:S=c7,as:M="div",wrapperClass:A,pointerEvents:R="auto",...C},L)=>{const{gl:I,camera:P,scene:b,size:D,raycaster:j,events:X,viewport:te}=Yi(),[ne]=W.useState(()=>document.createElement(M)),Q=W.useRef(),le=W.useRef(null),k=W.useRef(0),q=W.useRef([0,0]),J=W.useRef(null),$=W.useRef(null),_e=(a==null?void 0:a.current)||X.connected||I.domElement.parentNode,De=W.useRef(null),oe=W.useRef(!1),ve=W.useMemo(()=>d&&d!=="blending"||Array.isArray(d)&&d.length&&g7(d[0]),[d]);W.useLayoutEffect(()=>{const Xe=I.domElement;d&&d==="blending"?(Xe.style.zIndex=`${Math.floor(g[0]/2)}`,Xe.style.position="absolute",Xe.style.pointerEvents="none"):(Xe.style.zIndex=null,Xe.style.position=null,Xe.style.pointerEvents=null)},[d]),W.useLayoutEffect(()=>{if(le.current){const Xe=Q.current=uP(ne);if(b.updateMatrixWorld(),h)ne.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const B=S(le.current,P,D);ne.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${B[0]}px,${B[1]}px,0);transform-origin:0 0;`}return _e&&(r?_e.prepend(ne):_e.appendChild(ne)),()=>{_e&&_e.removeChild(ne),Xe.unmount()}}},[_e,h]),W.useLayoutEffect(()=>{A&&(ne.className=A)},[A]);const Te=W.useMemo(()=>h?{position:"absolute",top:0,left:0,width:D.width,height:D.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:s?"translate3d(-50%,-50%,0)":"none",...o&&{top:-D.height/2,left:-D.width/2,width:D.width,height:D.height},...t},[t,s,o,D,h]),we=W.useMemo(()=>({position:"absolute",pointerEvents:R}),[R]);W.useLayoutEffect(()=>{if(oe.current=!1,h){var Xe;(Xe=Q.current)==null||Xe.render(W.createElement("div",{ref:J,style:Te},W.createElement("div",{ref:$,style:we},W.createElement("div",{ref:L,className:i,style:t,children:n}))))}else{var B;(B=Q.current)==null||B.render(W.createElement("div",{ref:L,style:Te,className:i,children:n}))}});const nt=W.useRef(!0);ZS(Xe=>{if(le.current){P.updateMatrixWorld(),le.current.updateWorldMatrix(!0,!1);const B=h?q.current:S(le.current,P,D);if(h||Math.abs(k.current-P.zoom)>e||Math.abs(q.current[0]-B[0])>e||Math.abs(q.current[1]-B[1])>e){const de=u7(le.current,P);let fe=!1;ve&&(Array.isArray(d)?fe=d.map(Ue=>Ue.current):d!=="blending"&&(fe=[b]));const Ee=nt.current;if(fe){const Ue=f7(le.current,P,j,fe);nt.current=Ue&&!de}else nt.current=!de;Ee!==nt.current&&(p?p(!nt.current):ne.style.display=nt.current?"block":"none");const Se=Math.floor(g[0]/2),Ae=d?ve?[g[0],Se]:[Se-1,0]:g;if(ne.style.zIndex=`${d7(le.current,P,Ae)}`,h){const[Ue,ke]=[D.width/2,D.height/2],lt=P.projectionMatrix.elements[5]*ke,{isOrthographicCamera:z,top:N,left:se,bottom:xe,right:ye}=P,Me=p7(P.matrixWorldInverse),Qe=z?`scale(${lt})translate(${B_(-(ye+se)/2)}px,${B_((N+xe)/2)}px)`:`translateZ(${lt}px)`;let Pe=le.current.matrixWorld;f&&(Pe=P.matrixWorldInverse.clone().transpose().copyPosition(Pe).scale(le.current.scale),Pe.elements[3]=Pe.elements[7]=Pe.elements[11]=0,Pe.elements[15]=1),ne.style.width=D.width+"px",ne.style.height=D.height+"px",ne.style.perspective=z?"":`${lt}px`,J.current&&$.current&&(J.current.style.transform=`${Qe}${Me}translate(${Ue}px,${ke}px)`,$.current.style.transform=m7(Pe,1/((c||10)/400)))}else{const Ue=c===void 0?1:h7(le.current,P)*c;ne.style.transform=`translate3d(${B[0]}px,${B[1]}px,0) scale(${Ue})`}q.current=B,k.current=P.zoom}}if(!ve&&De.current&&!oe.current)if(h){if(J.current){const B=J.current.children[0];if(B!=null&&B.clientWidth&&B!=null&&B.clientHeight){const{isOrthographicCamera:de}=P;if(de||x)C.scale&&(Array.isArray(C.scale)?C.scale instanceof O?De.current.scale.copy(C.scale.clone().divideScalar(1)):De.current.scale.set(1/C.scale[0],1/C.scale[1],1/C.scale[2]):De.current.scale.setScalar(1/C.scale));else{const fe=(c||10)/400,Ee=B.clientWidth*fe,Se=B.clientHeight*fe;De.current.scale.set(Ee,Se,1)}oe.current=!0}}}else{const B=ne.children[0];if(B!=null&&B.clientWidth&&B!=null&&B.clientHeight){const de=1/te.factor,fe=B.clientWidth*de,Ee=B.clientHeight*de;De.current.scale.set(fe,Ee,1),oe.current=!0}De.current.lookAt(Xe.camera.position)}});const it=W.useMemo(()=>({vertexShader:h?void 0:` - /* - This shader is from the THREE's SpriteMaterial. - We need to turn the backing plane into a Sprite - (make it always face the camera) if "transfrom" - is false. - */ - #include - - void main() { - vec2 center = vec2(0., 1.); - float rotation = 0.0; - - // This is somewhat arbitrary, but it seems to work well - // Need to figure out how to derive this dynamically if it even matters - float size = 0.03; - - vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); - vec2 scale; - scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); - scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); - - bool isPerspective = isPerspectiveMatrix( projectionMatrix ); - if ( isPerspective ) scale *= - mvPosition.z; - - vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size; - vec2 rotatedPosition; - rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; - rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; - mvPosition.xy += rotatedPosition; - - gl_Position = projectionMatrix * mvPosition; - } - `,fragmentShader:` - void main() { - gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); - } - `}),[h]);return W.createElement("group",eh({},C,{ref:le}),d&&!ve&&W.createElement("mesh",{castShadow:m,receiveShadow:y,ref:De},x||W.createElement("planeGeometry",null),_||W.createElement("shaderMaterial",{side:Nr,vertexShader:it.vertexShader,fragmentShader:it.fragmentShader})))});let Fu=0;const y7=aI(n=>(pc.onStart=(e,t,i)=>{n({active:!0,item:e,loaded:t,total:i,progress:(t-Fu)/(i-Fu)*100})},pc.onLoad=()=>{n({active:!1})},pc.onError=e=>n(t=>({errors:[...t.errors,e]})),pc.onProgress=(e,t,i)=>{t===i&&(Fu=i),n({active:!0,item:e,loaded:t,total:i,progress:(t-Fu)/(i-Fu)*100||100})},{errors:[],active:!1,progress:0,item:"",loaded:0,total:0}));var x7=Object.defineProperty,_7=(n,e,t)=>e in n?x7(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,dt=(n,e,t)=>(_7(n,typeof e!="symbol"?e+"":e,t),t);const zp=new il,Yb=new Ts,S7=Math.cos(70*(Math.PI/180)),qb=(n,e)=>(n%e+e)%e;let M7=class extends cs{constructor(e,t){super(),dt(this,"object"),dt(this,"domElement"),dt(this,"enabled",!0),dt(this,"target",new O),dt(this,"minDistance",0),dt(this,"maxDistance",1/0),dt(this,"minZoom",0),dt(this,"maxZoom",1/0),dt(this,"minPolarAngle",0),dt(this,"maxPolarAngle",Math.PI),dt(this,"minAzimuthAngle",-1/0),dt(this,"maxAzimuthAngle",1/0),dt(this,"enableDamping",!1),dt(this,"dampingFactor",.05),dt(this,"enableZoom",!0),dt(this,"zoomSpeed",1),dt(this,"enableRotate",!0),dt(this,"rotateSpeed",1),dt(this,"enablePan",!0),dt(this,"panSpeed",1),dt(this,"screenSpacePanning",!0),dt(this,"keyPanSpeed",7),dt(this,"zoomToCursor",!1),dt(this,"autoRotate",!1),dt(this,"autoRotateSpeed",2),dt(this,"reverseOrbit",!1),dt(this,"reverseHorizontalOrbit",!1),dt(this,"reverseVerticalOrbit",!1),dt(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),dt(this,"mouseButtons",{LEFT:Ma.ROTATE,MIDDLE:Ma.DOLLY,RIGHT:Ma.PAN}),dt(this,"touches",{ONE:wa.ROTATE,TWO:wa.DOLLY_PAN}),dt(this,"target0"),dt(this,"position0"),dt(this,"zoom0"),dt(this,"_domElementKeyEvents",null),dt(this,"getPolarAngle"),dt(this,"getAzimuthalAngle"),dt(this,"setPolarAngle"),dt(this,"setAzimuthalAngle"),dt(this,"getDistance"),dt(this,"listenToKeyEvents"),dt(this,"stopListenToKeyEvents"),dt(this,"saveState"),dt(this,"reset"),dt(this,"update"),dt(this,"connect"),dt(this,"dispose"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>h.phi,this.getAzimuthalAngle=()=>h.theta,this.setPolarAngle=G=>{let me=qb(G,2*Math.PI),Ge=h.phi;Ge<0&&(Ge+=2*Math.PI),me<0&&(me+=2*Math.PI);let V=Math.abs(me-Ge);2*Math.PI-V{let me=qb(G,2*Math.PI),Ge=h.theta;Ge<0&&(Ge+=2*Math.PI),me<0&&(me+=2*Math.PI);let V=Math.abs(me-Ge);2*Math.PI-Vi.object.position.distanceTo(i.target),this.listenToKeyEvents=G=>{G.addEventListener("keydown",Pe),this._domElementKeyEvents=G},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",Pe),this._domElementKeyEvents=null},this.saveState=()=>{i.target0.copy(i.target),i.position0.copy(i.object.position),i.zoom0=i.object.zoom},this.reset=()=>{i.target.copy(i.target0),i.object.position.copy(i.position0),i.object.zoom=i.zoom0,i.object.updateProjectionMatrix(),i.dispatchEvent(r),i.update(),c=a.NONE},this.update=(()=>{const G=new O,me=new O(0,1,0),Ge=new oi().setFromUnitVectors(e.up,me),V=Ge.clone().invert(),Re=new O,he=new oi,ge=2*Math.PI;return function(){const ft=i.object.position;Ge.setFromUnitVectors(e.up,me),V.copy(Ge).invert(),G.copy(ft).sub(i.target),G.applyQuaternion(Ge),h.setFromVector3(G),i.autoRotate&&c===a.NONE&&te(j()),i.enableDamping?(h.theta+=d.theta*i.dampingFactor,h.phi+=d.phi*i.dampingFactor):(h.theta+=d.theta,h.phi+=d.phi);let mt=i.minAzimuthAngle,Rt=i.maxAzimuthAngle;isFinite(mt)&&isFinite(Rt)&&(mt<-Math.PI?mt+=ge:mt>Math.PI&&(mt-=ge),Rt<-Math.PI?Rt+=ge:Rt>Math.PI&&(Rt-=ge),mt<=Rt?h.theta=Math.max(mt,Math.min(Rt,h.theta)):h.theta=h.theta>(mt+Rt)/2?Math.max(mt,h.theta):Math.min(Rt,h.theta)),h.phi=Math.max(i.minPolarAngle,Math.min(i.maxPolarAngle,h.phi)),h.makeSafe(),i.enableDamping===!0?i.target.addScaledVector(m,i.dampingFactor):i.target.add(m),i.zoomToCursor&&P||i.object.isOrthographicCamera?h.radius=_e(h.radius):h.radius=_e(h.radius*p),G.setFromSpherical(h),G.applyQuaternion(V),ft.copy(i.target).add(G),i.object.matrixAutoUpdate||i.object.updateMatrix(),i.object.lookAt(i.target),i.enableDamping===!0?(d.theta*=1-i.dampingFactor,d.phi*=1-i.dampingFactor,m.multiplyScalar(1-i.dampingFactor)):(d.set(0,0,0),m.set(0,0,0));let Wt=!1;if(i.zoomToCursor&&P){let bt=null;if(i.object instanceof sn&&i.object.isPerspectiveCamera){const Cn=G.length();bt=_e(Cn*p);const Un=Cn-bt;i.object.position.addScaledVector(L,Un),i.object.updateMatrixWorld()}else if(i.object.isOrthographicCamera){const Cn=new O(I.x,I.y,0);Cn.unproject(i.object),i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom/p)),i.object.updateProjectionMatrix(),Wt=!0;const Un=new O(I.x,I.y,0);Un.unproject(i.object),i.object.position.sub(Un).add(Cn),i.object.updateMatrixWorld(),bt=G.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),i.zoomToCursor=!1;bt!==null&&(i.screenSpacePanning?i.target.set(0,0,-1).transformDirection(i.object.matrix).multiplyScalar(bt).add(i.object.position):(zp.origin.copy(i.object.position),zp.direction.set(0,0,-1).transformDirection(i.object.matrix),Math.abs(i.object.up.dot(zp.direction))f||8*(1-he.dot(i.object.quaternion))>f?(i.dispatchEvent(r),Re.copy(i.object.position),he.copy(i.object.quaternion),Wt=!1,!0):!1}})(),this.connect=G=>{G===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),i.domElement=G,i.domElement.style.touchAction="none",i.domElement.addEventListener("contextmenu",Ce),i.domElement.addEventListener("pointerdown",N),i.domElement.addEventListener("pointercancel",xe),i.domElement.addEventListener("wheel",Qe)},this.dispose=()=>{var G,me,Ge,V,Re,he;i.domElement&&(i.domElement.style.touchAction="auto"),(G=i.domElement)==null||G.removeEventListener("contextmenu",Ce),(me=i.domElement)==null||me.removeEventListener("pointerdown",N),(Ge=i.domElement)==null||Ge.removeEventListener("pointercancel",xe),(V=i.domElement)==null||V.removeEventListener("wheel",Qe),(Re=i.domElement)==null||Re.ownerDocument.removeEventListener("pointermove",se),(he=i.domElement)==null||he.ownerDocument.removeEventListener("pointerup",xe),i._domElementKeyEvents!==null&&i._domElementKeyEvents.removeEventListener("keydown",Pe)};const i=this,r={type:"change"},s={type:"start"},o={type:"end"},a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let c=a.NONE;const f=1e-6,h=new U_,d=new U_;let p=1;const m=new O,y=new pe,_=new pe,x=new pe,g=new pe,S=new pe,M=new pe,A=new pe,R=new pe,C=new pe,L=new O,I=new pe;let P=!1;const b=[],D={};function j(){return 2*Math.PI/60/60*i.autoRotateSpeed}function X(){return Math.pow(.95,i.zoomSpeed)}function te(G){i.reverseOrbit||i.reverseHorizontalOrbit?d.theta+=G:d.theta-=G}function ne(G){i.reverseOrbit||i.reverseVerticalOrbit?d.phi+=G:d.phi-=G}const Q=(()=>{const G=new O;return function(Ge,V){G.setFromMatrixColumn(V,0),G.multiplyScalar(-Ge),m.add(G)}})(),le=(()=>{const G=new O;return function(Ge,V){i.screenSpacePanning===!0?G.setFromMatrixColumn(V,1):(G.setFromMatrixColumn(V,0),G.crossVectors(i.object.up,G)),G.multiplyScalar(Ge),m.add(G)}})(),k=(()=>{const G=new O;return function(Ge,V){const Re=i.domElement;if(Re&&i.object instanceof sn&&i.object.isPerspectiveCamera){const he=i.object.position;G.copy(he).sub(i.target);let ge=G.length();ge*=Math.tan(i.object.fov/2*Math.PI/180),Q(2*Ge*ge/Re.clientHeight,i.object.matrix),le(2*V*ge/Re.clientHeight,i.object.matrix)}else Re&&i.object instanceof Dr&&i.object.isOrthographicCamera?(Q(Ge*(i.object.right-i.object.left)/i.object.zoom/Re.clientWidth,i.object.matrix),le(V*(i.object.top-i.object.bottom)/i.object.zoom/Re.clientHeight,i.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),i.enablePan=!1)}})();function q(G){i.object instanceof sn&&i.object.isPerspectiveCamera||i.object instanceof Dr&&i.object.isOrthographicCamera?p/=G:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function J(G){i.object instanceof sn&&i.object.isPerspectiveCamera||i.object instanceof Dr&&i.object.isOrthographicCamera?p*=G:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function $(G){if(!i.zoomToCursor||!i.domElement)return;P=!0;const me=i.domElement.getBoundingClientRect(),Ge=G.clientX-me.left,V=G.clientY-me.top,Re=me.width,he=me.height;I.x=Ge/Re*2-1,I.y=-(V/he)*2+1,L.set(I.x,I.y,1).unproject(i.object).sub(i.object.position).normalize()}function _e(G){return Math.max(i.minDistance,Math.min(i.maxDistance,G))}function De(G){y.set(G.clientX,G.clientY)}function oe(G){$(G),A.set(G.clientX,G.clientY)}function ve(G){g.set(G.clientX,G.clientY)}function Te(G){_.set(G.clientX,G.clientY),x.subVectors(_,y).multiplyScalar(i.rotateSpeed);const me=i.domElement;me&&(te(2*Math.PI*x.x/me.clientHeight),ne(2*Math.PI*x.y/me.clientHeight)),y.copy(_),i.update()}function we(G){R.set(G.clientX,G.clientY),C.subVectors(R,A),C.y>0?q(X()):C.y<0&&J(X()),A.copy(R),i.update()}function nt(G){S.set(G.clientX,G.clientY),M.subVectors(S,g).multiplyScalar(i.panSpeed),k(M.x,M.y),g.copy(S),i.update()}function it(G){$(G),G.deltaY<0?J(X()):G.deltaY>0&&q(X()),i.update()}function Xe(G){let me=!1;switch(G.code){case i.keys.UP:k(0,i.keyPanSpeed),me=!0;break;case i.keys.BOTTOM:k(0,-i.keyPanSpeed),me=!0;break;case i.keys.LEFT:k(i.keyPanSpeed,0),me=!0;break;case i.keys.RIGHT:k(-i.keyPanSpeed,0),me=!0;break}me&&(G.preventDefault(),i.update())}function B(){if(b.length==1)y.set(b[0].pageX,b[0].pageY);else{const G=.5*(b[0].pageX+b[1].pageX),me=.5*(b[0].pageY+b[1].pageY);y.set(G,me)}}function de(){if(b.length==1)g.set(b[0].pageX,b[0].pageY);else{const G=.5*(b[0].pageX+b[1].pageX),me=.5*(b[0].pageY+b[1].pageY);g.set(G,me)}}function fe(){const G=b[0].pageX-b[1].pageX,me=b[0].pageY-b[1].pageY,Ge=Math.sqrt(G*G+me*me);A.set(0,Ge)}function Ee(){i.enableZoom&&fe(),i.enablePan&&de()}function Se(){i.enableZoom&&fe(),i.enableRotate&&B()}function Ae(G){if(b.length==1)_.set(G.pageX,G.pageY);else{const Ge=ze(G),V=.5*(G.pageX+Ge.x),Re=.5*(G.pageY+Ge.y);_.set(V,Re)}x.subVectors(_,y).multiplyScalar(i.rotateSpeed);const me=i.domElement;me&&(te(2*Math.PI*x.x/me.clientHeight),ne(2*Math.PI*x.y/me.clientHeight)),y.copy(_)}function Ue(G){if(b.length==1)S.set(G.pageX,G.pageY);else{const me=ze(G),Ge=.5*(G.pageX+me.x),V=.5*(G.pageY+me.y);S.set(Ge,V)}M.subVectors(S,g).multiplyScalar(i.panSpeed),k(M.x,M.y),g.copy(S)}function ke(G){const me=ze(G),Ge=G.pageX-me.x,V=G.pageY-me.y,Re=Math.sqrt(Ge*Ge+V*V);R.set(0,Re),C.set(0,Math.pow(R.y/A.y,i.zoomSpeed)),q(C.y),A.copy(R)}function lt(G){i.enableZoom&&ke(G),i.enablePan&&Ue(G)}function z(G){i.enableZoom&&ke(G),i.enableRotate&&Ae(G)}function N(G){var me,Ge;i.enabled!==!1&&(b.length===0&&((me=i.domElement)==null||me.ownerDocument.addEventListener("pointermove",se),(Ge=i.domElement)==null||Ge.ownerDocument.addEventListener("pointerup",xe)),Je(G),G.pointerType==="touch"?Fe(G):ye(G))}function se(G){i.enabled!==!1&&(G.pointerType==="touch"?pt(G):Me(G))}function xe(G){var me,Ge,V;wt(G),b.length===0&&((me=i.domElement)==null||me.releasePointerCapture(G.pointerId),(Ge=i.domElement)==null||Ge.ownerDocument.removeEventListener("pointermove",se),(V=i.domElement)==null||V.ownerDocument.removeEventListener("pointerup",xe)),i.dispatchEvent(o),c=a.NONE}function ye(G){let me;switch(G.button){case 0:me=i.mouseButtons.LEFT;break;case 1:me=i.mouseButtons.MIDDLE;break;case 2:me=i.mouseButtons.RIGHT;break;default:me=-1}switch(me){case Ma.DOLLY:if(i.enableZoom===!1)return;oe(G),c=a.DOLLY;break;case Ma.ROTATE:if(G.ctrlKey||G.metaKey||G.shiftKey){if(i.enablePan===!1)return;ve(G),c=a.PAN}else{if(i.enableRotate===!1)return;De(G),c=a.ROTATE}break;case Ma.PAN:if(G.ctrlKey||G.metaKey||G.shiftKey){if(i.enableRotate===!1)return;De(G),c=a.ROTATE}else{if(i.enablePan===!1)return;ve(G),c=a.PAN}break;default:c=a.NONE}c!==a.NONE&&i.dispatchEvent(s)}function Me(G){if(i.enabled!==!1)switch(c){case a.ROTATE:if(i.enableRotate===!1)return;Te(G);break;case a.DOLLY:if(i.enableZoom===!1)return;we(G);break;case a.PAN:if(i.enablePan===!1)return;nt(G);break}}function Qe(G){i.enabled===!1||i.enableZoom===!1||c!==a.NONE&&c!==a.ROTATE||(G.preventDefault(),i.dispatchEvent(s),it(G),i.dispatchEvent(o))}function Pe(G){i.enabled===!1||i.enablePan===!1||Xe(G)}function Fe(G){switch(ut(G),b.length){case 1:switch(i.touches.ONE){case wa.ROTATE:if(i.enableRotate===!1)return;B(),c=a.TOUCH_ROTATE;break;case wa.PAN:if(i.enablePan===!1)return;de(),c=a.TOUCH_PAN;break;default:c=a.NONE}break;case 2:switch(i.touches.TWO){case wa.DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;Ee(),c=a.TOUCH_DOLLY_PAN;break;case wa.DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;Se(),c=a.TOUCH_DOLLY_ROTATE;break;default:c=a.NONE}break;default:c=a.NONE}c!==a.NONE&&i.dispatchEvent(s)}function pt(G){switch(ut(G),c){case a.TOUCH_ROTATE:if(i.enableRotate===!1)return;Ae(G),i.update();break;case a.TOUCH_PAN:if(i.enablePan===!1)return;Ue(G),i.update();break;case a.TOUCH_DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;lt(G),i.update();break;case a.TOUCH_DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;z(G),i.update();break;default:c=a.NONE}}function Ce(G){i.enabled!==!1&&G.preventDefault()}function Je(G){b.push(G)}function wt(G){delete D[G.pointerId];for(let me=0;me0,R=X>0,C=te>0,L=(A?1:0)+(R?1:0)+(C?1:0),L){case 0:{g.push(_[M]),g.push(_[M+1]),g.push(_[M+2]);break}case 1:{if(A&&(I=_[M+1],P=_[M+2],b=y(_[M],I,x,S),D=y(_[M],P,x,S)),R){I=_[M],P=_[M+2],b=y(_[M+1],I,x,S),D=y(_[M+1],P,x,S),g.push(b),g.push(P.clone()),g.push(I.clone()),g.push(P.clone()),g.push(b.clone()),g.push(D);break}C&&(I=_[M],P=_[M+1],b=y(_[M+2],I,x,S),D=y(_[M+2],P,x,S)),g.push(I.clone()),g.push(P.clone()),g.push(b),g.push(D),g.push(b.clone()),g.push(P.clone());break}case 2:{A||(I=_[M].clone(),P=y(I,_[M+1],x,S),b=y(I,_[M+2],x,S),g.push(I),g.push(P),g.push(b)),R||(I=_[M+1].clone(),P=y(I,_[M+2],x,S),b=y(I,_[M],x,S),g.push(I),g.push(P),g.push(b)),C||(I=_[M+2].clone(),P=y(I,_[M],x,S),b=y(I,_[M+1],x,S),g.push(I),g.push(P),g.push(b));break}}}return g}function y(_,x,g,S){const M=_.position.dot(g)-S,A=x.position.dot(g)-S,R=M/(M-A);return new Kb(new O(_.position.x+R*(x.position.x-_.position.x),_.position.y+R*(x.position.y-_.position.y),_.position.z+R*(x.position.z-_.position.z)),new O(_.normal.x+R*(x.normal.x-_.normal.x),_.normal.y+R*(x.normal.y-_.normal.y),_.normal.z+R*(x.normal.z-_.normal.z)))}}}class Kb{constructor(e,t){this.position=e,this.normal=t}clone(){return new this.constructor(this.position.clone(),this.normal.clone())}}const ky=n=>n===Object(n)&&!Array.isArray(n)&&typeof n!="function";function $S(n,e){const t=Yi(s=>s.gl),i=wh(Kg,ky(n)?Object.values(n):n);return W.useLayoutEffect(()=>{e==null||e(i)},[e]),W.useEffect(()=>{if("initTexture"in t){let s=[];Array.isArray(i)?s=i:i instanceof $t?s=[i]:ky(i)&&(s=Object.values(i)),s.forEach(o=>{o instanceof $t&&t.initTexture(o)})}},[t,i]),W.useMemo(()=>{if(ky(n)){const s={};let o=0;for(const a in n)s[a]=i[o++];return console.log("keyed",s),s}else return i},[n,i])}$S.preload=n=>wh.preload(Kg,n);$S.clear=n=>wh.clear(Kg,n);function E7(n){return Array.isArray(n)}function Fy(n=[0,0,0]){return E7(n)?n:n instanceof O||n instanceof wi?[n.x,n.y,n.z]:[n,n,n]}const A7=W.forwardRef(function({debug:e,depthTest:t=!1,polygonOffsetFactor:i=-10,map:r,mesh:s,children:o,position:a,rotation:c,scale:f,...h},d){const p=W.useRef(null);W.useImperativeHandle(d,()=>p.current);const m=W.useRef(null);return W.useLayoutEffect(()=>{const y=(s==null?void 0:s.current)||p.current.parent,_=p.current;if(!(y instanceof _n))throw new Error('Decal must have a Mesh as parent or specify its "mesh" prop');const x={position:new O,rotation:new wi,scale:new O(1,1,1)};if(y){$r(x,{position:a,scale:f});const g=y.matrixWorld.clone();if(y.matrixWorld.identity(),!c||typeof c=="number"){const S=new Ut;S.position.copy(x.position),S.lookAt(y.position),typeof c=="number"&&S.rotateZ(c),$r(x,{rotation:S.rotation})}else $r(x,{rotation:c});return _.geometry=new w7(y,x.position,x.rotation,x.scale),m.current&&($r(m.current,x),m.current.traverse(S=>S.raycast=()=>null)),y.matrixWorld=g,()=>{_.geometry.dispose()}}},[s,...Fy(a),...Fy(f),...Fy(c)]),W.createElement("mesh",eh({ref:p,"material-transparent":!0,"material-polygonOffset":!0,"material-polygonOffsetFactor":i,"material-depthTest":t,"material-map":r},h),o,e&&W.createElement("mesh",{ref:m},W.createElement("boxGeometry",null),W.createElement("meshNormalMaterial",{wireframe:!0}),W.createElement("axesHelper",null)))}),T7=W.forwardRef(({makeDefault:n,camera:e,regress:t,domElement:i,enableDamping:r=!0,keyEvents:s=!1,onChange:o,onStart:a,onEnd:c,...f},h)=>{const d=Yi(C=>C.invalidate),p=Yi(C=>C.camera),m=Yi(C=>C.gl),y=Yi(C=>C.events),_=Yi(C=>C.setEvents),x=Yi(C=>C.set),g=Yi(C=>C.get),S=Yi(C=>C.performance),M=e||p,A=i||y.connected||m.domElement,R=W.useMemo(()=>new M7(M),[M]);return ZS(()=>{R.enabled&&R.update()},-1),W.useEffect(()=>(s&&R.connect(s===!0?A:s),R.connect(A),()=>void R.dispose()),[s,A,t,R,d]),W.useEffect(()=>{const C=P=>{d(),t&&S.regress(),o&&o(P)},L=P=>{a&&a(P)},I=P=>{c&&c(P)};return R.addEventListener("change",C),R.addEventListener("start",L),R.addEventListener("end",I),()=>{R.removeEventListener("start",L),R.removeEventListener("end",I),R.removeEventListener("change",C)}},[o,a,c,R,d,_]),W.useEffect(()=>{if(n){const C=g().controls;return x({controls:R}),()=>x({controls:C})}},[n,R]),W.createElement("primitive",eh({ref:h,object:R,enableDamping:r},f))}),b7=W.forwardRef(({children:n,enabled:e=!0,speed:t=1,rotationIntensity:i=1,floatIntensity:r=1,floatingRange:s=[-.1,.1],...o},a)=>{const c=W.useRef(null);W.useImperativeHandle(a,()=>c.current,[]);const f=W.useRef(Math.random()*1e4);return ZS(h=>{var d,p;if(!e||t===0)return;const m=f.current+h.clock.getElapsedTime();c.current.rotation.x=Math.cos(m/4*t)/8*i,c.current.rotation.y=Math.sin(m/4*t)/8*i,c.current.rotation.z=Math.sin(m/4*t)/20*i;let y=Math.sin(m/4*t)/10;y=Z3.mapLinear(y,-.1,.1,(d=s==null?void 0:s[0])!==null&&d!==void 0?d:-.1,(p=s==null?void 0:s[1])!==null&&p!==void 0?p:.1),c.current.position.y=y*r,c.current.updateMatrix()}),W.createElement("group",o,W.createElement("group",{ref:c,matrixAutoUpdate:!1},n))});function C7({all:n,scene:e,camera:t}){const i=Yi(({gl:o})=>o),r=Yi(({camera:o})=>o),s=Yi(({scene:o})=>o);return W.useLayoutEffect(()=>{const o=[];n&&(e||s).traverse(f=>{f.visible===!1&&(o.push(f),f.visible=!0)}),i.compile(e||s,t||r);const a=new ES(128);new wS(.01,1e5,a).update(i,e||s),a.dispose(),o.forEach(f=>f.visible=!1)},[]),null}const P7=()=>{const{progress:n}=y7(),e={display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},t={fontSize:14,color:"#F1F1F1",fontWeight:800,marginTop:40};return H.jsxs(v7,{as:"div",center:!0,style:e,children:[H.jsx("span",{className:"canvas-loader"}),H.jsxs("p",{style:t,children:[n.toFixed(0),"%"]})]})},R7=n=>{const[e]=$S([n.imgUrl]);return H.jsxs(b7,{speed:1,rotationIntensity:0,floatIntensity:5,children:[H.jsx("ambientLight",{intensity:2.4}),H.jsx("directionalLight",{position:[0,0,.05]}),H.jsxs("mesh",{castShadow:!0,receiveShadow:!0,scale:2.75,children:[H.jsx("icosahedronGeometry",{args:[1,1]}),H.jsx("meshStandardMaterial",{color:"#fcd4d4",polygonOffset:!0,polygonOffsetFactor:-5,flatShading:!0}),H.jsx(A7,{position:[0,0,1],rotation:[2*Math.PI,0,6.25],scale:1,map:e,flatShading:!0})]})]})},L7=({icon:n})=>H.jsxs(a7,{frameloop:"demand",dpr:[1,2],gl:{preserveDrawingBuffer:!0},children:[H.jsxs(W.Suspense,{fallback:H.jsx(P7,{}),children:[H.jsx(T7,{enableZoom:!1}),H.jsx(R7,{imgUrl:n})]}),H.jsx(C7,{all:!0})]}),I7="/portfolio-react-threejs/assets/texture-5adaf7bf.webp",N7=()=>H.jsxs("section",{className:"xl:mt-6 flex flex-row flex-wrap justify-center items-center gap-10",children:[H.jsxs(si.div,{variants:uh(),children:[H.jsx("h2",{className:`${ci.sectionHeadText} text-center`,children:"Skills & Technologies."}),H.jsx("p",{className:`${ci.sectionSubText} text-center`,children:"What have i learnd?"})]}),H.jsx("div",{className:"w-full lg:w-[400px] lg:h-[400px] ",children:H.jsx(L7,{icon:I7})},"skillsBall")]}),D7=Bc(N7,"TechSkillsSection"),U7="/portfolio-react-threejs/assets/cover_img-4c0efeb6.webp",Zb="/portfolio-react-threejs/assets/resume-bb345e2c.pdf",O7=()=>{const[n,e]=W.useState(!1),t=()=>e(!0),i=()=>e(!1),r=()=>{const s=document.createElement("a");s.href=Zb,s.download="Satyam_Mishra_Resume",s.click()};return H.jsxs("section",{className:"-m-5 md:-m-10 max-w-screen-xl mx-auto my-10 space-y-10 max",children:[H.jsxs(si.div,{variants:uh(0),children:[H.jsx("h2",{className:`${ci.sectionHeadText} text-center`,children:"Resume."}),H.jsx("p",{className:`${ci.sectionSubText} text-center`,children:"Here's my Resume😁"})]}),H.jsx(si.div,{variants:zc("right","spring",.5*0,.75),className:"md:flex justify-center items-center",children:H.jsxs(_g,{options:{max:45,scale:1,speed:450},className:"group bg-white shadow-[#fcd4d4] shadow-card rounded-2xl mx-auto w-[90%] md:min-w-1/3 md:max-w-3xl h-full",children:[H.jsx("div",{className:"group-hover:opacity-100 relative w-full h-full mb-5",children:H.jsx("img",{src:U7,loading:"lazy",alt:"Resume cover image",className:"w-full h-full object-cover rounded-2xl"})}),H.jsxs("div",{className:"text-primary flex items-center space-x-5 md:space-y-5 justify-center absolute z-10 md:top-10 md:-right-24 md:bottom-0 md:flex-col md:items-center md:justify-center transition-opacity duration-300",children:[H.jsxs("button",{onClick:r,className:"mt-8 bg-blue-500 hover:bg-blue-300 font-bold py-3 px-6 rounded-full flex items-center",children:["Download ",H.jsx("span",{className:"ml-2",children:"▶"})]}),H.jsxs("button",{onClick:t,className:"mt-8 bg-green-500 hover:bg-green-300 font-bold py-3 px-6 rounded-full flex items-center",children:["View ",H.jsx("span",{className:"ml-2",children:"▶"})]})]})]})}),n&&H.jsx("div",{className:"fixed inset-0 z-50 overflow-auto -top-10 bg-black bg-opacity-60 flex items-center justify-center",children:H.jsxs("div",{className:"bg-white p-2 rounded-2xl max-w-screen-lg w-[70%] relative",children:[H.jsx("button",{className:"absolute -top-12 right-0 md:top-2 md:-right-20 bg-black hover:bg-gray-800 py-2 px-3 rounded-xl text-white hover:text-gray-200",onClick:i,children:"Close"}),H.jsx("iframe",{title:"PDF Viewer",src:Zb,className:"w-full h-[400px]"})]})})]})},k7=Bc(O7,"ResumeSection"),F7="data:image/webp;base64,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",z7="/portfolio-react-threejs/assets/appstore-0b8f390b.png",B7="/portfolio-react-threejs/assets/colab-9e4861eb.png",V7="/portfolio-react-threejs/assets/huggingface-720eadc9.png",Jb="/portfolio-react-threejs/assets/website-078d1216.gif",H7=({index:n,name:e,description:t,tags:i,image:r,source_code_link:s,date:o})=>H.jsx(_g,{className:"sm:w-[360px] w-full",children:H.jsx(si.div,{variants:zc("right","spring",.5*n,.75),className:"shadow-[#fcd4d4] green-pink-gradient shadow-card p-[1px] rounded-2xl ",children:H.jsxs("div",{className:"bg-primary rounded-2xl py-5 px-8",options:{max:45,scale:1,speed:450},children:[H.jsxs("div",{className:"relative w-full h-[230px]",children:[H.jsx("img",{src:r,alt:"project_image",className:"w-full h-full object-cover rounded-2xl"}),H.jsx("div",{className:"absolute inset-0 z-10 space-y-3 flex-col justify-end m-3 card-img_hover",children:Object.entries(s).map(([a,c])=>H.jsx("div",{onClick:()=>window.open(c,"_blank"),className:"border-black border-2 white-gradient w-10 h-10 rounded-full flex justify-center items-center cursor-pointer",title:a==="Github"?"View in GitHub":a==="Appstore"?"View in App Store":a==="Colab"?"View in Google Colab":a==="Huggingface"?"View in Hugging Face":a==="Live"?"View Live Website":"View Now",children:H.jsx("img",{src:a==="Github"?F7:a==="Appstore"?z7:a==="Colab"?B7:a==="Huggingface"?V7:Jb,alt:`${a} link`,className:"w-1/2 h-1/2 object-contain"})},a))})]}),H.jsxs("div",{className:"mt-5",children:[H.jsx("h3",{className:"text-black font-bold text-[24px]",children:e}),H.jsx("p",{className:"mt-2 text-secondary text-[14px]",children:t})]}),H.jsxs("div",{className:"mt-4 flex flex-wrap gap-2",children:[i.map(a=>H.jsxs("p",{className:`text-[14px] ${a.color}`,children:["#",a.name," "]},`${e}-${a.name}`))," "]}),H.jsx("p",{children:o})]})})}),G7=()=>H.jsxs("section",{className:"-m-5 md:-m-10 ",children:[H.jsxs(si.div,{variants:uh(0),children:[H.jsx("h2",{className:`${ci.sectionHeadText} text-center`,children:"Projects."}),H.jsx("p",{className:`${ci.sectionSubText} text-center`,children:"My works? Here they are."})]}),H.jsxs("div",{className:" mt-20 grid md:grid-cols-2 lg:grid-cols-3 gap-5",children:[kz.map((n,e)=>H.jsx(H7,{index:e,...n},`project-${e}`))," "]})]}),W7=Bc(G7,"ProjectsSection"),j7=({index:n,name:e,date:t,img:i,link:r})=>H.jsx("div",{children:H.jsx(si.div,{variants:zc("right","spring",.5*n,.75),children:H.jsx(_g,{options:{max:45,scale:1,speed:450},className:"bg-white shadow-[#fcd4d4] shadow-card p-5 rounded-2xl sm:w-[360px] w-full",children:H.jsxs("a",{href:r,target:"_blank",children:[H.jsx("div",{className:"relative w-full ",children:H.jsx("img",{src:i,placeholder:e,loading:"lazy",alt:`${e} cover image`,className:"w-full h-52 object-cover rounded-2xl"})}),H.jsx("p",{className:"mt-3 text-left",children:t}),H.jsx("h3",{className:"text-black font-bold text-[24px] text-left",children:e})]})})})});function X7(){return H.jsxs("div",{className:"my-10",children:[H.jsxs("div",{children:[H.jsx("h2",{className:`${ci.sectionHeadText} text-center`,children:"Blogs."}),H.jsx("p",{className:`${ci.sectionSubText} text-center`,children:"Blogs written by me"})]}),H.jsx("div",{className:"my-20 flex flex-wrap justify-center mx-auto space-x-5 gap-5 w-full",children:Fz.map((n,e)=>H.jsx(j7,{index:e,...n},`blog-${e}`))})]})}const Y7=Bc(X7,"BlogsSections"),q7=()=>{const n=W.useRef(),[e,t]=W.useState({name:"",email:"",message:""}),[i,r]=W.useState(!1),[s,o]=W.useState(!1),a=f=>{const{target:h}=f,{name:d,value:p}=h;t({...e,[d]:p})},c=f=>{f.preventDefault(),r(!0),JA.init("Tlnn1O7PC8WlYPRT7"),JA.send("service_w2nrv74","template_hmf109b",{from_name:e.name,to_name:"Satyam Mishra",from_email:e.email,to_email:"satyammishra9050@gmail.com",message:e.message}).then(()=>{r(!1),o(!0),t({name:"",email:"",message:""})},h=>{r(!1),console.error(h),alert("Ahh, something went wrong. Please try again.")})};return H.jsxs("footer",{id:"ContactSection",className:"lg:grid lg:grid-cols-5 bg-black h-fit ",children:[H.jsxs("div",{className:"relative p-12 block h-32 lg:col-span-2 lg:h-full",children:[H.jsx("p",{className:`${ci.sectionSubText} text-white`,children:"I am open to work"}),H.jsx("h3",{className:`${ci.sectionHeadText} text-primary`,children:"Get In Touch."}),s?H.jsxs("div",{children:[H.jsx("p",{className:"text-green-500 mt-2",children:"Thank you. I have recieved your msg."}),H.jsx("p",{className:"text-green-500",children:"I will get back to you right on."})]}):H.jsxs("form",{ref:n,onSubmit:c,className:"flex flex-col gap-1",children:[H.jsxs("label",{className:"flex flex-col",children:[H.jsx("span",{className:"text-black font-medium mb-1",children:"Your Name"}),H.jsx("input",{type:"text",name:"name",value:e.name,onChange:a,placeholder:"What's your good name?",className:"bg-blue-50 py-4 px-6 placeholder:text-secondary text-black rounded-lg outline-none border-none font-medium"})]}),H.jsxs("label",{className:"flex flex-col",children:[H.jsx("span",{className:"text-black font-medium mb-1",children:"Your Email"}),H.jsx("input",{type:"email",name:"email",value:e.email,onChange:a,placeholder:"What's your email?",className:"bg-blue-50 py-4 px-6 placeholder:text-secondary text-black rounded-lg outline-none border-none font-medium"})]}),H.jsxs("label",{className:"flex flex-col",children:[H.jsx("span",{className:"text-black font-medium mb-1",children:"Your Message"}),H.jsx("textarea",{name:"message",value:e.message,onChange:a,placeholder:"What's your message?",className:"bg-blue-50 py-4 px-6 placeholder:text-secondary text-black rounded-lg outline-none border-none font-medium"})]}),H.jsx("button",{type:"submit","aria-busy":i,className:"mt-6 bg-secondary hover:bg-slate-600 py-3 px-8 rounded-xl outline-none w-fit text-primary font-bold",children:i?"Sending...":"Send"})]})]}),H.jsxs("div",{className:"px-4 py-16 sm:px-6 lg:col-span-3 lg:px-8",children:[H.jsxs("div",{className:"grid grid-cols-1 gap-8 sm:grid-cols-2",children:[H.jsxs("div",{children:[H.jsxs("p",{children:[H.jsx("span",{className:"text-xs uppercase tracking-wide text-gray-200",children:" Mail me "}),H.jsx("a",{href:"mailto:satyam.work.only@gmail.com?subject=Just%20wondaring&body=Nothing%20much.",className:"animate-pulse block text-2xl font-medium text-gray-400 hover:opacity-75 sm:text-3xl",children:"Click here to mail."})]}),H.jsxs("ul",{className:"text-gray-200 mt-8 flex gap-6",children:[H.jsx("li",{children:H.jsxs("a",{href:"https://www.instagram.com/satyammishra9050/",rel:"noreferrer",target:"_blank",className:"transition hover:opacity-75",children:[H.jsx("span",{className:"sr-only",children:"Instagram"}),H.jsx("svg",{className:"size-6",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:H.jsx("path",{fillRule:"evenodd",d:"M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z",clipRule:"evenodd"})})]})}),H.jsx("li",{children:H.jsxs("a",{href:"https://x.com/bedeadmishra",rel:"noreferrer",target:"_blank",className:"transition hover:opacity-75",children:[H.jsx("span",{className:"sr-only",children:"Twitter"}),H.jsx("svg",{className:"size-6",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:H.jsx("path",{d:"M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84"})})]})}),H.jsx("li",{children:H.jsxs("a",{href:"https://github.com/bedead",rel:"noreferrer",target:"_blank",className:"transition hover:opacity-75",children:[H.jsx("span",{className:"sr-only",children:"GitHub"}),H.jsx("svg",{className:"size-6",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:H.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})]})}),H.jsx("li",{children:H.jsxs("a",{href:"https://www.linkedin.com/in/theaiguysatyam/",rel:"noreferrer",target:"_blank",className:"transition hover:opacity-75",children:[H.jsx("span",{className:"sr-only",children:"Linkedin"}),H.jsx("svg",{className:"size-6",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 24 24",children:H.jsx("path",{d:"M 5.75 3 C 4.2400226 3 3 4.2400226 3 5.75 L 3 18.25 C 3 19.759977 4.2400226 21 5.75 21 L 18.25 21 C 19.759977 21 21 19.759977 21 18.25 L 21 5.75 C 21 4.2400226 19.759977 3 18.25 3 L 5.75 3 z M 5.75 4.5 L 18.25 4.5 C 18.950023 4.5 19.5 5.0499774 19.5 5.75 L 19.5 18.25 C 19.5 18.950023 18.950023 19.5 18.25 19.5 L 5.75 19.5 C 5.0499774 19.5 4.5 18.950023 4.5 18.25 L 4.5 5.75 C 4.5 5.0499774 5.0499774 4.5 5.75 4.5 z M 8.1855469 6.7851562 C 7.4445469 6.7851563 7 7.2293594 7 7.8183594 C 7 8.4113594 7.444375 8.8574219 8.109375 8.8574219 C 8.850375 8.8574219 9.2910156 8.4113594 9.2910156 7.8183594 C 9.2910156 7.2303594 8.8505469 6.7851562 8.1855469 6.7851562 z M 7.0625 9.9628906 L 7.0625 16 L 9.2363281 16 L 9.2363281 9.9628906 L 7.0625 9.9628906 z M 11.033203 9.9628906 L 11.033203 16 L 13.207031 16 L 13.207031 12.697266 C 13.207031 11.718266 13.908141 11.574219 14.119141 11.574219 C 14.330141 11.574219 14.892578 11.785266 14.892578 12.697266 L 14.892578 16 L 17 16 L 17 12.697266 C 17 10.806266 16.154516 9.9628906 15.103516 9.9628906 C 14.052516 9.9628906 13.490031 10.312641 13.207031 10.806641 L 13.207031 9.9628906 L 11.033203 9.9628906 z"})})]})})]})]}),H.jsxs("div",{className:"text-gray-400 grid grid-cols-1 gap-4 sm:grid-cols-2",children:[H.jsxs("div",{children:[H.jsx("p",{className:"font-medium text-gray-200",children:"Top Projects"}),H.jsxs("ul",{className:"mt-6 space-y-4 text-sm",children:[H.jsx("li",{children:H.jsx("a",{href:"https://github.com/bedead/lung-cancer-classification-yoloV8---gradio",className:"transition hover:opacity-75",children:" PATENT - CLASSIFICATION OF LUNG CANCER USING DEEP LEARNING TECHNIQUES. "})}),H.jsx("li",{children:H.jsx("a",{href:"https://colab.research.google.com/drive/1a6LATySYKaS8qqfk_4maSaV4guvTRA-8?usp=sharing",className:"transition hover:opacity-75",children:" ConvoGen AI "})}),H.jsx("li",{children:H.jsx("a",{href:"https://github.com/bedead/Anon-Exchange-chatting",className:"transition hover:opacity-75",children:" Anon Exchange "})})]})]}),H.jsxs("div",{children:[H.jsx("p",{className:"font-medium text-gray-200",children:"Free tools"}),H.jsx("ul",{className:"mt-6 space-y-4 text-sm",children:H.jsx("li",{children:H.jsx("a",{href:"https://downloadtube-iota.vercel.app/",target:"_blank",className:"transition hover:opacity-75",children:" DownloadTube "})})})]})]})]}),H.jsx("div",{className:"mt-12 border-t text-gray-300 border-gray-100 pt-12",children:H.jsx("div",{className:"sm:flex sm:items-center sm:justify-between",children:H.jsx("p",{className:"mt-8 text-sm sm:mt-0",children:"© 2024. Bedead. Made with 💖."})})})]})]})};function K7(){return H.jsxs("div",{className:"bg-gradient-to-b from-white to-primary",children:[H.jsx(xB,{}),H.jsx(fB,{}),H.jsx(D7,{}),H.jsx(k7,{}),H.jsx(W7,{}),H.jsx(Y7,{}),H.jsx(q7,{})]})}zy.createRoot(document.getElementById("root")).render(H.jsx(Zm.StrictMode,{children:H.jsx(K7,{})})); diff --git a/assets/index-9b6fc05c.css b/assets/index-9b6fc05c.css new file mode 100644 index 0000000..2166831 --- /dev/null +++ b/assets/index-9b6fc05c.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.-top-10{top:-2.5rem}.-top-12{top:-3rem}.bottom-10{bottom:2.5rem}.bottom-32{bottom:8rem}.bottom-8{bottom:2rem}.left-20{left:5rem}.right-0{right:0}.right-10{right:2.5rem}.right-40{right:10rem}.top-0{top:0}.top-20{top:5rem}.top-60{top:15rem}.top-\[120px\]{top:120px}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-m-5{margin:-1.25rem}.m-3{margin:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-20{margin-top:5rem;margin-bottom:5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.ml-2{margin-left:.5rem}.ml-5{margin-left:1.25rem}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.size-6{width:1.5rem;height:1.5rem}.h-1\/2{height:50%}.h-10{height:2.5rem}.h-16{height:4rem}.h-3{height:.75rem}.h-32{height:8rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-52{height:13rem}.h-\[230px\]{height:230px}.h-\[28px\]{height:28px}.h-\[400px\]{height:400px}.h-\[64px\]{height:64px}.h-\[75\%\]{height:75%}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.min-h-\[280px\]{min-height:280px}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-16{width:4rem}.w-3{width:.75rem}.w-5{width:1.25rem}.w-64{width:16rem}.w-96{width:24rem}.w-\[28px\]{width:28px}.w-\[35px\]{width:35px}.w-\[70\%\]{width:70%}.w-\[75\%\]{width:75%}.w-\[90\%\]{width:90%}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-\[140px\]{min-width:140px}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.max-w-screen-lg{max-width:1024px}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-grow{flex-grow:1}.rotate-12{--tw-rotate: 12deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-3{--tw-rotate: 3deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-6{--tw-rotate: 6deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-evenly{justify-content:space-evenly}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-.5rem * var(--tw-space-x-reverse));margin-left:calc(-.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[20px\]{border-radius:20px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-\[356px\]{border-bottom-right-radius:356px;border-bottom-left-radius:356px}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-\[\#373737\]{--tw-border-opacity: 1;border-color:rgb(55 55 55 / var(--tw-border-opacity))}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-primary{--tw-border-opacity: 1;border-color:rgb(246 246 246 / var(--tw-border-opacity))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.bg-\[\#373737\]{--tw-bg-opacity: 1;background-color:rgb(55 55 55 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(246 246 246 / var(--tw-bg-opacity))}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(55 55 55 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-yellow-400{--tw-bg-opacity: 1;background-color:rgb(250 204 21 / var(--tw-bg-opacity))}.bg-opacity-60{--tw-bg-opacity: .6}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-\[\#f6f6f6\]{--tw-gradient-from: #f6f6f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(246 246 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-400{--tw-gradient-from: #60a5fa var(--tw-gradient-from-position);--tw-gradient-to: rgb(96 165 250 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-400{--tw-gradient-from: #c084fc var(--tw-gradient-from-position);--tw-gradient-to: rgb(192 132 252 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-400{--tw-gradient-from: #facc15 var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 204 21 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-green-500{--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #22c55e var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-orange-500{--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #f97316 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-pink-500{--tw-gradient-to: rgb(236 72 153 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #ec4899 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-red-500{--tw-gradient-to: #ef4444 var(--tw-gradient-to-position)}.to-teal-500{--tw-gradient-to: #14b8a6 var(--tw-gradient-to-position)}.to-white{--tw-gradient-to: #fff var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-12{padding:3rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-12{padding-left:3rem;padding-right:3rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-32{padding-top:8rem;padding-bottom:8rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pl-1{padding-left:.25rem}.pt-12{padding-top:3rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-6xl{font-size:3.75rem;line-height:1}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[24px\]{font-size:24px}.text-\[30px\]{font-size:30px}.text-\[40px\]{font-size:40px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#373737\]{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.text-\[\#dfd9ff\]{--tw-text-opacity: 1;color:rgb(223 217 255 / var(--tw-text-opacity))}.text-\[\#fcd4d4\]{--tw-text-opacity: 1;color:rgb(252 212 212 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-black-100{--tw-text-opacity: 1;color:rgb(16 13 37 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.text-primary{--tw-text-opacity: 1;color:rgb(246 246 246 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-secondary{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white-100{--tw-text-opacity: 1;color:rgb(243 243 243 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-8{text-underline-offset:8px}.shadow-card{--tw-shadow: 0px 35px 120px -15px #211e35;--tw-shadow-colored: 0px 35px 120px -15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[\#fcd4d4\]{--tw-shadow-color: #fcd4d4;--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}*{margin:0;padding:0;box-sizing:border-box;font-family:Poppins,sans-serif;scroll-behavior:smooth}.hash-span{margin-top:-100px;padding-bottom:100px;display:block}.black-gradient{background:#000000;background:linear-gradient(to right,#434343,#000000)}.white-gradient{background:#ffffff;background:linear-gradient(to right,#e6eaf5,#f6f6f6)}.violet-gradient{background:linear-gradient(-90deg,#373737 0%,rgba(60,51,80,0) 100%);background:-webkit-linear-gradient(-90deg,#373737 0%,black 100%)}.green-pink-gradient{background:#00cea8;background:linear-gradient(90.13deg,#00cea8 1.9%,#bf61ff 97.5%);background:-webkit-linear-gradient(-90.13deg,#00cea8 1.9%,#bf61ff 97.5%)}.orange-text-gradient{background:#f12711;background:linear-gradient(to top,#f12711,#f5af19);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.green-text-gradient{background:#11998e;background:linear-gradient(to top,#11998e,#38ef7d);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.blue-text-gradient{background:#56ccf2;background:linear-gradient(to top,#2f80ed,#56ccf2);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.pink-text-gradient{background:#ec008c;background:linear-gradient(to top,#ec008c,#fc6767);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.canvas-loader{font-size:10px;width:1em;height:1em;border-radius:50%;position:relative;text-indent:-9999em;animation:mulShdSpin 1.1s infinite ease;transform:translateZ(0)}@keyframes mulShdSpin{0%,to{box-shadow:0 -2.6em #fff,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #ffffff80,-1.8em -1.8em #ffffffb3}12.5%{box-shadow:0 -2.6em #ffffffb3,1.8em -1.8em #fff,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #ffffff80}25%{box-shadow:0 -2.6em #ffffff80,1.8em -1.8em #ffffffb3,2.5em 0 #fff,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #fff3}37.5%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #ffffff80,2.5em 0 #ffffffb3,1.75em 1.75em #fff,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #fff3}50%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #ffffff80,1.75em 1.75em #ffffffb3,0 2.5em #fff,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #fff3}62.5%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #ffffff80,0 2.5em #ffffffb3,-1.8em 1.8em #fff,-2.6em 0 #fff3,-1.8em -1.8em #fff3}75%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #ffffff80,-1.8em 1.8em #ffffffb3,-2.6em 0 #fff,-1.8em -1.8em #fff3}87.5%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #ffffff80,-2.6em 0 #ffffffb3,-1.8em -1.8em #fff}}.funky-text-outline{text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff,2px 2px 0 #fff,-2px -2px 0 #fff,2px -2px 0 #fff,-2px 2px 0 #fff}.funky-text-outline-2{text-shadow:-3px -3px 0 #C0C0C0,3px -3px 0 #C0C0C0,-3px 3px 0 #C0C0C0,3px 3px 0 #C0C0C0}.placeholder\:text-secondary::-moz-placeholder{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.placeholder\:text-secondary::placeholder{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.hover\:bg-blue-300:hover{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.hover\:bg-green-300:hover{--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity))}.hover\:bg-slate-600:hover{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.hover\:bg-yellow-500:hover{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.hover\:text-primary:hover{--tw-text-opacity: 1;color:rgb(246 246 246 / var(--tw-text-opacity))}.hover\:text-secondary:hover{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-75:hover{opacity:.75}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width: 450px){.xs\:bottom-8{bottom:2rem}.xs\:w-\[250px\]{width:250px}.xs\:text-\[20px\]{font-size:20px}.xs\:text-\[40px\]{font-size:40px}.xs\:text-\[50px\]{font-size:50px}}@media (min-width: 640px){.sm\:right-5{right:1.25rem}.sm\:top-20{top:5rem}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-80{height:20rem}.sm\:w-\[360px\]{width:360px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-16{padding-top:4rem;padding-bottom:4rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[18px\]{font-size:18px}.sm\:text-\[26px\]{font-size:26px}.sm\:text-\[50px\]{font-size:50px}.sm\:text-\[60px\]{font-size:60px}}@media (min-width: 768px){.md\:-right-20{right:-5rem}.md\:-right-24{right:-6rem}.md\:bottom-0{bottom:0}.md\:top-10{top:2.5rem}.md\:top-2{top:.5rem}.md\:-m-10{margin:-2.5rem}.md\:block{display:block}.md\:flex{display:flex}.md\:max-w-3xl{max-width:48rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:gap-4{gap:1rem}.md\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.md\:text-\[60px\]{font-size:60px}}@media (min-width: 1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:h-\[400px\]{height:400px}.lg\:h-full{height:100%}.lg\:w-\[400px\]{width:400px}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-\[30px\]{font-size:30px}.lg\:text-\[80px\]{font-size:80px}.lg\:leading-\[40px\]{line-height:40px}.lg\:leading-\[98px\]{line-height:98px}}@media (min-width: 1280px){.xl\:mt-6{margin-top:1.5rem}}.vertical-timeline *{-webkit-box-sizing:border-box;box-sizing:border-box}.vertical-timeline{width:95%;max-width:1170px;margin:0 auto;position:relative;padding:2em 0}.vertical-timeline:after{content:"";display:table;clear:both}.vertical-timeline:before{content:"";position:absolute;top:0;left:18px;height:100%;width:4px;background:var(--line-color)}.vertical-timeline.vertical-timeline--one-column-right:before{right:18px;left:unset}@media only screen and (min-width:1170px){.vertical-timeline.vertical-timeline--two-columns{width:90%}.vertical-timeline.vertical-timeline--two-columns:before{left:50%;margin-left:-2px}}.vertical-timeline-element{position:relative;margin:2em 0}.vertical-timeline-element>div{min-height:1px}.vertical-timeline-element:after{content:"";display:table;clear:both}.vertical-timeline-element:first-child{margin-top:0}.vertical-timeline-element:last-child{margin-bottom:0}@media only screen and (min-width:1170px){.vertical-timeline-element{margin:4em 0}.vertical-timeline-element:first-child{margin-top:0}.vertical-timeline-element:last-child{margin-bottom:0}}.vertical-timeline-element-icon{position:absolute;top:0;left:0;width:40px;height:40px;border-radius:50%;-webkit-box-shadow:0 0 0 4px #fff,inset 0 2px 0 rgba(0,0,0,.08),0 3px 0 4px rgba(0,0,0,.05);box-shadow:0 0 0 4px #fff,inset 0 2px #00000014,0 3px 0 4px #0000000d}.vertical-timeline--one-column-right .vertical-timeline-element-icon{right:0;left:unset}.vertical-timeline-element-icon svg{display:block;width:24px;height:24px;position:relative;left:50%;top:50%;margin-left:-12px;margin-top:-12px}@media only screen and (min-width:1170px){.vertical-timeline--two-columns .vertical-timeline-element-icon{width:60px;height:60px;left:50%;margin-left:-30px}}.vertical-timeline-element-icon{-webkit-transform:translateZ(0);-webkit-backface-visibility:hidden}.vertical-timeline--animate .vertical-timeline-element-icon.is-hidden{visibility:hidden}.vertical-timeline--animate .vertical-timeline-element-icon.bounce-in{visibility:visible;-webkit-animation:cd-bounce-1 .6s;animation:cd-bounce-1 .6s}@-webkit-keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(.5)}60%{opacity:1;-webkit-transform:scale(1.2)}to{-webkit-transform:scale(1)}}@keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}60%{opacity:1;-webkit-transform:scale(1.2);transform:scale(1.2)}to{-webkit-transform:scale(1);transform:scale(1)}}.vertical-timeline-element-content{position:relative;margin-left:60px;background:#fff;border-radius:.25em;padding:1em;-webkit-box-shadow:0 3px 0 #ddd;box-shadow:0 3px #ddd}.vertical-timeline--one-column-right .vertical-timeline-element-content{margin-right:60px;margin-left:unset}.vertical-timeline-element--no-children .vertical-timeline-element-content{background:0 0;-webkit-box-shadow:none;box-shadow:none}.vertical-timeline-element-content:after{content:"";display:table;clear:both}.vertical-timeline-element-content h2{color:#303e49}.vertical-timeline-element-content .vertical-timeline-element-date,.vertical-timeline-element-content p{font-size:13px;font-size:.8125rem;font-weight:500}.vertical-timeline-element-content .vertical-timeline-element-date{display:inline-block}.vertical-timeline-element-content p{margin:1em 0 0;line-height:1.6}.vertical-timeline-element-title,.vertical-timeline-element-subtitle{margin:0}.vertical-timeline-element-content .vertical-timeline-element-date{float:left;padding:.8em 0;opacity:.7}.vertical-timeline-element-content-arrow{content:"";position:absolute;top:16px;right:100%;height:0;width:0;border:7px solid transparent;border-right:7px solid #fff}.vertical-timeline--one-column-right .vertical-timeline-element-content-arrow{content:"";position:absolute;top:16px;right:unset;left:100%;height:0;width:0;border:7px solid transparent;border-left:7px solid #fff}.vertical-timeline--one-column-right .vertical-timeline-element-content:before{left:100%;border-left:7px solid #fff;border-right:unset}.vertical-timeline-element--no-children .vertical-timeline-element-content:before{display:none}.vertical-timeline-element--no-children .vertical-timeline-element-content-arrow{display:none}@media only screen and (min-width:768px){.vertical-timeline-element-content h2{font-size:20px;font-size:1.25rem}.vertical-timeline-element-content p{font-size:16px;font-size:1rem}.vertical-timeline-element-content .vertical-timeline-element-date{font-size:14px;font-size:.875rem}}@media only screen and (min-width:1170px){.vertical-timeline--two-columns .vertical-timeline-element-content{margin-left:0;padding:1.5em;width:44%}.vertical-timeline--two-columns .vertical-timeline-element-content-arrow{top:24px;left:100%;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vertical-timeline--two-columns .vertical-timeline-element-content .vertical-timeline-element-date{position:absolute;width:100%;left:124%;top:6px;font-size:16px;font-size:1rem}.vertical-timeline--two-columns .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content,.vertical-timeline--two-columns .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content{float:right}.vertical-timeline--two-columns .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content-arrow,.vertical-timeline--two-columns .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content-arrow{top:24px;left:auto;right:100%;-webkit-transform:rotate(0);transform:rotate(0)}.vertical-timeline--one-column-right .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content-arrow,.vertical-timeline--one-column-right .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content-arrow{top:24px;left:100%;right:auto;-webkit-transform:rotate(0);transform:rotate(0)}.vertical-timeline--two-columns .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content .vertical-timeline-element-date,.vertical-timeline--two-columns .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content .vertical-timeline-element-date{left:auto;right:124%;text-align:right}}.vertical-timeline--animate .vertical-timeline-element-content.is-hidden{visibility:hidden}.vertical-timeline--animate .vertical-timeline-element-content.bounce-in{visibility:visible;-webkit-animation:cd-bounce-2 .6s;animation:cd-bounce-2 .6s}@media only screen and (min-width:1170px){.vertical-timeline--two-columns.vertical-timeline--animate .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content.bounce-in,.vertical-timeline--two-columns.vertical-timeline--animate .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content.bounce-in{-webkit-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s}}@media only screen and (max-width:1169px){.vertical-timeline--animate .vertical-timeline-element-content.bounce-in{visibility:visible;-webkit-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s}}@-webkit-keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px)}to{-webkit-transform:translateX(0)}}@keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px);transform:translate(-100px)}60%{opacity:1;-webkit-transform:translateX(20px);transform:translate(20px)}to{-webkit-transform:translateX(0);transform:translate(0)}}@-webkit-keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px)}to{-webkit-transform:translateX(0)}}@keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px);transform:translate(100px)}60%{opacity:1;-webkit-transform:translateX(-20px);transform:translate(-20px)}to{-webkit-transform:translateX(0);transform:translate(0)}} diff --git a/assets/index-d882bc87.css b/assets/index-d882bc87.css deleted file mode 100644 index 1f308b4..0000000 --- a/assets/index-d882bc87.css +++ /dev/null @@ -1 +0,0 @@ -@import"https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap";.vertical-timeline *{-webkit-box-sizing:border-box;box-sizing:border-box}.vertical-timeline{width:95%;max-width:1170px;margin:0 auto;position:relative;padding:2em 0}.vertical-timeline:after{content:"";display:table;clear:both}.vertical-timeline:before{content:"";position:absolute;top:0;left:18px;height:100%;width:4px;background:var(--line-color)}.vertical-timeline.vertical-timeline--one-column-right:before{right:18px;left:unset}@media only screen and (min-width:1170px){.vertical-timeline.vertical-timeline--two-columns{width:90%}.vertical-timeline.vertical-timeline--two-columns:before{left:50%;margin-left:-2px}}.vertical-timeline-element{position:relative;margin:2em 0}.vertical-timeline-element>div{min-height:1px}.vertical-timeline-element:after{content:"";display:table;clear:both}.vertical-timeline-element:first-child{margin-top:0}.vertical-timeline-element:last-child{margin-bottom:0}@media only screen and (min-width:1170px){.vertical-timeline-element{margin:4em 0}.vertical-timeline-element:first-child{margin-top:0}.vertical-timeline-element:last-child{margin-bottom:0}}.vertical-timeline-element-icon{position:absolute;top:0;left:0;width:40px;height:40px;border-radius:50%;-webkit-box-shadow:0 0 0 4px #fff,inset 0 2px 0 rgba(0,0,0,.08),0 3px 0 4px rgba(0,0,0,.05);box-shadow:0 0 0 4px #fff,inset 0 2px #00000014,0 3px 0 4px #0000000d}.vertical-timeline--one-column-right .vertical-timeline-element-icon{right:0;left:unset}.vertical-timeline-element-icon svg{display:block;width:24px;height:24px;position:relative;left:50%;top:50%;margin-left:-12px;margin-top:-12px}@media only screen and (min-width:1170px){.vertical-timeline--two-columns .vertical-timeline-element-icon{width:60px;height:60px;left:50%;margin-left:-30px}}.vertical-timeline-element-icon{-webkit-transform:translateZ(0);-webkit-backface-visibility:hidden}.vertical-timeline--animate .vertical-timeline-element-icon.is-hidden{visibility:hidden}.vertical-timeline--animate .vertical-timeline-element-icon.bounce-in{visibility:visible;-webkit-animation:cd-bounce-1 .6s;animation:cd-bounce-1 .6s}@-webkit-keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(.5)}60%{opacity:1;-webkit-transform:scale(1.2)}to{-webkit-transform:scale(1)}}@keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}60%{opacity:1;-webkit-transform:scale(1.2);transform:scale(1.2)}to{-webkit-transform:scale(1);transform:scale(1)}}.vertical-timeline-element-content{position:relative;margin-left:60px;background:#fff;border-radius:.25em;padding:1em;-webkit-box-shadow:0 3px 0 #ddd;box-shadow:0 3px #ddd}.vertical-timeline--one-column-right .vertical-timeline-element-content{margin-right:60px;margin-left:unset}.vertical-timeline-element--no-children .vertical-timeline-element-content{background:0 0;-webkit-box-shadow:none;box-shadow:none}.vertical-timeline-element-content:after{content:"";display:table;clear:both}.vertical-timeline-element-content h2{color:#303e49}.vertical-timeline-element-content .vertical-timeline-element-date,.vertical-timeline-element-content p{font-size:13px;font-size:.8125rem;font-weight:500}.vertical-timeline-element-content .vertical-timeline-element-date{display:inline-block}.vertical-timeline-element-content p{margin:1em 0 0;line-height:1.6}.vertical-timeline-element-title,.vertical-timeline-element-subtitle{margin:0}.vertical-timeline-element-content .vertical-timeline-element-date{float:left;padding:.8em 0;opacity:.7}.vertical-timeline-element-content-arrow{content:"";position:absolute;top:16px;right:100%;height:0;width:0;border:7px solid transparent;border-right:7px solid #fff}.vertical-timeline--one-column-right .vertical-timeline-element-content-arrow{content:"";position:absolute;top:16px;right:unset;left:100%;height:0;width:0;border:7px solid transparent;border-left:7px solid #fff}.vertical-timeline--one-column-right .vertical-timeline-element-content:before{left:100%;border-left:7px solid #fff;border-right:unset}.vertical-timeline-element--no-children .vertical-timeline-element-content:before{display:none}.vertical-timeline-element--no-children .vertical-timeline-element-content-arrow{display:none}@media only screen and (min-width:768px){.vertical-timeline-element-content h2{font-size:20px;font-size:1.25rem}.vertical-timeline-element-content p{font-size:16px;font-size:1rem}.vertical-timeline-element-content .vertical-timeline-element-date{font-size:14px;font-size:.875rem}}@media only screen and (min-width:1170px){.vertical-timeline--two-columns .vertical-timeline-element-content{margin-left:0;padding:1.5em;width:44%}.vertical-timeline--two-columns .vertical-timeline-element-content-arrow{top:24px;left:100%;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vertical-timeline--two-columns .vertical-timeline-element-content .vertical-timeline-element-date{position:absolute;width:100%;left:124%;top:6px;font-size:16px;font-size:1rem}.vertical-timeline--two-columns .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content,.vertical-timeline--two-columns .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content{float:right}.vertical-timeline--two-columns .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content-arrow,.vertical-timeline--two-columns .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content-arrow{top:24px;left:auto;right:100%;-webkit-transform:rotate(0);transform:rotate(0)}.vertical-timeline--one-column-right .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content-arrow,.vertical-timeline--one-column-right .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content-arrow{top:24px;left:100%;right:auto;-webkit-transform:rotate(0);transform:rotate(0)}.vertical-timeline--two-columns .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content .vertical-timeline-element-date,.vertical-timeline--two-columns .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content .vertical-timeline-element-date{left:auto;right:124%;text-align:right}}.vertical-timeline--animate .vertical-timeline-element-content.is-hidden{visibility:hidden}.vertical-timeline--animate .vertical-timeline-element-content.bounce-in{visibility:visible;-webkit-animation:cd-bounce-2 .6s;animation:cd-bounce-2 .6s}@media only screen and (min-width:1170px){.vertical-timeline--two-columns.vertical-timeline--animate .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content.bounce-in,.vertical-timeline--two-columns.vertical-timeline--animate .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content.bounce-in{-webkit-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s}}@media only screen and (max-width:1169px){.vertical-timeline--animate .vertical-timeline-element-content.bounce-in{visibility:visible;-webkit-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s}}@-webkit-keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px)}to{-webkit-transform:translateX(0)}}@keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px);transform:translate(-100px)}60%{opacity:1;-webkit-transform:translateX(20px);transform:translate(20px)}to{-webkit-transform:translateX(0);transform:translate(0)}}@-webkit-keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px)}to{-webkit-transform:translateX(0)}}@keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px);transform:translate(100px)}60%{opacity:1;-webkit-transform:translateX(-20px);transform:translate(-20px)}to{-webkit-transform:translateX(0);transform:translate(0)}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.-top-10{top:-2.5rem}.-top-12{top:-3rem}.bottom-10{bottom:2.5rem}.bottom-32{bottom:8rem}.bottom-8{bottom:2rem}.left-20{left:5rem}.right-0{right:0}.right-10{right:2.5rem}.right-40{right:10rem}.top-0{top:0}.top-20{top:5rem}.top-60{top:15rem}.top-\[120px\]{top:120px}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-m-5{margin:-1.25rem}.m-3{margin:.75rem}.m-auto{margin:auto}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-20{margin-top:5rem;margin-bottom:5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-5{margin-bottom:1.25rem}.ml-2{margin-left:.5rem}.ml-5{margin-left:1.25rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.size-6{width:1.5rem;height:1.5rem}.h-1\/2{height:50%}.h-10{height:2.5rem}.h-16{height:4rem}.h-3{height:.75rem}.h-32{height:8rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-52{height:13rem}.h-\[117px\]{height:117px}.h-\[230px\]{height:230px}.h-\[28px\]{height:28px}.h-\[400px\]{height:400px}.h-\[64px\]{height:64px}.h-\[75\%\]{height:75%}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.min-h-\[280px\]{min-height:280px}.w-1{width:.25rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-16{width:4rem}.w-3{width:.75rem}.w-5{width:1.25rem}.w-\[150px\]{width:150px}.w-\[28px\]{width:28px}.w-\[35px\]{width:35px}.w-\[70\%\]{width:70%}.w-\[75\%\]{width:75%}.w-\[90\%\]{width:90%}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-\[140px\]{min-width:140px}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.max-w-screen-lg{max-width:1024px}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-\[0\.75\]{flex:.75}.flex-grow{flex-grow:1}.rotate-12{--tw-rotate: 12deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-3{--tw-rotate: 3deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-6{--tw-rotate: 6deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-evenly{justify-content:space-evenly}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-.5rem * var(--tw-space-x-reverse));margin-left:calc(-.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[20px\]{border-radius:20px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-b-\[356px\]{border-bottom-right-radius:356px;border-bottom-left-radius:356px}.border-2{border-width:2px}.border-4{border-width:4px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-\[\#373737\]{--tw-border-opacity: 1;border-color:rgb(55 55 55 / var(--tw-border-opacity))}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-primary{--tw-border-opacity: 1;border-color:rgb(246 246 246 / var(--tw-border-opacity))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.bg-\[\#373737\]{--tw-bg-opacity: 1;background-color:rgb(55 55 55 / var(--tw-bg-opacity))}.bg-\[\#fff2f2\]{--tw-bg-opacity: 1;background-color:rgb(255 242 242 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(246 246 246 / var(--tw-bg-opacity))}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(55 55 55 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-yellow-400{--tw-bg-opacity: 1;background-color:rgb(250 204 21 / var(--tw-bg-opacity))}.bg-opacity-60{--tw-bg-opacity: .6}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-\[\#f6f6f6\]{--tw-gradient-from: #f6f6f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(246 246 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-400{--tw-gradient-from: #60a5fa var(--tw-gradient-from-position);--tw-gradient-to: rgb(96 165 250 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-400{--tw-gradient-from: #c084fc var(--tw-gradient-from-position);--tw-gradient-to: rgb(192 132 252 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-400{--tw-gradient-from: #facc15 var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 204 21 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-green-500{--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #22c55e var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-orange-500{--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #f97316 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-pink-500{--tw-gradient-to: rgb(236 72 153 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #ec4899 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-primary{--tw-gradient-to: #f6f6f6 var(--tw-gradient-to-position)}.to-red-500{--tw-gradient-to: #ef4444 var(--tw-gradient-to-position)}.to-teal-500{--tw-gradient-to: #14b8a6 var(--tw-gradient-to-position)}.to-white{--tw-gradient-to: #fff var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-12{padding:3rem}.p-2{padding:.5rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-12{padding-left:3rem;padding-right:3rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-32{padding-top:8rem;padding-bottom:8rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-10{padding-bottom:2.5rem}.pl-1{padding-left:.25rem}.pt-12{padding-top:3rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-6xl{font-size:3.75rem;line-height:1}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[24px\]{font-size:24px}.text-\[30px\]{font-size:30px}.text-\[40px\]{font-size:40px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#373737\]{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.text-\[\#dfd9ff\]{--tw-text-opacity: 1;color:rgb(223 217 255 / var(--tw-text-opacity))}.text-\[\#fcd4d4\]{--tw-text-opacity: 1;color:rgb(252 212 212 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-black-100{--tw-text-opacity: 1;color:rgb(16 13 37 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.text-primary{--tw-text-opacity: 1;color:rgb(246 246 246 / var(--tw-text-opacity))}.text-secondary{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white-100{--tw-text-opacity: 1;color:rgb(243 243 243 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-8{text-underline-offset:8px}.shadow-card{--tw-shadow: 0px 35px 120px -15px #211e35;--tw-shadow-colored: 0px 35px 120px -15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[\#fcd4d4\]{--tw-shadow-color: #fcd4d4;--tw-shadow: var(--tw-shadow-colored)}.shadow-primary{--tw-shadow-color: #f6f6f6;--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}*{margin:0;padding:0;box-sizing:border-box;font-family:Poppins,sans-serif;scroll-behavior:smooth}body{background:linear-gradient(180deg,#e6eaf5 0%,#f6f6f6 80%)}.hash-span{margin-top:-100px;padding-bottom:100px;display:block}.black-gradient{background:#000000;background:linear-gradient(to right,#434343,#000000)}.white-gradient{background:#ffffff;background:linear-gradient(to right,#e6eaf5,#f6f6f6)}.violet-gradient{background:linear-gradient(-90deg,#373737 0%,rgba(60,51,80,0) 100%);background:-webkit-linear-gradient(-90deg,#373737 0%,black 100%)}.green-pink-gradient{background:#00cea8;background:linear-gradient(90.13deg,#00cea8 1.9%,#bf61ff 97.5%);background:-webkit-linear-gradient(-90.13deg,#00cea8 1.9%,#bf61ff 97.5%)}.orange-text-gradient{background:#f12711;background:linear-gradient(to top,#f12711,#f5af19);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.green-text-gradient{background:#11998e;background:linear-gradient(to top,#11998e,#38ef7d);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.blue-text-gradient{background:#56ccf2;background:linear-gradient(to top,#2f80ed,#56ccf2);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.pink-text-gradient{background:#ec008c;background:linear-gradient(to top,#ec008c,#fc6767);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.canvas-loader{font-size:10px;width:1em;height:1em;border-radius:50%;position:relative;text-indent:-9999em;animation:mulShdSpin 1.1s infinite ease;transform:translateZ(0)}@keyframes mulShdSpin{0%,to{box-shadow:0 -2.6em #fff,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #ffffff80,-1.8em -1.8em #ffffffb3}12.5%{box-shadow:0 -2.6em #ffffffb3,1.8em -1.8em #fff,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #ffffff80}25%{box-shadow:0 -2.6em #ffffff80,1.8em -1.8em #ffffffb3,2.5em 0 #fff,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #fff3}37.5%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #ffffff80,2.5em 0 #ffffffb3,1.75em 1.75em #fff,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #fff3}50%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #ffffff80,1.75em 1.75em #ffffffb3,0 2.5em #fff,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #fff3}62.5%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #ffffff80,0 2.5em #ffffffb3,-1.8em 1.8em #fff,-2.6em 0 #fff3,-1.8em -1.8em #fff3}75%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #ffffff80,-1.8em 1.8em #ffffffb3,-2.6em 0 #fff,-1.8em -1.8em #fff3}87.5%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #ffffff80,-2.6em 0 #ffffffb3,-1.8em -1.8em #fff}}.funky-text-outline{text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff,2px 2px 0 #fff,-2px -2px 0 #fff,2px -2px 0 #fff,-2px 2px 0 #fff}.funky-text-outline-2{text-shadow:-3px -3px 0 #C0C0C0,3px -3px 0 #C0C0C0,-3px 3px 0 #C0C0C0,3px 3px 0 #C0C0C0}.placeholder\:text-secondary::-moz-placeholder{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.placeholder\:text-secondary::placeholder{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.placeholder\:text-white-100::-moz-placeholder{--tw-text-opacity: 1;color:rgb(243 243 243 / var(--tw-text-opacity))}.placeholder\:text-white-100::placeholder{--tw-text-opacity: 1;color:rgb(243 243 243 / var(--tw-text-opacity))}.hover\:bg-blue-300:hover{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.hover\:bg-green-300:hover{--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity))}.hover\:bg-slate-600:hover{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.hover\:bg-yellow-500:hover{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.hover\:text-primary:hover{--tw-text-opacity: 1;color:rgb(246 246 246 / var(--tw-text-opacity))}.hover\:text-secondary:hover{--tw-text-opacity: 1;color:rgb(55 55 55 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-75:hover{opacity:.75}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width: 450px){.xs\:bottom-8{bottom:2rem}.xs\:w-\[250px\]{width:250px}.xs\:text-\[20px\]{font-size:20px}.xs\:text-\[40px\]{font-size:40px}.xs\:text-\[50px\]{font-size:50px}}@media (min-width: 640px){.sm\:right-5{right:1.25rem}.sm\:top-20{top:5rem}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-80{height:20rem}.sm\:w-\[360px\]{width:360px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-12{padding-top:3rem;padding-bottom:3rem}.sm\:py-16{padding-top:4rem;padding-bottom:4rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[18px\]{font-size:18px}.sm\:text-\[26px\]{font-size:26px}.sm\:text-\[50px\]{font-size:50px}.sm\:text-\[60px\]{font-size:60px}}@media (min-width: 768px){.md\:-right-20{right:-5rem}.md\:-right-24{right:-6rem}.md\:bottom-0{bottom:0}.md\:top-10{top:2.5rem}.md\:top-2{top:.5rem}.md\:-m-10{margin:-2.5rem}.md\:block{display:block}.md\:flex{display:flex}.md\:max-w-3xl{max-width:48rem}.md\:max-w-\[50\%\]{max-width:50%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:gap-4{gap:1rem}.md\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.md\:text-\[60px\]{font-size:60px}}@media (min-width: 1024px){.lg\:top-\[100px\]{top:100px}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:h-\[400px\]{height:400px}.lg\:h-full{height:100%}.lg\:w-\[400px\]{width:400px}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-\[30px\]{font-size:30px}.lg\:text-\[80px\]{font-size:80px}.lg\:leading-\[40px\]{line-height:40px}.lg\:leading-\[98px\]{line-height:98px}}@media (min-width: 1280px){.xl\:mt-6{margin-top:1.5rem}} diff --git a/assets/index-f681c7fa.js b/assets/index-f681c7fa.js new file mode 100644 index 0000000..43f0b2e --- /dev/null +++ b/assets/index-f681c7fa.js @@ -0,0 +1,6976 @@ +function OB(n,e){for(var t=0;ti[r]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(r){if(r.ep)return;r.ep=!0;const s=t(r);fetch(r.href,s)}})();function kT(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function UB(n){if(n.__esModule)return n;var e=n.default;if(typeof e=="function"){var t=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(n).forEach(function(i){var r=Object.getOwnPropertyDescriptor(n,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:function(){return n[i]}})}),t}var WN={exports:{}},y_={},jN={exports:{}},$t={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var wm=Symbol.for("react.element"),FB=Symbol.for("react.portal"),VB=Symbol.for("react.fragment"),BB=Symbol.for("react.strict_mode"),zB=Symbol.for("react.profiler"),HB=Symbol.for("react.provider"),GB=Symbol.for("react.context"),WB=Symbol.for("react.forward_ref"),jB=Symbol.for("react.suspense"),XB=Symbol.for("react.memo"),qB=Symbol.for("react.lazy"),nP=Symbol.iterator;function $B(n){return n===null||typeof n!="object"?null:(n=nP&&n[nP]||n["@@iterator"],typeof n=="function"?n:null)}var XN={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},qN=Object.assign,$N={};function vd(n,e,t){this.props=n,this.context=e,this.refs=$N,this.updater=t||XN}vd.prototype.isReactComponent={};vd.prototype.setState=function(n,e){if(typeof n!="object"&&typeof n!="function"&&n!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,n,e,"setState")};vd.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,"forceUpdate")};function YN(){}YN.prototype=vd.prototype;function OT(n,e,t){this.props=n,this.context=e,this.refs=$N,this.updater=t||XN}var UT=OT.prototype=new YN;UT.constructor=OT;qN(UT,vd.prototype);UT.isPureReactComponent=!0;var iP=Array.isArray,KN=Object.prototype.hasOwnProperty,FT={current:null},QN={key:!0,ref:!0,__self:!0,__source:!0};function JN(n,e,t){var i,r={},s=null,o=null;if(e!=null)for(i in e.ref!==void 0&&(o=e.ref),e.key!==void 0&&(s=""+e.key),e)KN.call(e,i)&&!QN.hasOwnProperty(i)&&(r[i]=e[i]);var a=arguments.length-2;if(a===1)r.children=t;else if(1>>1,Me=W[oe];if(0>>1;oer(we,Z))Ner(be,we)?(W[oe]=be,W[Ne]=Z,oe=Ne):(W[oe]=we,W[he]=Z,oe=he);else if(Ner(be,Z))W[oe]=be,W[Ne]=Z,oe=Ne;else break e}}return J}function r(W,J){var Z=W.sortIndex-J.sortIndex;return Z!==0?Z:W.id-J.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;n.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var l=[],c=[],d=1,f=null,p=3,m=!1,_=!1,S=!1,x=typeof setTimeout=="function"?setTimeout:null,y=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function w(W){for(var J=t(c);J!==null;){if(J.callback===null)i(c);else if(J.startTime<=W)i(c),J.sortIndex=J.expirationTime,e(l,J);else break;J=t(c)}}function M(W){if(S=!1,w(W),!_)if(t(l)!==null)_=!0,ee(O);else{var J=t(c);J!==null&&pe(M,J.startTime-W)}}function O(W,J){_=!1,S&&(S=!1,y(P),P=-1),m=!0;var Z=p;try{for(w(J),f=t(l);f!==null&&(!(f.expirationTime>J)||W&&!R());){var oe=f.callback;if(typeof oe=="function"){f.callback=null,p=f.priorityLevel;var Me=oe(f.expirationTime<=J);J=n.unstable_now(),typeof Me=="function"?f.callback=Me:f===t(l)&&i(l),w(J)}else i(l);f=t(l)}if(f!==null)var Re=!0;else{var he=t(c);he!==null&&pe(M,he.startTime-J),Re=!1}return Re}finally{f=null,p=Z,m=!1}}var k=!1,I=null,P=-1,D=5,A=-1;function R(){return!(n.unstable_now()-AW||125oe?(W.sortIndex=Z,e(c,W),t(l)===null&&W===t(c)&&(S?(y(P),P=-1):S=!0,pe(M,Z-oe))):(W.sortIndex=Me,e(l,W),_||m||(_=!0,ee(O))),W},n.unstable_shouldYield=R,n.unstable_wrapCallback=function(W){var J=p;return function(){var Z=p;p=J;try{return W.apply(this,arguments)}finally{p=Z}}}})(iD);nD.exports=iD;var oz=nD.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var az=q,es=oz;function De(n){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+n,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),L1=Object.prototype.hasOwnProperty,lz=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,sP={},oP={};function cz(n){return L1.call(oP,n)?!0:L1.call(sP,n)?!1:lz.test(n)?oP[n]=!0:(sP[n]=!0,!1)}function uz(n,e,t,i){if(t!==null&&t.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return i?!1:t!==null?!t.acceptsBooleans:(n=n.toLowerCase().slice(0,5),n!=="data-"&&n!=="aria-");default:return!1}}function hz(n,e,t,i){if(e===null||typeof e>"u"||uz(n,e,t,i))return!0;if(i)return!1;if(t!==null)switch(t.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function Sr(n,e,t,i,r,s,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=i,this.attributeNamespace=r,this.mustUseProperty=t,this.propertyName=n,this.type=e,this.sanitizeURL=s,this.removeEmptyString=o}var Di={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(n){Di[n]=new Sr(n,0,!1,n,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(n){var e=n[0];Di[e]=new Sr(e,1,!1,n[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(n){Di[n]=new Sr(n,2,!1,n.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(n){Di[n]=new Sr(n,2,!1,n,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(n){Di[n]=new Sr(n,3,!1,n.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(n){Di[n]=new Sr(n,3,!0,n,null,!1,!1)});["capture","download"].forEach(function(n){Di[n]=new Sr(n,4,!1,n,null,!1,!1)});["cols","rows","size","span"].forEach(function(n){Di[n]=new Sr(n,6,!1,n,null,!1,!1)});["rowSpan","start"].forEach(function(n){Di[n]=new Sr(n,5,!1,n.toLowerCase(),null,!1,!1)});var BT=/[\-:]([a-z])/g;function zT(n){return n[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(n){var e=n.replace(BT,zT);Di[e]=new Sr(e,1,!1,n,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(n){var e=n.replace(BT,zT);Di[e]=new Sr(e,1,!1,n,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(n){var e=n.replace(BT,zT);Di[e]=new Sr(e,1,!1,n,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(n){Di[n]=new Sr(n,1,!1,n.toLowerCase(),null,!1,!1)});Di.xlinkHref=new Sr("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(n){Di[n]=new Sr(n,1,!1,n.toLowerCase(),null,!0,!0)});function HT(n,e,t,i){var r=Di.hasOwnProperty(e)?Di[e]:null;(r!==null?r.type!==0:i||!(2a||r[o]!==s[a]){var l=` +`+r[o].replace(" at new "," at ");return n.displayName&&l.includes("")&&(l=l.replace("",n.displayName)),l}while(1<=o&&0<=a);break}}}finally{OS=!1,Error.prepareStackTrace=t}return(n=n?n.displayName||n.name:"")?Vf(n):""}function dz(n){switch(n.tag){case 5:return Vf(n.type);case 16:return Vf("Lazy");case 13:return Vf("Suspense");case 19:return Vf("SuspenseList");case 0:case 2:case 15:return n=US(n.type,!1),n;case 11:return n=US(n.type.render,!1),n;case 1:return n=US(n.type,!0),n;default:return""}}function O1(n){if(n==null)return null;if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case ph:return"Fragment";case fh:return"Portal";case N1:return"Profiler";case GT:return"StrictMode";case D1:return"Suspense";case k1:return"SuspenseList"}if(typeof n=="object")switch(n.$$typeof){case oD:return(n.displayName||"Context")+".Consumer";case sD:return(n._context.displayName||"Context")+".Provider";case WT:var e=n.render;return n=n.displayName,n||(n=e.displayName||e.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case jT:return e=n.displayName||null,e!==null?e:O1(n.type)||"Memo";case qa:e=n._payload,n=n._init;try{return O1(n(e))}catch{}}return null}function fz(n){var e=n.type;switch(n.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return n=e.render,n=n.displayName||n.name||"",e.displayName||(n!==""?"ForwardRef("+n+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return O1(e);case 8:return e===GT?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function El(n){switch(typeof n){case"boolean":case"number":case"string":case"undefined":return n;case"object":return n;default:return""}}function lD(n){var e=n.type;return(n=n.nodeName)&&n.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function pz(n){var e=lD(n)?"checked":"value",t=Object.getOwnPropertyDescriptor(n.constructor.prototype,e),i=""+n[e];if(!n.hasOwnProperty(e)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var r=t.get,s=t.set;return Object.defineProperty(n,e,{configurable:!0,get:function(){return r.call(this)},set:function(o){i=""+o,s.call(this,o)}}),Object.defineProperty(n,e,{enumerable:t.enumerable}),{getValue:function(){return i},setValue:function(o){i=""+o},stopTracking:function(){n._valueTracker=null,delete n[e]}}}}function Hg(n){n._valueTracker||(n._valueTracker=pz(n))}function cD(n){if(!n)return!1;var e=n._valueTracker;if(!e)return!0;var t=e.getValue(),i="";return n&&(i=lD(n)?n.checked?"true":"false":n.value),n=i,n!==t?(e.setValue(n),!0):!1}function kv(n){if(n=n||(typeof document<"u"?document:void 0),typeof n>"u")return null;try{return n.activeElement||n.body}catch{return n.body}}function U1(n,e){var t=e.checked;return Hn({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??n._wrapperState.initialChecked})}function lP(n,e){var t=e.defaultValue==null?"":e.defaultValue,i=e.checked!=null?e.checked:e.defaultChecked;t=El(e.value!=null?e.value:t),n._wrapperState={initialChecked:i,initialValue:t,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function uD(n,e){e=e.checked,e!=null&&HT(n,"checked",e,!1)}function F1(n,e){uD(n,e);var t=El(e.value),i=e.type;if(t!=null)i==="number"?(t===0&&n.value===""||n.value!=t)&&(n.value=""+t):n.value!==""+t&&(n.value=""+t);else if(i==="submit"||i==="reset"){n.removeAttribute("value");return}e.hasOwnProperty("value")?V1(n,e.type,t):e.hasOwnProperty("defaultValue")&&V1(n,e.type,El(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(n.defaultChecked=!!e.defaultChecked)}function cP(n,e,t){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var i=e.type;if(!(i!=="submit"&&i!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+n._wrapperState.initialValue,t||e===n.value||(n.value=e),n.defaultValue=e}t=n.name,t!==""&&(n.name=""),n.defaultChecked=!!n._wrapperState.initialChecked,t!==""&&(n.name=t)}function V1(n,e,t){(e!=="number"||kv(n.ownerDocument)!==n)&&(t==null?n.defaultValue=""+n._wrapperState.initialValue:n.defaultValue!==""+t&&(n.defaultValue=""+t))}var Bf=Array.isArray;function Uh(n,e,t,i){if(n=n.options,e){e={};for(var r=0;r"+e.valueOf().toString()+"",e=Gg.firstChild;n.firstChild;)n.removeChild(n.firstChild);for(;e.firstChild;)n.appendChild(e.firstChild)}});function Mp(n,e){if(e){var t=n.firstChild;if(t&&t===n.lastChild&&t.nodeType===3){t.nodeValue=e;return}}n.textContent=e}var Qf={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},mz=["Webkit","ms","Moz","O"];Object.keys(Qf).forEach(function(n){mz.forEach(function(e){e=e+n.charAt(0).toUpperCase()+n.substring(1),Qf[e]=Qf[n]})});function pD(n,e,t){return e==null||typeof e=="boolean"||e===""?"":t||typeof e!="number"||e===0||Qf.hasOwnProperty(n)&&Qf[n]?(""+e).trim():e+"px"}function mD(n,e){n=n.style;for(var t in e)if(e.hasOwnProperty(t)){var i=t.indexOf("--")===0,r=pD(t,e[t],i);t==="float"&&(t="cssFloat"),i?n.setProperty(t,r):n[t]=r}}var gz=Hn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function H1(n,e){if(e){if(gz[n]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(De(137,n));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(De(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(De(61))}if(e.style!=null&&typeof e.style!="object")throw Error(De(62))}}function G1(n,e){if(n.indexOf("-")===-1)return typeof e.is=="string";switch(n){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var W1=null;function XT(n){return n=n.target||n.srcElement||window,n.correspondingUseElement&&(n=n.correspondingUseElement),n.nodeType===3?n.parentNode:n}var j1=null,Fh=null,Vh=null;function dP(n){if(n=Am(n)){if(typeof j1!="function")throw Error(De(280));var e=n.stateNode;e&&(e=E_(e),j1(n.stateNode,n.type,e))}}function gD(n){Fh?Vh?Vh.push(n):Vh=[n]:Fh=n}function yD(){if(Fh){var n=Fh,e=Vh;if(Vh=Fh=null,dP(n),e)for(n=0;n>>=0,n===0?32:31-(Cz(n)/bz|0)|0}var Wg=64,jg=4194304;function zf(n){switch(n&-n){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return n&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return n}}function Vv(n,e){var t=n.pendingLanes;if(t===0)return 0;var i=0,r=n.suspendedLanes,s=n.pingedLanes,o=t&268435455;if(o!==0){var a=o&~r;a!==0?i=zf(a):(s&=o,s!==0&&(i=zf(s)))}else o=t&~r,o!==0?i=zf(o):s!==0&&(i=zf(s));if(i===0)return 0;if(e!==0&&e!==i&&!(e&r)&&(r=i&-i,s=e&-e,r>=s||r===16&&(s&4194240)!==0))return e;if(i&4&&(i|=t&16),e=n.entangledLanes,e!==0)for(n=n.entanglements,e&=i;0t;t++)e.push(n);return e}function Em(n,e,t){n.pendingLanes|=e,e!==536870912&&(n.suspendedLanes=0,n.pingedLanes=0),n=n.eventTimes,e=31-Hs(e),n[e]=t}function Lz(n,e){var t=n.pendingLanes&~e;n.pendingLanes=e,n.suspendedLanes=0,n.pingedLanes=0,n.expiredLanes&=e,n.mutableReadLanes&=e,n.entangledLanes&=e,e=n.entanglements;var i=n.eventTimes;for(n=n.expirationTimes;0=Zf),SP=String.fromCharCode(32),wP=!1;function UD(n,e){switch(n){case"keyup":return o5.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function FD(n){return n=n.detail,typeof n=="object"&&"data"in n?n.data:null}var mh=!1;function l5(n,e){switch(n){case"compositionend":return FD(e);case"keypress":return e.which!==32?null:(wP=!0,SP);case"textInput":return n=e.data,n===SP&&wP?null:n;default:return null}}function c5(n,e){if(mh)return n==="compositionend"||!eA&&UD(n,e)?(n=kD(),dv=QT=il=null,mh=!1,n):null;switch(n){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:t,offset:e-n};n=i}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=MP(t)}}function HD(n,e){return n&&e?n===e?!0:n&&n.nodeType===3?!1:e&&e.nodeType===3?HD(n,e.parentNode):"contains"in n?n.contains(e):n.compareDocumentPosition?!!(n.compareDocumentPosition(e)&16):!1:!1}function GD(){for(var n=window,e=kv();e instanceof n.HTMLIFrameElement;){try{var t=typeof e.contentWindow.location.href=="string"}catch{t=!1}if(t)n=e.contentWindow;else break;e=kv(n.document)}return e}function tA(n){var e=n&&n.nodeName&&n.nodeName.toLowerCase();return e&&(e==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||e==="textarea"||n.contentEditable==="true")}function v5(n){var e=GD(),t=n.focusedElem,i=n.selectionRange;if(e!==t&&t&&t.ownerDocument&&HD(t.ownerDocument.documentElement,t)){if(i!==null&&tA(t)){if(e=i.start,n=i.end,n===void 0&&(n=e),"selectionStart"in t)t.selectionStart=e,t.selectionEnd=Math.min(n,t.value.length);else if(n=(e=t.ownerDocument||document)&&e.defaultView||window,n.getSelection){n=n.getSelection();var r=t.textContent.length,s=Math.min(i.start,r);i=i.end===void 0?s:Math.min(i.end,r),!n.extend&&s>i&&(r=i,i=s,s=r),r=CP(t,s);var o=CP(t,i);r&&o&&(n.rangeCount!==1||n.anchorNode!==r.node||n.anchorOffset!==r.offset||n.focusNode!==o.node||n.focusOffset!==o.offset)&&(e=e.createRange(),e.setStart(r.node,r.offset),n.removeAllRanges(),s>i?(n.addRange(e),n.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),n.addRange(e)))}}for(e=[],n=t;n=n.parentNode;)n.nodeType===1&&e.push({element:n,left:n.scrollLeft,top:n.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,gh=null,Q1=null,tp=null,J1=!1;function bP(n,e,t){var i=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;J1||gh==null||gh!==kv(i)||(i=gh,"selectionStart"in i&&tA(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),tp&&Lp(tp,i)||(tp=i,i=Hv(Q1,"onSelect"),0_h||(n.current=rE[_h],rE[_h]=null,_h--)}function An(n,e){_h++,rE[_h]=n.current,n.current=e}var Tl={},rr=Nl(Tl),Or=Nl(!1),Jc=Tl;function Qh(n,e){var t=n.type.contextTypes;if(!t)return Tl;var i=n.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===e)return i.__reactInternalMemoizedMaskedChildContext;var r={},s;for(s in t)r[s]=e[s];return i&&(n=n.stateNode,n.__reactInternalMemoizedUnmaskedChildContext=e,n.__reactInternalMemoizedMaskedChildContext=r),r}function Ur(n){return n=n.childContextTypes,n!=null}function Wv(){Rn(Or),Rn(rr)}function kP(n,e,t){if(rr.current!==Tl)throw Error(De(168));An(rr,e),An(Or,t)}function JD(n,e,t){var i=n.stateNode;if(e=e.childContextTypes,typeof i.getChildContext!="function")return t;i=i.getChildContext();for(var r in i)if(!(r in e))throw Error(De(108,fz(n)||"Unknown",r));return Hn({},t,i)}function jv(n){return n=(n=n.stateNode)&&n.__reactInternalMemoizedMergedChildContext||Tl,Jc=rr.current,An(rr,n),An(Or,Or.current),!0}function OP(n,e,t){var i=n.stateNode;if(!i)throw Error(De(169));t?(n=JD(n,e,Jc),i.__reactInternalMemoizedMergedChildContext=n,Rn(Or),Rn(rr),An(rr,n)):Rn(Or),An(Or,t)}var Go=null,T_=!1,QS=!1;function ZD(n){Go===null?Go=[n]:Go.push(n)}function R5(n){T_=!0,ZD(n)}function Dl(){if(!QS&&Go!==null){QS=!0;var n=0,e=yn;try{var t=Go;for(yn=1;n>=o,r-=o,qo=1<<32-Hs(e)+r|t<P?(D=I,I=null):D=I.sibling;var A=p(y,I,w[P],M);if(A===null){I===null&&(I=D);break}n&&I&&A.alternate===null&&e(y,I),E=s(A,E,P),k===null?O=A:k.sibling=A,k=A,I=D}if(P===w.length)return t(y,I),Nn&&Sc(y,P),O;if(I===null){for(;PP?(D=I,I=null):D=I.sibling;var R=p(y,I,A.value,M);if(R===null){I===null&&(I=D);break}n&&I&&R.alternate===null&&e(y,I),E=s(R,E,P),k===null?O=R:k.sibling=R,k=R,I=D}if(A.done)return t(y,I),Nn&&Sc(y,P),O;if(I===null){for(;!A.done;P++,A=w.next())A=f(y,A.value,M),A!==null&&(E=s(A,E,P),k===null?O=A:k.sibling=A,k=A);return Nn&&Sc(y,P),O}for(I=i(y,I);!A.done;P++,A=w.next())A=m(I,y,P,A.value,M),A!==null&&(n&&A.alternate!==null&&I.delete(A.key===null?P:A.key),E=s(A,E,P),k===null?O=A:k.sibling=A,k=A);return n&&I.forEach(function(V){return e(y,V)}),Nn&&Sc(y,P),O}function x(y,E,w,M){if(typeof w=="object"&&w!==null&&w.type===ph&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case zg:e:{for(var O=w.key,k=E;k!==null;){if(k.key===O){if(O=w.type,O===ph){if(k.tag===7){t(y,k.sibling),E=r(k,w.props.children),E.return=y,y=E;break e}}else if(k.elementType===O||typeof O=="object"&&O!==null&&O.$$typeof===qa&&VP(O)===k.type){t(y,k.sibling),E=r(k,w.props),E.ref=mf(y,k,w),E.return=y,y=E;break e}t(y,k);break}else e(y,k);k=k.sibling}w.type===ph?(E=Gc(w.props.children,y.mode,M,w.key),E.return=y,y=E):(M=xv(w.type,w.key,w.props,null,y.mode,M),M.ref=mf(y,E,w),M.return=y,y=M)}return o(y);case fh:e:{for(k=w.key;E!==null;){if(E.key===k)if(E.tag===4&&E.stateNode.containerInfo===w.containerInfo&&E.stateNode.implementation===w.implementation){t(y,E.sibling),E=r(E,w.children||[]),E.return=y,y=E;break e}else{t(y,E);break}else e(y,E);E=E.sibling}E=sw(w,y.mode,M),E.return=y,y=E}return o(y);case qa:return k=w._init,x(y,E,k(w._payload),M)}if(Bf(w))return _(y,E,w,M);if(uf(w))return S(y,E,w,M);Jg(y,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,E!==null&&E.tag===6?(t(y,E.sibling),E=r(E,w),E.return=y,y=E):(t(y,E),E=rw(w,y.mode,M),E.return=y,y=E),o(y)):t(y,E)}return x}var Zh=i3(!0),r3=i3(!1),$v=Nl(null),Yv=null,wh=null,sA=null;function oA(){sA=wh=Yv=null}function aA(n){var e=$v.current;Rn($v),n._currentValue=e}function aE(n,e,t){for(;n!==null;){var i=n.alternate;if((n.childLanes&e)!==e?(n.childLanes|=e,i!==null&&(i.childLanes|=e)):i!==null&&(i.childLanes&e)!==e&&(i.childLanes|=e),n===t)break;n=n.return}}function zh(n,e){Yv=n,sA=wh=null,n=n.dependencies,n!==null&&n.firstContext!==null&&(n.lanes&e&&(Dr=!0),n.firstContext=null)}function As(n){var e=n._currentValue;if(sA!==n)if(n={context:n,memoizedValue:e,next:null},wh===null){if(Yv===null)throw Error(De(308));wh=n,Yv.dependencies={lanes:0,firstContext:n}}else wh=wh.next=n;return e}var Nc=null;function lA(n){Nc===null?Nc=[n]:Nc.push(n)}function s3(n,e,t,i){var r=e.interleaved;return r===null?(t.next=t,lA(e)):(t.next=r.next,r.next=t),e.interleaved=t,aa(n,i)}function aa(n,e){n.lanes|=e;var t=n.alternate;for(t!==null&&(t.lanes|=e),t=n,n=n.return;n!==null;)n.childLanes|=e,t=n.alternate,t!==null&&(t.childLanes|=e),t=n,n=n.return;return t.tag===3?t.stateNode:null}var $a=!1;function cA(n){n.updateQueue={baseState:n.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function o3(n,e){n=n.updateQueue,e.updateQueue===n&&(e.updateQueue={baseState:n.baseState,firstBaseUpdate:n.firstBaseUpdate,lastBaseUpdate:n.lastBaseUpdate,shared:n.shared,effects:n.effects})}function ta(n,e){return{eventTime:n,lane:e,tag:0,payload:null,callback:null,next:null}}function dl(n,e,t){var i=n.updateQueue;if(i===null)return null;if(i=i.shared,on&2){var r=i.pending;return r===null?e.next=e:(e.next=r.next,r.next=e),i.pending=e,aa(n,t)}return r=i.interleaved,r===null?(e.next=e,lA(i)):(e.next=r.next,r.next=e),i.interleaved=e,aa(n,t)}function pv(n,e,t){if(e=e.updateQueue,e!==null&&(e=e.shared,(t&4194240)!==0)){var i=e.lanes;i&=n.pendingLanes,t|=i,e.lanes=t,$T(n,t)}}function BP(n,e){var t=n.updateQueue,i=n.alternate;if(i!==null&&(i=i.updateQueue,t===i)){var r=null,s=null;if(t=t.firstBaseUpdate,t!==null){do{var o={eventTime:t.eventTime,lane:t.lane,tag:t.tag,payload:t.payload,callback:t.callback,next:null};s===null?r=s=o:s=s.next=o,t=t.next}while(t!==null);s===null?r=s=e:s=s.next=e}else r=s=e;t={baseState:i.baseState,firstBaseUpdate:r,lastBaseUpdate:s,shared:i.shared,effects:i.effects},n.updateQueue=t;return}n=t.lastBaseUpdate,n===null?t.firstBaseUpdate=e:n.next=e,t.lastBaseUpdate=e}function Kv(n,e,t,i){var r=n.updateQueue;$a=!1;var s=r.firstBaseUpdate,o=r.lastBaseUpdate,a=r.shared.pending;if(a!==null){r.shared.pending=null;var l=a,c=l.next;l.next=null,o===null?s=c:o.next=c,o=l;var d=n.alternate;d!==null&&(d=d.updateQueue,a=d.lastBaseUpdate,a!==o&&(a===null?d.firstBaseUpdate=c:a.next=c,d.lastBaseUpdate=l))}if(s!==null){var f=r.baseState;o=0,d=c=l=null,a=s;do{var p=a.lane,m=a.eventTime;if((i&p)===p){d!==null&&(d=d.next={eventTime:m,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var _=n,S=a;switch(p=e,m=t,S.tag){case 1:if(_=S.payload,typeof _=="function"){f=_.call(m,f,p);break e}f=_;break e;case 3:_.flags=_.flags&-65537|128;case 0:if(_=S.payload,p=typeof _=="function"?_.call(m,f,p):_,p==null)break e;f=Hn({},f,p);break e;case 2:$a=!0}}a.callback!==null&&a.lane!==0&&(n.flags|=64,p=r.effects,p===null?r.effects=[a]:p.push(a))}else m={eventTime:m,lane:p,tag:a.tag,payload:a.payload,callback:a.callback,next:null},d===null?(c=d=m,l=f):d=d.next=m,o|=p;if(a=a.next,a===null){if(a=r.shared.pending,a===null)break;p=a,a=p.next,p.next=null,r.lastBaseUpdate=p,r.shared.pending=null}}while(1);if(d===null&&(l=f),r.baseState=l,r.firstBaseUpdate=c,r.lastBaseUpdate=d,e=r.shared.interleaved,e!==null){r=e;do o|=r.lane,r=r.next;while(r!==e)}else s===null&&(r.shared.lanes=0);tu|=o,n.lanes=o,n.memoizedState=f}}function zP(n,e,t){if(n=e.effects,e.effects=null,n!==null)for(e=0;et?t:4,n(!0);var i=ZS.transition;ZS.transition={};try{n(!1),e()}finally{yn=t,ZS.transition=i}}function E3(){return Ms().memoizedState}function D5(n,e,t){var i=pl(n);if(t={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null},T3(n))A3(e,t);else if(t=s3(n,e,t,i),t!==null){var r=gr();Gs(t,n,i,r),M3(t,e,i)}}function k5(n,e,t){var i=pl(n),r={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null};if(T3(n))A3(e,r);else{var s=n.alternate;if(n.lanes===0&&(s===null||s.lanes===0)&&(s=e.lastRenderedReducer,s!==null))try{var o=e.lastRenderedState,a=s(o,t);if(r.hasEagerState=!0,r.eagerState=a,Ws(a,o)){var l=e.interleaved;l===null?(r.next=r,lA(e)):(r.next=l.next,l.next=r),e.interleaved=r;return}}catch{}finally{}t=s3(n,e,r,i),t!==null&&(r=gr(),Gs(t,n,i,r),M3(t,e,i))}}function T3(n){var e=n.alternate;return n===zn||e!==null&&e===zn}function A3(n,e){np=Jv=!0;var t=n.pending;t===null?e.next=e:(e.next=t.next,t.next=e),n.pending=e}function M3(n,e,t){if(t&4194240){var i=e.lanes;i&=n.pendingLanes,t|=i,e.lanes=t,$T(n,t)}}var Zv={readContext:As,useCallback:Wi,useContext:Wi,useEffect:Wi,useImperativeHandle:Wi,useInsertionEffect:Wi,useLayoutEffect:Wi,useMemo:Wi,useReducer:Wi,useRef:Wi,useState:Wi,useDebugValue:Wi,useDeferredValue:Wi,useTransition:Wi,useMutableSource:Wi,useSyncExternalStore:Wi,useId:Wi,unstable_isNewReconciler:!1},O5={readContext:As,useCallback:function(n,e){return ao().memoizedState=[n,e===void 0?null:e],n},useContext:As,useEffect:GP,useImperativeHandle:function(n,e,t){return t=t!=null?t.concat([n]):null,gv(4194308,4,v3.bind(null,e,n),t)},useLayoutEffect:function(n,e){return gv(4194308,4,n,e)},useInsertionEffect:function(n,e){return gv(4,2,n,e)},useMemo:function(n,e){var t=ao();return e=e===void 0?null:e,n=n(),t.memoizedState=[n,e],n},useReducer:function(n,e,t){var i=ao();return e=t!==void 0?t(e):e,i.memoizedState=i.baseState=e,n={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:e},i.queue=n,n=n.dispatch=D5.bind(null,zn,n),[i.memoizedState,n]},useRef:function(n){var e=ao();return n={current:n},e.memoizedState=n},useState:HP,useDebugValue:yA,useDeferredValue:function(n){return ao().memoizedState=n},useTransition:function(){var n=HP(!1),e=n[0];return n=N5.bind(null,n[1]),ao().memoizedState=n,[e,n]},useMutableSource:function(){},useSyncExternalStore:function(n,e,t){var i=zn,r=ao();if(Nn){if(t===void 0)throw Error(De(407));t=t()}else{if(t=e(),Mi===null)throw Error(De(349));eu&30||u3(i,e,t)}r.memoizedState=t;var s={value:t,getSnapshot:e};return r.queue=s,GP(d3.bind(null,i,s,n),[n]),i.flags|=2048,Bp(9,h3.bind(null,i,s,t,e),void 0,null),t},useId:function(){var n=ao(),e=Mi.identifierPrefix;if(Nn){var t=$o,i=qo;t=(i&~(1<<32-Hs(i)-1)).toString(32)+t,e=":"+e+"R"+t,t=Fp++,0<\/script>",n=n.removeChild(n.firstChild)):typeof i.is=="string"?n=o.createElement(t,{is:i.is}):(n=o.createElement(t),t==="select"&&(o=n,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):n=o.createElementNS(n,t),n[co]=e,n[kp]=i,O3(n,e,!1,!1),e.stateNode=n;e:{switch(o=G1(t,i),t){case"dialog":Pn("cancel",n),Pn("close",n),r=i;break;case"iframe":case"object":case"embed":Pn("load",n),r=i;break;case"video":case"audio":for(r=0;rnd&&(e.flags|=128,i=!0,gf(s,!1),e.lanes=4194304)}else{if(!i)if(n=Qv(o),n!==null){if(e.flags|=128,i=!0,t=n.updateQueue,t!==null&&(e.updateQueue=t,e.flags|=4),gf(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!Nn)return ji(e),null}else 2*ti()-s.renderingStartTime>nd&&t!==1073741824&&(e.flags|=128,i=!0,gf(s,!1),e.lanes=4194304);s.isBackwards?(o.sibling=e.child,e.child=o):(t=s.last,t!==null?t.sibling=o:e.child=o,s.last=o)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=ti(),e.sibling=null,t=Fn.current,An(Fn,i?t&1|2:t&1),e):(ji(e),null);case 22:case 23:return EA(),i=e.memoizedState!==null,n!==null&&n.memoizedState!==null!==i&&(e.flags|=8192),i&&e.mode&1?Yr&1073741824&&(ji(e),e.subtreeFlags&6&&(e.flags|=8192)):ji(e),null;case 24:return null;case 25:return null}throw Error(De(156,e.tag))}function W5(n,e){switch(iA(e),e.tag){case 1:return Ur(e.type)&&Wv(),n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 3:return ed(),Rn(Or),Rn(rr),dA(),n=e.flags,n&65536&&!(n&128)?(e.flags=n&-65537|128,e):null;case 5:return hA(e),null;case 13:if(Rn(Fn),n=e.memoizedState,n!==null&&n.dehydrated!==null){if(e.alternate===null)throw Error(De(340));Jh()}return n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 19:return Rn(Fn),null;case 4:return ed(),null;case 10:return aA(e.type._context),null;case 22:case 23:return EA(),null;case 24:return null;default:return null}}var ey=!1,Ji=!1,j5=typeof WeakSet=="function"?WeakSet:Set,at=null;function Eh(n,e){var t=n.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(i){Xn(n,e,i)}else t.current=null}function gE(n,e,t){try{t()}catch(i){Xn(n,e,i)}}var eR=!1;function X5(n,e){if(Z1=Bv,n=GD(),tA(n)){if("selectionStart"in n)var t={start:n.selectionStart,end:n.selectionEnd};else e:{t=(t=n.ownerDocument)&&t.defaultView||window;var i=t.getSelection&&t.getSelection();if(i&&i.rangeCount!==0){t=i.anchorNode;var r=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{t.nodeType,s.nodeType}catch{t=null;break e}var o=0,a=-1,l=-1,c=0,d=0,f=n,p=null;t:for(;;){for(var m;f!==t||r!==0&&f.nodeType!==3||(a=o+r),f!==s||i!==0&&f.nodeType!==3||(l=o+i),f.nodeType===3&&(o+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===n)break t;if(p===t&&++c===r&&(a=o),p===s&&++d===i&&(l=o),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}t=a===-1||l===-1?null:{start:a,end:l}}else t=null}t=t||{start:0,end:0}}else t=null;for(eE={focusedElem:n,selectionRange:t},Bv=!1,at=e;at!==null;)if(e=at,n=e.child,(e.subtreeFlags&1028)!==0&&n!==null)n.return=e,at=n;else for(;at!==null;){e=at;try{var _=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(_!==null){var S=_.memoizedProps,x=_.memoizedState,y=e.stateNode,E=y.getSnapshotBeforeUpdate(e.elementType===e.type?S:ks(e.type,S),x);y.__reactInternalSnapshotBeforeUpdate=E}break;case 3:var w=e.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(De(163))}}catch(M){Xn(e,e.return,M)}if(n=e.sibling,n!==null){n.return=e.return,at=n;break}at=e.return}return _=eR,eR=!1,_}function ip(n,e,t){var i=e.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var r=i=i.next;do{if((r.tag&n)===n){var s=r.destroy;r.destroy=void 0,s!==void 0&&gE(e,t,s)}r=r.next}while(r!==i)}}function C_(n,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var t=e=e.next;do{if((t.tag&n)===n){var i=t.create;t.destroy=i()}t=t.next}while(t!==e)}}function yE(n){var e=n.ref;if(e!==null){var t=n.stateNode;switch(n.tag){case 5:n=t;break;default:n=t}typeof e=="function"?e(n):e.current=n}}function V3(n){var e=n.alternate;e!==null&&(n.alternate=null,V3(e)),n.child=null,n.deletions=null,n.sibling=null,n.tag===5&&(e=n.stateNode,e!==null&&(delete e[co],delete e[kp],delete e[iE],delete e[b5],delete e[P5])),n.stateNode=null,n.return=null,n.dependencies=null,n.memoizedProps=null,n.memoizedState=null,n.pendingProps=null,n.stateNode=null,n.updateQueue=null}function B3(n){return n.tag===5||n.tag===3||n.tag===4}function tR(n){e:for(;;){for(;n.sibling===null;){if(n.return===null||B3(n.return))return null;n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue e;n.child.return=n,n=n.child}if(!(n.flags&2))return n.stateNode}}function vE(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.nodeType===8?t.parentNode.insertBefore(n,e):t.insertBefore(n,e):(t.nodeType===8?(e=t.parentNode,e.insertBefore(n,t)):(e=t,e.appendChild(n)),t=t._reactRootContainer,t!=null||e.onclick!==null||(e.onclick=Gv));else if(i!==4&&(n=n.child,n!==null))for(vE(n,e,t),n=n.sibling;n!==null;)vE(n,e,t),n=n.sibling}function _E(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.insertBefore(n,e):t.appendChild(n);else if(i!==4&&(n=n.child,n!==null))for(_E(n,e,t),n=n.sibling;n!==null;)_E(n,e,t),n=n.sibling}var Ri=null,Us=!1;function Da(n,e,t){for(t=t.child;t!==null;)z3(n,e,t),t=t.sibling}function z3(n,e,t){if(po&&typeof po.onCommitFiberUnmount=="function")try{po.onCommitFiberUnmount(__,t)}catch{}switch(t.tag){case 5:Ji||Eh(t,e);case 6:var i=Ri,r=Us;Ri=null,Da(n,e,t),Ri=i,Us=r,Ri!==null&&(Us?(n=Ri,t=t.stateNode,n.nodeType===8?n.parentNode.removeChild(t):n.removeChild(t)):Ri.removeChild(t.stateNode));break;case 18:Ri!==null&&(Us?(n=Ri,t=t.stateNode,n.nodeType===8?KS(n.parentNode,t):n.nodeType===1&&KS(n,t),Rp(n)):KS(Ri,t.stateNode));break;case 4:i=Ri,r=Us,Ri=t.stateNode.containerInfo,Us=!0,Da(n,e,t),Ri=i,Us=r;break;case 0:case 11:case 14:case 15:if(!Ji&&(i=t.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){r=i=i.next;do{var s=r,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&gE(t,e,o),r=r.next}while(r!==i)}Da(n,e,t);break;case 1:if(!Ji&&(Eh(t,e),i=t.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=t.memoizedProps,i.state=t.memoizedState,i.componentWillUnmount()}catch(a){Xn(t,e,a)}Da(n,e,t);break;case 21:Da(n,e,t);break;case 22:t.mode&1?(Ji=(i=Ji)||t.memoizedState!==null,Da(n,e,t),Ji=i):Da(n,e,t);break;default:Da(n,e,t)}}function nR(n){var e=n.updateQueue;if(e!==null){n.updateQueue=null;var t=n.stateNode;t===null&&(t=n.stateNode=new j5),e.forEach(function(i){var r=t6.bind(null,n,i);t.has(i)||(t.add(i),i.then(r,r))})}}function Is(n,e){var t=e.deletions;if(t!==null)for(var i=0;ir&&(r=o),i&=~s}if(i=r,i=ti()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*$5(i/1960))-i,10n?16:n,rl===null)var i=!1;else{if(n=rl,rl=null,n0=0,on&6)throw Error(De(331));var r=on;for(on|=4,at=n.current;at!==null;){var s=at,o=s.child;if(at.flags&16){var a=s.deletions;if(a!==null){for(var l=0;lti()-SA?Hc(n,0):xA|=t),Fr(n,e)}function Y3(n,e){e===0&&(n.mode&1?(e=jg,jg<<=1,!(jg&130023424)&&(jg=4194304)):e=1);var t=gr();n=aa(n,e),n!==null&&(Em(n,e,t),Fr(n,t))}function e6(n){var e=n.memoizedState,t=0;e!==null&&(t=e.retryLane),Y3(n,t)}function t6(n,e){var t=0;switch(n.tag){case 13:var i=n.stateNode,r=n.memoizedState;r!==null&&(t=r.retryLane);break;case 19:i=n.stateNode;break;default:throw Error(De(314))}i!==null&&i.delete(e),Y3(n,t)}var K3;K3=function(n,e,t){if(n!==null)if(n.memoizedProps!==e.pendingProps||Or.current)Dr=!0;else{if(!(n.lanes&t)&&!(e.flags&128))return Dr=!1,H5(n,e,t);Dr=!!(n.flags&131072)}else Dr=!1,Nn&&e.flags&1048576&&e3(e,qv,e.index);switch(e.lanes=0,e.tag){case 2:var i=e.type;yv(n,e),n=e.pendingProps;var r=Qh(e,rr.current);zh(e,t),r=pA(null,e,i,n,r,t);var s=mA();return e.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Ur(i)?(s=!0,jv(e)):s=!1,e.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,cA(e),r.updater=M_,e.stateNode=r,r._reactInternals=e,cE(e,i,n,t),e=dE(null,e,i,!0,s,t)):(e.tag=0,Nn&&s&&nA(e),fr(null,e,r,t),e=e.child),e;case 16:i=e.elementType;e:{switch(yv(n,e),n=e.pendingProps,r=i._init,i=r(i._payload),e.type=i,r=e.tag=i6(i),n=ks(i,n),r){case 0:e=hE(null,e,i,n,t);break e;case 1:e=QP(null,e,i,n,t);break e;case 11:e=YP(null,e,i,n,t);break e;case 14:e=KP(null,e,i,ks(i.type,n),t);break e}throw Error(De(306,i,""))}return e;case 0:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:ks(i,r),hE(n,e,i,r,t);case 1:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:ks(i,r),QP(n,e,i,r,t);case 3:e:{if(N3(e),n===null)throw Error(De(387));i=e.pendingProps,s=e.memoizedState,r=s.element,o3(n,e),Kv(e,i,null,t);var o=e.memoizedState;if(i=o.element,s.isDehydrated)if(s={element:i,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},e.updateQueue.baseState=s,e.memoizedState=s,e.flags&256){r=td(Error(De(423)),e),e=JP(n,e,i,t,r);break e}else if(i!==r){r=td(Error(De(424)),e),e=JP(n,e,i,t,r);break e}else for(Qr=hl(e.stateNode.containerInfo.firstChild),Jr=e,Nn=!0,Fs=null,t=r3(e,null,i,t),e.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(Jh(),i===r){e=la(n,e,t);break e}fr(n,e,i,t)}e=e.child}return e;case 5:return a3(e),n===null&&oE(e),i=e.type,r=e.pendingProps,s=n!==null?n.memoizedProps:null,o=r.children,tE(i,r)?o=null:s!==null&&tE(i,s)&&(e.flags|=32),L3(n,e),fr(n,e,o,t),e.child;case 6:return n===null&&oE(e),null;case 13:return D3(n,e,t);case 4:return uA(e,e.stateNode.containerInfo),i=e.pendingProps,n===null?e.child=Zh(e,null,i,t):fr(n,e,i,t),e.child;case 11:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:ks(i,r),YP(n,e,i,r,t);case 7:return fr(n,e,e.pendingProps,t),e.child;case 8:return fr(n,e,e.pendingProps.children,t),e.child;case 12:return fr(n,e,e.pendingProps.children,t),e.child;case 10:e:{if(i=e.type._context,r=e.pendingProps,s=e.memoizedProps,o=r.value,An($v,i._currentValue),i._currentValue=o,s!==null)if(Ws(s.value,o)){if(s.children===r.children&&!Or.current){e=la(n,e,t);break e}}else for(s=e.child,s!==null&&(s.return=e);s!==null;){var a=s.dependencies;if(a!==null){o=s.child;for(var l=a.firstContext;l!==null;){if(l.context===i){if(s.tag===1){l=ta(-1,t&-t),l.tag=2;var c=s.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?l.next=l:(l.next=d.next,d.next=l),c.pending=l}}s.lanes|=t,l=s.alternate,l!==null&&(l.lanes|=t),aE(s.return,t,e),a.lanes|=t;break}l=l.next}}else if(s.tag===10)o=s.type===e.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(De(341));o.lanes|=t,a=o.alternate,a!==null&&(a.lanes|=t),aE(o,t,e),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===e){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}fr(n,e,r.children,t),e=e.child}return e;case 9:return r=e.type,i=e.pendingProps.children,zh(e,t),r=As(r),i=i(r),e.flags|=1,fr(n,e,i,t),e.child;case 14:return i=e.type,r=ks(i,e.pendingProps),r=ks(i.type,r),KP(n,e,i,r,t);case 15:return R3(n,e,e.type,e.pendingProps,t);case 17:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:ks(i,r),yv(n,e),e.tag=1,Ur(i)?(n=!0,jv(e)):n=!1,zh(e,t),C3(e,i,r),cE(e,i,r,t),dE(null,e,i,!0,n,t);case 19:return k3(n,e,t);case 22:return I3(n,e,t)}throw Error(De(156,e.tag))};function Q3(n,e){return TD(n,e)}function n6(n,e,t,i){this.tag=n,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ws(n,e,t,i){return new n6(n,e,t,i)}function AA(n){return n=n.prototype,!(!n||!n.isReactComponent)}function i6(n){if(typeof n=="function")return AA(n)?1:0;if(n!=null){if(n=n.$$typeof,n===WT)return 11;if(n===jT)return 14}return 2}function ml(n,e){var t=n.alternate;return t===null?(t=ws(n.tag,e,n.key,n.mode),t.elementType=n.elementType,t.type=n.type,t.stateNode=n.stateNode,t.alternate=n,n.alternate=t):(t.pendingProps=e,t.type=n.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=n.flags&14680064,t.childLanes=n.childLanes,t.lanes=n.lanes,t.child=n.child,t.memoizedProps=n.memoizedProps,t.memoizedState=n.memoizedState,t.updateQueue=n.updateQueue,e=n.dependencies,t.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},t.sibling=n.sibling,t.index=n.index,t.ref=n.ref,t}function xv(n,e,t,i,r,s){var o=2;if(i=n,typeof n=="function")AA(n)&&(o=1);else if(typeof n=="string")o=5;else e:switch(n){case ph:return Gc(t.children,r,s,e);case GT:o=8,r|=8;break;case N1:return n=ws(12,t,e,r|2),n.elementType=N1,n.lanes=s,n;case D1:return n=ws(13,t,e,r),n.elementType=D1,n.lanes=s,n;case k1:return n=ws(19,t,e,r),n.elementType=k1,n.lanes=s,n;case aD:return P_(t,r,s,e);default:if(typeof n=="object"&&n!==null)switch(n.$$typeof){case sD:o=10;break e;case oD:o=9;break e;case WT:o=11;break e;case jT:o=14;break e;case qa:o=16,i=null;break e}throw Error(De(130,n==null?n:typeof n,""))}return e=ws(o,t,e,r),e.elementType=n,e.type=i,e.lanes=s,e}function Gc(n,e,t,i){return n=ws(7,n,i,e),n.lanes=t,n}function P_(n,e,t,i){return n=ws(22,n,i,e),n.elementType=aD,n.lanes=t,n.stateNode={isHidden:!1},n}function rw(n,e,t){return n=ws(6,n,null,e),n.lanes=t,n}function sw(n,e,t){return e=ws(4,n.children!==null?n.children:[],n.key,e),e.lanes=t,e.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},e}function r6(n,e,t,i,r){this.tag=e,this.containerInfo=n,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=VS(0),this.expirationTimes=VS(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=VS(0),this.identifierPrefix=i,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function MA(n,e,t,i,r,s,o,a,l){return n=new r6(n,e,t,a,l),e===1?(e=1,s===!0&&(e|=8)):e=0,s=ws(3,null,null,e),n.current=s,s.stateNode=n,s.memoizedState={element:i,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},cA(s),n}function s6(n,e,t){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(tk)}catch(n){console.error(n)}}tk(),tD.exports=ns;var u6=tD.exports,nk,uR=u6;nk=I1.createRoot=uR.createRoot,I1.hydrateRoot=uR.hydrateRoot;/** + * @remix-run/router v1.20.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Hp(){return Hp=Object.assign?Object.assign.bind():function(n){for(var e=1;e"u")throw new Error(e)}function ik(n,e){if(!n){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function d6(){return Math.random().toString(36).substr(2,8)}function dR(n,e){return{usr:n.state,key:n.key,idx:e}}function TE(n,e,t,i){return t===void 0&&(t=null),Hp({pathname:typeof n=="string"?n:n.pathname,search:"",hash:""},typeof e=="string"?Sd(e):e,{state:t,key:e&&e.key||i||d6()})}function s0(n){let{pathname:e="/",search:t="",hash:i=""}=n;return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),i&&i!=="#"&&(e+=i.charAt(0)==="#"?i:"#"+i),e}function Sd(n){let e={};if(n){let t=n.indexOf("#");t>=0&&(e.hash=n.substr(t),n=n.substr(0,t));let i=n.indexOf("?");i>=0&&(e.search=n.substr(i),n=n.substr(0,i)),n&&(e.pathname=n)}return e}function f6(n,e,t,i){i===void 0&&(i={});let{window:r=document.defaultView,v5Compat:s=!1}=i,o=r.history,a=sl.Pop,l=null,c=d();c==null&&(c=0,o.replaceState(Hp({},o.state,{idx:c}),""));function d(){return(o.state||{idx:null}).idx}function f(){a=sl.Pop;let x=d(),y=x==null?null:x-c;c=x,l&&l({action:a,location:S.location,delta:y})}function p(x,y){a=sl.Push;let E=TE(S.location,x,y);t&&t(E,x),c=d()+1;let w=dR(E,c),M=S.createHref(E);try{o.pushState(w,"",M)}catch(O){if(O instanceof DOMException&&O.name==="DataCloneError")throw O;r.location.assign(M)}s&&l&&l({action:a,location:S.location,delta:1})}function m(x,y){a=sl.Replace;let E=TE(S.location,x,y);t&&t(E,x),c=d();let w=dR(E,c),M=S.createHref(E);o.replaceState(w,"",M),s&&l&&l({action:a,location:S.location,delta:0})}function _(x){let y=r.location.origin!=="null"?r.location.origin:r.location.href,E=typeof x=="string"?x:s0(x);return E=E.replace(/ $/,"%20"),ii(y,"No window.location.(origin|href) available to create URL for href: "+E),new URL(E,y)}let S={get action(){return a},get location(){return n(r,o)},listen(x){if(l)throw new Error("A history only accepts one active listener");return r.addEventListener(hR,f),l=x,()=>{r.removeEventListener(hR,f),l=null}},createHref(x){return e(r,x)},createURL:_,encodeLocation(x){let y=_(x);return{pathname:y.pathname,search:y.search,hash:y.hash}},push:p,replace:m,go(x){return o.go(x)}};return S}var fR;(function(n){n.data="data",n.deferred="deferred",n.redirect="redirect",n.error="error"})(fR||(fR={}));function p6(n,e,t){return t===void 0&&(t="/"),m6(n,e,t,!1)}function m6(n,e,t,i){let r=typeof e=="string"?Sd(e):e,s=RA(r.pathname||"/",t);if(s==null)return null;let o=rk(n);g6(o);let a=null;for(let l=0;a==null&&l{let l={relativePath:a===void 0?s.path||"":a,caseSensitive:s.caseSensitive===!0,childrenIndex:o,route:s};l.relativePath.startsWith("/")&&(ii(l.relativePath.startsWith(i),'Absolute route path "'+l.relativePath+'" nested under path '+('"'+i+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),l.relativePath=l.relativePath.slice(i.length));let c=gl([i,l.relativePath]),d=t.concat(l);s.children&&s.children.length>0&&(ii(s.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),rk(s.children,e,d,c)),!(s.path==null&&!s.index)&&e.push({path:c,score:E6(c,s.index),routesMeta:d})};return n.forEach((s,o)=>{var a;if(s.path===""||!((a=s.path)!=null&&a.includes("?")))r(s,o);else for(let l of sk(s.path))r(s,o,l)}),e}function sk(n){let e=n.split("/");if(e.length===0)return[];let[t,...i]=e,r=t.endsWith("?"),s=t.replace(/\?$/,"");if(i.length===0)return r?[s,""]:[s];let o=sk(i.join("/")),a=[];return a.push(...o.map(l=>l===""?s:[s,l].join("/"))),r&&a.push(...o),a.map(l=>n.startsWith("/")&&l===""?"/":l)}function g6(n){n.sort((e,t)=>e.score!==t.score?t.score-e.score:T6(e.routesMeta.map(i=>i.childrenIndex),t.routesMeta.map(i=>i.childrenIndex)))}const y6=/^:[\w-]+$/,v6=3,_6=2,x6=1,S6=10,w6=-2,pR=n=>n==="*";function E6(n,e){let t=n.split("/"),i=t.length;return t.some(pR)&&(i+=w6),e&&(i+=_6),t.filter(r=>!pR(r)).reduce((r,s)=>r+(y6.test(s)?v6:s===""?x6:S6),i)}function T6(n,e){return n.length===e.length&&n.slice(0,-1).every((i,r)=>i===e[r])?n[n.length-1]-e[e.length-1]:0}function A6(n,e,t){t===void 0&&(t=!1);let{routesMeta:i}=n,r={},s="/",o=[];for(let a=0;a{let{paramName:p,isOptional:m}=d;if(p==="*"){let S=a[f]||"";o=s.slice(0,s.length-S.length).replace(/(.)\/+$/,"$1")}const _=a[f];return m&&!_?c[p]=void 0:c[p]=(_||"").replace(/%2F/g,"/"),c},{}),pathname:s,pathnameBase:o,pattern:n}}function M6(n,e,t){e===void 0&&(e=!1),t===void 0&&(t=!0),ik(n==="*"||!n.endsWith("*")||n.endsWith("/*"),'Route path "'+n+'" will be treated as if it were '+('"'+n.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+n.replace(/\*$/,"/*")+'".'));let i=[],r="^"+n.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,a,l)=>(i.push({paramName:a,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)"));return n.endsWith("*")?(i.push({paramName:"*"}),r+=n==="*"||n==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):t?r+="\\/*$":n!==""&&n!=="/"&&(r+="(?:(?=\\/|$))"),[new RegExp(r,e?void 0:"i"),i]}function C6(n){try{return n.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return ik(!1,'The URL path "'+n+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+e+").")),n}}function RA(n,e){if(e==="/")return n;if(!n.toLowerCase().startsWith(e.toLowerCase()))return null;let t=e.endsWith("/")?e.length-1:e.length,i=n.charAt(t);return i&&i!=="/"?null:n.slice(t)||"/"}function b6(n,e){e===void 0&&(e="/");let{pathname:t,search:i="",hash:r=""}=typeof n=="string"?Sd(n):n;return{pathname:t?t.startsWith("/")?t:P6(t,e):e,search:L6(i),hash:N6(r)}}function P6(n,e){let t=e.replace(/\/+$/,"").split("/");return n.split("/").forEach(r=>{r===".."?t.length>1&&t.pop():r!=="."&&t.push(r)}),t.length>1?t.join("/"):"/"}function ow(n,e,t,i){return"Cannot include a '"+n+"' character in a manually specified "+("`to."+e+"` field ["+JSON.stringify(i)+"]. Please separate it out to the ")+("`to."+t+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function R6(n){return n.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function IA(n,e){let t=R6(n);return e?t.map((i,r)=>r===t.length-1?i.pathname:i.pathnameBase):t.map(i=>i.pathnameBase)}function LA(n,e,t,i){i===void 0&&(i=!1);let r;typeof n=="string"?r=Sd(n):(r=Hp({},n),ii(!r.pathname||!r.pathname.includes("?"),ow("?","pathname","search",r)),ii(!r.pathname||!r.pathname.includes("#"),ow("#","pathname","hash",r)),ii(!r.search||!r.search.includes("#"),ow("#","search","hash",r)));let s=n===""||r.pathname==="",o=s?"/":r.pathname,a;if(o==null)a=t;else{let f=e.length-1;if(!i&&o.startsWith("..")){let p=o.split("/");for(;p[0]==="..";)p.shift(),f-=1;r.pathname=p.join("/")}a=f>=0?e[f]:"/"}let l=b6(r,a),c=o&&o!=="/"&&o.endsWith("/"),d=(s||o===".")&&t.endsWith("/");return!l.pathname.endsWith("/")&&(c||d)&&(l.pathname+="/"),l}const gl=n=>n.join("/").replace(/\/\/+/g,"/"),I6=n=>n.replace(/\/+$/,"").replace(/^\/*/,"/"),L6=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,N6=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n;function D6(n){return n!=null&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.internal=="boolean"&&"data"in n}const ok=["post","put","patch","delete"];new Set(ok);const k6=["get",...ok];new Set(k6);/** + * React Router v6.27.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Gp(){return Gp=Object.assign?Object.assign.bind():function(n){for(var e=1;e{a.current=!0}),q.useCallback(function(c,d){if(d===void 0&&(d={}),!a.current)return;if(typeof c=="number"){i.go(c);return}let f=LA(c,JSON.parse(o),s,d.relative==="path");n==null&&e!=="/"&&(f.pathname=f.pathname==="/"?e:gl([e,f.pathname])),(d.replace?i.replace:i.push)(f,d.state,d)},[e,i,o,s,n])}const V6=q.createContext(null);function B6(n){let e=q.useContext(va).outlet;return e&&q.createElement(V6.Provider,{value:n},e)}function ck(n,e){let{relative:t}=e===void 0?{}:e,{future:i}=q.useContext(kl),{matches:r}=q.useContext(va),{pathname:s}=Cm(),o=JSON.stringify(IA(r,i.v7_relativeSplatPath));return q.useMemo(()=>LA(n,JSON.parse(o),s,t==="path"),[n,o,s,t])}function z6(n,e){return H6(n,e)}function H6(n,e,t,i){wd()||ii(!1);let{navigator:r}=q.useContext(kl),{matches:s}=q.useContext(va),o=s[s.length-1],a=o?o.params:{};o&&o.pathname;let l=o?o.pathnameBase:"/";o&&o.route;let c=Cm(),d;if(e){var f;let x=typeof e=="string"?Sd(e):e;l==="/"||(f=x.pathname)!=null&&f.startsWith(l)||ii(!1),d=x}else d=c;let p=d.pathname||"/",m=p;if(l!=="/"){let x=l.replace(/^\//,"").split("/");m="/"+p.replace(/^\//,"").split("/").slice(x.length).join("/")}let _=p6(n,{pathname:m}),S=q6(_&&_.map(x=>Object.assign({},x,{params:Object.assign({},a,x.params),pathname:gl([l,r.encodeLocation?r.encodeLocation(x.pathname).pathname:x.pathname]),pathnameBase:x.pathnameBase==="/"?l:gl([l,r.encodeLocation?r.encodeLocation(x.pathnameBase).pathname:x.pathnameBase])})),s,t,i);return e&&S?q.createElement(D_.Provider,{value:{location:Gp({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:sl.Pop}},S):S}function G6(){let n=Q6(),e=D6(n)?n.status+" "+n.statusText:n instanceof Error?n.message:JSON.stringify(n),t=n instanceof Error?n.stack:null,r={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},s=null;return q.createElement(q.Fragment,null,q.createElement("h2",null,"Unexpected Application Error!"),q.createElement("h3",{style:{fontStyle:"italic"}},e),t?q.createElement("pre",{style:r},t):null,s)}const W6=q.createElement(G6,null);class j6 extends q.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return this.state.error!==void 0?q.createElement(va.Provider,{value:this.props.routeContext},q.createElement(ak.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function X6(n){let{routeContext:e,match:t,children:i}=n,r=q.useContext(NA);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),q.createElement(va.Provider,{value:e},i)}function q6(n,e,t,i){var r;if(e===void 0&&(e=[]),t===void 0&&(t=null),i===void 0&&(i=null),n==null){var s;if(!t)return null;if(t.errors)n=t.matches;else if((s=i)!=null&&s.v7_partialHydration&&e.length===0&&!t.initialized&&t.matches.length>0)n=t.matches;else return null}let o=n,a=(r=t)==null?void 0:r.errors;if(a!=null){let d=o.findIndex(f=>f.route.id&&(a==null?void 0:a[f.route.id])!==void 0);d>=0||ii(!1),o=o.slice(0,Math.min(o.length,d+1))}let l=!1,c=-1;if(t&&i&&i.v7_partialHydration)for(let d=0;d=0?o=o.slice(0,c+1):o=[o[0]];break}}}return o.reduceRight((d,f,p)=>{let m,_=!1,S=null,x=null;t&&(m=a&&f.route.id?a[f.route.id]:void 0,S=f.route.errorElement||W6,l&&(c<0&&p===0?(Z6("route-fallback",!1),_=!0,x=null):c===p&&(_=!0,x=f.route.hydrateFallbackElement||null)));let y=e.concat(o.slice(0,p+1)),E=()=>{let w;return m?w=S:_?w=x:f.route.Component?w=q.createElement(f.route.Component,null):f.route.element?w=f.route.element:w=d,q.createElement(X6,{match:f,routeContext:{outlet:d,matches:y,isDataRoute:t!=null},children:w})};return t&&(f.route.ErrorBoundary||f.route.errorElement||p===0)?q.createElement(j6,{location:t.location,revalidation:t.revalidation,component:S,error:m,children:E(),routeContext:{outlet:null,matches:y,isDataRoute:!0}}):E()},null)}var uk=function(n){return n.UseBlocker="useBlocker",n.UseRevalidator="useRevalidator",n.UseNavigateStable="useNavigate",n}(uk||{}),o0=function(n){return n.UseBlocker="useBlocker",n.UseLoaderData="useLoaderData",n.UseActionData="useActionData",n.UseRouteError="useRouteError",n.UseNavigation="useNavigation",n.UseRouteLoaderData="useRouteLoaderData",n.UseMatches="useMatches",n.UseRevalidator="useRevalidator",n.UseNavigateStable="useNavigate",n.UseRouteId="useRouteId",n}(o0||{});function $6(n){let e=q.useContext(NA);return e||ii(!1),e}function Y6(n){let e=q.useContext(O6);return e||ii(!1),e}function K6(n){let e=q.useContext(va);return e||ii(!1),e}function hk(n){let e=K6(),t=e.matches[e.matches.length-1];return t.route.id||ii(!1),t.route.id}function Q6(){var n;let e=q.useContext(ak),t=Y6(o0.UseRouteError),i=hk(o0.UseRouteError);return e!==void 0?e:(n=t.errors)==null?void 0:n[i]}function J6(){let{router:n}=$6(uk.UseNavigateStable),e=hk(o0.UseNavigateStable),t=q.useRef(!1);return lk(()=>{t.current=!0}),q.useCallback(function(r,s){s===void 0&&(s={}),t.current&&(typeof r=="number"?n.navigate(r):n.navigate(r,Gp({fromRouteId:e},s)))},[n,e])}const gR={};function Z6(n,e,t){!e&&!gR[n]&&(gR[n]=!0)}function eH(n){let{to:e,replace:t,state:i,relative:r}=n;wd()||ii(!1);let{future:s,static:o}=q.useContext(kl),{matches:a}=q.useContext(va),{pathname:l}=Cm(),c=DA(),d=LA(e,IA(a,s.v7_relativeSplatPath),l,r==="path"),f=JSON.stringify(d);return q.useEffect(()=>c(JSON.parse(f),{replace:t,state:i,relative:r}),[c,f,r,t,i]),null}function dk(n){return B6(n.context)}function ys(n){ii(!1)}function tH(n){let{basename:e="/",children:t=null,location:i,navigationType:r=sl.Pop,navigator:s,static:o=!1,future:a}=n;wd()&&ii(!1);let l=e.replace(/^\/*/,"/"),c=q.useMemo(()=>({basename:l,navigator:s,static:o,future:Gp({v7_relativeSplatPath:!1},a)}),[l,a,s,o]);typeof i=="string"&&(i=Sd(i));let{pathname:d="/",search:f="",hash:p="",state:m=null,key:_="default"}=i,S=q.useMemo(()=>{let x=RA(d,l);return x==null?null:{location:{pathname:x,search:f,hash:p,state:m,key:_},navigationType:r}},[l,d,f,p,m,_,r]);return S==null?null:q.createElement(kl.Provider,{value:c},q.createElement(D_.Provider,{children:t,value:S}))}function nH(n){let{children:e,location:t}=n;return z6(AE(e),t)}new Promise(()=>{});function AE(n,e){e===void 0&&(e=[]);let t=[];return q.Children.forEach(n,(i,r)=>{if(!q.isValidElement(i))return;let s=[...e,r];if(i.type===q.Fragment){t.push.apply(t,AE(i.props.children,s));return}i.type!==ys&&ii(!1),!i.props.index||!i.props.children||ii(!1);let o={id:i.props.id||s.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,loader:i.props.loader,action:i.props.action,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(o.children=AE(i.props.children,s)),t.push(o)}),t}/** + * React Router DOM v6.27.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function ME(){return ME=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)&&(t[r]=n[r]);return t}function rH(n){return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}function sH(n,e){return n.button===0&&(!e||e==="_self")&&!rH(n)}const oH=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],aH="6";try{window.__reactRouterVersion=aH}catch{}const lH="startTransition",yR=ZB[lH];function cH(n){let{basename:e,children:t,future:i,window:r}=n,s=q.useRef();s.current==null&&(s.current=h6({window:r,v5Compat:!0}));let o=s.current,[a,l]=q.useState({action:o.action,location:o.location}),{v7_startTransition:c}=i||{},d=q.useCallback(f=>{c&&yR?yR(()=>l(f)):l(f)},[l,c]);return q.useLayoutEffect(()=>o.listen(d),[o,d]),q.createElement(tH,{basename:e,children:t,location:a.location,navigationType:a.action,navigator:o,future:i})}const uH=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",hH=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ac=q.forwardRef(function(e,t){let{onClick:i,relative:r,reloadDocument:s,replace:o,state:a,target:l,to:c,preventScrollReset:d,viewTransition:f}=e,p=iH(e,oH),{basename:m}=q.useContext(kl),_,S=!1;if(typeof c=="string"&&hH.test(c)&&(_=c,uH))try{let w=new URL(window.location.href),M=c.startsWith("//")?new URL(w.protocol+c):new URL(c),O=RA(M.pathname,m);M.origin===w.origin&&O!=null?c=O+M.search+M.hash:S=!0}catch{}let x=U6(c,{relative:r}),y=dH(c,{replace:o,state:a,target:l,preventScrollReset:d,relative:r,viewTransition:f});function E(w){i&&i(w),w.defaultPrevented||y(w)}return q.createElement("a",ME({},p,{href:_||x,onClick:S||s?i:E,ref:t,target:l}))});var vR;(function(n){n.UseScrollRestoration="useScrollRestoration",n.UseSubmit="useSubmit",n.UseSubmitFetcher="useSubmitFetcher",n.UseFetcher="useFetcher",n.useViewTransitionState="useViewTransitionState"})(vR||(vR={}));var _R;(function(n){n.UseFetcher="useFetcher",n.UseFetchers="useFetchers",n.UseScrollRestoration="useScrollRestoration"})(_R||(_R={}));function dH(n,e){let{target:t,replace:i,state:r,preventScrollReset:s,relative:o,viewTransition:a}=e===void 0?{}:e,l=DA(),c=Cm(),d=ck(n,{relative:o});return q.useCallback(f=>{if(sH(f,t)){f.preventDefault();let p=i!==void 0?i:s0(c)===s0(d);l(n,{replace:p,state:r,preventScrollReset:s,relative:o,viewTransition:a})}},[c,l,d,i,r,t,n,s,o,a])}const fk=q.createContext({transformPagePoint:n=>n,isStatic:!1,reducedMotion:"never"}),k_=q.createContext({}),O_=q.createContext(null),U_=typeof document<"u",kA=U_?q.useLayoutEffect:q.useEffect,pk=q.createContext({strict:!1}),OA=n=>n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),fH="framerAppearId",mk="data-"+OA(fH);function pH(n,e,t,i){const{visualElement:r}=q.useContext(k_),s=q.useContext(pk),o=q.useContext(O_),a=q.useContext(fk).reducedMotion,l=q.useRef();i=i||s.renderer,!l.current&&i&&(l.current=i(n,{visualState:e,parent:r,props:t,presenceContext:o,blockInitialAnimation:o?o.initial===!1:!1,reducedMotionConfig:a}));const c=l.current;q.useInsertionEffect(()=>{c&&c.update(t,o)});const d=q.useRef(!!(t[mk]&&!window.HandoffComplete));return kA(()=>{c&&(c.render(),d.current&&c.animationState&&c.animationState.animateChanges())}),q.useEffect(()=>{c&&(c.updateFeatures(),!d.current&&c.animationState&&c.animationState.animateChanges(),d.current&&(d.current=!1,window.HandoffComplete=!0))}),c}function Ah(n){return n&&typeof n=="object"&&Object.prototype.hasOwnProperty.call(n,"current")}function mH(n,e,t){return q.useCallback(i=>{i&&n.mount&&n.mount(i),e&&(i?e.mount(i):e.unmount()),t&&(typeof t=="function"?t(i):Ah(t)&&(t.current=i))},[e])}function Wp(n){return typeof n=="string"||Array.isArray(n)}function F_(n){return n!==null&&typeof n=="object"&&typeof n.start=="function"}const UA=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],FA=["initial",...UA];function V_(n){return F_(n.animate)||FA.some(e=>Wp(n[e]))}function gk(n){return!!(V_(n)||n.variants)}function gH(n,e){if(V_(n)){const{initial:t,animate:i}=n;return{initial:t===!1||Wp(t)?t:void 0,animate:Wp(i)?i:void 0}}return n.inherit!==!1?e:{}}function yH(n){const{initial:e,animate:t}=gH(n,q.useContext(k_));return q.useMemo(()=>({initial:e,animate:t}),[xR(e),xR(t)])}function xR(n){return Array.isArray(n)?n.join(" "):n}const SR={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},jp={};for(const n in SR)jp[n]={isEnabled:e=>SR[n].some(t=>!!e[t])};function vH(n){for(const e in n)jp[e]={...jp[e],...n[e]}}const VA=q.createContext({}),yk=q.createContext({}),_H=Symbol.for("motionComponentSymbol");function xH({preloadedFeatures:n,createVisualElement:e,useRender:t,useVisualState:i,Component:r}){n&&vH(n);function s(a,l){let c;const d={...q.useContext(fk),...a,layoutId:SH(a)},{isStatic:f}=d,p=yH(a),m=i(a,f);if(!f&&U_){p.visualElement=pH(r,m,d,e);const _=q.useContext(yk),S=q.useContext(pk).strict;p.visualElement&&(c=p.visualElement.loadFeatures(d,S,n,_))}return q.createElement(k_.Provider,{value:p},c&&p.visualElement?q.createElement(c,{visualElement:p.visualElement,...d}):null,t(r,a,mH(m,p.visualElement,l),m,f,p.visualElement))}const o=q.forwardRef(s);return o[_H]=r,o}function SH({layoutId:n}){const e=q.useContext(VA).id;return e&&n!==void 0?e+"-"+n:n}function wH(n){function e(i,r={}){return xH(n(i,r))}if(typeof Proxy>"u")return e;const t=new Map;return new Proxy(e,{get:(i,r)=>(t.has(r)||t.set(r,e(r)),t.get(r))})}const EH=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function BA(n){return typeof n!="string"||n.includes("-")?!1:!!(EH.indexOf(n)>-1||/[A-Z]/.test(n))}const a0={};function TH(n){Object.assign(a0,n)}const bm=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],mu=new Set(bm);function vk(n,{layout:e,layoutId:t}){return mu.has(n)||n.startsWith("origin")||(e||t!==void 0)&&(!!a0[n]||n==="opacity")}const Br=n=>!!(n&&n.getVelocity),AH={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},MH=bm.length;function CH(n,{enableHardwareAcceleration:e=!0,allowTransformNone:t=!0},i,r){let s="";for(let o=0;oe=>typeof e=="string"&&e.startsWith(n),xk=_k("--"),CE=_k("var(--"),bH=/var\s*\(\s*--[\w-]+(\s*,\s*(?:(?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)+)?\s*\)/g,PH=(n,e)=>e&&typeof n=="number"?e.transform(n):n,Al=(n,e,t)=>Math.min(Math.max(t,n),e),gu={test:n=>typeof n=="number",parse:parseFloat,transform:n=>n},op={...gu,transform:n=>Al(0,1,n)},iy={...gu,default:1},ap=n=>Math.round(n*1e5)/1e5,B_=/(-)?([\d]*\.?[\d])+/g,Sk=/(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,RH=/^(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function Pm(n){return typeof n=="string"}const Rm=n=>({test:e=>Pm(e)&&e.endsWith(n)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${n}`}),Xa=Rm("deg"),go=Rm("%"),Ct=Rm("px"),IH=Rm("vh"),LH=Rm("vw"),wR={...go,parse:n=>go.parse(n)/100,transform:n=>go.transform(n*100)},ER={...gu,transform:Math.round},wk={borderWidth:Ct,borderTopWidth:Ct,borderRightWidth:Ct,borderBottomWidth:Ct,borderLeftWidth:Ct,borderRadius:Ct,radius:Ct,borderTopLeftRadius:Ct,borderTopRightRadius:Ct,borderBottomRightRadius:Ct,borderBottomLeftRadius:Ct,width:Ct,maxWidth:Ct,height:Ct,maxHeight:Ct,size:Ct,top:Ct,right:Ct,bottom:Ct,left:Ct,padding:Ct,paddingTop:Ct,paddingRight:Ct,paddingBottom:Ct,paddingLeft:Ct,margin:Ct,marginTop:Ct,marginRight:Ct,marginBottom:Ct,marginLeft:Ct,rotate:Xa,rotateX:Xa,rotateY:Xa,rotateZ:Xa,scale:iy,scaleX:iy,scaleY:iy,scaleZ:iy,skew:Xa,skewX:Xa,skewY:Xa,distance:Ct,translateX:Ct,translateY:Ct,translateZ:Ct,x:Ct,y:Ct,z:Ct,perspective:Ct,transformPerspective:Ct,opacity:op,originX:wR,originY:wR,originZ:Ct,zIndex:ER,fillOpacity:op,strokeOpacity:op,numOctaves:ER};function zA(n,e,t,i){const{style:r,vars:s,transform:o,transformOrigin:a}=n;let l=!1,c=!1,d=!0;for(const f in e){const p=e[f];if(xk(f)){s[f]=p;continue}const m=wk[f],_=PH(p,m);if(mu.has(f)){if(l=!0,o[f]=_,!d)continue;p!==(m.default||0)&&(d=!1)}else f.startsWith("origin")?(c=!0,a[f]=_):r[f]=_}if(e.transform||(l||i?r.transform=CH(n.transform,t,d,i):r.transform&&(r.transform="none")),c){const{originX:f="50%",originY:p="50%",originZ:m=0}=a;r.transformOrigin=`${f} ${p} ${m}`}}const HA=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function Ek(n,e,t){for(const i in e)!Br(e[i])&&!vk(i,t)&&(n[i]=e[i])}function NH({transformTemplate:n},e,t){return q.useMemo(()=>{const i=HA();return zA(i,e,{enableHardwareAcceleration:!t},n),Object.assign({},i.vars,i.style)},[e])}function DH(n,e,t){const i=n.style||{},r={};return Ek(r,i,n),Object.assign(r,NH(n,e,t)),n.transformValues?n.transformValues(r):r}function kH(n,e,t){const i={},r=DH(n,e,t);return n.drag&&n.dragListener!==!1&&(i.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=n.drag===!0?"none":`pan-${n.drag==="x"?"y":"x"}`),n.tabIndex===void 0&&(n.onTap||n.onTapStart||n.whileTap)&&(i.tabIndex=0),i.style=r,i}const OH=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","transformValues","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function l0(n){return n.startsWith("while")||n.startsWith("drag")&&n!=="draggable"||n.startsWith("layout")||n.startsWith("onTap")||n.startsWith("onPan")||n.startsWith("onLayout")||OH.has(n)}let Tk=n=>!l0(n);function UH(n){n&&(Tk=e=>e.startsWith("on")?!l0(e):n(e))}try{UH(require("@emotion/is-prop-valid").default)}catch{}function FH(n,e,t){const i={};for(const r in n)r==="values"&&typeof n.values=="object"||(Tk(r)||t===!0&&l0(r)||!e&&!l0(r)||n.draggable&&r.startsWith("onDrag"))&&(i[r]=n[r]);return i}function TR(n,e,t){return typeof n=="string"?n:Ct.transform(e+t*n)}function VH(n,e,t){const i=TR(e,n.x,n.width),r=TR(t,n.y,n.height);return`${i} ${r}`}const BH={offset:"stroke-dashoffset",array:"stroke-dasharray"},zH={offset:"strokeDashoffset",array:"strokeDasharray"};function HH(n,e,t=1,i=0,r=!0){n.pathLength=1;const s=r?BH:zH;n[s.offset]=Ct.transform(-i);const o=Ct.transform(e),a=Ct.transform(t);n[s.array]=`${o} ${a}`}function GA(n,{attrX:e,attrY:t,attrScale:i,originX:r,originY:s,pathLength:o,pathSpacing:a=1,pathOffset:l=0,...c},d,f,p){if(zA(n,c,d,p),f){n.style.viewBox&&(n.attrs.viewBox=n.style.viewBox);return}n.attrs=n.style,n.style={};const{attrs:m,style:_,dimensions:S}=n;m.transform&&(S&&(_.transform=m.transform),delete m.transform),S&&(r!==void 0||s!==void 0||_.transform)&&(_.transformOrigin=VH(S,r!==void 0?r:.5,s!==void 0?s:.5)),e!==void 0&&(m.x=e),t!==void 0&&(m.y=t),i!==void 0&&(m.scale=i),o!==void 0&&HH(m,o,a,l,!1)}const Ak=()=>({...HA(),attrs:{}}),WA=n=>typeof n=="string"&&n.toLowerCase()==="svg";function GH(n,e,t,i){const r=q.useMemo(()=>{const s=Ak();return GA(s,e,{enableHardwareAcceleration:!1},WA(i),n.transformTemplate),{...s.attrs,style:{...s.style}}},[e]);if(n.style){const s={};Ek(s,n.style,n),r.style={...s,...r.style}}return r}function WH(n=!1){return(t,i,r,{latestValues:s},o)=>{const l=(BA(t)?GH:kH)(i,s,o,t),d={...FH(i,typeof t=="string",n),...l,ref:r},{children:f}=i,p=q.useMemo(()=>Br(f)?f.get():f,[f]);return q.createElement(t,{...d,children:p})}}function Mk(n,{style:e,vars:t},i,r){Object.assign(n.style,e,r&&r.getProjectionStyles(i));for(const s in t)n.style.setProperty(s,t[s])}const Ck=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function bk(n,e,t,i){Mk(n,e,void 0,i);for(const r in e.attrs)n.setAttribute(Ck.has(r)?r:OA(r),e.attrs[r])}function jA(n,e){const{style:t}=n,i={};for(const r in t)(Br(t[r])||e.style&&Br(e.style[r])||vk(r,n))&&(i[r]=t[r]);return i}function Pk(n,e){const t=jA(n,e);for(const i in n)if(Br(n[i])||Br(e[i])){const r=bm.indexOf(i)!==-1?"attr"+i.charAt(0).toUpperCase()+i.substring(1):i;t[r]=n[i]}return t}function XA(n,e,t,i={},r={}){return typeof e=="function"&&(e=e(t!==void 0?t:n.custom,i,r)),typeof e=="string"&&(e=n.variants&&n.variants[e]),typeof e=="function"&&(e=e(t!==void 0?t:n.custom,i,r)),e}function Rk(n){const e=q.useRef(null);return e.current===null&&(e.current=n()),e.current}const c0=n=>Array.isArray(n),jH=n=>!!(n&&typeof n=="object"&&n.mix&&n.toValue),XH=n=>c0(n)?n[n.length-1]||0:n;function Sv(n){const e=Br(n)?n.get():n;return jH(e)?e.toValue():e}function qH({scrapeMotionValuesFromProps:n,createRenderState:e,onMount:t},i,r,s){const o={latestValues:$H(i,r,s,n),renderState:e()};return t&&(o.mount=a=>t(i,a,o)),o}const Ik=n=>(e,t)=>{const i=q.useContext(k_),r=q.useContext(O_),s=()=>qH(n,e,i,r);return t?s():Rk(s)};function $H(n,e,t,i){const r={},s=i(n,{});for(const p in s)r[p]=Sv(s[p]);let{initial:o,animate:a}=n;const l=V_(n),c=gk(n);e&&c&&!l&&n.inherit!==!1&&(o===void 0&&(o=e.initial),a===void 0&&(a=e.animate));let d=t?t.initial===!1:!1;d=d||o===!1;const f=d?a:o;return f&&typeof f!="boolean"&&!F_(f)&&(Array.isArray(f)?f:[f]).forEach(m=>{const _=XA(n,m);if(!_)return;const{transitionEnd:S,transition:x,...y}=_;for(const E in y){let w=y[E];if(Array.isArray(w)){const M=d?w.length-1:0;w=w[M]}w!==null&&(r[E]=w)}for(const E in S)r[E]=S[E]}),r}const Yn=n=>n;class AR{constructor(){this.order=[],this.scheduled=new Set}add(e){if(!this.scheduled.has(e))return this.scheduled.add(e),this.order.push(e),!0}remove(e){const t=this.order.indexOf(e);t!==-1&&(this.order.splice(t,1),this.scheduled.delete(e))}clear(){this.order.length=0,this.scheduled.clear()}}function YH(n){let e=new AR,t=new AR,i=0,r=!1,s=!1;const o=new WeakSet,a={schedule:(l,c=!1,d=!1)=>{const f=d&&r,p=f?e:t;return c&&o.add(l),p.add(l)&&f&&r&&(i=e.order.length),l},cancel:l=>{t.remove(l),o.delete(l)},process:l=>{if(r){s=!0;return}if(r=!0,[e,t]=[t,e],t.clear(),i=e.order.length,i)for(let c=0;c(f[p]=YH(()=>t=!0),f),{}),o=f=>s[f].process(r),a=()=>{const f=performance.now();t=!1,r.delta=i?1e3/60:Math.max(Math.min(f-r.timestamp,KH),1),r.timestamp=f,r.isProcessing=!0,ry.forEach(o),r.isProcessing=!1,t&&e&&(i=!1,n(a))},l=()=>{t=!0,i=!0,r.isProcessing||n(a)};return{schedule:ry.reduce((f,p)=>{const m=s[p];return f[p]=(_,S=!1,x=!1)=>(t||l(),m.schedule(_,S,x)),f},{}),cancel:f=>ry.forEach(p=>s[p].cancel(f)),state:r,steps:s}}const{schedule:Mn,cancel:ca,state:Ki,steps:aw}=QH(typeof requestAnimationFrame<"u"?requestAnimationFrame:Yn,!0),JH={useVisualState:Ik({scrapeMotionValuesFromProps:Pk,createRenderState:Ak,onMount:(n,e,{renderState:t,latestValues:i})=>{Mn.read(()=>{try{t.dimensions=typeof e.getBBox=="function"?e.getBBox():e.getBoundingClientRect()}catch{t.dimensions={x:0,y:0,width:0,height:0}}}),Mn.render(()=>{GA(t,i,{enableHardwareAcceleration:!1},WA(e.tagName),n.transformTemplate),bk(e,t)})}})},ZH={useVisualState:Ik({scrapeMotionValuesFromProps:jA,createRenderState:HA})};function e9(n,{forwardMotionProps:e=!1},t,i){return{...BA(n)?JH:ZH,preloadedFeatures:t,useRender:WH(e),createVisualElement:i,Component:n}}function Yo(n,e,t,i={passive:!0}){return n.addEventListener(e,t,i),()=>n.removeEventListener(e,t)}const Lk=n=>n.pointerType==="mouse"?typeof n.button!="number"||n.button<=0:n.isPrimary!==!1;function z_(n,e="page"){return{point:{x:n[e+"X"],y:n[e+"Y"]}}}const t9=n=>e=>Lk(e)&&n(e,z_(e));function na(n,e,t,i){return Yo(n,e,t9(t),i)}const n9=(n,e)=>t=>e(n(t)),yl=(...n)=>n.reduce(n9);function Nk(n){let e=null;return()=>{const t=()=>{e=null};return e===null?(e=n,t):!1}}const MR=Nk("dragHorizontal"),CR=Nk("dragVertical");function Dk(n){let e=!1;if(n==="y")e=CR();else if(n==="x")e=MR();else{const t=MR(),i=CR();t&&i?e=()=>{t(),i()}:(t&&t(),i&&i())}return e}function kk(){const n=Dk(!0);return n?(n(),!1):!0}class Ol{constructor(e){this.isMounted=!1,this.node=e}update(){}}function bR(n,e){const t="pointer"+(e?"enter":"leave"),i="onHover"+(e?"Start":"End"),r=(s,o)=>{if(s.pointerType==="touch"||kk())return;const a=n.getProps();n.animationState&&a.whileHover&&n.animationState.setActive("whileHover",e),a[i]&&Mn.update(()=>a[i](s,o))};return na(n.current,t,r,{passive:!n.getProps()[i]})}class i9 extends Ol{mount(){this.unmount=yl(bR(this.node,!0),bR(this.node,!1))}unmount(){}}class r9 extends Ol{constructor(){super(...arguments),this.isActive=!1}onFocus(){let e=!1;try{e=this.node.current.matches(":focus-visible")}catch{e=!0}!e||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=yl(Yo(this.node.current,"focus",()=>this.onFocus()),Yo(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const Ok=(n,e)=>e?n===e?!0:Ok(n,e.parentElement):!1;function lw(n,e){if(!e)return;const t=new PointerEvent("pointer"+n);e(t,z_(t))}class s9 extends Ol{constructor(){super(...arguments),this.removeStartListeners=Yn,this.removeEndListeners=Yn,this.removeAccessibleListeners=Yn,this.startPointerPress=(e,t)=>{if(this.isPressing)return;this.removeEndListeners();const i=this.node.getProps(),s=na(window,"pointerup",(a,l)=>{if(!this.checkPressEnd())return;const{onTap:c,onTapCancel:d,globalTapTarget:f}=this.node.getProps();Mn.update(()=>{!f&&!Ok(this.node.current,a.target)?d&&d(a,l):c&&c(a,l)})},{passive:!(i.onTap||i.onPointerUp)}),o=na(window,"pointercancel",(a,l)=>this.cancelPress(a,l),{passive:!(i.onTapCancel||i.onPointerCancel)});this.removeEndListeners=yl(s,o),this.startPress(e,t)},this.startAccessiblePress=()=>{const e=s=>{if(s.key!=="Enter"||this.isPressing)return;const o=a=>{a.key!=="Enter"||!this.checkPressEnd()||lw("up",(l,c)=>{const{onTap:d}=this.node.getProps();d&&Mn.update(()=>d(l,c))})};this.removeEndListeners(),this.removeEndListeners=Yo(this.node.current,"keyup",o),lw("down",(a,l)=>{this.startPress(a,l)})},t=Yo(this.node.current,"keydown",e),i=()=>{this.isPressing&&lw("cancel",(s,o)=>this.cancelPress(s,o))},r=Yo(this.node.current,"blur",i);this.removeAccessibleListeners=yl(t,r)}}startPress(e,t){this.isPressing=!0;const{onTapStart:i,whileTap:r}=this.node.getProps();r&&this.node.animationState&&this.node.animationState.setActive("whileTap",!0),i&&Mn.update(()=>i(e,t))}checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,this.node.getProps().whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!1),!kk()}cancelPress(e,t){if(!this.checkPressEnd())return;const{onTapCancel:i}=this.node.getProps();i&&Mn.update(()=>i(e,t))}mount(){const e=this.node.getProps(),t=na(e.globalTapTarget?window:this.node.current,"pointerdown",this.startPointerPress,{passive:!(e.onTapStart||e.onPointerStart)}),i=Yo(this.node.current,"focus",this.startAccessiblePress);this.removeStartListeners=yl(t,i)}unmount(){this.removeStartListeners(),this.removeEndListeners(),this.removeAccessibleListeners()}}const bE=new WeakMap,cw=new WeakMap,o9=n=>{const e=bE.get(n.target);e&&e(n)},a9=n=>{n.forEach(o9)};function l9({root:n,...e}){const t=n||document;cw.has(t)||cw.set(t,{});const i=cw.get(t),r=JSON.stringify(e);return i[r]||(i[r]=new IntersectionObserver(a9,{root:n,...e})),i[r]}function c9(n,e,t){const i=l9(e);return bE.set(n,t),i.observe(n),()=>{bE.delete(n),i.unobserve(n)}}const u9={some:0,all:1};class h9 extends Ol{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:e={}}=this.node.getProps(),{root:t,margin:i,amount:r="some",once:s}=e,o={root:t?t.current:void 0,rootMargin:i,threshold:typeof r=="number"?r:u9[r]},a=l=>{const{isIntersecting:c}=l;if(this.isInView===c||(this.isInView=c,s&&!c&&this.hasEnteredView))return;c&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",c);const{onViewportEnter:d,onViewportLeave:f}=this.node.getProps(),p=c?d:f;p&&p(l)};return c9(this.node.current,o,a)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:e,prevProps:t}=this.node;["amount","margin","root"].some(d9(e,t))&&this.startObserver()}unmount(){}}function d9({viewport:n={}},{viewport:e={}}={}){return t=>n[t]!==e[t]}const f9={inView:{Feature:h9},tap:{Feature:s9},focus:{Feature:r9},hover:{Feature:i9}};function Uk(n,e){if(!Array.isArray(e))return!1;const t=e.length;if(t!==n.length)return!1;for(let i=0;ie[i]=t.get()),e}function m9(n){const e={};return n.values.forEach((t,i)=>e[i]=t.getVelocity()),e}function H_(n,e,t){const i=n.getProps();return XA(i,e,t!==void 0?t:i.custom,p9(n),m9(n))}let g9=Yn,qA=Yn;const vl=n=>n*1e3,ia=n=>n/1e3,y9={current:!1},Fk=n=>Array.isArray(n)&&typeof n[0]=="number";function Vk(n){return!!(!n||typeof n=="string"&&Bk[n]||Fk(n)||Array.isArray(n)&&n.every(Vk))}const Gf=([n,e,t,i])=>`cubic-bezier(${n}, ${e}, ${t}, ${i})`,Bk={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Gf([0,.65,.55,1]),circOut:Gf([.55,0,1,.45]),backIn:Gf([.31,.01,.66,-.59]),backOut:Gf([.33,1.53,.69,.99])};function zk(n){if(n)return Fk(n)?Gf(n):Array.isArray(n)?n.map(zk):Bk[n]}function v9(n,e,t,{delay:i=0,duration:r,repeat:s=0,repeatType:o="loop",ease:a,times:l}={}){const c={[e]:t};l&&(c.offset=l);const d=zk(a);return Array.isArray(d)&&(c.easing=d),n.animate(c,{delay:i,duration:r,easing:Array.isArray(d)?"linear":d,fill:"both",iterations:s+1,direction:o==="reverse"?"alternate":"normal"})}function _9(n,{repeat:e,repeatType:t="loop"}){const i=e&&t!=="loop"&&e%2===1?0:n.length-1;return n[i]}const Hk=(n,e,t)=>(((1-3*t+3*e)*n+(3*t-6*e))*n+3*e)*n,x9=1e-7,S9=12;function w9(n,e,t,i,r){let s,o,a=0;do o=e+(t-e)/2,s=Hk(o,i,r)-n,s>0?t=o:e=o;while(Math.abs(s)>x9&&++aw9(s,0,1,n,t);return s=>s===0||s===1?s:Hk(r(s),e,i)}const E9=Im(.42,0,1,1),T9=Im(0,0,.58,1),Gk=Im(.42,0,.58,1),A9=n=>Array.isArray(n)&&typeof n[0]!="number",Wk=n=>e=>e<=.5?n(2*e)/2:(2-n(2*(1-e)))/2,jk=n=>e=>1-n(1-e),$A=n=>1-Math.sin(Math.acos(n)),Xk=jk($A),M9=Wk($A),qk=Im(.33,1.53,.69,.99),YA=jk(qk),C9=Wk(YA),b9=n=>(n*=2)<1?.5*YA(n):.5*(2-Math.pow(2,-10*(n-1))),P9={linear:Yn,easeIn:E9,easeInOut:Gk,easeOut:T9,circIn:$A,circInOut:M9,circOut:Xk,backIn:YA,backInOut:C9,backOut:qk,anticipate:b9},PR=n=>{if(Array.isArray(n)){qA(n.length===4);const[e,t,i,r]=n;return Im(e,t,i,r)}else if(typeof n=="string")return P9[n];return n},KA=(n,e)=>t=>!!(Pm(t)&&RH.test(t)&&t.startsWith(n)||e&&Object.prototype.hasOwnProperty.call(t,e)),$k=(n,e,t)=>i=>{if(!Pm(i))return i;const[r,s,o,a]=i.match(B_);return{[n]:parseFloat(r),[e]:parseFloat(s),[t]:parseFloat(o),alpha:a!==void 0?parseFloat(a):1}},R9=n=>Al(0,255,n),uw={...gu,transform:n=>Math.round(R9(n))},kc={test:KA("rgb","red"),parse:$k("red","green","blue"),transform:({red:n,green:e,blue:t,alpha:i=1})=>"rgba("+uw.transform(n)+", "+uw.transform(e)+", "+uw.transform(t)+", "+ap(op.transform(i))+")"};function I9(n){let e="",t="",i="",r="";return n.length>5?(e=n.substring(1,3),t=n.substring(3,5),i=n.substring(5,7),r=n.substring(7,9)):(e=n.substring(1,2),t=n.substring(2,3),i=n.substring(3,4),r=n.substring(4,5),e+=e,t+=t,i+=i,r+=r),{red:parseInt(e,16),green:parseInt(t,16),blue:parseInt(i,16),alpha:r?parseInt(r,16)/255:1}}const PE={test:KA("#"),parse:I9,transform:kc.transform},Mh={test:KA("hsl","hue"),parse:$k("hue","saturation","lightness"),transform:({hue:n,saturation:e,lightness:t,alpha:i=1})=>"hsla("+Math.round(n)+", "+go.transform(ap(e))+", "+go.transform(ap(t))+", "+ap(op.transform(i))+")"},dr={test:n=>kc.test(n)||PE.test(n)||Mh.test(n),parse:n=>kc.test(n)?kc.parse(n):Mh.test(n)?Mh.parse(n):PE.parse(n),transform:n=>Pm(n)?n:n.hasOwnProperty("red")?kc.transform(n):Mh.transform(n)},Vn=(n,e,t)=>-t*n+t*e+n;function hw(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*(2/3-t)*6:n}function L9({hue:n,saturation:e,lightness:t,alpha:i}){n/=360,e/=100,t/=100;let r=0,s=0,o=0;if(!e)r=s=o=t;else{const a=t<.5?t*(1+e):t+e-t*e,l=2*t-a;r=hw(l,a,n+1/3),s=hw(l,a,n),o=hw(l,a,n-1/3)}return{red:Math.round(r*255),green:Math.round(s*255),blue:Math.round(o*255),alpha:i}}const dw=(n,e,t)=>{const i=n*n;return Math.sqrt(Math.max(0,t*(e*e-i)+i))},N9=[PE,kc,Mh],D9=n=>N9.find(e=>e.test(n));function RR(n){const e=D9(n);let t=e.parse(n);return e===Mh&&(t=L9(t)),t}const Yk=(n,e)=>{const t=RR(n),i=RR(e),r={...t};return s=>(r.red=dw(t.red,i.red,s),r.green=dw(t.green,i.green,s),r.blue=dw(t.blue,i.blue,s),r.alpha=Vn(t.alpha,i.alpha,s),kc.transform(r))};function k9(n){var e,t;return isNaN(n)&&Pm(n)&&(((e=n.match(B_))===null||e===void 0?void 0:e.length)||0)+(((t=n.match(Sk))===null||t===void 0?void 0:t.length)||0)>0}const Kk={regex:bH,countKey:"Vars",token:"${v}",parse:Yn},Qk={regex:Sk,countKey:"Colors",token:"${c}",parse:dr.parse},Jk={regex:B_,countKey:"Numbers",token:"${n}",parse:gu.parse};function fw(n,{regex:e,countKey:t,token:i,parse:r}){const s=n.tokenised.match(e);s&&(n["num"+t]=s.length,n.tokenised=n.tokenised.replace(e,i),n.values.push(...s.map(r)))}function u0(n){const e=n.toString(),t={value:e,tokenised:e,values:[],numVars:0,numColors:0,numNumbers:0};return t.value.includes("var(--")&&fw(t,Kk),fw(t,Qk),fw(t,Jk),t}function Zk(n){return u0(n).values}function eO(n){const{values:e,numColors:t,numVars:i,tokenised:r}=u0(n),s=e.length;return o=>{let a=r;for(let l=0;ltypeof n=="number"?0:n;function U9(n){const e=Zk(n);return eO(n)(e.map(O9))}const Ml={test:k9,parse:Zk,createTransformer:eO,getAnimatableNone:U9},tO=(n,e)=>t=>`${t>0?e:n}`;function nO(n,e){return typeof n=="number"?t=>Vn(n,e,t):dr.test(n)?Yk(n,e):n.startsWith("var(")?tO(n,e):rO(n,e)}const iO=(n,e)=>{const t=[...n],i=t.length,r=n.map((s,o)=>nO(s,e[o]));return s=>{for(let o=0;o{const t={...n,...e},i={};for(const r in t)n[r]!==void 0&&e[r]!==void 0&&(i[r]=nO(n[r],e[r]));return r=>{for(const s in i)t[s]=i[s](r);return t}},rO=(n,e)=>{const t=Ml.createTransformer(e),i=u0(n),r=u0(e);return i.numVars===r.numVars&&i.numColors===r.numColors&&i.numNumbers>=r.numNumbers?yl(iO(i.values,r.values),t):tO(n,e)},Xp=(n,e,t)=>{const i=e-n;return i===0?1:(t-n)/i},IR=(n,e)=>t=>Vn(n,e,t);function V9(n){return typeof n=="number"?IR:typeof n=="string"?dr.test(n)?Yk:rO:Array.isArray(n)?iO:typeof n=="object"?F9:IR}function B9(n,e,t){const i=[],r=t||V9(n[0]),s=n.length-1;for(let o=0;oe[0];n[0]>n[s-1]&&(n=[...n].reverse(),e=[...e].reverse());const o=B9(e,i,r),a=o.length,l=c=>{let d=0;if(a>1)for(;dl(Al(n[0],n[s-1],c)):l}function z9(n,e){const t=n[n.length-1];for(let i=1;i<=e;i++){const r=Xp(0,e,i);n.push(Vn(t,1,r))}}function H9(n){const e=[0];return z9(e,n.length-1),e}function G9(n,e){return n.map(t=>t*e)}function W9(n,e){return n.map(()=>e||Gk).splice(0,n.length-1)}function h0({duration:n=300,keyframes:e,times:t,ease:i="easeInOut"}){const r=A9(i)?i.map(PR):PR(i),s={done:!1,value:e[0]},o=G9(t&&t.length===e.length?t:H9(e),n),a=sO(o,e,{ease:Array.isArray(r)?r:W9(e,r)});return{calculatedDuration:n,next:l=>(s.value=a(l),s.done=l>=n,s)}}function oO(n,e){return e?n*(1e3/e):0}const j9=5;function aO(n,e,t){const i=Math.max(e-j9,0);return oO(t-n(i),e-i)}const pw=.001,X9=.01,LR=10,q9=.05,$9=1;function Y9({duration:n=800,bounce:e=.25,velocity:t=0,mass:i=1}){let r,s;g9(n<=vl(LR));let o=1-e;o=Al(q9,$9,o),n=Al(X9,LR,ia(n)),o<1?(r=c=>{const d=c*o,f=d*n,p=d-t,m=RE(c,o),_=Math.exp(-f);return pw-p/m*_},s=c=>{const f=c*o*n,p=f*t+t,m=Math.pow(o,2)*Math.pow(c,2)*n,_=Math.exp(-f),S=RE(Math.pow(c,2),o);return(-r(c)+pw>0?-1:1)*((p-m)*_)/S}):(r=c=>{const d=Math.exp(-c*n),f=(c-t)*n+1;return-pw+d*f},s=c=>{const d=Math.exp(-c*n),f=(t-c)*(n*n);return d*f});const a=5/n,l=Q9(r,s,a);if(n=vl(n),isNaN(l))return{stiffness:100,damping:10,duration:n};{const c=Math.pow(l,2)*i;return{stiffness:c,damping:o*2*Math.sqrt(i*c),duration:n}}}const K9=12;function Q9(n,e,t){let i=t;for(let r=1;rn[t]!==void 0)}function e8(n){let e={velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1,...n};if(!NR(n,Z9)&&NR(n,J9)){const t=Y9(n);e={...e,...t,mass:1},e.isResolvedFromDuration=!0}return e}function lO({keyframes:n,restDelta:e,restSpeed:t,...i}){const r=n[0],s=n[n.length-1],o={done:!1,value:r},{stiffness:a,damping:l,mass:c,duration:d,velocity:f,isResolvedFromDuration:p}=e8({...i,velocity:-ia(i.velocity||0)}),m=f||0,_=l/(2*Math.sqrt(a*c)),S=s-r,x=ia(Math.sqrt(a/c)),y=Math.abs(S)<5;t||(t=y?.01:2),e||(e=y?.005:.5);let E;if(_<1){const w=RE(x,_);E=M=>{const O=Math.exp(-_*x*M);return s-O*((m+_*x*S)/w*Math.sin(w*M)+S*Math.cos(w*M))}}else if(_===1)E=w=>s-Math.exp(-x*w)*(S+(m+x*S)*w);else{const w=x*Math.sqrt(_*_-1);E=M=>{const O=Math.exp(-_*x*M),k=Math.min(w*M,300);return s-O*((m+_*x*S)*Math.sinh(k)+w*S*Math.cosh(k))/w}}return{calculatedDuration:p&&d||null,next:w=>{const M=E(w);if(p)o.done=w>=d;else{let O=m;w!==0&&(_<1?O=aO(E,w,M):O=0);const k=Math.abs(O)<=t,I=Math.abs(s-M)<=e;o.done=k&&I}return o.value=o.done?s:M,o}}}function DR({keyframes:n,velocity:e=0,power:t=.8,timeConstant:i=325,bounceDamping:r=10,bounceStiffness:s=500,modifyTarget:o,min:a,max:l,restDelta:c=.5,restSpeed:d}){const f=n[0],p={done:!1,value:f},m=P=>a!==void 0&&Pl,_=P=>a===void 0?l:l===void 0||Math.abs(a-P)-S*Math.exp(-P/i),w=P=>y+E(P),M=P=>{const D=E(P),A=w(P);p.done=Math.abs(D)<=c,p.value=p.done?y:A};let O,k;const I=P=>{m(p.value)&&(O=P,k=lO({keyframes:[p.value,_(p.value)],velocity:aO(w,P,p.value),damping:r,stiffness:s,restDelta:c,restSpeed:d}))};return I(0),{calculatedDuration:null,next:P=>{let D=!1;return!k&&O===void 0&&(D=!0,M(P),I(P)),O!==void 0&&P>O?k.next(P-O):(!D&&M(P),p)}}}const t8=n=>{const e=({timestamp:t})=>n(t);return{start:()=>Mn.update(e,!0),stop:()=>ca(e),now:()=>Ki.isProcessing?Ki.timestamp:performance.now()}},kR=2e4;function OR(n){let e=0;const t=50;let i=n.next(e);for(;!i.done&&e=kR?1/0:e}const n8={decay:DR,inertia:DR,tween:h0,keyframes:h0,spring:lO};function d0({autoplay:n=!0,delay:e=0,driver:t=t8,keyframes:i,type:r="keyframes",repeat:s=0,repeatDelay:o=0,repeatType:a="loop",onPlay:l,onStop:c,onComplete:d,onUpdate:f,...p}){let m=1,_=!1,S,x;const y=()=>{x=new Promise(oe=>{S=oe})};y();let E;const w=n8[r]||h0;let M;w!==h0&&typeof i[0]!="number"&&(M=sO([0,100],i,{clamp:!1}),i=[0,100]);const O=w({...p,keyframes:i});let k;a==="mirror"&&(k=w({...p,keyframes:[...i].reverse(),velocity:-(p.velocity||0)}));let I="idle",P=null,D=null,A=null;O.calculatedDuration===null&&s&&(O.calculatedDuration=OR(O));const{calculatedDuration:R}=O;let V=1/0,U=1/0;R!==null&&(V=R+o,U=V*(s+1)-o);let se=0;const le=oe=>{if(D===null)return;m>0&&(D=Math.min(D,oe)),m<0&&(D=Math.min(oe-U/m,D)),P!==null?se=P:se=Math.round(oe-D)*m;const Me=se-e*(m>=0?1:-1),Re=m>=0?Me<0:Me>U;se=Math.max(Me,0),I==="finished"&&P===null&&(se=U);let he=se,we=O;if(s){const dt=Math.min(se,U)/V;let Ke=Math.floor(dt),ke=dt%1;!ke&&dt>=1&&(ke=1),ke===1&&Ke--,Ke=Math.min(Ke,s+1),!!(Ke%2)&&(a==="reverse"?(ke=1-ke,o&&(ke-=o/V)):a==="mirror"&&(we=k)),he=Al(0,1,ke)*V}const Ne=Re?{done:!1,value:i[0]}:we.next(he);M&&(Ne.value=M(Ne.value));let{done:be}=Ne;!Re&&R!==null&&(be=m>=0?se>=U:se<=0);const ft=P===null&&(I==="finished"||I==="running"&&be);return f&&f(Ne.value),ft&&W(),Ne},ee=()=>{E&&E.stop(),E=void 0},pe=()=>{I="idle",ee(),S(),y(),D=A=null},W=()=>{I="finished",d&&d(),ee(),S()},J=()=>{if(_)return;E||(E=t(le));const oe=E.now();l&&l(),P!==null?D=oe-P:(!D||I==="finished")&&(D=oe),I==="finished"&&y(),A=D,P=null,I="running",E.start()};n&&J();const Z={then(oe,Me){return x.then(oe,Me)},get time(){return ia(se)},set time(oe){oe=vl(oe),se=oe,P!==null||!E||m===0?P=oe:D=E.now()-oe/m},get duration(){const oe=O.calculatedDuration===null?OR(O):O.calculatedDuration;return ia(oe)},get speed(){return m},set speed(oe){oe===m||!E||(m=oe,Z.time=ia(se))},get state(){return I},play:J,pause:()=>{I="paused",P=se},stop:()=>{_=!0,I!=="idle"&&(I="idle",c&&c(),pe())},cancel:()=>{A!==null&&le(A),pe()},complete:()=>{I="finished"},sample:oe=>(D=0,le(oe))};return Z}function i8(n){let e;return()=>(e===void 0&&(e=n()),e)}const r8=i8(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),s8=new Set(["opacity","clipPath","filter","transform","backgroundColor"]),sy=10,o8=2e4,a8=(n,e)=>e.type==="spring"||n==="backgroundColor"||!Vk(e.ease);function l8(n,e,{onUpdate:t,onComplete:i,...r}){if(!(r8()&&s8.has(e)&&!r.repeatDelay&&r.repeatType!=="mirror"&&r.damping!==0&&r.type!=="inertia"))return!1;let o=!1,a,l,c=!1;const d=()=>{l=new Promise(w=>{a=w})};d();let{keyframes:f,duration:p=300,ease:m,times:_}=r;if(a8(e,r)){const w=d0({...r,repeat:0,delay:0});let M={done:!1,value:f[0]};const O=[];let k=0;for(;!M.done&&k{c=!1,S.cancel()},y=()=>{c=!0,Mn.update(x),a(),d()};return S.onfinish=()=>{c||(n.set(_9(f,r)),i&&i(),y())},{then(w,M){return l.then(w,M)},attachTimeline(w){return S.timeline=w,S.onfinish=null,Yn},get time(){return ia(S.currentTime||0)},set time(w){S.currentTime=vl(w)},get speed(){return S.playbackRate},set speed(w){S.playbackRate=w},get duration(){return ia(p)},play:()=>{o||(S.play(),ca(x))},pause:()=>S.pause(),stop:()=>{if(o=!0,S.playState==="idle")return;const{currentTime:w}=S;if(w){const M=d0({...r,autoplay:!1});n.setWithVelocity(M.sample(w-sy).value,M.sample(w).value,sy)}y()},complete:()=>{c||S.finish()},cancel:y}}function c8({keyframes:n,delay:e,onUpdate:t,onComplete:i}){const r=()=>(t&&t(n[n.length-1]),i&&i(),{time:0,speed:1,duration:0,play:Yn,pause:Yn,stop:Yn,then:s=>(s(),Promise.resolve()),cancel:Yn,complete:Yn});return e?d0({keyframes:[0,1],duration:0,delay:e,onComplete:r}):r()}const u8={type:"spring",stiffness:500,damping:25,restSpeed:10},h8=n=>({type:"spring",stiffness:550,damping:n===0?2*Math.sqrt(550):30,restSpeed:10}),d8={type:"keyframes",duration:.8},f8={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},p8=(n,{keyframes:e})=>e.length>2?d8:mu.has(n)?n.startsWith("scale")?h8(e[1]):u8:f8,IE=(n,e)=>n==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(Ml.test(e)||e==="0")&&!e.startsWith("url(")),m8=new Set(["brightness","contrast","saturate","opacity"]);function g8(n){const[e,t]=n.slice(0,-1).split("(");if(e==="drop-shadow")return n;const[i]=t.match(B_)||[];if(!i)return n;const r=t.replace(i,"");let s=m8.has(e)?1:0;return i!==t&&(s*=100),e+"("+s+r+")"}const y8=/([a-z-]*)\(.*?\)/g,LE={...Ml,getAnimatableNone:n=>{const e=n.match(y8);return e?e.map(g8).join(" "):n}},v8={...wk,color:dr,backgroundColor:dr,outlineColor:dr,fill:dr,stroke:dr,borderColor:dr,borderTopColor:dr,borderRightColor:dr,borderBottomColor:dr,borderLeftColor:dr,filter:LE,WebkitFilter:LE},QA=n=>v8[n];function cO(n,e){let t=QA(n);return t!==LE&&(t=Ml),t.getAnimatableNone?t.getAnimatableNone(e):void 0}const uO=n=>/^0[^.\s]+$/.test(n);function _8(n){if(typeof n=="number")return n===0;if(n!==null)return n==="none"||n==="0"||uO(n)}function x8(n,e,t,i){const r=IE(e,t);let s;Array.isArray(t)?s=[...t]:s=[null,t];const o=i.from!==void 0?i.from:n.get();let a;const l=[];for(let c=0;cr=>{const s=JA(i,n)||{},o=s.delay||i.delay||0;let{elapsed:a=0}=i;a=a-vl(o);const l=x8(e,n,t,s),c=l[0],d=l[l.length-1],f=IE(n,c),p=IE(n,d);let m={keyframes:l,velocity:e.getVelocity(),ease:"easeOut",...s,delay:-a,onUpdate:_=>{e.set(_),s.onUpdate&&s.onUpdate(_)},onComplete:()=>{r(),s.onComplete&&s.onComplete()}};if(S8(s)||(m={...m,...p8(n,m)}),m.duration&&(m.duration=vl(m.duration)),m.repeatDelay&&(m.repeatDelay=vl(m.repeatDelay)),!f||!p||y9.current||s.type===!1||w8.skipAnimations)return c8(m);if(!i.isHandoff&&e.owner&&e.owner.current instanceof HTMLElement&&!e.owner.getProps().onUpdate){const _=l8(e,n,m);if(_)return _}return d0(m)};function f0(n){return!!(Br(n)&&n.add)}const hO=n=>/^\-?\d*\.?\d+$/.test(n);function eM(n,e){n.indexOf(e)===-1&&n.push(e)}function tM(n,e){const t=n.indexOf(e);t>-1&&n.splice(t,1)}class nM{constructor(){this.subscriptions=[]}add(e){return eM(this.subscriptions,e),()=>tM(this.subscriptions,e)}notify(e,t,i){const r=this.subscriptions.length;if(r)if(r===1)this.subscriptions[0](e,t,i);else for(let s=0;s!isNaN(parseFloat(n));class T8{constructor(e,t={}){this.version="10.18.0",this.timeDelta=0,this.lastUpdated=0,this.canTrackVelocity=!1,this.events={},this.updateAndNotify=(i,r=!0)=>{this.prev=this.current,this.current=i;const{delta:s,timestamp:o}=Ki;this.lastUpdated!==o&&(this.timeDelta=s,this.lastUpdated=o,Mn.postRender(this.scheduleVelocityCheck)),this.prev!==this.current&&this.events.change&&this.events.change.notify(this.current),this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()),r&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.scheduleVelocityCheck=()=>Mn.postRender(this.velocityCheck),this.velocityCheck=({timestamp:i})=>{i!==this.lastUpdated&&(this.prev=this.current,this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()))},this.hasAnimated=!1,this.prev=this.current=e,this.canTrackVelocity=E8(this.current),this.owner=t.owner}onChange(e){return this.on("change",e)}on(e,t){this.events[e]||(this.events[e]=new nM);const i=this.events[e].add(t);return e==="change"?()=>{i(),Mn.read(()=>{this.events.change.getSize()||this.stop()})}:i}clearListeners(){for(const e in this.events)this.events[e].clear()}attach(e,t){this.passiveEffect=e,this.stopPassiveEffect=t}set(e,t=!0){!t||!this.passiveEffect?this.updateAndNotify(e,t):this.passiveEffect(e,this.updateAndNotify)}setWithVelocity(e,t,i){this.set(t),this.prev=e,this.timeDelta=i}jump(e){this.updateAndNotify(e),this.prev=e,this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){return this.canTrackVelocity?oO(parseFloat(this.current)-parseFloat(this.prev),this.timeDelta):0}start(e){return this.stop(),new Promise(t=>{this.hasAnimated=!0,this.animation=e(t),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function id(n,e){return new T8(n,e)}const dO=n=>e=>e.test(n),A8={test:n=>n==="auto",parse:n=>n},fO=[gu,Ct,go,Xa,LH,IH,A8],vf=n=>fO.find(dO(n)),M8=[...fO,dr,Ml],C8=n=>M8.find(dO(n));function b8(n,e,t){n.hasValue(e)?n.getValue(e).set(t):n.addValue(e,id(t))}function P8(n,e){const t=H_(n,e);let{transitionEnd:i={},transition:r={},...s}=t?n.makeTargetAnimatable(t,!1):{};s={...s,...i};for(const o in s){const a=XH(s[o]);b8(n,o,a)}}function R8(n,e,t){var i,r;const s=Object.keys(e).filter(a=>!n.hasValue(a)),o=s.length;if(o)for(let a=0;al.remove(f))),c.push(x)}return o&&Promise.all(c).then(()=>{o&&P8(n,o)}),c}function NE(n,e,t={}){const i=H_(n,e,t.custom);let{transition:r=n.getDefaultTransition()||{}}=i||{};t.transitionOverride&&(r=t.transitionOverride);const s=i?()=>Promise.all(pO(n,i,t)):()=>Promise.resolve(),o=n.variantChildren&&n.variantChildren.size?(l=0)=>{const{delayChildren:c=0,staggerChildren:d,staggerDirection:f}=r;return k8(n,e,c+l,d,f,t)}:()=>Promise.resolve(),{when:a}=r;if(a){const[l,c]=a==="beforeChildren"?[s,o]:[o,s];return l().then(()=>c())}else return Promise.all([s(),o(t.delay)])}function k8(n,e,t=0,i=0,r=1,s){const o=[],a=(n.variantChildren.size-1)*i,l=r===1?(c=0)=>c*i:(c=0)=>a-c*i;return Array.from(n.variantChildren).sort(O8).forEach((c,d)=>{c.notify("AnimationStart",e),o.push(NE(c,e,{...s,delay:t+l(d)}).then(()=>c.notify("AnimationComplete",e)))}),Promise.all(o)}function O8(n,e){return n.sortNodePosition(e)}function U8(n,e,t={}){n.notify("AnimationStart",e);let i;if(Array.isArray(e)){const r=e.map(s=>NE(n,s,t));i=Promise.all(r)}else if(typeof e=="string")i=NE(n,e,t);else{const r=typeof e=="function"?H_(n,e,t.custom):e;i=Promise.all(pO(n,r,t))}return i.then(()=>n.notify("AnimationComplete",e))}const F8=[...UA].reverse(),V8=UA.length;function B8(n){return e=>Promise.all(e.map(({animation:t,options:i})=>U8(n,t,i)))}function z8(n){let e=B8(n);const t=G8();let i=!0;const r=(l,c)=>{const d=H_(n,c);if(d){const{transition:f,transitionEnd:p,...m}=d;l={...l,...m,...p}}return l};function s(l){e=l(n)}function o(l,c){const d=n.getProps(),f=n.getVariantContext(!0)||{},p=[],m=new Set;let _={},S=1/0;for(let y=0;yS&&O,A=!1;const R=Array.isArray(M)?M:[M];let V=R.reduce(r,{});k===!1&&(V={});const{prevResolvedValues:U={}}=w,se={...U,...V},le=ee=>{D=!0,m.has(ee)&&(A=!0,m.delete(ee)),w.needsAnimating[ee]=!0};for(const ee in se){const pe=V[ee],W=U[ee];if(_.hasOwnProperty(ee))continue;let J=!1;c0(pe)&&c0(W)?J=!Uk(pe,W):J=pe!==W,J?pe!==void 0?le(ee):m.add(ee):pe!==void 0&&m.has(ee)?le(ee):w.protectedKeys[ee]=!0}w.prevProp=M,w.prevResolvedValues=V,w.isActive&&(_={..._,...V}),i&&n.blockInitialAnimation&&(D=!1),D&&(!I||A)&&p.push(...R.map(ee=>({animation:ee,options:{type:E,...l}})))}if(m.size){const y={};m.forEach(E=>{const w=n.getBaseTarget(E);w!==void 0&&(y[E]=w)}),p.push({animation:y})}let x=!!p.length;return i&&(d.initial===!1||d.initial===d.animate)&&!n.manuallyAnimateOnMount&&(x=!1),i=!1,x?e(p):Promise.resolve()}function a(l,c,d){var f;if(t[l].isActive===c)return Promise.resolve();(f=n.variantChildren)===null||f===void 0||f.forEach(m=>{var _;return(_=m.animationState)===null||_===void 0?void 0:_.setActive(l,c)}),t[l].isActive=c;const p=o(d,l);for(const m in t)t[m].protectedKeys={};return p}return{animateChanges:o,setActive:a,setAnimateFunction:s,getState:()=>t}}function H8(n,e){return typeof e=="string"?e!==n:Array.isArray(e)?!Uk(e,n):!1}function lc(n=!1){return{isActive:n,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function G8(){return{animate:lc(!0),whileInView:lc(),whileHover:lc(),whileTap:lc(),whileDrag:lc(),whileFocus:lc(),exit:lc()}}class W8 extends Ol{constructor(e){super(e),e.animationState||(e.animationState=z8(e))}updateAnimationControlsSubscription(){const{animate:e}=this.node.getProps();this.unmount(),F_(e)&&(this.unmount=e.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:e}=this.node.getProps(),{animate:t}=this.node.prevProps||{};e!==t&&this.updateAnimationControlsSubscription()}unmount(){}}let j8=0;class X8 extends Ol{constructor(){super(...arguments),this.id=j8++}update(){if(!this.node.presenceContext)return;const{isPresent:e,onExitComplete:t,custom:i}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||e===r)return;const s=this.node.animationState.setActive("exit",!e,{custom:i??this.node.getProps().custom});t&&!e&&s.then(()=>t(this.id))}mount(){const{register:e}=this.node.presenceContext||{};e&&(this.unmount=e(this.id))}unmount(){}}const q8={animation:{Feature:W8},exit:{Feature:X8}},UR=(n,e)=>Math.abs(n-e);function $8(n,e){const t=UR(n.x,e.x),i=UR(n.y,e.y);return Math.sqrt(t**2+i**2)}class mO{constructor(e,t,{transformPagePoint:i,contextWindow:r,dragSnapToOrigin:s=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const f=gw(this.lastMoveEventInfo,this.history),p=this.startEvent!==null,m=$8(f.offset,{x:0,y:0})>=3;if(!p&&!m)return;const{point:_}=f,{timestamp:S}=Ki;this.history.push({..._,timestamp:S});const{onStart:x,onMove:y}=this.handlers;p||(x&&x(this.lastMoveEvent,f),this.startEvent=this.lastMoveEvent),y&&y(this.lastMoveEvent,f)},this.handlePointerMove=(f,p)=>{this.lastMoveEvent=f,this.lastMoveEventInfo=mw(p,this.transformPagePoint),Mn.update(this.updatePoint,!0)},this.handlePointerUp=(f,p)=>{this.end();const{onEnd:m,onSessionEnd:_,resumeAnimation:S}=this.handlers;if(this.dragSnapToOrigin&&S&&S(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const x=gw(f.type==="pointercancel"?this.lastMoveEventInfo:mw(p,this.transformPagePoint),this.history);this.startEvent&&m&&m(f,x),_&&_(f,x)},!Lk(e))return;this.dragSnapToOrigin=s,this.handlers=t,this.transformPagePoint=i,this.contextWindow=r||window;const o=z_(e),a=mw(o,this.transformPagePoint),{point:l}=a,{timestamp:c}=Ki;this.history=[{...l,timestamp:c}];const{onSessionStart:d}=t;d&&d(e,gw(a,this.history)),this.removeListeners=yl(na(this.contextWindow,"pointermove",this.handlePointerMove),na(this.contextWindow,"pointerup",this.handlePointerUp),na(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(e){this.handlers=e}end(){this.removeListeners&&this.removeListeners(),ca(this.updatePoint)}}function mw(n,e){return e?{point:e(n.point)}:n}function FR(n,e){return{x:n.x-e.x,y:n.y-e.y}}function gw({point:n},e){return{point:n,delta:FR(n,gO(e)),offset:FR(n,Y8(e)),velocity:K8(e,.1)}}function Y8(n){return n[0]}function gO(n){return n[n.length-1]}function K8(n,e){if(n.length<2)return{x:0,y:0};let t=n.length-1,i=null;const r=gO(n);for(;t>=0&&(i=n[t],!(r.timestamp-i.timestamp>vl(e)));)t--;if(!i)return{x:0,y:0};const s=ia(r.timestamp-i.timestamp);if(s===0)return{x:0,y:0};const o={x:(r.x-i.x)/s,y:(r.y-i.y)/s};return o.x===1/0&&(o.x=0),o.y===1/0&&(o.y=0),o}function ts(n){return n.max-n.min}function DE(n,e=0,t=.01){return Math.abs(n-e)<=t}function VR(n,e,t,i=.5){n.origin=i,n.originPoint=Vn(e.min,e.max,n.origin),n.scale=ts(t)/ts(e),(DE(n.scale,1,1e-4)||isNaN(n.scale))&&(n.scale=1),n.translate=Vn(t.min,t.max,n.origin)-n.originPoint,(DE(n.translate)||isNaN(n.translate))&&(n.translate=0)}function lp(n,e,t,i){VR(n.x,e.x,t.x,i?i.originX:void 0),VR(n.y,e.y,t.y,i?i.originY:void 0)}function BR(n,e,t){n.min=t.min+e.min,n.max=n.min+ts(e)}function Q8(n,e,t){BR(n.x,e.x,t.x),BR(n.y,e.y,t.y)}function zR(n,e,t){n.min=e.min-t.min,n.max=n.min+ts(e)}function cp(n,e,t){zR(n.x,e.x,t.x),zR(n.y,e.y,t.y)}function J8(n,{min:e,max:t},i){return e!==void 0&&nt&&(n=i?Vn(t,n,i.max):Math.min(n,t)),n}function HR(n,e,t){return{min:e!==void 0?n.min+e:void 0,max:t!==void 0?n.max+t-(n.max-n.min):void 0}}function Z8(n,{top:e,left:t,bottom:i,right:r}){return{x:HR(n.x,t,r),y:HR(n.y,e,i)}}function GR(n,e){let t=e.min-n.min,i=e.max-n.max;return e.max-e.mini?t=Xp(e.min,e.max-i,n.min):i>r&&(t=Xp(n.min,n.max-r,e.min)),Al(0,1,t)}function nG(n,e){const t={};return e.min!==void 0&&(t.min=e.min-n.min),e.max!==void 0&&(t.max=e.max-n.min),t}const kE=.35;function iG(n=kE){return n===!1?n=0:n===!0&&(n=kE),{x:WR(n,"left","right"),y:WR(n,"top","bottom")}}function WR(n,e,t){return{min:jR(n,e),max:jR(n,t)}}function jR(n,e){return typeof n=="number"?n:n[e]||0}const XR=()=>({translate:0,scale:1,origin:0,originPoint:0}),Ch=()=>({x:XR(),y:XR()}),qR=()=>({min:0,max:0}),hi=()=>({x:qR(),y:qR()});function vs(n){return[n("x"),n("y")]}function yO({top:n,left:e,right:t,bottom:i}){return{x:{min:e,max:t},y:{min:n,max:i}}}function rG({x:n,y:e}){return{top:e.min,right:n.max,bottom:e.max,left:n.min}}function sG(n,e){if(!e)return n;const t=e({x:n.left,y:n.top}),i=e({x:n.right,y:n.bottom});return{top:t.y,left:t.x,bottom:i.y,right:i.x}}function yw(n){return n===void 0||n===1}function OE({scale:n,scaleX:e,scaleY:t}){return!yw(n)||!yw(e)||!yw(t)}function Ec(n){return OE(n)||vO(n)||n.z||n.rotate||n.rotateX||n.rotateY}function vO(n){return $R(n.x)||$R(n.y)}function $R(n){return n&&n!=="0%"}function p0(n,e,t){const i=n-t,r=e*i;return t+r}function YR(n,e,t,i,r){return r!==void 0&&(n=p0(n,r,i)),p0(n,t,i)+e}function UE(n,e=0,t=1,i,r){n.min=YR(n.min,e,t,i,r),n.max=YR(n.max,e,t,i,r)}function _O(n,{x:e,y:t}){UE(n.x,e.translate,e.scale,e.originPoint),UE(n.y,t.translate,t.scale,t.originPoint)}function oG(n,e,t,i=!1){const r=t.length;if(!r)return;e.x=e.y=1;let s,o;for(let a=0;a1.0000000000001||n<.999999999999?n:1}function Ya(n,e){n.min=n.min+e,n.max=n.max+e}function QR(n,e,[t,i,r]){const s=e[r]!==void 0?e[r]:.5,o=Vn(n.min,n.max,s);UE(n,e[t],e[i],o,e.scale)}const aG=["x","scaleX","originX"],lG=["y","scaleY","originY"];function bh(n,e){QR(n.x,e,aG),QR(n.y,e,lG)}function xO(n,e){return yO(sG(n.getBoundingClientRect(),e))}function cG(n,e,t){const i=xO(n,t),{scroll:r}=e;return r&&(Ya(i.x,r.offset.x),Ya(i.y,r.offset.y)),i}const SO=({current:n})=>n?n.ownerDocument.defaultView:null,uG=new WeakMap;class hG{constructor(e){this.openGlobalLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=hi(),this.visualElement=e}start(e,{snapToCursor:t=!1}={}){const{presenceContext:i}=this.visualElement;if(i&&i.isPresent===!1)return;const r=d=>{const{dragSnapToOrigin:f}=this.getProps();f?this.pauseAnimation():this.stopAnimation(),t&&this.snapToCursor(z_(d,"page").point)},s=(d,f)=>{const{drag:p,dragPropagation:m,onDragStart:_}=this.getProps();if(p&&!m&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=Dk(p),!this.openGlobalLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),vs(x=>{let y=this.getAxisMotionValue(x).get()||0;if(go.test(y)){const{projection:E}=this.visualElement;if(E&&E.layout){const w=E.layout.layoutBox[x];w&&(y=ts(w)*(parseFloat(y)/100))}}this.originPoint[x]=y}),_&&Mn.update(()=>_(d,f),!1,!0);const{animationState:S}=this.visualElement;S&&S.setActive("whileDrag",!0)},o=(d,f)=>{const{dragPropagation:p,dragDirectionLock:m,onDirectionLock:_,onDrag:S}=this.getProps();if(!p&&!this.openGlobalLock)return;const{offset:x}=f;if(m&&this.currentDirection===null){this.currentDirection=dG(x),this.currentDirection!==null&&_&&_(this.currentDirection);return}this.updateAxis("x",f.point,x),this.updateAxis("y",f.point,x),this.visualElement.render(),S&&S(d,f)},a=(d,f)=>this.stop(d,f),l=()=>vs(d=>{var f;return this.getAnimationState(d)==="paused"&&((f=this.getAxisMotionValue(d).animation)===null||f===void 0?void 0:f.play())}),{dragSnapToOrigin:c}=this.getProps();this.panSession=new mO(e,{onSessionStart:r,onStart:s,onMove:o,onSessionEnd:a,resumeAnimation:l},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:c,contextWindow:SO(this.visualElement)})}stop(e,t){const i=this.isDragging;if(this.cancel(),!i)return;const{velocity:r}=t;this.startAnimation(r);const{onDragEnd:s}=this.getProps();s&&Mn.update(()=>s(e,t))}cancel(){this.isDragging=!1;const{projection:e,animationState:t}=this.visualElement;e&&(e.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:i}=this.getProps();!i&&this.openGlobalLock&&(this.openGlobalLock(),this.openGlobalLock=null),t&&t.setActive("whileDrag",!1)}updateAxis(e,t,i){const{drag:r}=this.getProps();if(!i||!oy(e,r,this.currentDirection))return;const s=this.getAxisMotionValue(e);let o=this.originPoint[e]+i[e];this.constraints&&this.constraints[e]&&(o=J8(o,this.constraints[e],this.elastic[e])),s.set(o)}resolveConstraints(){var e;const{dragConstraints:t,dragElastic:i}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(e=this.visualElement.projection)===null||e===void 0?void 0:e.layout,s=this.constraints;t&&Ah(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=Z8(r.layoutBox,t):this.constraints=!1,this.elastic=iG(i),s!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&vs(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=nG(r.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:e,onMeasureDragConstraints:t}=this.getProps();if(!e||!Ah(e))return!1;const i=e.current,{projection:r}=this.visualElement;if(!r||!r.layout)return!1;const s=cG(i,r.root,this.visualElement.getTransformPagePoint());let o=eG(r.layout.layoutBox,s);if(t){const a=t(rG(o));this.hasMutatedConstraints=!!a,a&&(o=yO(a))}return o}startAnimation(e){const{drag:t,dragMomentum:i,dragElastic:r,dragTransition:s,dragSnapToOrigin:o,onDragTransitionEnd:a}=this.getProps(),l=this.constraints||{},c=vs(d=>{if(!oy(d,t,this.currentDirection))return;let f=l&&l[d]||{};o&&(f={min:0,max:0});const p=r?200:1e6,m=r?40:1e7,_={type:"inertia",velocity:i?e[d]:0,bounceStiffness:p,bounceDamping:m,timeConstant:750,restDelta:1,restSpeed:10,...s,...f};return this.startAxisValueAnimation(d,_)});return Promise.all(c).then(a)}startAxisValueAnimation(e,t){const i=this.getAxisMotionValue(e);return i.start(ZA(e,i,0,t))}stopAnimation(){vs(e=>this.getAxisMotionValue(e).stop())}pauseAnimation(){vs(e=>{var t;return(t=this.getAxisMotionValue(e).animation)===null||t===void 0?void 0:t.pause()})}getAnimationState(e){var t;return(t=this.getAxisMotionValue(e).animation)===null||t===void 0?void 0:t.state}getAxisMotionValue(e){const t="_drag"+e.toUpperCase(),i=this.visualElement.getProps(),r=i[t];return r||this.visualElement.getValue(e,(i.initial?i.initial[e]:void 0)||0)}snapToCursor(e){vs(t=>{const{drag:i}=this.getProps();if(!oy(t,i,this.currentDirection))return;const{projection:r}=this.visualElement,s=this.getAxisMotionValue(t);if(r&&r.layout){const{min:o,max:a}=r.layout.layoutBox[t];s.set(e[t]-Vn(o,a,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:e,dragConstraints:t}=this.getProps(),{projection:i}=this.visualElement;if(!Ah(t)||!i||!this.constraints)return;this.stopAnimation();const r={x:0,y:0};vs(o=>{const a=this.getAxisMotionValue(o);if(a){const l=a.get();r[o]=tG({min:l,max:l},this.constraints[o])}});const{transformTemplate:s}=this.visualElement.getProps();this.visualElement.current.style.transform=s?s({},""):"none",i.root&&i.root.updateScroll(),i.updateLayout(),this.resolveConstraints(),vs(o=>{if(!oy(o,e,null))return;const a=this.getAxisMotionValue(o),{min:l,max:c}=this.constraints[o];a.set(Vn(l,c,r[o]))})}addListeners(){if(!this.visualElement.current)return;uG.set(this.visualElement,this);const e=this.visualElement.current,t=na(e,"pointerdown",l=>{const{drag:c,dragListener:d=!0}=this.getProps();c&&d&&this.start(l)}),i=()=>{const{dragConstraints:l}=this.getProps();Ah(l)&&(this.constraints=this.resolveRefConstraints())},{projection:r}=this.visualElement,s=r.addEventListener("measure",i);r&&!r.layout&&(r.root&&r.root.updateScroll(),r.updateLayout()),i();const o=Yo(window,"resize",()=>this.scalePositionWithinConstraints()),a=r.addEventListener("didUpdate",({delta:l,hasLayoutChanged:c})=>{this.isDragging&&c&&(vs(d=>{const f=this.getAxisMotionValue(d);f&&(this.originPoint[d]+=l[d].translate,f.set(f.get()+l[d].translate))}),this.visualElement.render())});return()=>{o(),t(),s(),a&&a()}}getProps(){const e=this.visualElement.getProps(),{drag:t=!1,dragDirectionLock:i=!1,dragPropagation:r=!1,dragConstraints:s=!1,dragElastic:o=kE,dragMomentum:a=!0}=e;return{...e,drag:t,dragDirectionLock:i,dragPropagation:r,dragConstraints:s,dragElastic:o,dragMomentum:a}}}function oy(n,e,t){return(e===!0||e===n)&&(t===null||t===n)}function dG(n,e=10){let t=null;return Math.abs(n.y)>e?t="y":Math.abs(n.x)>e&&(t="x"),t}class fG extends Ol{constructor(e){super(e),this.removeGroupControls=Yn,this.removeListeners=Yn,this.controls=new hG(e)}mount(){const{dragControls:e}=this.node.getProps();e&&(this.removeGroupControls=e.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Yn}unmount(){this.removeGroupControls(),this.removeListeners()}}const JR=n=>(e,t)=>{n&&Mn.update(()=>n(e,t))};class pG extends Ol{constructor(){super(...arguments),this.removePointerDownListener=Yn}onPointerDown(e){this.session=new mO(e,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:SO(this.node)})}createPanHandlers(){const{onPanSessionStart:e,onPanStart:t,onPan:i,onPanEnd:r}=this.node.getProps();return{onSessionStart:JR(e),onStart:JR(t),onMove:i,onEnd:(s,o)=>{delete this.session,r&&Mn.update(()=>r(s,o))}}}mount(){this.removePointerDownListener=na(this.node.current,"pointerdown",e=>this.onPointerDown(e))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}function mG(){const n=q.useContext(O_);if(n===null)return[!0,null];const{isPresent:e,onExitComplete:t,register:i}=n,r=q.useId();return q.useEffect(()=>i(r),[]),!e&&t?[!1,()=>t&&t(r)]:[!0]}const wv={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function ZR(n,e){return e.max===e.min?0:n/(e.max-e.min)*100}const _f={correct:(n,e)=>{if(!e.target)return n;if(typeof n=="string")if(Ct.test(n))n=parseFloat(n);else return n;const t=ZR(n,e.target.x),i=ZR(n,e.target.y);return`${t}% ${i}%`}},gG={correct:(n,{treeScale:e,projectionDelta:t})=>{const i=n,r=Ml.parse(n);if(r.length>5)return i;const s=Ml.createTransformer(n),o=typeof r[0]!="number"?1:0,a=t.x.scale*e.x,l=t.y.scale*e.y;r[0+o]/=a,r[1+o]/=l;const c=Vn(a,l,.5);return typeof r[2+o]=="number"&&(r[2+o]/=c),typeof r[3+o]=="number"&&(r[3+o]/=c),s(r)}};class yG extends v_.Component{componentDidMount(){const{visualElement:e,layoutGroup:t,switchLayoutGroup:i,layoutId:r}=this.props,{projection:s}=e;TH(vG),s&&(t.group&&t.group.add(s),i&&i.register&&r&&i.register(s),s.root.didUpdate(),s.addEventListener("animationComplete",()=>{this.safeToRemove()}),s.setOptions({...s.options,onExitComplete:()=>this.safeToRemove()})),wv.hasEverUpdated=!0}getSnapshotBeforeUpdate(e){const{layoutDependency:t,visualElement:i,drag:r,isPresent:s}=this.props,o=i.projection;return o&&(o.isPresent=s,r||e.layoutDependency!==t||t===void 0?o.willUpdate():this.safeToRemove(),e.isPresent!==s&&(s?o.promote():o.relegate()||Mn.postRender(()=>{const a=o.getStack();(!a||!a.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:e}=this.props.visualElement;e&&(e.root.didUpdate(),queueMicrotask(()=>{!e.currentAnimation&&e.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:e,layoutGroup:t,switchLayoutGroup:i}=this.props,{projection:r}=e;r&&(r.scheduleCheckAfterUnmount(),t&&t.group&&t.group.remove(r),i&&i.deregister&&i.deregister(r))}safeToRemove(){const{safeToRemove:e}=this.props;e&&e()}render(){return null}}function wO(n){const[e,t]=mG(),i=q.useContext(VA);return v_.createElement(yG,{...n,layoutGroup:i,switchLayoutGroup:q.useContext(yk),isPresent:e,safeToRemove:t})}const vG={borderRadius:{..._f,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:_f,borderTopRightRadius:_f,borderBottomLeftRadius:_f,borderBottomRightRadius:_f,boxShadow:gG},EO=["TopLeft","TopRight","BottomLeft","BottomRight"],_G=EO.length,eI=n=>typeof n=="string"?parseFloat(n):n,tI=n=>typeof n=="number"||Ct.test(n);function xG(n,e,t,i,r,s){r?(n.opacity=Vn(0,t.opacity!==void 0?t.opacity:1,SG(i)),n.opacityExit=Vn(e.opacity!==void 0?e.opacity:1,0,wG(i))):s&&(n.opacity=Vn(e.opacity!==void 0?e.opacity:1,t.opacity!==void 0?t.opacity:1,i));for(let o=0;o<_G;o++){const a=`border${EO[o]}Radius`;let l=nI(e,a),c=nI(t,a);if(l===void 0&&c===void 0)continue;l||(l=0),c||(c=0),l===0||c===0||tI(l)===tI(c)?(n[a]=Math.max(Vn(eI(l),eI(c),i),0),(go.test(c)||go.test(l))&&(n[a]+="%")):n[a]=c}(e.rotate||t.rotate)&&(n.rotate=Vn(e.rotate||0,t.rotate||0,i))}function nI(n,e){return n[e]!==void 0?n[e]:n.borderRadius}const SG=TO(0,.5,Xk),wG=TO(.5,.95,Yn);function TO(n,e,t){return i=>ie?1:t(Xp(n,e,i))}function iI(n,e){n.min=e.min,n.max=e.max}function ms(n,e){iI(n.x,e.x),iI(n.y,e.y)}function rI(n,e,t,i,r){return n-=e,n=p0(n,1/t,i),r!==void 0&&(n=p0(n,1/r,i)),n}function EG(n,e=0,t=1,i=.5,r,s=n,o=n){if(go.test(e)&&(e=parseFloat(e),e=Vn(o.min,o.max,e/100)-o.min),typeof e!="number")return;let a=Vn(s.min,s.max,i);n===s&&(a-=e),n.min=rI(n.min,e,t,a,r),n.max=rI(n.max,e,t,a,r)}function sI(n,e,[t,i,r],s,o){EG(n,e[t],e[i],e[r],e.scale,s,o)}const TG=["x","scaleX","originX"],AG=["y","scaleY","originY"];function oI(n,e,t,i){sI(n.x,e,TG,t?t.x:void 0,i?i.x:void 0),sI(n.y,e,AG,t?t.y:void 0,i?i.y:void 0)}function aI(n){return n.translate===0&&n.scale===1}function AO(n){return aI(n.x)&&aI(n.y)}function MG(n,e){return n.x.min===e.x.min&&n.x.max===e.x.max&&n.y.min===e.y.min&&n.y.max===e.y.max}function MO(n,e){return Math.round(n.x.min)===Math.round(e.x.min)&&Math.round(n.x.max)===Math.round(e.x.max)&&Math.round(n.y.min)===Math.round(e.y.min)&&Math.round(n.y.max)===Math.round(e.y.max)}function lI(n){return ts(n.x)/ts(n.y)}class CG{constructor(){this.members=[]}add(e){eM(this.members,e),e.scheduleRender()}remove(e){if(tM(this.members,e),e===this.prevLead&&(this.prevLead=void 0),e===this.lead){const t=this.members[this.members.length-1];t&&this.promote(t)}}relegate(e){const t=this.members.findIndex(r=>e===r);if(t===0)return!1;let i;for(let r=t;r>=0;r--){const s=this.members[r];if(s.isPresent!==!1){i=s;break}}return i?(this.promote(i),!0):!1}promote(e,t){const i=this.lead;if(e!==i&&(this.prevLead=i,this.lead=e,e.show(),i)){i.instance&&i.scheduleRender(),e.scheduleRender(),e.resumeFrom=i,t&&(e.resumeFrom.preserveOpacity=!0),i.snapshot&&(e.snapshot=i.snapshot,e.snapshot.latestValues=i.animationValues||i.latestValues),e.root&&e.root.isUpdating&&(e.isLayoutDirty=!0);const{crossfade:r}=e.options;r===!1&&i.hide()}}exitAnimationComplete(){this.members.forEach(e=>{const{options:t,resumingFrom:i}=e;t.onExitComplete&&t.onExitComplete(),i&&i.options.onExitComplete&&i.options.onExitComplete()})}scheduleRender(){this.members.forEach(e=>{e.instance&&e.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function cI(n,e,t){let i="";const r=n.x.translate/e.x,s=n.y.translate/e.y;if((r||s)&&(i=`translate3d(${r}px, ${s}px, 0) `),(e.x!==1||e.y!==1)&&(i+=`scale(${1/e.x}, ${1/e.y}) `),t){const{rotate:l,rotateX:c,rotateY:d}=t;l&&(i+=`rotate(${l}deg) `),c&&(i+=`rotateX(${c}deg) `),d&&(i+=`rotateY(${d}deg) `)}const o=n.x.scale*e.x,a=n.y.scale*e.y;return(o!==1||a!==1)&&(i+=`scale(${o}, ${a})`),i||"none"}const bG=(n,e)=>n.depth-e.depth;class PG{constructor(){this.children=[],this.isDirty=!1}add(e){eM(this.children,e),this.isDirty=!0}remove(e){tM(this.children,e),this.isDirty=!0}forEach(e){this.isDirty&&this.children.sort(bG),this.isDirty=!1,this.children.forEach(e)}}function RG(n,e){const t=performance.now(),i=({timestamp:r})=>{const s=r-t;s>=e&&(ca(i),n(s-e))};return Mn.read(i,!0),()=>ca(i)}function IG(n){window.MotionDebug&&window.MotionDebug.record(n)}function LG(n){return n instanceof SVGElement&&n.tagName!=="svg"}function NG(n,e,t){const i=Br(n)?n:id(n);return i.start(ZA("",i,e,t)),i.animation}const uI=["","X","Y","Z"],DG={visibility:"hidden"},hI=1e3;let kG=0;const Tc={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0};function CO({attachResizeListener:n,defaultParent:e,measureScroll:t,checkIsScrollRoot:i,resetTransform:r}){return class{constructor(o={},a=e==null?void 0:e()){this.id=kG++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,Tc.totalNodes=Tc.resolvedTargetDeltas=Tc.recalculatedProjection=0,this.nodes.forEach(FG),this.nodes.forEach(GG),this.nodes.forEach(WG),this.nodes.forEach(VG),IG(Tc)},this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=o,this.root=a?a.root||a:this,this.path=a?[...a.path,a]:[],this.parent=a,this.depth=a?a.depth+1:0;for(let l=0;lthis.root.updateBlockedByResize=!1;n(o,()=>{this.root.updateBlockedByResize=!0,f&&f(),f=RG(p,250),wv.hasAnimatedSinceResize&&(wv.hasAnimatedSinceResize=!1,this.nodes.forEach(fI))})}l&&this.root.registerSharedNode(l,this),this.options.animate!==!1&&d&&(l||c)&&this.addEventListener("didUpdate",({delta:f,hasLayoutChanged:p,hasRelativeTargetChanged:m,layout:_})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const S=this.options.transition||d.getDefaultTransition()||YG,{onLayoutAnimationStart:x,onLayoutAnimationComplete:y}=d.getProps(),E=!this.targetLayout||!MO(this.targetLayout,_)||m,w=!p&&m;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||w||p&&(E||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(f,w);const M={...JA(S,"layout"),onPlay:x,onComplete:y};(d.shouldReduceMotion||this.options.layoutRoot)&&(M.delay=0,M.type=!1),this.startAnimation(M)}else p||fI(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=_})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const o=this.getStack();o&&o.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,ca(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(jG),this.animationId++)}getTransformTemplate(){const{visualElement:o}=this.options;return o&&o.getProps().transformTemplate}willUpdate(o=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let d=0;dthis.update()))}clearAllSnapshots(){this.nodes.forEach(BG),this.sharedNodes.forEach(XG)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Mn.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Mn.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let l=0;l{const O=M/1e3;pI(f.x,o.x,O),pI(f.y,o.y,O),this.setTargetDelta(f),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(cp(p,this.layout.layoutBox,this.relativeParent.layout.layoutBox),qG(this.relativeTarget,this.relativeTargetOrigin,p,O),w&&MG(this.relativeTarget,w)&&(this.isProjectionDirty=!1),w||(w=hi()),ms(w,this.relativeTarget)),S&&(this.animationValues=d,xG(d,c,this.latestValues,O,E,y)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=O},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(o){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(ca(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Mn.update(()=>{wv.hasAnimatedSinceResize=!0,this.currentAnimation=NG(0,hI,{...o,onUpdate:a=>{this.mixTargetDelta(a),o.onUpdate&&o.onUpdate(a)},onComplete:()=>{o.onComplete&&o.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const o=this.getStack();o&&o.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(hI),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const o=this.getLead();let{targetWithTransforms:a,target:l,layout:c,latestValues:d}=o;if(!(!a||!l||!c)){if(this!==o&&this.layout&&c&&bO(this.options.animationType,this.layout.layoutBox,c.layoutBox)){l=this.target||hi();const f=ts(this.layout.layoutBox.x);l.x.min=o.target.x.min,l.x.max=l.x.min+f;const p=ts(this.layout.layoutBox.y);l.y.min=o.target.y.min,l.y.max=l.y.min+p}ms(a,l),bh(a,d),lp(this.projectionDeltaWithTransform,this.layoutCorrected,a,d)}}registerSharedNode(o,a){this.sharedNodes.has(o)||this.sharedNodes.set(o,new CG),this.sharedNodes.get(o).add(a);const c=a.options.initialPromotionConfig;a.promote({transition:c?c.transition:void 0,preserveFollowOpacity:c&&c.shouldPreserveFollowOpacity?c.shouldPreserveFollowOpacity(a):void 0})}isLead(){const o=this.getStack();return o?o.lead===this:!0}getLead(){var o;const{layoutId:a}=this.options;return a?((o=this.getStack())===null||o===void 0?void 0:o.lead)||this:this}getPrevLead(){var o;const{layoutId:a}=this.options;return a?(o=this.getStack())===null||o===void 0?void 0:o.prevLead:void 0}getStack(){const{layoutId:o}=this.options;if(o)return this.root.sharedNodes.get(o)}promote({needsReset:o,transition:a,preserveFollowOpacity:l}={}){const c=this.getStack();c&&c.promote(this,l),o&&(this.projectionDelta=void 0,this.needsReset=!0),a&&this.setOptions({transition:a})}relegate(){const o=this.getStack();return o?o.relegate(this):!1}resetRotation(){const{visualElement:o}=this.options;if(!o)return;let a=!1;const{latestValues:l}=o;if((l.rotate||l.rotateX||l.rotateY||l.rotateZ)&&(a=!0),!a)return;const c={};for(let d=0;d{var a;return(a=o.currentAnimation)===null||a===void 0?void 0:a.stop()}),this.root.nodes.forEach(dI),this.root.sharedNodes.clear()}}}function OG(n){n.updateLayout()}function UG(n){var e;const t=((e=n.resumeFrom)===null||e===void 0?void 0:e.snapshot)||n.snapshot;if(n.isLead()&&n.layout&&t&&n.hasListeners("didUpdate")){const{layoutBox:i,measuredBox:r}=n.layout,{animationType:s}=n.options,o=t.source!==n.layout.source;s==="size"?vs(f=>{const p=o?t.measuredBox[f]:t.layoutBox[f],m=ts(p);p.min=i[f].min,p.max=p.min+m}):bO(s,t.layoutBox,i)&&vs(f=>{const p=o?t.measuredBox[f]:t.layoutBox[f],m=ts(i[f]);p.max=p.min+m,n.relativeTarget&&!n.currentAnimation&&(n.isProjectionDirty=!0,n.relativeTarget[f].max=n.relativeTarget[f].min+m)});const a=Ch();lp(a,i,t.layoutBox);const l=Ch();o?lp(l,n.applyTransform(r,!0),t.measuredBox):lp(l,i,t.layoutBox);const c=!AO(a);let d=!1;if(!n.resumeFrom){const f=n.getClosestProjectingParent();if(f&&!f.resumeFrom){const{snapshot:p,layout:m}=f;if(p&&m){const _=hi();cp(_,t.layoutBox,p.layoutBox);const S=hi();cp(S,i,m.layoutBox),MO(_,S)||(d=!0),f.options.layoutRoot&&(n.relativeTarget=S,n.relativeTargetOrigin=_,n.relativeParent=f)}}}n.notifyListeners("didUpdate",{layout:i,snapshot:t,delta:l,layoutDelta:a,hasLayoutChanged:c,hasRelativeTargetChanged:d})}else if(n.isLead()){const{onExitComplete:i}=n.options;i&&i()}n.options.transition=void 0}function FG(n){Tc.totalNodes++,n.parent&&(n.isProjecting()||(n.isProjectionDirty=n.parent.isProjectionDirty),n.isSharedProjectionDirty||(n.isSharedProjectionDirty=!!(n.isProjectionDirty||n.parent.isProjectionDirty||n.parent.isSharedProjectionDirty)),n.isTransformDirty||(n.isTransformDirty=n.parent.isTransformDirty))}function VG(n){n.isProjectionDirty=n.isSharedProjectionDirty=n.isTransformDirty=!1}function BG(n){n.clearSnapshot()}function dI(n){n.clearMeasurements()}function zG(n){n.isLayoutDirty=!1}function HG(n){const{visualElement:e}=n.options;e&&e.getProps().onBeforeLayoutMeasure&&e.notify("BeforeLayoutMeasure"),n.resetTransform()}function fI(n){n.finishAnimation(),n.targetDelta=n.relativeTarget=n.target=void 0,n.isProjectionDirty=!0}function GG(n){n.resolveTargetDelta()}function WG(n){n.calcProjection()}function jG(n){n.resetRotation()}function XG(n){n.removeLeadSnapshot()}function pI(n,e,t){n.translate=Vn(e.translate,0,t),n.scale=Vn(e.scale,1,t),n.origin=e.origin,n.originPoint=e.originPoint}function mI(n,e,t,i){n.min=Vn(e.min,t.min,i),n.max=Vn(e.max,t.max,i)}function qG(n,e,t,i){mI(n.x,e.x,t.x,i),mI(n.y,e.y,t.y,i)}function $G(n){return n.animationValues&&n.animationValues.opacityExit!==void 0}const YG={duration:.45,ease:[.4,0,.1,1]},gI=n=>typeof navigator<"u"&&navigator.userAgent.toLowerCase().includes(n),yI=gI("applewebkit/")&&!gI("chrome/")?Math.round:Yn;function vI(n){n.min=yI(n.min),n.max=yI(n.max)}function KG(n){vI(n.x),vI(n.y)}function bO(n,e,t){return n==="position"||n==="preserve-aspect"&&!DE(lI(e),lI(t),.2)}const QG=CO({attachResizeListener:(n,e)=>Yo(n,"resize",e),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),vw={current:void 0},PO=CO({measureScroll:n=>({x:n.scrollLeft,y:n.scrollTop}),defaultParent:()=>{if(!vw.current){const n=new QG({});n.mount(window),n.setOptions({layoutScroll:!0}),vw.current=n}return vw.current},resetTransform:(n,e)=>{n.style.transform=e!==void 0?e:"none"},checkIsScrollRoot:n=>window.getComputedStyle(n).position==="fixed"}),JG={pan:{Feature:pG},drag:{Feature:fG,ProjectionNode:PO,MeasureLayout:wO}},ZG=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function eW(n){const e=ZG.exec(n);if(!e)return[,];const[,t,i]=e;return[t,i]}function FE(n,e,t=1){const[i,r]=eW(n);if(!i)return;const s=window.getComputedStyle(e).getPropertyValue(i);if(s){const o=s.trim();return hO(o)?parseFloat(o):o}else return CE(r)?FE(r,e,t+1):r}function tW(n,{...e},t){const i=n.current;if(!(i instanceof Element))return{target:e,transitionEnd:t};t&&(t={...t}),n.values.forEach(r=>{const s=r.get();if(!CE(s))return;const o=FE(s,i);o&&r.set(o)});for(const r in e){const s=e[r];if(!CE(s))continue;const o=FE(s,i);o&&(e[r]=o,t||(t={}),t[r]===void 0&&(t[r]=s))}return{target:e,transitionEnd:t}}const nW=new Set(["width","height","top","left","right","bottom","x","y","translateX","translateY"]),RO=n=>nW.has(n),iW=n=>Object.keys(n).some(RO),_I=n=>n===gu||n===Ct,xI=(n,e)=>parseFloat(n.split(", ")[e]),SI=(n,e)=>(t,{transform:i})=>{if(i==="none"||!i)return 0;const r=i.match(/^matrix3d\((.+)\)$/);if(r)return xI(r[1],e);{const s=i.match(/^matrix\((.+)\)$/);return s?xI(s[1],n):0}},rW=new Set(["x","y","z"]),sW=bm.filter(n=>!rW.has(n));function oW(n){const e=[];return sW.forEach(t=>{const i=n.getValue(t);i!==void 0&&(e.push([t,i.get()]),i.set(t.startsWith("scale")?1:0))}),e.length&&n.render(),e}const rd={width:({x:n},{paddingLeft:e="0",paddingRight:t="0"})=>n.max-n.min-parseFloat(e)-parseFloat(t),height:({y:n},{paddingTop:e="0",paddingBottom:t="0"})=>n.max-n.min-parseFloat(e)-parseFloat(t),top:(n,{top:e})=>parseFloat(e),left:(n,{left:e})=>parseFloat(e),bottom:({y:n},{top:e})=>parseFloat(e)+(n.max-n.min),right:({x:n},{left:e})=>parseFloat(e)+(n.max-n.min),x:SI(4,13),y:SI(5,14)};rd.translateX=rd.x;rd.translateY=rd.y;const aW=(n,e,t)=>{const i=e.measureViewportBox(),r=e.current,s=getComputedStyle(r),{display:o}=s,a={};o==="none"&&e.setStaticValue("display",n.display||"block"),t.forEach(c=>{a[c]=rd[c](i,s)}),e.render();const l=e.measureViewportBox();return t.forEach(c=>{const d=e.getValue(c);d&&d.jump(a[c]),n[c]=rd[c](l,s)}),n},lW=(n,e,t={},i={})=>{e={...e},i={...i};const r=Object.keys(e).filter(RO);let s=[],o=!1;const a=[];if(r.forEach(l=>{const c=n.getValue(l);if(!n.hasValue(l))return;let d=t[l],f=vf(d);const p=e[l];let m;if(c0(p)){const _=p.length,S=p[0]===null?1:0;d=p[S],f=vf(d);for(let x=S;x<_&&p[x]!==null;x++)m?qA(vf(p[x])===m):m=vf(p[x])}else m=vf(p);if(f!==m)if(_I(f)&&_I(m)){const _=c.get();typeof _=="string"&&c.set(parseFloat(_)),typeof p=="string"?e[l]=parseFloat(p):Array.isArray(p)&&m===Ct&&(e[l]=p.map(parseFloat))}else f!=null&&f.transform&&(m!=null&&m.transform)&&(d===0||p===0)?d===0?c.set(m.transform(d)):e[l]=f.transform(p):(o||(s=oW(n),o=!0),a.push(l),i[l]=i[l]!==void 0?i[l]:e[l],c.jump(p))}),a.length){const l=a.indexOf("height")>=0?window.pageYOffset:null,c=aW(e,n,a);return s.length&&s.forEach(([d,f])=>{n.getValue(d).set(f)}),n.render(),U_&&l!==null&&window.scrollTo({top:l}),{target:c,transitionEnd:i}}else return{target:e,transitionEnd:i}};function cW(n,e,t,i){return iW(e)?lW(n,e,t,i):{target:e,transitionEnd:i}}const uW=(n,e,t,i)=>{const r=tW(n,e,i);return e=r.target,i=r.transitionEnd,cW(n,e,t,i)},VE={current:null},IO={current:!1};function hW(){if(IO.current=!0,!!U_)if(window.matchMedia){const n=window.matchMedia("(prefers-reduced-motion)"),e=()=>VE.current=n.matches;n.addListener(e),e()}else VE.current=!1}function dW(n,e,t){const{willChange:i}=e;for(const r in e){const s=e[r],o=t[r];if(Br(s))n.addValue(r,s),f0(i)&&i.add(r);else if(Br(o))n.addValue(r,id(s,{owner:n})),f0(i)&&i.remove(r);else if(o!==s)if(n.hasValue(r)){const a=n.getValue(r);!a.hasAnimated&&a.set(s)}else{const a=n.getStaticValue(r);n.addValue(r,id(a!==void 0?a:s,{owner:n}))}}for(const r in t)e[r]===void 0&&n.removeValue(r);return e}const wI=new WeakMap,LO=Object.keys(jp),fW=LO.length,EI=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],pW=FA.length;class mW{constructor({parent:e,props:t,presenceContext:i,reducedMotionConfig:r,visualState:s},o={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.scheduleRender=()=>Mn.render(this.render,!1,!0);const{latestValues:a,renderState:l}=s;this.latestValues=a,this.baseTarget={...a},this.initialValues=t.initial?{...a}:{},this.renderState=l,this.parent=e,this.props=t,this.presenceContext=i,this.depth=e?e.depth+1:0,this.reducedMotionConfig=r,this.options=o,this.isControllingVariants=V_(t),this.isVariantNode=gk(t),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(e&&e.current);const{willChange:c,...d}=this.scrapeMotionValuesFromProps(t,{});for(const f in d){const p=d[f];a[f]!==void 0&&Br(p)&&(p.set(a[f],!1),f0(c)&&c.add(f))}}scrapeMotionValuesFromProps(e,t){return{}}mount(e){this.current=e,wI.set(e,this),this.projection&&!this.projection.instance&&this.projection.mount(e),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((t,i)=>this.bindToMotionValue(i,t)),IO.current||hW(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:VE.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){wI.delete(this.current),this.projection&&this.projection.unmount(),ca(this.notifyUpdate),ca(this.render),this.valueSubscriptions.forEach(e=>e()),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const e in this.events)this.events[e].clear();for(const e in this.features)this.features[e].unmount();this.current=null}bindToMotionValue(e,t){const i=mu.has(e),r=t.on("change",o=>{this.latestValues[e]=o,this.props.onUpdate&&Mn.update(this.notifyUpdate,!1,!0),i&&this.projection&&(this.projection.isTransformDirty=!0)}),s=t.on("renderRequest",this.scheduleRender);this.valueSubscriptions.set(e,()=>{r(),s()})}sortNodePosition(e){return!this.current||!this.sortInstanceNodePosition||this.type!==e.type?0:this.sortInstanceNodePosition(this.current,e.current)}loadFeatures({children:e,...t},i,r,s){let o,a;for(let l=0;lthis.scheduleRender(),animationType:typeof c=="string"?c:"both",initialPromotionConfig:s,layoutScroll:p,layoutRoot:m})}return a}updateFeatures(){for(const e in this.features){const t=this.features[e];t.isMounted?t.update():(t.mount(),t.isMounted=!0)}}triggerBuild(){this.build(this.renderState,this.latestValues,this.options,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):hi()}getStaticValue(e){return this.latestValues[e]}setStaticValue(e,t){this.latestValues[e]=t}makeTargetAnimatable(e,t=!0){return this.makeTargetAnimatableFromInstance(e,this.props,t)}update(e,t){(e.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=e,this.prevPresenceContext=this.presenceContext,this.presenceContext=t;for(let i=0;it.variantChildren.delete(e)}addValue(e,t){t!==this.values.get(e)&&(this.removeValue(e),this.bindToMotionValue(e,t)),this.values.set(e,t),this.latestValues[e]=t.get()}removeValue(e){this.values.delete(e);const t=this.valueSubscriptions.get(e);t&&(t(),this.valueSubscriptions.delete(e)),delete this.latestValues[e],this.removeValueFromRenderState(e,this.renderState)}hasValue(e){return this.values.has(e)}getValue(e,t){if(this.props.values&&this.props.values[e])return this.props.values[e];let i=this.values.get(e);return i===void 0&&t!==void 0&&(i=id(t,{owner:this}),this.addValue(e,i)),i}readValue(e){var t;return this.latestValues[e]!==void 0||!this.current?this.latestValues[e]:(t=this.getBaseTargetFromProps(this.props,e))!==null&&t!==void 0?t:this.readValueFromInstance(this.current,e,this.options)}setBaseTarget(e,t){this.baseTarget[e]=t}getBaseTarget(e){var t;const{initial:i}=this.props,r=typeof i=="string"||typeof i=="object"?(t=XA(this.props,i))===null||t===void 0?void 0:t[e]:void 0;if(i&&r!==void 0)return r;const s=this.getBaseTargetFromProps(this.props,e);return s!==void 0&&!Br(s)?s:this.initialValues[e]!==void 0&&r===void 0?void 0:this.baseTarget[e]}on(e,t){return this.events[e]||(this.events[e]=new nM),this.events[e].add(t)}notify(e,...t){this.events[e]&&this.events[e].notify(...t)}}class NO extends mW{sortInstanceNodePosition(e,t){return e.compareDocumentPosition(t)&2?1:-1}getBaseTargetFromProps(e,t){return e.style?e.style[t]:void 0}removeValueFromRenderState(e,{vars:t,style:i}){delete t[e],delete i[e]}makeTargetAnimatableFromInstance({transition:e,transitionEnd:t,...i},{transformValues:r},s){let o=L8(i,e||{},this);if(r&&(t&&(t=r(t)),i&&(i=r(i)),o&&(o=r(o))),s){R8(this,i,o);const a=uW(this,i,o,t);t=a.transitionEnd,i=a.target}return{transition:e,transitionEnd:t,...i}}}function gW(n){return window.getComputedStyle(n)}class yW extends NO{constructor(){super(...arguments),this.type="html"}readValueFromInstance(e,t){if(mu.has(t)){const i=QA(t);return i&&i.default||0}else{const i=gW(e),r=(xk(t)?i.getPropertyValue(t):i[t])||0;return typeof r=="string"?r.trim():r}}measureInstanceViewportBox(e,{transformPagePoint:t}){return xO(e,t)}build(e,t,i,r){zA(e,t,i,r.transformTemplate)}scrapeMotionValuesFromProps(e,t){return jA(e,t)}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:e}=this.props;Br(e)&&(this.childSubscription=e.on("change",t=>{this.current&&(this.current.textContent=`${t}`)}))}renderInstance(e,t,i,r){Mk(e,t,i,r)}}class vW extends NO{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1}getBaseTargetFromProps(e,t){return e[t]}readValueFromInstance(e,t){if(mu.has(t)){const i=QA(t);return i&&i.default||0}return t=Ck.has(t)?t:OA(t),e.getAttribute(t)}measureInstanceViewportBox(){return hi()}scrapeMotionValuesFromProps(e,t){return Pk(e,t)}build(e,t,i,r){GA(e,t,i,this.isSVGTag,r.transformTemplate)}renderInstance(e,t,i,r){bk(e,t,i,r)}mount(e){this.isSVGTag=WA(e.tagName),super.mount(e)}}const _W=(n,e)=>BA(n)?new vW(e,{enableHardwareAcceleration:!1}):new yW(e,{enableHardwareAcceleration:!0}),xW={layout:{ProjectionNode:PO,MeasureLayout:wO}},SW={...q8,...f9,...JG,...xW},er=wH((n,e)=>e9(n,e,SW,_W));function DO(){const n=q.useRef(!1);return kA(()=>(n.current=!0,()=>{n.current=!1}),[]),n}function wW(){const n=DO(),[e,t]=q.useState(0),i=q.useCallback(()=>{n.current&&t(e+1)},[e]);return[q.useCallback(()=>Mn.postRender(i),[i]),e]}class EW extends q.Component{getSnapshotBeforeUpdate(e){const t=this.props.childRef.current;if(t&&e.isPresent&&!this.props.isPresent){const i=this.props.sizeRef.current;i.height=t.offsetHeight||0,i.width=t.offsetWidth||0,i.top=t.offsetTop,i.left=t.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function TW({children:n,isPresent:e}){const t=q.useId(),i=q.useRef(null),r=q.useRef({width:0,height:0,top:0,left:0});return q.useInsertionEffect(()=>{const{width:s,height:o,top:a,left:l}=r.current;if(e||!i.current||!s||!o)return;i.current.dataset.motionPopId=t;const c=document.createElement("style");return document.head.appendChild(c),c.sheet&&c.sheet.insertRule(` + [data-motion-pop-id="${t}"] { + position: absolute !important; + width: ${s}px !important; + height: ${o}px !important; + top: ${a}px !important; + left: ${l}px !important; + } + `),()=>{document.head.removeChild(c)}},[e]),q.createElement(EW,{isPresent:e,childRef:i,sizeRef:r},q.cloneElement(n,{ref:i}))}const _w=({children:n,initial:e,isPresent:t,onExitComplete:i,custom:r,presenceAffectsLayout:s,mode:o})=>{const a=Rk(AW),l=q.useId(),c=q.useMemo(()=>({id:l,initial:e,isPresent:t,custom:r,onExitComplete:d=>{a.set(d,!0);for(const f of a.values())if(!f)return;i&&i()},register:d=>(a.set(d,!1),()=>a.delete(d))}),s?void 0:[t]);return q.useMemo(()=>{a.forEach((d,f)=>a.set(f,!1))},[t]),q.useEffect(()=>{!t&&!a.size&&i&&i()},[t]),o==="popLayout"&&(n=q.createElement(TW,{isPresent:t},n)),q.createElement(O_.Provider,{value:c},n)};function AW(){return new Map}function MW(n){return q.useEffect(()=>()=>n(),[])}const Ac=n=>n.key||"";function CW(n,e){n.forEach(t=>{const i=Ac(t);e.set(i,t)})}function bW(n){const e=[];return q.Children.forEach(n,t=>{q.isValidElement(t)&&e.push(t)}),e}const TI=({children:n,custom:e,initial:t=!0,onExitComplete:i,exitBeforeEnter:r,presenceAffectsLayout:s=!0,mode:o="sync"})=>{const a=q.useContext(VA).forceRender||wW()[0],l=DO(),c=bW(n);let d=c;const f=q.useRef(new Map).current,p=q.useRef(d),m=q.useRef(new Map).current,_=q.useRef(!0);if(kA(()=>{_.current=!1,CW(c,m),p.current=d}),MW(()=>{_.current=!0,m.clear(),f.clear()}),_.current)return q.createElement(q.Fragment,null,d.map(E=>q.createElement(_w,{key:Ac(E),isPresent:!0,initial:t?void 0:!1,presenceAffectsLayout:s,mode:o},E)));d=[...d];const S=p.current.map(Ac),x=c.map(Ac),y=S.length;for(let E=0;E{if(x.indexOf(w)!==-1)return;const M=m.get(w);if(!M)return;const O=S.indexOf(w);let k=E;if(!k){const I=()=>{f.delete(w);const P=Array.from(m.keys()).filter(D=>!x.includes(D));if(P.forEach(D=>m.delete(D)),p.current=c.filter(D=>{const A=Ac(D);return A===w||P.includes(A)}),!f.size){if(l.current===!1)return;a(),i&&i()}};k=q.createElement(_w,{key:Ac(M),isPresent:!1,onExitComplete:I,custom:e,presenceAffectsLayout:s,mode:o},M),f.set(w,k)}d.splice(O,0,k)}),d=d.map(E=>{const w=E.key;return f.has(w)?E:q.createElement(_w,{key:Ac(E),isPresent:!0,presenceAffectsLayout:s,mode:o},E)}),q.createElement(q.Fragment,null,f.size?d:d.map(E=>q.cloneElement(E)))},sr={paddingX:"sm:px-16 px-6",paddingY:"sm:py-16 py-6",padding:"sm:px-16 px-6 sm:py-16 py-10",heroHeadText:"font-black text-[#373737] lg:text-[80px] sm:text-[60px] xs:text-[50px] text-[40px] lg:leading-[98px] mt-2",heroSubText:"text-[#dfd9ff] font-medium lg:text-[30px] sm:text-[26px] xs:text-[20px] text-[16px] lg:leading-[40px]",sectionHeadText:"text-black font-black md:text-[60px] sm:text-[50px] xs:text-[40px] text-[30px]",sectionSubText:"sm:text-[18px] text-[14px] text-secondary uppercase tracking-wider"},PW="/assets/web-0c6824d5.webp",RW="/assets/mobile-84df6906.webp",IW="/assets/creator-ab86683b.webp",AI=[{id:"HeroSection",title:"Home",type:"route"},{id:"AboutSection",title:"About",type:"route"},{id:"ExperienceSection",title:"Experience",type:"route"},{id:"TechSkillsSection",title:"Skills",type:"route"},{id:"ResumeSection",title:"Resume",type:"route"},{id:"ProjectsSection",title:"Projects",type:"route"},{id:"BlogsSections",title:"Blogs",type:"route"},{id:"ContactSection",title:"Contact",type:"route"},{id:"freetools",title:"Free Tools",type:"tools"}],LW=[{id:"DownloadTube",title:"DownloadTube (Youtube Downloader)",type:"video",url:"https://downloadtube-iota.vercel.app/"}],NW=[{title:"Full Stack Web Development",icon:PW},{title:"Designing",icon:IW},{title:"ML and DL Learner",icon:RW}],DW="/assets/logo-white-f51edd31.webp",kW="/assets/bars-solid-dd6e31d5.svg",OW="/assets/circle-xmark-regular-11645b29.svg",Lm=n=>({hidden:{y:-50,opacity:0},show:{y:0,opacity:1,transition:{type:"spring",duration:1.25,delay:n}}}),Ed=(n,e,t,i)=>({hidden:{x:n==="left"?100:n==="right"?-100:0,y:n==="up"?100:n==="down"?-100:0,opacity:0},show:{x:0,y:0,opacity:1,transition:{type:e,delay:t,duration:i,ease:"easeOut"}}}),UW=(n,e)=>({hidden:{},show:{transition:{staggerChildren:n,delayChildren:e||0}}}),FW=()=>{const[n,e]=q.useState(""),[t,i]=q.useState(!1),[r,s]=q.useState(!1);return B.jsx(er.nav,{className:`${sr.paddingX} w-full flex items-center py-5 fixed top-0 z-20 bg-black`,children:B.jsxs("div",{className:"w-full flex justify-between items-center max-w-7xl mx-auto",children:[B.jsxs("a",{href:"",className:"flex items-center gap-2",onClick:()=>{e(""),window.scrollTo(0,0)},children:[B.jsx("img",{src:DW,className:"w-10 h-10 object-contain",alt:"logo"}),B.jsxs("div",{className:"text-primary text-[18px] md:block lg:flex ",children:[B.jsx("p",{className:"flex",children:"Satyam Mishra  "}),B.jsx("span",{className:"sm:block hidden",children:"| Bedead"})]})]}),B.jsxs("ul",{className:"list-none hidden sm:flex flex-row md:gap-4 items-center",children:[AI.map(o=>B.jsx("li",{className:o.type=="tools"?"bg-secondary text-gray-400 hover:text-primary py-2 px-3 rounded-xl text-[18px] font-medium cursor-pointer":`${n==o.title?"text-primary":"text-gray-400"} + hover:text-primary underline-offset-8 text-[18px] font-medium cursor-pointer`,onClick:()=>{e(o.title),o.type=="tools"&&s(!r)},children:o.type=="tools"?o.title:B.jsxs("a",{href:` #${o.id}`,children:[o.title," "]})},o.id))," "]}),B.jsx(TI,{children:r&&B.jsx(er.div,{className:`${r?"flex":"hidden"} p-6 bg-primary absolute + top-60 right-40 sm:top-20 sm:right-5 mx-4 my-2 min-w-[140px] z-10 rounded-xl outline`,initial:{scale:.1,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.1,opacity:0},transition:{type:"spring",damping:10},children:B.jsxs("ul",{className:"list-none flex justify-end items-start flex-col gap-2",children:[LW.map(o=>B.jsx(er.li,{variants:Ed("right","spring",.1,.75),className:`${n==o.title?"text-black underline":"text-secondary"} font-poppins hover:underline underline-offset-8 font-medium cursor-pointer text-[16px] hover:text-secondary`,onClick:()=>{o.type=="tools"&&s(!r),e(o.title),window.open(o.url,"_blank")},children:o.type=="tools"?o.title:B.jsxs("a",{to:`#${o.id}`,children:[o.id," "]})},o.id))," "]})})}),B.jsxs("div",{className:"sm:hidden flex flex-1 justify-end items-center",children:[B.jsx("img",{src:t?OW:kW,alt:"menu",className:"w-[28px] h-[28px] object-contain cursor-pointer",onClick:()=>{i(!t),r==!0&&s(!1)}}),B.jsx(TI,{children:t&&B.jsx(er.div,{className:`${t?"flex":"hidden"} p-6 bg-gradient-to-r from-[#f6f6f6] to-white absolute + top-20 right-0 mx-4 my-2 min-w-[140px] z-10 rounded-xl outline`,initial:{scale:.1,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.1,opacity:0},transition:{type:"spring",damping:10},children:B.jsxs("ul",{className:"list-none flex justify-end items-start flex-col gap-2",children:[AI.map(o=>B.jsx("li",{className:`${n==o.title?"text-black underline":"text-secondary"} font-poppins hover:underline underline-offset-8 font-medium cursor-pointer text-[16px] hover:text-secondary`,onClick:()=>{o.type!="tools"&&i(!t),e(o.title),o.type=="tools"&&s(!r)},children:o.type=="tools"?o.title:B.jsxs("a",{href:`#${o.id}`,children:[o.title," "]})},o.id))," "]})})})]})]})})},VW=()=>B.jsxs("div",{children:[location.pathname==="/"&&B.jsx(FW,{}),B.jsx(dk,{})]});var BW=Object.defineProperty,zW=Object.defineProperties,HW=Object.getOwnPropertyDescriptors,MI=Object.getOwnPropertySymbols,GW=Object.prototype.hasOwnProperty,WW=Object.prototype.propertyIsEnumerable,CI=(n,e,t)=>e in n?BW(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,xf=(n,e)=>{for(var t in e||(e={}))GW.call(e,t)&&CI(n,t,e[t]);if(MI)for(var t of MI(e))WW.call(e,t)&&CI(n,t,e[t]);return n},Sf=(n,e)=>zW(n,HW(e)),G_=class extends q.Component{constructor(n){super(n),this.ref=v_.createRef(),this.state={style:{}};const e={reverse:!1,max:35,perspective:1e3,easing:"cubic-bezier(.03,.98,.52,.99)",scale:"1.1",speed:"1000",transition:!0,axis:null,reset:!0};this.width=null,this.height=null,this.left=null,this.top=null,this.transitionTimeout=null,this.updateCall=null,this.element=null,this.settings=Object.assign({},e,this.props.options),this.reverse=this.settings.reverse?-1:1,this.onMouseEnter=this.onMouseEnter.bind(this,this.props.onMouseEnter),this.onMouseMove=this.onMouseMove.bind(this,this.props.onMouseMove),this.onMouseLeave=this.onMouseLeave.bind(this,this.props.onMouseLeave)}componentDidMount(){this.element=this.ref.current,setTimeout(()=>{this.element.parentElement.querySelector(":hover")===this.element&&this.onMouseEnter()},0)}componentWillUnmount(){clearTimeout(this.transitionTimeout),cancelAnimationFrame(this.updateCall)}onMouseEnter(n=()=>{},e){return this.updateElementPosition(),this.setState(Object.assign({},this.state,{style:Sf(xf({},this.state.style),{willChange:"transform"})})),this.setTransition(),n(e)}reset(){window.requestAnimationFrame(()=>{this.setState(Object.assign({},this.state,{style:Sf(xf({},this.state.style),{transform:`perspective(${this.settings.perspective}px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)`})}))})}onMouseMove(n=()=>{},e){return e.persist(),this.updateCall!==null&&window.cancelAnimationFrame(this.updateCall),this.event=e,this.updateCall=requestAnimationFrame(this.update.bind(this,e)),n(e)}setTransition(){clearTimeout(this.transitionTimeout),this.setState(Object.assign({},this.state,{style:Sf(xf({},this.state.style),{transition:`${this.settings.speed}ms ${this.settings.easing}`})})),this.transitionTimeout=setTimeout(()=>{this.setState(Object.assign({},this.state,{style:Sf(xf({},this.state.style),{transition:""})}))},this.settings.speed)}onMouseLeave(n=()=>{},e){return this.setTransition(),this.settings.reset&&this.reset(),n(e)}getValues(n){const e=(n.nativeEvent.clientX-this.left)/this.width,t=(n.nativeEvent.clientY-this.top)/this.height,i=Math.min(Math.max(e,0),1),r=Math.min(Math.max(t,0),1),s=(this.reverse*(this.settings.max/2-i*this.settings.max)).toFixed(2),o=(this.reverse*(r*this.settings.max-this.settings.max/2)).toFixed(2),a=i*100,l=r*100;return{tiltX:s,tiltY:o,percentageX:a,percentageY:l}}updateElementPosition(){const n=this.element.getBoundingClientRect();this.width=this.element.offsetWidth,this.height=this.element.offsetHeight,this.left=n.left,this.top=n.top}update(n){const e=this.getValues(n);this.setState(Object.assign({},this.state,{style:Sf(xf({},this.state.style),{transform:`perspective(${this.settings.perspective}px) rotateX(${this.settings.axis==="x"?0:e.tiltY}deg) rotateY(${this.settings.axis==="y"?0:e.tiltX}deg) scale3d(${this.settings.scale}, ${this.settings.scale}, ${this.settings.scale})`})})),this.updateCall=null}render(){const n=Object.assign({},this.props.style,this.state.style);return B.jsx("div",{style:n,ref:this.ref,className:this.props.className,onMouseEnter:this.onMouseEnter,onMouseMove:this.onMouseMove,onMouseLeave:this.onMouseLeave,children:this.props.children})}};const Td=(n,e)=>function(){return B.jsxs(er.section,{variants:UW(),initial:"hidden",whileInView:"show",viewport:{once:!0,amount:0},exit:"hidden",className:`${sr.padding} max-w-7xl mx-auto relative z-0`,children:[B.jsx("span",{className:"hash-span",id:e,children:" "}),B.jsx(n,{})]})},jW=({index:n,title:e,icon:t})=>B.jsx(G_,{className:"xs:w-[250px] w-full",children:B.jsx(er.div,{variants:Ed("right","spring",.5*n,.75),className:"w-full green-pink-gradient p-[1px] rounded-[20px] shadow-[#fcd4d4] shadow-card",children:B.jsxs("div",{options:{max:45,scale:1,speed:450},className:"bg-primary rounded-[20px] py-5 px-12 min-h-[280px] flex justify-evenly items-center flex-col",children:[B.jsx("img",{src:t,alt:e,className:"w-16 h-16 object-contain"}),B.jsx("h3",{className:"text-black text-[20px] font-bold text-center",children:e})]})})}),XW=()=>B.jsxs("section",{children:[B.jsxs(er.div,{variants:Lm(0),children:[B.jsx("h2",{className:`${sr.sectionHeadText} text-center`,children:"Overview."}),B.jsxs(er.p,{variants:Ed("","",.1,1),className:`${sr.sectionSubText} text-center`,children:["Introduction? Nahh",B.jsx("br",{}),"I do this 👇"]})]}),B.jsx("div",{className:"mt-20 flex flex-wrap justify-center gap-10",children:NW.map((n,e)=>B.jsx(jW,{index:e,...n},n.title))})]}),qW=Td(XW,"AboutSection");var W_={},kO={exports:{}},$W="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",YW=$W,KW=YW;function OO(){}function UO(){}UO.resetWarningCache=OO;var QW=function(){function n(i,r,s,o,a,l){if(l!==KW){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}n.isRequired=n;function e(){return n}var t={array:n,bigint:n,bool:n,func:n,number:n,object:n,string:n,symbol:n,any:n,arrayOf:e,element:n,elementType:n,instanceOf:e,node:n,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:UO,resetWarningCache:OO};return t.PropTypes=t,t};kO.exports=QW();var FO=kO.exports,VO={exports:{}};/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/(function(n){(function(){var e={}.hasOwnProperty;function t(){for(var s="",o=0;o(typeof window=="object"&&document.documentElement.style.setProperty("--line-color",i),JW.default.createElement("div",{className:(0,ZW.default)(e,"vertical-timeline",{"vertical-timeline--animate":n,"vertical-timeline--two-columns":t==="2-columns","vertical-timeline--one-column-left":t==="1-column"||t==="1-column-left","vertical-timeline--one-column-right":t==="1-column-right"})},r));zO.propTypes={children:ka.default.oneOfType([ka.default.arrayOf(ka.default.node),ka.default.node]).isRequired,className:ka.default.string,animate:ka.default.bool,layout:ka.default.oneOf(["1-column-left","1-column","2-columns","1-column-right"]),lineColor:ka.default.string};var ej=zO;W_.default=ej;var j_={};function BE(){return BE=Object.assign||function(n){for(var e=1;e=0)&&(t[r]=n[r]);return t}var HE=new Map,ay=new WeakMap,bI=0,HO=void 0;function ij(n){HO=n}function rj(n){return n?(ay.has(n)||(bI+=1,ay.set(n,bI.toString())),ay.get(n)):"0"}function sj(n){return Object.keys(n).sort().filter(function(e){return n[e]!==void 0}).map(function(e){return e+"_"+(e==="root"?rj(n.root):n[e])}).toString()}function oj(n){var e=sj(n),t=HE.get(e);if(!t){var i=new Map,r,s=new IntersectionObserver(function(o){o.forEach(function(a){var l,c=a.isIntersecting&&r.some(function(d){return a.intersectionRatio>=d});n.trackVisibility&&typeof a.isVisible>"u"&&(a.isVisible=c),(l=i.get(a.target))==null||l.forEach(function(d){d(c,a)})})},n);r=s.thresholds||(Array.isArray(n.threshold)?n.threshold:[n.threshold||0]),t={id:e,observer:s,elements:i},HE.set(e,t)}return t}function rM(n,e,t,i){if(t===void 0&&(t={}),i===void 0&&(i=HO),typeof window.IntersectionObserver>"u"&&i!==void 0){var r=n.getBoundingClientRect();return e(i,{isIntersecting:i,target:n,intersectionRatio:typeof t.threshold=="number"?t.threshold:0,time:0,boundingClientRect:r,intersectionRect:r,rootBounds:r}),function(){}}var s=oj(t),o=s.id,a=s.observer,l=s.elements,c=l.get(n)||[];return l.has(n)||l.set(n,c),c.push(e),a.observe(n),function(){c.splice(c.indexOf(e),1),c.length===0&&(l.delete(n),a.unobserve(n)),l.size===0&&(a.disconnect(),HE.delete(o))}}var aj=["children","as","triggerOnce","threshold","root","rootMargin","onChange","skip","trackVisibility","delay","initialInView","fallbackInView"];function PI(n){return typeof n.children!="function"}var m0=function(n){tj(e,n);function e(i){var r;return r=n.call(this,i)||this,r.node=null,r._unobserveCb=null,r.handleNode=function(s){r.node&&(r.unobserve(),!s&&!r.props.triggerOnce&&!r.props.skip&&r.setState({inView:!!r.props.initialInView,entry:void 0})),r.node=s||null,r.observeNode()},r.handleChange=function(s,o){s&&r.props.triggerOnce&&r.unobserve(),PI(r.props)||r.setState({inView:s,entry:o}),r.props.onChange&&r.props.onChange(s,o)},r.state={inView:!!i.initialInView,entry:void 0},r}var t=e.prototype;return t.componentDidUpdate=function(r){(r.rootMargin!==this.props.rootMargin||r.root!==this.props.root||r.threshold!==this.props.threshold||r.skip!==this.props.skip||r.trackVisibility!==this.props.trackVisibility||r.delay!==this.props.delay)&&(this.unobserve(),this.observeNode())},t.componentWillUnmount=function(){this.unobserve(),this.node=null},t.observeNode=function(){if(!(!this.node||this.props.skip)){var r=this.props,s=r.threshold,o=r.root,a=r.rootMargin,l=r.trackVisibility,c=r.delay,d=r.fallbackInView;this._unobserveCb=rM(this.node,this.handleChange,{threshold:s,root:o,rootMargin:a,trackVisibility:l,delay:c},d)}},t.unobserve=function(){this._unobserveCb&&(this._unobserveCb(),this._unobserveCb=null)},t.render=function(){if(!PI(this.props)){var r=this.state,s=r.inView,o=r.entry;return this.props.children({inView:s,entry:o,ref:this.handleNode})}var a=this.props,l=a.children,c=a.as,d=nj(a,aj);return q.createElement(c||"div",BE({ref:this.handleNode},d),l)},e}(q.Component);m0.displayName="InView";m0.defaultProps={threshold:0,triggerOnce:!1,initialInView:!1};function lj(n){var e=n===void 0?{}:n,t=e.threshold,i=e.delay,r=e.trackVisibility,s=e.rootMargin,o=e.root,a=e.triggerOnce,l=e.skip,c=e.initialInView,d=e.fallbackInView,f=q.useRef(),p=q.useState({inView:!!c}),m=p[0],_=p[1],S=q.useCallback(function(y){f.current!==void 0&&(f.current(),f.current=void 0),!l&&y&&(f.current=rM(y,function(E,w){_({inView:E,entry:w}),w.isIntersecting&&a&&f.current&&(f.current(),f.current=void 0)},{root:o,rootMargin:s,threshold:t,trackVisibility:r,delay:i},d))},[Array.isArray(t)?t.toString():t,o,s,a,l,r,d,i]);q.useEffect(function(){!f.current&&m.entry&&!a&&!l&&_({inView:!!c})});var x=[S,m.inView,m.entry];return x.ref=x[0],x.inView=x[1],x.entry=x[2],x}const cj=Object.freeze(Object.defineProperty({__proto__:null,InView:m0,default:m0,defaultFallbackInView:ij,observe:rM,useInView:lj},Symbol.toStringTag,{value:"Module"})),uj=UB(cj);j_.__esModule=!0;j_.default=void 0;var Oa=sM(q),Ln=sM(FO),ly=sM(BO),hj=uj;function sM(n){return n&&n.__esModule?n:{default:n}}const GO=({children:n="",className:e="",contentArrowStyle:t=null,contentStyle:i=null,date:r="",dateClassName:s="",icon:o=null,iconClassName:a="",iconOnClick:l=null,onTimelineElementClick:c=null,iconStyle:d=null,id:f="",position:p="",style:m=null,textClassName:_="",intersectionObserverProps:S={rootMargin:"0px 0px -40px 0px",triggerOnce:!0},visible:x=!1})=>Oa.default.createElement(hj.InView,S,({inView:y,ref:E})=>Oa.default.createElement("div",{ref:E,id:f,className:(0,ly.default)(e,"vertical-timeline-element",{"vertical-timeline-element--left":p==="left","vertical-timeline-element--right":p==="right","vertical-timeline-element--no-children":n===""}),style:m},Oa.default.createElement(Oa.default.Fragment,null,Oa.default.createElement("span",{style:d,onClick:l,className:(0,ly.default)(a,"vertical-timeline-element-icon",{"bounce-in":y||x,"is-hidden":!(y||x)})},o),Oa.default.createElement("div",{style:i,onClick:c,className:(0,ly.default)(_,"vertical-timeline-element-content",{"bounce-in":y||x,"is-hidden":!(y||x)})},Oa.default.createElement("div",{style:t,className:"vertical-timeline-element-content-arrow"}),n,Oa.default.createElement("span",{className:(0,ly.default)(s,"vertical-timeline-element-date")},r)))));GO.propTypes={children:Ln.default.oneOfType([Ln.default.arrayOf(Ln.default.node),Ln.default.node]),className:Ln.default.string,contentArrowStyle:Ln.default.shape({}),contentStyle:Ln.default.shape({}),date:Ln.default.node,dateClassName:Ln.default.string,icon:Ln.default.element,iconClassName:Ln.default.string,iconStyle:Ln.default.shape({}),iconOnClick:Ln.default.func,onTimelineElementClick:Ln.default.func,id:Ln.default.string,position:Ln.default.string,style:Ln.default.shape({}),textClassName:Ln.default.string,visible:Ln.default.bool,intersectionObserverProps:Ln.default.shape({root:Ln.default.object,rootMargin:Ln.default.string,threshold:Ln.default.number,triggerOnce:Ln.default.bool})};var dj=GO;j_.default=dj;var WO={VerticalTimeline:W_.default,VerticalTimelineElement:j_.default};/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *//** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const jO=function(n){const e=[];let t=0;for(let i=0;i>6|192,e[t++]=r&63|128):(r&64512)===55296&&i+1>18|240,e[t++]=r>>12&63|128,e[t++]=r>>6&63|128,e[t++]=r&63|128):(e[t++]=r>>12|224,e[t++]=r>>6&63|128,e[t++]=r&63|128)}return e},fj=function(n){const e=[];let t=0,i=0;for(;t191&&r<224){const s=n[t++];e[i++]=String.fromCharCode((r&31)<<6|s&63)}else if(r>239&&r<365){const s=n[t++],o=n[t++],a=n[t++],l=((r&7)<<18|(s&63)<<12|(o&63)<<6|a&63)-65536;e[i++]=String.fromCharCode(55296+(l>>10)),e[i++]=String.fromCharCode(56320+(l&1023))}else{const s=n[t++],o=n[t++];e[i++]=String.fromCharCode((r&15)<<12|(s&63)<<6|o&63)}}return e.join("")},XO={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:typeof atob=="function",encodeByteArray(n,e){if(!Array.isArray(n))throw Error("encodeByteArray takes an array as a parameter");this.init_();const t=e?this.byteToCharMapWebSafe_:this.byteToCharMap_,i=[];for(let r=0;r>2,f=(s&3)<<4|a>>4;let p=(a&15)<<2|c>>6,m=c&63;l||(m=64,o||(p=64)),i.push(t[d],t[f],t[p],t[m])}return i.join("")},encodeString(n,e){return this.HAS_NATIVE_SUPPORT&&!e?btoa(n):this.encodeByteArray(jO(n),e)},decodeString(n,e){return this.HAS_NATIVE_SUPPORT&&!e?atob(n):fj(this.decodeStringToByteArray(n,e))},decodeStringToByteArray(n,e){this.init_();const t=e?this.charToByteMapWebSafe_:this.charToByteMap_,i=[];for(let r=0;r>4;if(i.push(p),c!==64){const m=a<<4&240|c>>2;if(i.push(m),f!==64){const _=c<<6&192|f;i.push(_)}}}return i},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let n=0;n=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(n)]=n,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(n)]=n)}}};class pj extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const mj=function(n){const e=jO(n);return XO.encodeByteArray(e,!0)},g0=function(n){return mj(n).replace(/\./g,"")},qO=function(n){try{return XO.decodeString(n,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function gj(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("Unable to locate global object.")}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const yj=()=>gj().__FIREBASE_DEFAULTS__,vj=()=>{if(typeof process>"u"||typeof process.env>"u")return;const n={}.__FIREBASE_DEFAULTS__;if(n)return JSON.parse(n)},_j=()=>{if(typeof document>"u")return;let n;try{n=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch{return}const e=n&&qO(n[1]);return e&&JSON.parse(e)},X_=()=>{try{return yj()||vj()||_j()}catch(n){console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${n}`);return}},$O=n=>{var e,t;return(t=(e=X_())===null||e===void 0?void 0:e.emulatorHosts)===null||t===void 0?void 0:t[n]},xj=n=>{const e=$O(n);if(!e)return;const t=e.lastIndexOf(":");if(t<=0||t+1===e.length)throw new Error(`Invalid host ${e} with no separate hostname and port!`);const i=parseInt(e.substring(t+1),10);return e[0]==="["?[e.substring(1,t-1),i]:[e.substring(0,t),i]},YO=()=>{var n;return(n=X_())===null||n===void 0?void 0:n.config},KO=n=>{var e;return(e=X_())===null||e===void 0?void 0:e[`_${n}`]};/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Sj{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}wrapCallback(e){return(t,i)=>{t?this.reject(t):this.resolve(i),typeof e=="function"&&(this.promise.catch(()=>{}),e.length===1?e(t):e(t,i))}}}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function wj(n,e){if(n.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');const t={alg:"none",type:"JWT"},i=e||"demo-project",r=n.iat||0,s=n.sub||n.user_id;if(!s)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");const o=Object.assign({iss:`https://securetoken.google.com/${i}`,aud:i,iat:r,exp:r+3600,auth_time:r,sub:s,user_id:s,firebase:{sign_in_provider:"custom",identities:{}}},n),a="";return[g0(JSON.stringify(t)),g0(JSON.stringify(o)),a].join(".")}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function or(){return typeof navigator<"u"&&typeof navigator.userAgent=="string"?navigator.userAgent:""}function Ej(){return typeof window<"u"&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(or())}function Tj(){var n;const e=(n=X_())===null||n===void 0?void 0:n.forceEnvironment;if(e==="node")return!0;if(e==="browser")return!1;try{return Object.prototype.toString.call(global.process)==="[object process]"}catch{return!1}}function Aj(){return typeof navigator<"u"&&navigator.userAgent==="Cloudflare-Workers"}function Mj(){const n=typeof chrome=="object"?chrome.runtime:typeof browser=="object"?browser.runtime:void 0;return typeof n=="object"&&n.id!==void 0}function Cj(){return typeof navigator=="object"&&navigator.product==="ReactNative"}function bj(){const n=or();return n.indexOf("MSIE ")>=0||n.indexOf("Trident/")>=0}function Pj(){return!Tj()&&!!navigator.userAgent&&navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome")}function Rj(){try{return typeof indexedDB=="object"}catch{return!1}}function Ij(){return new Promise((n,e)=>{try{let t=!0;const i="validate-browser-context-for-indexeddb-analytics-module",r=self.indexedDB.open(i);r.onsuccess=()=>{r.result.close(),t||self.indexedDB.deleteDatabase(i),n(!0)},r.onupgradeneeded=()=>{t=!1},r.onerror=()=>{var s;e(((s=r.error)===null||s===void 0?void 0:s.message)||"")}}catch(t){e(t)}})}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Lj="FirebaseError";class _a extends Error{constructor(e,t,i){super(t),this.code=e,this.customData=i,this.name=Lj,Object.setPrototypeOf(this,_a.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,Nm.prototype.create)}}class Nm{constructor(e,t,i){this.service=e,this.serviceName=t,this.errors=i}create(e,...t){const i=t[0]||{},r=`${this.service}/${e}`,s=this.errors[e],o=s?Nj(s,i):"Error",a=`${this.serviceName}: ${o} (${r}).`;return new _a(r,a,i)}}function Nj(n,e){return n.replace(Dj,(t,i)=>{const r=e[i];return r!=null?String(r):`<${i}?>`})}const Dj=/\{\$([^}]+)}/g;function kj(n){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e))return!1;return!0}function y0(n,e){if(n===e)return!0;const t=Object.keys(n),i=Object.keys(e);for(const r of t){if(!i.includes(r))return!1;const s=n[r],o=e[r];if(RI(s)&&RI(o)){if(!y0(s,o))return!1}else if(s!==o)return!1}for(const r of i)if(!t.includes(r))return!1;return!0}function RI(n){return n!==null&&typeof n=="object"}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Dm(n){const e=[];for(const[t,i]of Object.entries(n))Array.isArray(i)?i.forEach(r=>{e.push(encodeURIComponent(t)+"="+encodeURIComponent(r))}):e.push(encodeURIComponent(t)+"="+encodeURIComponent(i));return e.length?"&"+e.join("&"):""}function Wf(n){const e={};return n.replace(/^\?/,"").split("&").forEach(i=>{if(i){const[r,s]=i.split("=");e[decodeURIComponent(r)]=decodeURIComponent(s)}}),e}function jf(n){const e=n.indexOf("?");if(!e)return"";const t=n.indexOf("#",e);return n.substring(e,t>0?t:void 0)}function Oj(n,e){const t=new Uj(n,e);return t.subscribe.bind(t)}class Uj{constructor(e,t){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=t,this.task.then(()=>{e(this)}).catch(i=>{this.error(i)})}next(e){this.forEachObserver(t=>{t.next(e)})}error(e){this.forEachObserver(t=>{t.error(e)}),this.close(e)}complete(){this.forEachObserver(e=>{e.complete()}),this.close()}subscribe(e,t,i){let r;if(e===void 0&&t===void 0&&i===void 0)throw new Error("Missing Observer.");Fj(e,["next","error","complete"])?r=e:r={next:e,error:t,complete:i},r.next===void 0&&(r.next=xw),r.error===void 0&&(r.error=xw),r.complete===void 0&&(r.complete=xw);const s=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(()=>{try{this.finalError?r.error(this.finalError):r.complete()}catch{}}),this.observers.push(r),s}unsubscribeOne(e){this.observers===void 0||this.observers[e]===void 0||(delete this.observers[e],this.observerCount-=1,this.observerCount===0&&this.onNoObservers!==void 0&&this.onNoObservers(this))}forEachObserver(e){if(!this.finalized)for(let t=0;t{if(this.observers!==void 0&&this.observers[e]!==void 0)try{t(this.observers[e])}catch(i){typeof console<"u"&&console.error&&console.error(i)}})}close(e){this.finalized||(this.finalized=!0,e!==void 0&&(this.finalError=e),this.task.then(()=>{this.observers=void 0,this.onNoObservers=void 0}))}}function Fj(n,e){if(typeof n!="object"||n===null)return!1;for(const t of e)if(t in n&&typeof n[t]=="function")return!0;return!1}function xw(){}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Ul(n){return n&&n._delegate?n._delegate:n}class iu{constructor(e,t,i){this.name=e,this.instanceFactory=t,this.type=i,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Mc="[DEFAULT]";/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */let Vj=class{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const i=new Sj;if(this.instancesDeferred.set(t,i),this.isInitialized(t)||this.shouldAutoInitialize())try{const r=this.getOrInitializeService({instanceIdentifier:t});r&&i.resolve(r)}catch{}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t;const i=this.normalizeInstanceIdentifier(e==null?void 0:e.identifier),r=(t=e==null?void 0:e.optional)!==null&&t!==void 0?t:!1;if(this.isInitialized(i)||this.shouldAutoInitialize())try{return this.getOrInitializeService({instanceIdentifier:i})}catch(s){if(r)return null;throw s}else{if(r)return null;throw Error(`Service ${this.name} is not available`)}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,!!this.shouldAutoInitialize()){if(zj(e))try{this.getOrInitializeService({instanceIdentifier:Mc})}catch{}for(const[t,i]of this.instancesDeferred.entries()){const r=this.normalizeInstanceIdentifier(t);try{const s=this.getOrInitializeService({instanceIdentifier:r});i.resolve(s)}catch{}}}}clearInstance(e=Mc){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter(t=>"INTERNAL"in t).map(t=>t.INTERNAL.delete()),...e.filter(t=>"_delete"in t).map(t=>t._delete())])}isComponentSet(){return this.component!=null}isInitialized(e=Mc){return this.instances.has(e)}getOptions(e=Mc){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:t={}}=e,i=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(i))throw Error(`${this.name}(${i}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const r=this.getOrInitializeService({instanceIdentifier:i,options:t});for(const[s,o]of this.instancesDeferred.entries()){const a=this.normalizeInstanceIdentifier(s);i===a&&o.resolve(r)}return r}onInit(e,t){var i;const r=this.normalizeInstanceIdentifier(t),s=(i=this.onInitCallbacks.get(r))!==null&&i!==void 0?i:new Set;s.add(e),this.onInitCallbacks.set(r,s);const o=this.instances.get(r);return o&&e(o,r),()=>{s.delete(e)}}invokeOnInitCallbacks(e,t){const i=this.onInitCallbacks.get(t);if(i)for(const r of i)try{r(e,t)}catch{}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let i=this.instances.get(e);if(!i&&this.component&&(i=this.component.instanceFactory(this.container,{instanceIdentifier:Bj(e),options:t}),this.instances.set(e,i),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(i,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,i)}catch{}return i||null}normalizeInstanceIdentifier(e=Mc){return this.component?this.component.multipleInstances?e:Mc:e}shouldAutoInitialize(){return!!this.component&&this.component.instantiationMode!=="EXPLICIT"}};function Bj(n){return n===Mc?void 0:n}function zj(n){return n.instantiationMode==="EAGER"}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Hj{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const t=new Vj(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */var Qt;(function(n){n[n.DEBUG=0]="DEBUG",n[n.VERBOSE=1]="VERBOSE",n[n.INFO=2]="INFO",n[n.WARN=3]="WARN",n[n.ERROR=4]="ERROR",n[n.SILENT=5]="SILENT"})(Qt||(Qt={}));const Gj={debug:Qt.DEBUG,verbose:Qt.VERBOSE,info:Qt.INFO,warn:Qt.WARN,error:Qt.ERROR,silent:Qt.SILENT},Wj=Qt.INFO,jj={[Qt.DEBUG]:"log",[Qt.VERBOSE]:"log",[Qt.INFO]:"info",[Qt.WARN]:"warn",[Qt.ERROR]:"error"},Xj=(n,e,...t)=>{if(ee.some(t=>n instanceof t);let II,LI;function $j(){return II||(II=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Yj(){return LI||(LI=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const QO=new WeakMap,GE=new WeakMap,JO=new WeakMap,Sw=new WeakMap,aM=new WeakMap;function Kj(n){const e=new Promise((t,i)=>{const r=()=>{n.removeEventListener("success",s),n.removeEventListener("error",o)},s=()=>{t(_l(n.result)),r()},o=()=>{i(n.error),r()};n.addEventListener("success",s),n.addEventListener("error",o)});return e.then(t=>{t instanceof IDBCursor&&QO.set(t,n)}).catch(()=>{}),aM.set(e,n),e}function Qj(n){if(GE.has(n))return;const e=new Promise((t,i)=>{const r=()=>{n.removeEventListener("complete",s),n.removeEventListener("error",o),n.removeEventListener("abort",o)},s=()=>{t(),r()},o=()=>{i(n.error||new DOMException("AbortError","AbortError")),r()};n.addEventListener("complete",s),n.addEventListener("error",o),n.addEventListener("abort",o)});GE.set(n,e)}let WE={get(n,e,t){if(n instanceof IDBTransaction){if(e==="done")return GE.get(n);if(e==="objectStoreNames")return n.objectStoreNames||JO.get(n);if(e==="store")return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return _l(n[e])},set(n,e,t){return n[e]=t,!0},has(n,e){return n instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in n}};function Jj(n){WE=n(WE)}function Zj(n){return n===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...t){const i=n.call(ww(this),e,...t);return JO.set(i,e.sort?e.sort():[e]),_l(i)}:Yj().includes(n)?function(...e){return n.apply(ww(this),e),_l(QO.get(this))}:function(...e){return _l(n.apply(ww(this),e))}}function e7(n){return typeof n=="function"?Zj(n):(n instanceof IDBTransaction&&Qj(n),qj(n,$j())?new Proxy(n,WE):n)}function _l(n){if(n instanceof IDBRequest)return Kj(n);if(Sw.has(n))return Sw.get(n);const e=e7(n);return e!==n&&(Sw.set(n,e),aM.set(e,n)),e}const ww=n=>aM.get(n);function t7(n,e,{blocked:t,upgrade:i,blocking:r,terminated:s}={}){const o=indexedDB.open(n,e),a=_l(o);return i&&o.addEventListener("upgradeneeded",l=>{i(_l(o.result),l.oldVersion,l.newVersion,_l(o.transaction),l)}),t&&o.addEventListener("blocked",l=>t(l.oldVersion,l.newVersion,l)),a.then(l=>{s&&l.addEventListener("close",()=>s()),r&&l.addEventListener("versionchange",c=>r(c.oldVersion,c.newVersion,c))}).catch(()=>{}),a}const n7=["get","getKey","getAll","getAllKeys","count"],i7=["put","add","delete","clear"],Ew=new Map;function NI(n,e){if(!(n instanceof IDBDatabase&&!(e in n)&&typeof e=="string"))return;if(Ew.get(e))return Ew.get(e);const t=e.replace(/FromIndex$/,""),i=e!==t,r=i7.includes(t);if(!(t in(i?IDBIndex:IDBObjectStore).prototype)||!(r||n7.includes(t)))return;const s=async function(o,...a){const l=this.transaction(o,r?"readwrite":"readonly");let c=l.store;return i&&(c=c.index(a.shift())),(await Promise.all([c[t](...a),r&&l.done]))[0]};return Ew.set(e,s),s}Jj(n=>({...n,get:(e,t,i)=>NI(e,t)||n.get(e,t,i),has:(e,t)=>!!NI(e,t)||n.has(e,t)}));/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class r7{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map(t=>{if(s7(t)){const i=t.getImmediate();return`${i.library}/${i.version}`}else return null}).filter(t=>t).join(" ")}}function s7(n){const e=n.getComponent();return(e==null?void 0:e.type)==="VERSION"}const jE="@firebase/app",DI="0.10.13";/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const ua=new oM("@firebase/app"),o7="@firebase/app-compat",a7="@firebase/analytics-compat",l7="@firebase/analytics",c7="@firebase/app-check-compat",u7="@firebase/app-check",h7="@firebase/auth",d7="@firebase/auth-compat",f7="@firebase/database",p7="@firebase/data-connect",m7="@firebase/database-compat",g7="@firebase/functions",y7="@firebase/functions-compat",v7="@firebase/installations",_7="@firebase/installations-compat",x7="@firebase/messaging",S7="@firebase/messaging-compat",w7="@firebase/performance",E7="@firebase/performance-compat",T7="@firebase/remote-config",A7="@firebase/remote-config-compat",M7="@firebase/storage",C7="@firebase/storage-compat",b7="@firebase/firestore",P7="@firebase/vertexai-preview",R7="@firebase/firestore-compat",I7="firebase",L7="10.14.1";/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const XE="[DEFAULT]",N7={[jE]:"fire-core",[o7]:"fire-core-compat",[l7]:"fire-analytics",[a7]:"fire-analytics-compat",[u7]:"fire-app-check",[c7]:"fire-app-check-compat",[h7]:"fire-auth",[d7]:"fire-auth-compat",[f7]:"fire-rtdb",[p7]:"fire-data-connect",[m7]:"fire-rtdb-compat",[g7]:"fire-fn",[y7]:"fire-fn-compat",[v7]:"fire-iid",[_7]:"fire-iid-compat",[x7]:"fire-fcm",[S7]:"fire-fcm-compat",[w7]:"fire-perf",[E7]:"fire-perf-compat",[T7]:"fire-rc",[A7]:"fire-rc-compat",[M7]:"fire-gcs",[C7]:"fire-gcs-compat",[b7]:"fire-fst",[R7]:"fire-fst-compat",[P7]:"fire-vertex","fire-js":"fire-js",[I7]:"fire-js-all"};/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const v0=new Map,D7=new Map,qE=new Map;function kI(n,e){try{n.container.addComponent(e)}catch(t){ua.debug(`Component ${e.name} failed to register with FirebaseApp ${n.name}`,t)}}function sd(n){const e=n.name;if(qE.has(e))return ua.debug(`There were multiple attempts to register component ${e}.`),!1;qE.set(e,n);for(const t of v0.values())kI(t,n);for(const t of D7.values())kI(t,n);return!0}function lM(n,e){const t=n.container.getProvider("heartbeat").getImmediate({optional:!0});return t&&t.triggerHeartbeat(),n.container.getProvider(e)}function Ko(n){return n.settings!==void 0}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const k7={"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.","finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.","invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."},xl=new Nm("app","Firebase",k7);/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class O7{constructor(e,t,i){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=i,this.container.addComponent(new iu("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw xl.create("app-deleted",{appName:this._name})}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Ad=L7;function ZO(n,e={}){let t=n;typeof e!="object"&&(e={name:e});const i=Object.assign({name:XE,automaticDataCollectionEnabled:!1},e),r=i.name;if(typeof r!="string"||!r)throw xl.create("bad-app-name",{appName:String(r)});if(t||(t=YO()),!t)throw xl.create("no-options");const s=v0.get(r);if(s){if(y0(t,s.options)&&y0(i,s.config))return s;throw xl.create("duplicate-app",{appName:r})}const o=new Hj(r);for(const l of qE.values())o.addComponent(l);const a=new O7(t,i,o);return v0.set(r,a),a}function eU(n=XE){const e=v0.get(n);if(!e&&n===XE&&YO())return ZO();if(!e)throw xl.create("no-app",{appName:n});return e}function Sl(n,e,t){var i;let r=(i=N7[n])!==null&&i!==void 0?i:n;t&&(r+=`-${t}`);const s=r.match(/\s|\//),o=e.match(/\s|\//);if(s||o){const a=[`Unable to register library "${r}" with version "${e}":`];s&&a.push(`library name "${r}" contains illegal characters (whitespace or "/")`),s&&o&&a.push("and"),o&&a.push(`version name "${e}" contains illegal characters (whitespace or "/")`),ua.warn(a.join(" "));return}sd(new iu(`${r}-version`,()=>({library:r,version:e}),"VERSION"))}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const U7="firebase-heartbeat-database",F7=1,qp="firebase-heartbeat-store";let Tw=null;function tU(){return Tw||(Tw=t7(U7,F7,{upgrade:(n,e)=>{switch(e){case 0:try{n.createObjectStore(qp)}catch(t){console.warn(t)}}}}).catch(n=>{throw xl.create("idb-open",{originalErrorMessage:n.message})})),Tw}async function V7(n){try{const t=(await tU()).transaction(qp),i=await t.objectStore(qp).get(nU(n));return await t.done,i}catch(e){if(e instanceof _a)ua.warn(e.message);else{const t=xl.create("idb-get",{originalErrorMessage:e==null?void 0:e.message});ua.warn(t.message)}}}async function OI(n,e){try{const i=(await tU()).transaction(qp,"readwrite");await i.objectStore(qp).put(e,nU(n)),await i.done}catch(t){if(t instanceof _a)ua.warn(t.message);else{const i=xl.create("idb-set",{originalErrorMessage:t==null?void 0:t.message});ua.warn(i.message)}}}function nU(n){return`${n.name}!${n.options.appId}`}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const B7=1024,z7=30*24*60*60*1e3;class H7{constructor(e){this.container=e,this._heartbeatsCache=null;const t=this.container.getProvider("app").getImmediate();this._storage=new W7(t),this._heartbeatsCachePromise=this._storage.read().then(i=>(this._heartbeatsCache=i,i))}async triggerHeartbeat(){var e,t;try{const r=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),s=UI();return((e=this._heartbeatsCache)===null||e===void 0?void 0:e.heartbeats)==null&&(this._heartbeatsCache=await this._heartbeatsCachePromise,((t=this._heartbeatsCache)===null||t===void 0?void 0:t.heartbeats)==null)||this._heartbeatsCache.lastSentHeartbeatDate===s||this._heartbeatsCache.heartbeats.some(o=>o.date===s)?void 0:(this._heartbeatsCache.heartbeats.push({date:s,agent:r}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(o=>{const a=new Date(o.date).valueOf();return Date.now()-a<=z7}),this._storage.overwrite(this._heartbeatsCache))}catch(i){ua.warn(i)}}async getHeartbeatsHeader(){var e;try{if(this._heartbeatsCache===null&&await this._heartbeatsCachePromise,((e=this._heartbeatsCache)===null||e===void 0?void 0:e.heartbeats)==null||this._heartbeatsCache.heartbeats.length===0)return"";const t=UI(),{heartbeatsToSend:i,unsentEntries:r}=G7(this._heartbeatsCache.heartbeats),s=g0(JSON.stringify({version:2,heartbeats:i}));return this._heartbeatsCache.lastSentHeartbeatDate=t,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),s}catch(t){return ua.warn(t),""}}}function UI(){return new Date().toISOString().substring(0,10)}function G7(n,e=B7){const t=[];let i=n.slice();for(const r of n){const s=t.find(o=>o.agent===r.agent);if(s){if(s.dates.push(r.date),FI(t)>e){s.dates.pop();break}}else if(t.push({agent:r.agent,dates:[r.date]}),FI(t)>e){t.pop();break}i=i.slice(1)}return{heartbeatsToSend:t,unsentEntries:i}}class W7{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return Rj()?Ij().then(()=>!0).catch(()=>!1):!1}async read(){if(await this._canUseIndexedDBPromise){const t=await V7(this.app);return t!=null&&t.heartbeats?t:{heartbeats:[]}}else return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){const r=await this.read();return OI(this.app,{lastSentHeartbeatDate:(t=e.lastSentHeartbeatDate)!==null&&t!==void 0?t:r.lastSentHeartbeatDate,heartbeats:e.heartbeats})}else return}async add(e){var t;if(await this._canUseIndexedDBPromise){const r=await this.read();return OI(this.app,{lastSentHeartbeatDate:(t=e.lastSentHeartbeatDate)!==null&&t!==void 0?t:r.lastSentHeartbeatDate,heartbeats:[...r.heartbeats,...e.heartbeats]})}else return}}function FI(n){return g0(JSON.stringify({version:2,heartbeats:n})).length}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function j7(n){sd(new iu("platform-logger",e=>new r7(e),"PRIVATE")),sd(new iu("heartbeat",e=>new H7(e),"PRIVATE")),Sl(jE,DI,n),Sl(jE,DI,"esm2017"),Sl("fire-js","")}j7("");var VI=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};/** @license +Copyright The Closure Library Authors. +SPDX-License-Identifier: Apache-2.0 +*/var Wc,iU;(function(){var n;/** @license + + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 +*/function e(I,P){function D(){}D.prototype=P.prototype,I.D=P.prototype,I.prototype=new D,I.prototype.constructor=I,I.C=function(A,R,V){for(var U=Array(arguments.length-2),se=2;seR;++R)A[R]=P.charCodeAt(D++)|P.charCodeAt(D++)<<8|P.charCodeAt(D++)<<16|P.charCodeAt(D++)<<24;else for(R=0;16>R;++R)A[R]=P[D++]|P[D++]<<8|P[D++]<<16|P[D++]<<24;P=I.g[0],D=I.g[1],R=I.g[2];var V=I.g[3],U=P+(V^D&(R^V))+A[0]+3614090360&4294967295;P=D+(U<<7&4294967295|U>>>25),U=V+(R^P&(D^R))+A[1]+3905402710&4294967295,V=P+(U<<12&4294967295|U>>>20),U=R+(D^V&(P^D))+A[2]+606105819&4294967295,R=V+(U<<17&4294967295|U>>>15),U=D+(P^R&(V^P))+A[3]+3250441966&4294967295,D=R+(U<<22&4294967295|U>>>10),U=P+(V^D&(R^V))+A[4]+4118548399&4294967295,P=D+(U<<7&4294967295|U>>>25),U=V+(R^P&(D^R))+A[5]+1200080426&4294967295,V=P+(U<<12&4294967295|U>>>20),U=R+(D^V&(P^D))+A[6]+2821735955&4294967295,R=V+(U<<17&4294967295|U>>>15),U=D+(P^R&(V^P))+A[7]+4249261313&4294967295,D=R+(U<<22&4294967295|U>>>10),U=P+(V^D&(R^V))+A[8]+1770035416&4294967295,P=D+(U<<7&4294967295|U>>>25),U=V+(R^P&(D^R))+A[9]+2336552879&4294967295,V=P+(U<<12&4294967295|U>>>20),U=R+(D^V&(P^D))+A[10]+4294925233&4294967295,R=V+(U<<17&4294967295|U>>>15),U=D+(P^R&(V^P))+A[11]+2304563134&4294967295,D=R+(U<<22&4294967295|U>>>10),U=P+(V^D&(R^V))+A[12]+1804603682&4294967295,P=D+(U<<7&4294967295|U>>>25),U=V+(R^P&(D^R))+A[13]+4254626195&4294967295,V=P+(U<<12&4294967295|U>>>20),U=R+(D^V&(P^D))+A[14]+2792965006&4294967295,R=V+(U<<17&4294967295|U>>>15),U=D+(P^R&(V^P))+A[15]+1236535329&4294967295,D=R+(U<<22&4294967295|U>>>10),U=P+(R^V&(D^R))+A[1]+4129170786&4294967295,P=D+(U<<5&4294967295|U>>>27),U=V+(D^R&(P^D))+A[6]+3225465664&4294967295,V=P+(U<<9&4294967295|U>>>23),U=R+(P^D&(V^P))+A[11]+643717713&4294967295,R=V+(U<<14&4294967295|U>>>18),U=D+(V^P&(R^V))+A[0]+3921069994&4294967295,D=R+(U<<20&4294967295|U>>>12),U=P+(R^V&(D^R))+A[5]+3593408605&4294967295,P=D+(U<<5&4294967295|U>>>27),U=V+(D^R&(P^D))+A[10]+38016083&4294967295,V=P+(U<<9&4294967295|U>>>23),U=R+(P^D&(V^P))+A[15]+3634488961&4294967295,R=V+(U<<14&4294967295|U>>>18),U=D+(V^P&(R^V))+A[4]+3889429448&4294967295,D=R+(U<<20&4294967295|U>>>12),U=P+(R^V&(D^R))+A[9]+568446438&4294967295,P=D+(U<<5&4294967295|U>>>27),U=V+(D^R&(P^D))+A[14]+3275163606&4294967295,V=P+(U<<9&4294967295|U>>>23),U=R+(P^D&(V^P))+A[3]+4107603335&4294967295,R=V+(U<<14&4294967295|U>>>18),U=D+(V^P&(R^V))+A[8]+1163531501&4294967295,D=R+(U<<20&4294967295|U>>>12),U=P+(R^V&(D^R))+A[13]+2850285829&4294967295,P=D+(U<<5&4294967295|U>>>27),U=V+(D^R&(P^D))+A[2]+4243563512&4294967295,V=P+(U<<9&4294967295|U>>>23),U=R+(P^D&(V^P))+A[7]+1735328473&4294967295,R=V+(U<<14&4294967295|U>>>18),U=D+(V^P&(R^V))+A[12]+2368359562&4294967295,D=R+(U<<20&4294967295|U>>>12),U=P+(D^R^V)+A[5]+4294588738&4294967295,P=D+(U<<4&4294967295|U>>>28),U=V+(P^D^R)+A[8]+2272392833&4294967295,V=P+(U<<11&4294967295|U>>>21),U=R+(V^P^D)+A[11]+1839030562&4294967295,R=V+(U<<16&4294967295|U>>>16),U=D+(R^V^P)+A[14]+4259657740&4294967295,D=R+(U<<23&4294967295|U>>>9),U=P+(D^R^V)+A[1]+2763975236&4294967295,P=D+(U<<4&4294967295|U>>>28),U=V+(P^D^R)+A[4]+1272893353&4294967295,V=P+(U<<11&4294967295|U>>>21),U=R+(V^P^D)+A[7]+4139469664&4294967295,R=V+(U<<16&4294967295|U>>>16),U=D+(R^V^P)+A[10]+3200236656&4294967295,D=R+(U<<23&4294967295|U>>>9),U=P+(D^R^V)+A[13]+681279174&4294967295,P=D+(U<<4&4294967295|U>>>28),U=V+(P^D^R)+A[0]+3936430074&4294967295,V=P+(U<<11&4294967295|U>>>21),U=R+(V^P^D)+A[3]+3572445317&4294967295,R=V+(U<<16&4294967295|U>>>16),U=D+(R^V^P)+A[6]+76029189&4294967295,D=R+(U<<23&4294967295|U>>>9),U=P+(D^R^V)+A[9]+3654602809&4294967295,P=D+(U<<4&4294967295|U>>>28),U=V+(P^D^R)+A[12]+3873151461&4294967295,V=P+(U<<11&4294967295|U>>>21),U=R+(V^P^D)+A[15]+530742520&4294967295,R=V+(U<<16&4294967295|U>>>16),U=D+(R^V^P)+A[2]+3299628645&4294967295,D=R+(U<<23&4294967295|U>>>9),U=P+(R^(D|~V))+A[0]+4096336452&4294967295,P=D+(U<<6&4294967295|U>>>26),U=V+(D^(P|~R))+A[7]+1126891415&4294967295,V=P+(U<<10&4294967295|U>>>22),U=R+(P^(V|~D))+A[14]+2878612391&4294967295,R=V+(U<<15&4294967295|U>>>17),U=D+(V^(R|~P))+A[5]+4237533241&4294967295,D=R+(U<<21&4294967295|U>>>11),U=P+(R^(D|~V))+A[12]+1700485571&4294967295,P=D+(U<<6&4294967295|U>>>26),U=V+(D^(P|~R))+A[3]+2399980690&4294967295,V=P+(U<<10&4294967295|U>>>22),U=R+(P^(V|~D))+A[10]+4293915773&4294967295,R=V+(U<<15&4294967295|U>>>17),U=D+(V^(R|~P))+A[1]+2240044497&4294967295,D=R+(U<<21&4294967295|U>>>11),U=P+(R^(D|~V))+A[8]+1873313359&4294967295,P=D+(U<<6&4294967295|U>>>26),U=V+(D^(P|~R))+A[15]+4264355552&4294967295,V=P+(U<<10&4294967295|U>>>22),U=R+(P^(V|~D))+A[6]+2734768916&4294967295,R=V+(U<<15&4294967295|U>>>17),U=D+(V^(R|~P))+A[13]+1309151649&4294967295,D=R+(U<<21&4294967295|U>>>11),U=P+(R^(D|~V))+A[4]+4149444226&4294967295,P=D+(U<<6&4294967295|U>>>26),U=V+(D^(P|~R))+A[11]+3174756917&4294967295,V=P+(U<<10&4294967295|U>>>22),U=R+(P^(V|~D))+A[2]+718787259&4294967295,R=V+(U<<15&4294967295|U>>>17),U=D+(V^(R|~P))+A[9]+3951481745&4294967295,I.g[0]=I.g[0]+P&4294967295,I.g[1]=I.g[1]+(R+(U<<21&4294967295|U>>>11))&4294967295,I.g[2]=I.g[2]+R&4294967295,I.g[3]=I.g[3]+V&4294967295}i.prototype.u=function(I,P){P===void 0&&(P=I.length);for(var D=P-this.blockSize,A=this.B,R=this.h,V=0;Vthis.h?this.blockSize:2*this.blockSize)-this.h);I[0]=128;for(var P=1;PP;++P)for(var A=0;32>A;A+=8)I[D++]=this.g[P]>>>A&255;return I};function s(I,P){var D=a;return Object.prototype.hasOwnProperty.call(D,I)?D[I]:D[I]=P(I)}function o(I,P){this.h=P;for(var D=[],A=!0,R=I.length-1;0<=R;R--){var V=I[R]|0;A&&V==P||(D[R]=V,A=!1)}this.g=D}var a={};function l(I){return-128<=I&&128>I?s(I,function(P){return new o([P|0],0>P?-1:0)}):new o([I|0],0>I?-1:0)}function c(I){if(isNaN(I)||!isFinite(I))return f;if(0>I)return x(c(-I));for(var P=[],D=1,A=0;I>=D;A++)P[A]=I/D|0,D*=4294967296;return new o(P,0)}function d(I,P){if(I.length==0)throw Error("number format error: empty string");if(P=P||10,2>P||36V?(V=c(Math.pow(P,V)),A=A.j(V).add(c(U))):(A=A.j(D),A=A.add(c(U)))}return A}var f=l(0),p=l(1),m=l(16777216);n=o.prototype,n.m=function(){if(S(this))return-x(this).m();for(var I=0,P=1,D=0;DI||36>>0).toString(I);if(D=R,_(D))return V+A;for(;6>V.length;)V="0"+V;A=V+A}},n.i=function(I){return 0>I?0:I>>16)+(this.i(R)>>>16)+(I.i(R)>>>16);A=U>>>16,V&=65535,U&=65535,D[R]=U<<16|V}return new o(D,D[D.length-1]&-2147483648?-1:0)};function y(I,P){return I.add(x(P))}n.j=function(I){if(_(this)||_(I))return f;if(S(this))return S(I)?x(this).j(x(I)):x(x(this).j(I));if(S(I))return x(this.j(x(I)));if(0>this.l(m)&&0>I.l(m))return c(this.m()*I.m());for(var P=this.g.length+I.g.length,D=[],A=0;A<2*P;A++)D[A]=0;for(A=0;A>>16,U=this.i(A)&65535,se=I.i(R)>>>16,le=I.i(R)&65535;D[2*A+2*R]+=U*le,E(D,2*A+2*R),D[2*A+2*R+1]+=V*le,E(D,2*A+2*R+1),D[2*A+2*R+1]+=U*se,E(D,2*A+2*R+1),D[2*A+2*R+2]+=V*se,E(D,2*A+2*R+2)}for(A=0;A>>16,I[P]&=65535,P++}function w(I,P){this.g=I,this.h=P}function M(I,P){if(_(P))throw Error("division by zero");if(_(I))return new w(f,f);if(S(I))return P=M(x(I),P),new w(x(P.g),x(P.h));if(S(P))return P=M(I,x(P)),new w(x(P.g),P.h);if(30=A.l(I);)D=O(D),A=O(A);var R=k(D,1),V=k(A,1);for(A=k(A,2),D=k(D,2);!_(A);){var U=V.add(A);0>=U.l(I)&&(R=R.add(D),V=U),A=k(A,1),D=k(D,1)}return P=y(I,R.j(P)),new w(R,P)}for(R=f;0<=I.l(P);){for(D=Math.max(1,Math.floor(I.m()/P.m())),A=Math.ceil(Math.log(D)/Math.LN2),A=48>=A?1:Math.pow(2,A-48),V=c(D),U=V.j(P);S(U)||0>>31;return new o(D,I.h)}function k(I,P){var D=P>>5;P%=32;for(var A=I.g.length-D,R=[],V=0;V>>P|I.i(V+D+1)<<32-P:I.i(V+D);return new o(R,I.h)}i.prototype.digest=i.prototype.v,i.prototype.reset=i.prototype.s,i.prototype.update=i.prototype.u,iU=i,o.prototype.add=o.prototype.add,o.prototype.multiply=o.prototype.j,o.prototype.modulo=o.prototype.A,o.prototype.compare=o.prototype.l,o.prototype.toNumber=o.prototype.m,o.prototype.toString=o.prototype.toString,o.prototype.getBits=o.prototype.i,o.fromNumber=c,o.fromString=d,Wc=o}).apply(typeof VI<"u"?VI:typeof self<"u"?self:typeof window<"u"?window:{});var cy=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};/** @license +Copyright The Closure Library Authors. +SPDX-License-Identifier: Apache-2.0 +*/var rU,Xf,sU,Ev,$E,oU,aU,lU;(function(){var n,e=typeof Object.defineProperties=="function"?Object.defineProperty:function(g,C,L){return g==Array.prototype||g==Object.prototype||(g[C]=L.value),g};function t(g){g=[typeof globalThis=="object"&&globalThis,g,typeof window=="object"&&window,typeof self=="object"&&self,typeof cy=="object"&&cy];for(var C=0;C{throw g},0)}function U(){var g=J;let C=null;return g.g&&(C=g.g,g.g=g.g.next,g.g||(g.h=null),C.next=null),C}class se{constructor(){this.h=this.g=null}add(C,L){const z=le.get();z.set(C,L),this.h?this.h.next=z:this.g=z,this.h=z}}var le=new y(()=>new ee,g=>g.reset());class ee{constructor(){this.next=this.g=this.h=null}set(C,L){this.h=C,this.g=L,this.next=null}reset(){this.next=this.g=this.h=null}}let pe,W=!1,J=new se,Z=()=>{const g=a.Promise.resolve(void 0);pe=()=>{g.then(oe)}};var oe=()=>{for(var g;g=U();){try{g.h.call(g.g)}catch(L){V(L)}var C=le;C.j(g),100>C.h&&(C.h++,g.next=C.g,C.g=g)}W=!1};function Me(){this.s=this.s,this.C=this.C}Me.prototype.s=!1,Me.prototype.ma=function(){this.s||(this.s=!0,this.N())},Me.prototype.N=function(){if(this.C)for(;this.C.length;)this.C.shift()()};function Re(g,C){this.type=g,this.g=this.target=C,this.defaultPrevented=!1}Re.prototype.h=function(){this.defaultPrevented=!0};var he=function(){if(!a.addEventListener||!Object.defineProperty)return!1;var g=!1,C=Object.defineProperty({},"passive",{get:function(){g=!0}});try{const L=()=>{};a.addEventListener("test",L,C),a.removeEventListener("test",L,C)}catch{}return g}();function we(g,C){if(Re.call(this,g?g.type:""),this.relatedTarget=this.g=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.state=null,this.pointerId=0,this.pointerType="",this.i=null,g){var L=this.type=g.type,z=g.changedTouches&&g.changedTouches.length?g.changedTouches[0]:null;if(this.target=g.target||g.srcElement,this.g=C,C=g.relatedTarget){if(O){e:{try{M(C.nodeName);var ne=!0;break e}catch{}ne=!1}ne||(C=null)}}else L=="mouseover"?C=g.fromElement:L=="mouseout"&&(C=g.toElement);this.relatedTarget=C,z?(this.clientX=z.clientX!==void 0?z.clientX:z.pageX,this.clientY=z.clientY!==void 0?z.clientY:z.pageY,this.screenX=z.screenX||0,this.screenY=z.screenY||0):(this.clientX=g.clientX!==void 0?g.clientX:g.pageX,this.clientY=g.clientY!==void 0?g.clientY:g.pageY,this.screenX=g.screenX||0,this.screenY=g.screenY||0),this.button=g.button,this.key=g.key||"",this.ctrlKey=g.ctrlKey,this.altKey=g.altKey,this.shiftKey=g.shiftKey,this.metaKey=g.metaKey,this.pointerId=g.pointerId||0,this.pointerType=typeof g.pointerType=="string"?g.pointerType:Ne[g.pointerType]||"",this.state=g.state,this.i=g,g.defaultPrevented&&we.aa.h.call(this)}}_(we,Re);var Ne={2:"touch",3:"pen",4:"mouse"};we.prototype.h=function(){we.aa.h.call(this);var g=this.i;g.preventDefault?g.preventDefault():g.returnValue=!1};var be="closure_listenable_"+(1e6*Math.random()|0),ft=0;function dt(g,C,L,z,ne){this.listener=g,this.proxy=null,this.src=C,this.type=L,this.capture=!!z,this.ha=ne,this.key=++ft,this.da=this.fa=!1}function Ke(g){g.da=!0,g.listener=null,g.proxy=null,g.src=null,g.ha=null}function ke(g){this.src=g,this.g={},this.h=0}ke.prototype.add=function(g,C,L,z,ne){var fe=g.toString();g=this.g[fe],g||(g=this.g[fe]=[],this.h++);var ze=j(g,C,z,ne);return-1>>0);function nt(g){return typeof g=="function"?g:(g[Se]||(g[Se]=function(C){return g.handleEvent(C)}),g[Se])}function Ce(){Me.call(this),this.i=new ke(this),this.M=this,this.F=null}_(Ce,Me),Ce.prototype[be]=!0,Ce.prototype.removeEventListener=function(g,C,L,z){X(this,g,C,L,z)};function Ge(g,C){var L,z=g.F;if(z)for(L=[];z;z=z.F)L.push(z);if(g=g.M,z=C.type||C,typeof C=="string")C=new Re(C,g);else if(C instanceof Re)C.target=C.target||g;else{var ne=C;C=new Re(z,g),A(C,ne)}if(ne=!0,L)for(var fe=L.length-1;0<=fe;fe--){var ze=C.g=L[fe];ne=Lt(ze,z,!0,C)&&ne}if(ze=C.g=g,ne=Lt(ze,z,!0,C)&&ne,ne=Lt(ze,z,!1,C)&&ne,L)for(fe=0;fe{g.g=null,g.i&&(g.i=!1,Ze(g))},g.l);const C=g.h;g.h=null,g.m.apply(null,C)}class Et extends Me{constructor(C,L){super(),this.m=C,this.l=L,this.h=null,this.i=!1,this.g=null}j(C){this.h=arguments,this.g?this.i=!0:Ze(this)}N(){super.N(),this.g&&(a.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null)}}function vt(g){Me.call(this),this.h=g,this.g={}}_(vt,Me);var et=[];function K(g){k(g.g,function(C,L){this.g.hasOwnProperty(L)&&F(C)},g),g.g={}}vt.prototype.N=function(){vt.aa.N.call(this),K(this)},vt.prototype.handleEvent=function(){throw Error("EventHandler.handleEvent not implemented")};var ve=a.JSON.stringify,je=a.JSON.parse,Y=class{stringify(g){return a.JSON.stringify(g,void 0)}parse(g){return a.JSON.parse(g,void 0)}};function Fe(){}Fe.prototype.h=null;function me(g){return g.h||(g.h=g.i())}function Ae(){}var Xe={OPEN:"a",kb:"b",Ja:"c",wb:"d"};function $e(){Re.call(this,"d")}_($e,Re);function At(){Re.call(this,"c")}_(At,Re);var Bt={},Cn=null;function It(){return Cn=Cn||new Ce}Bt.La="serverreachability";function Sn(g){Re.call(this,Bt.La,g)}_(Sn,Re);function kn(g){const C=It();Ge(C,new Sn(C))}Bt.STAT_EVENT="statevent";function Gl(g,C){Re.call(this,Bt.STAT_EVENT,g),this.stat=C}_(Gl,Re);function si(g){const C=It();Ge(C,new Gl(C,g))}Bt.Ma="timingevent";function rs(g,C){Re.call(this,Bt.Ma,g),this.size=C}_(rs,Re);function ss(g,C){if(typeof g!="function")throw Error("Fn must not be null and must be a function");return a.setTimeout(function(){g()},C)}function os(){this.g=!0}os.prototype.xa=function(){this.g=!1};function Eu(g,C,L,z,ne,fe){g.info(function(){if(g.g)if(fe)for(var ze="",pn=fe.split("&"),Qn=0;Qnz.length)){var ne=z[1];if(Array.isArray(ne)&&!(1>ne.length)){var fe=ne[0];if(fe!="noop"&&fe!="stop"&&fe!="close")for(var ze=1;zegn)&&(gn!=3||this.g&&(this.h.h||this.g.oa()||$l(this.g)))){this.J||gn!=4||C==7||(C==8||0>=un?kn(3):kn(2)),xt(this);var L=this.g.Z();this.X=L;t:if(Qe(this)){var z=$l(this.g);g="";var ne=z.length,fe=Ar(this.g)==4;if(!this.h.i){if(typeof TextDecoder>"u"){zt(this),ut(this);var ze="";break t}this.h.i=new a.TextDecoder}for(C=0;CC.length?de:(C=C.slice(z,z+L),g.C=z+L,C)))}H.prototype.cancel=function(){this.J=!0,zt(this)};function it(g){g.S=Date.now()+g.I,_t(g,g.I)}function _t(g,C){if(g.B!=null)throw Error("WatchDog timer not null");g.B=ss(p(g.ba,g),C)}function xt(g){g.B&&(a.clearTimeout(g.B),g.B=null)}H.prototype.ba=function(){this.B=null;const g=Date.now();0<=g-this.S?(Sa(this.i,this.A),this.L!=2&&(kn(),si(17)),zt(this),this.s=2,ut(this)):_t(this,this.S-g)};function ut(g){g.j.G==0||g.J||Ql(g.j,g)}function zt(g){xt(g);var C=g.M;C&&typeof C.ma=="function"&&C.ma(),g.M=null,K(g.U),g.g&&(C=g.g,g.g=null,C.abort(),C.ma())}function Yt(g,C){try{var L=g.j;if(L.G!=0&&(L.g==g||qt(L.h,g))){if(!g.K&&qt(L.h,g)&&L.G==3){try{var z=L.Da.g.parse(C)}catch{z=null}if(Array.isArray(z)&&z.length==3){var ne=z;if(ne[0]==0){e:if(!L.u){if(L.g)if(L.g.F+3e3ne[2]&&L.F&&L.v==0&&!L.C&&(L.C=ss(p(L.Za,L),6e3));if(1>=ot(L.h)&&L.ca){try{L.ca()}catch{}L.ca=void 0}}else no(L,11)}else if((g.K||L.g==g)&&Kl(L),!E(C))for(ne=L.Da.g.parse(C),C=0;C=g.j:!1}function ot(g){return g.h?1:g.g?g.g.size:0}function qt(g,C){return g.h?g.h==C:g.g?g.g.has(C):!1}function Mt(g,C){g.g?g.g.add(C):g.h=C}function Gn(g,C){g.h&&g.h==C?g.h=null:g.g&&g.g.has(C)&&g.g.delete(C)}Ot.prototype.cancel=function(){if(this.i=Ui(this),this.h)this.h.cancel(),this.h=null;else if(this.g&&this.g.size!==0){for(const g of this.g.values())g.cancel();this.g.clear()}};function Ui(g){if(g.h!=null)return g.i.concat(g.h.D);if(g.g!=null&&g.g.size!==0){let C=g.i;for(const L of g.g.values())C=C.concat(L.D);return C}return S(g.i)}function dn(g){if(g.V&&typeof g.V=="function")return g.V();if(typeof Map<"u"&&g instanceof Map||typeof Set<"u"&&g instanceof Set)return Array.from(g.values());if(typeof g=="string")return g.split("");if(l(g)){for(var C=[],L=g.length,z=0;zC)throw Error("Bad port number "+C);g.s=C}else g.s=null}function ng(g,C,L){C instanceof Po?(g.i=C,Gx(g.i,g.h)):(L||(C=eo(C,jl)),g.i=new Po(C,g.h))}function fn(g,C,L){g.i.set(C,L)}function bo(g){return fn(g,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),g}function bs(g,C){return g?C?decodeURI(g.replace(/%25/g,"%2525")):decodeURIComponent(g):""}function eo(g,C,L){return typeof g=="string"?(g=encodeURI(g).replace(C,zx),L&&(g=g.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),g):null}function zx(g){return g=g.charCodeAt(0),"%"+(g>>4&15).toString(16)+(g&15).toString(16)}var ig=/[#\/\?@]/g,Ud=/[#\?:]/g,Fd=/[#\?]/g,jl=/[#\?@]/g,Hx=/#/g;function Po(g,C){this.h=this.g=null,this.i=g||null,this.j=!!C}function Ht(g){g.g||(g.g=new Map,g.h=0,g.i&&Zs(g.i,function(C,L){g.add(decodeURIComponent(C.replace(/\+/g," ")),L)}))}n=Po.prototype,n.add=function(g,C){Ht(this),this.i=null,g=Ta(this,g);var L=this.g.get(g);return L||this.g.set(g,L=[]),L.push(C),this.h+=1,this};function Vd(g,C){Ht(g),C=Ta(g,C),g.g.has(C)&&(g.i=null,g.h-=g.g.get(C).length,g.g.delete(C))}function Mu(g,C){return Ht(g),C=Ta(g,C),g.g.has(C)}n.forEach=function(g,C){Ht(this),this.g.forEach(function(L,z){L.forEach(function(ne){g.call(C,ne,z,this)},this)},this)},n.na=function(){Ht(this);const g=Array.from(this.g.values()),C=Array.from(this.g.keys()),L=[];for(let z=0;z{z.abort(),to(L,"TestPingServer: timeout",!1,C)},1e4);fetch(g,{signal:z.signal}).then(fe=>{clearTimeout(ne),fe.ok?to(L,"TestPingServer: ok",!0,C):to(L,"TestPingServer: server error",!1,C)}).catch(()=>{clearTimeout(ne),to(L,"TestPingServer: error",!1,C)})}function to(g,C,L,z,ne){try{ne&&(ne.onload=null,ne.onerror=null,ne.onabort=null,ne.ontimeout=null),z(L)}catch{}}function Hd(){this.g=new Y}function Wx(g,C,L){const z=L||"";try{_n(g,function(ne,fe){let ze=ne;c(ne)&&(ze=ve(ne)),C.push(z+fe+"="+encodeURIComponent(ze))})}catch(ne){throw C.push(z+"type="+encodeURIComponent("_badmap")),ne}}function Ro(g){this.l=g.Ub||null,this.j=g.eb||!1}_(Ro,Fe),Ro.prototype.g=function(){return new ar(this.l,this.j)},Ro.prototype.i=function(g){return function(){return g}}({});function ar(g,C){Ce.call(this),this.D=g,this.o=C,this.m=void 0,this.status=this.readyState=0,this.responseType=this.responseText=this.response=this.statusText="",this.onreadystatechange=null,this.u=new Headers,this.h=null,this.B="GET",this.A="",this.g=!1,this.v=this.j=this.l=null}_(ar,Ce),n=ar.prototype,n.open=function(g,C){if(this.readyState!=0)throw this.abort(),Error("Error reopening a connection");this.B=g,this.A=C,this.readyState=1,Fi(this)},n.send=function(g){if(this.readyState!=1)throw this.abort(),Error("need to call open() first. ");this.g=!0;const C={headers:this.u,method:this.B,credentials:this.m,cache:void 0};g&&(C.body=g),(this.D||a).fetch(new Request(this.A,C)).then(this.Sa.bind(this),this.ga.bind(this))},n.abort=function(){this.response=this.responseText="",this.u=new Headers,this.status=0,this.j&&this.j.cancel("Request was aborted.").catch(()=>{}),1<=this.readyState&&this.g&&this.readyState!=4&&(this.g=!1,Xl(this)),this.readyState=0},n.Sa=function(g){if(this.g&&(this.l=g,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=g.headers,this.readyState=2,Fi(this)),this.g&&(this.readyState=3,Fi(this),this.g)))if(this.responseType==="arraybuffer")g.arrayBuffer().then(this.Qa.bind(this),this.ga.bind(this));else if(typeof a.ReadableStream<"u"&&"body"in g){if(this.j=g.body.getReader(),this.o){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.v=new TextDecoder;rg(this)}else g.text().then(this.Ra.bind(this),this.ga.bind(this))};function rg(g){g.j.read().then(g.Pa.bind(g)).catch(g.ga.bind(g))}n.Pa=function(g){if(this.g){if(this.o&&g.value)this.response.push(g.value);else if(!this.o){var C=g.value?g.value:new Uint8Array(0);(C=this.v.decode(C,{stream:!g.done}))&&(this.response=this.responseText+=C)}g.done?Xl(this):Fi(this),this.readyState==3&&rg(this)}},n.Ra=function(g){this.g&&(this.response=this.responseText=g,Xl(this))},n.Qa=function(g){this.g&&(this.response=g,Xl(this))},n.ga=function(){this.g&&Xl(this)};function Xl(g){g.readyState=4,g.l=null,g.j=null,g.v=null,Fi(g)}n.setRequestHeader=function(g,C){this.u.append(g,C)},n.getResponseHeader=function(g){return this.h&&this.h.get(g.toLowerCase())||""},n.getAllResponseHeaders=function(){if(!this.h)return"";const g=[],C=this.h.entries();for(var L=C.next();!L.done;)L=L.value,g.push(L[0]+": "+L[1]),L=C.next();return g.join(`\r +`)};function Fi(g){g.onreadystatechange&&g.onreadystatechange.call(g)}Object.defineProperty(ar.prototype,"withCredentials",{get:function(){return this.m==="include"},set:function(g){this.m=g?"include":"same-origin"}});function ls(g){let C="";return k(g,function(L,z){C+=z,C+=":",C+=L,C+=`\r +`}),C}function Aa(g,C,L){e:{for(z in L){var z=!1;break e}z=!0}z||(L=ls(L),typeof g=="string"?L!=null&&encodeURIComponent(String(L)):fn(g,C,L))}function wn(g){Ce.call(this),this.headers=new Map,this.o=g||null,this.h=!1,this.v=this.g=null,this.D="",this.m=0,this.l="",this.j=this.B=this.u=this.A=!1,this.I=null,this.H="",this.J=!1}_(wn,Ce);var sg=/^https?$/i,jx=["POST","PUT"];n=wn.prototype,n.Ha=function(g){this.J=g},n.ea=function(g,C,L,z){if(this.g)throw Error("[goog.net.XhrIo] Object is active with another request="+this.D+"; newUri="+g);C=C?C.toUpperCase():"GET",this.D=g,this.l="",this.m=0,this.A=!1,this.h=!0,this.g=this.o?this.o.g():Wl.g(),this.v=this.o?me(this.o):me(Wl),this.g.onreadystatechange=p(this.Ea,this);try{this.B=!0,this.g.open(C,String(g),!0),this.B=!1}catch(fe){Hr(this,fe);return}if(g=L||"",L=new Map(this.headers),z)if(Object.getPrototypeOf(z)===Object.prototype)for(var ne in z)L.set(ne,z[ne]);else if(typeof z.keys=="function"&&typeof z.get=="function")for(const fe of z.keys())L.set(fe,z.get(fe));else throw Error("Unknown input type for opt_headers: "+String(z));z=Array.from(L.keys()).find(fe=>fe.toLowerCase()=="content-type"),ne=a.FormData&&g instanceof a.FormData,!(0<=Array.prototype.indexOf.call(jx,C,void 0))||z||ne||L.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(const[fe,ze]of L)this.g.setRequestHeader(fe,ze);this.H&&(this.g.responseType=this.H),"withCredentials"in this.g&&this.g.withCredentials!==this.J&&(this.g.withCredentials=this.J);try{Tr(this),this.u=!0,this.g.send(g),this.u=!1}catch(fe){Hr(this,fe)}};function Hr(g,C){g.h=!1,g.g&&(g.j=!0,g.g.abort(),g.j=!1),g.l=C,g.m=5,og(g),Cu(g)}function og(g){g.A||(g.A=!0,Ge(g,"complete"),Ge(g,"error"))}n.abort=function(g){this.g&&this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1,this.m=g||7,Ge(this,"complete"),Ge(this,"abort"),Cu(this))},n.N=function(){this.g&&(this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1),Cu(this,!0)),wn.aa.N.call(this)},n.Ea=function(){this.s||(this.B||this.u||this.j?ql(this):this.bb())},n.bb=function(){ql(this)};function ql(g){if(g.h&&typeof o<"u"&&(!g.v[1]||Ar(g)!=4||g.Z()!=2)){if(g.u&&Ar(g)==4)Le(g.Ea,0,g);else if(Ge(g,"readystatechange"),Ar(g)==4){g.h=!1;try{const ze=g.Z();e:switch(ze){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var C=!0;break e;default:C=!1}var L;if(!(L=C)){var z;if(z=ze===0){var ne=String(g.D).match(Er)[1]||null;!ne&&a.self&&a.self.location&&(ne=a.self.location.protocol.slice(0,-1)),z=!sg.test(ne?ne.toLowerCase():"")}L=z}if(L)Ge(g,"complete"),Ge(g,"success");else{g.m=6;try{var fe=2{}:null;g.g=null,g.v=null,C||Ge(g,"ready");try{L.onreadystatechange=z}catch{}}}function Tr(g){g.I&&(a.clearTimeout(g.I),g.I=null)}n.isActive=function(){return!!this.g};function Ar(g){return g.g?g.g.readyState:0}n.Z=function(){try{return 2=g.h.j-(g.s?1:0)?!1:g.s?(g.i=C.D.concat(g.i),!0):g.G==1||g.G==2||g.B>=(g.Va?0:g.Wa)?!1:(g.s=ss(p(g.Ga,g,C),Wd(g,g.B)),g.B++,!0)}n.Ga=function(g){if(this.s)if(this.s=null,this.G==1){if(!g){this.U=Math.floor(1e5*Math.random()),g=this.U++;const ne=new H(this,this.j,g);let fe=this.o;if(this.S&&(fe?(fe=P(fe),A(fe,this.S)):fe=this.S),this.m!==null||this.O||(ne.H=fe,fe=null),this.P)e:{for(var C=0,L=0;LKt)fe=Math.max(0,ne[Qn].g-100),pn=!1;else try{Wx(mn,ze,"req"+Kt+"_")}catch{z&&z(mn)}}if(pn){z=ze.join("&");break e}}}return g=g.i.splice(0,L),C.D=g,z}function Gd(g){if(!g.g&&!g.u){g.Y=1;var C=g.Fa;pe||Z(),W||(pe(),W=!0),J.add(C,g),g.v=0}}function Wr(g){return g.g||g.u||3<=g.v?!1:(g.Y++,g.u=ss(p(g.Fa,g),Wd(g,g.v)),g.v++,!0)}n.Fa=function(){if(this.u=null,Yl(this),this.ba&&!(this.M||this.g==null||0>=this.R)){var g=2*this.R;this.j.info("BP detection timer enabled: "+g),this.A=ss(p(this.ab,this),g)}},n.ab=function(){this.A&&(this.A=null,this.j.info("BP detection timeout reached."),this.j.info("Buffering proxy detected and switch to long-polling!"),this.F=!1,this.M=!0,si(10),Ca(this),Yl(this))};function cs(g){g.A!=null&&(a.clearTimeout(g.A),g.A=null)}function Yl(g){g.g=new H(g,g.j,"rpc",g.Y),g.m===null&&(g.g.H=g.o),g.g.O=0;var C=bn(g.qa);fn(C,"RID","rpc"),fn(C,"SID",g.K),fn(C,"AID",g.T),fn(C,"CI",g.F?"0":"1"),!g.F&&g.ja&&fn(C,"TO",g.ja),fn(C,"TYPE","xmlhttp"),Cr(g,C),g.m&&g.o&&Aa(C,g.m,g.o),g.L&&(g.g.I=g.L);var L=g.g;g=g.ia,L.L=1,L.v=bo(bn(C)),L.m=null,L.P=!0,Be(L,g)}n.Za=function(){this.C!=null&&(this.C=null,Ca(this),Wr(this),si(19))};function Kl(g){g.C!=null&&(a.clearTimeout(g.C),g.C=null)}function Ql(g,C){var L=null;if(g.g==C){Kl(g),cs(g),g.g=null;var z=2}else if(qt(g.h,C))L=C.D,Gn(g.h,C),z=1;else return;if(g.G!=0){if(C.o)if(z==1){L=C.m?C.m.length:0,C=Date.now()-C.F;var ne=g.B;z=It(),Ge(z,new rs(z,L)),Ps(g)}else Gd(g);else if(ne=C.s,ne==3||ne==0&&0`${this.name}: [code=${this.code}]: ${this.message}`}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class jc{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class cU{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class X7{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable(()=>t(Qi.UNAUTHENTICATED))}shutdown(){}}class q7{constructor(e){this.token=e,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(e,t){this.changeListener=t,e.enqueueRetryable(()=>t(this.token.user))}shutdown(){this.changeListener=null}}class $7{constructor(e){this.t=e,this.currentUser=Qi.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(e,t){Kn(this.o===void 0);let i=this.i;const r=l=>this.i!==i?(i=this.i,t(l)):Promise.resolve();let s=new jc;this.o=()=>{this.i++,this.currentUser=this.u(),s.resolve(),s=new jc,e.enqueueRetryable(()=>r(this.currentUser))};const o=()=>{const l=s;e.enqueueRetryable(async()=>{await l.promise,await r(this.currentUser)})},a=l=>{pt("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=l,this.o&&(this.auth.addAuthTokenListener(this.o),o())};this.t.onInit(l=>a(l)),setTimeout(()=>{if(!this.auth){const l=this.t.getImmediate({optional:!0});l?a(l):(pt("FirebaseAuthCredentialsProvider","Auth not yet detected"),s.resolve(),s=new jc)}},0),o()}getToken(){const e=this.i,t=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(t).then(i=>this.i!==e?(pt("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):i?(Kn(typeof i.accessToken=="string"),new cU(i.accessToken,this.currentUser)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.o&&this.auth.removeAuthTokenListener(this.o),this.o=void 0}u(){const e=this.auth&&this.auth.getUid();return Kn(e===null||typeof e=="string"),new Qi(e)}}class Y7{constructor(e,t,i){this.l=e,this.h=t,this.P=i,this.type="FirstParty",this.user=Qi.FIRST_PARTY,this.I=new Map}T(){return this.P?this.P():null}get headers(){this.I.set("X-Goog-AuthUser",this.l);const e=this.T();return e&&this.I.set("Authorization",e),this.h&&this.I.set("X-Goog-Iam-Authorization-Token",this.h),this.I}}class K7{constructor(e,t,i){this.l=e,this.h=t,this.P=i}getToken(){return Promise.resolve(new Y7(this.l,this.h,this.P))}start(e,t){e.enqueueRetryable(()=>t(Qi.FIRST_PARTY))}shutdown(){}invalidateToken(){}}class Q7{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&e.length>0&&this.headers.set("x-firebase-appcheck",this.value)}}class J7{constructor(e){this.A=e,this.forceRefresh=!1,this.appCheck=null,this.R=null}start(e,t){Kn(this.o===void 0);const i=s=>{s.error!=null&&pt("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${s.error.message}`);const o=s.token!==this.R;return this.R=s.token,pt("FirebaseAppCheckTokenProvider",`Received ${o?"new":"existing"} token.`),o?t(s.token):Promise.resolve()};this.o=s=>{e.enqueueRetryable(()=>i(s))};const r=s=>{pt("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=s,this.o&&this.appCheck.addTokenListener(this.o)};this.A.onInit(s=>r(s)),setTimeout(()=>{if(!this.appCheck){const s=this.A.getImmediate({optional:!0});s?r(s):pt("FirebaseAppCheckTokenProvider","AppCheck not yet detected")}},0)}getToken(){const e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then(t=>t?(Kn(typeof t.token=="string"),this.R=t.token,new Q7(t.token)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.o&&this.appCheck.removeTokenListener(this.o),this.o=void 0}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Z7(n){const e=typeof self<"u"&&(self.crypto||self.msCrypto),t=new Uint8Array(n);if(e&&typeof e.getRandomValues=="function")e.getRandomValues(t);else for(let i=0;ie?1:0}function ad(n,e,t){return n.length===e.length&&n.every((i,r)=>t(i,e[r]))}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Vr{constructor(e,t){if(this.seconds=e,this.nanoseconds=t,t<0)throw new Tt(qe.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(t>=1e9)throw new Tt(qe.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-62135596800)throw new Tt(qe.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(e>=253402300800)throw new Tt(qe.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}static now(){return Vr.fromMillis(Date.now())}static fromDate(e){return Vr.fromMillis(e.getTime())}static fromMillis(e){const t=Math.floor(e/1e3),i=Math.floor(1e6*(e-1e3*t));return new Vr(t,i)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?hn(this.nanoseconds,e.nanoseconds):hn(this.seconds,e.seconds)}isEqual(e){return e.seconds===this.seconds&&e.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{seconds:this.seconds,nanoseconds:this.nanoseconds}}valueOf(){const e=this.seconds- -62135596800;return String(e).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class kt{constructor(e){this.timestamp=e}static fromTimestamp(e){return new kt(e)}static min(){return new kt(new Vr(0,0))}static max(){return new kt(new Vr(253402300799,999999999))}compareTo(e){return this.timestamp._compareTo(e.timestamp)}isEqual(e){return this.timestamp.isEqual(e.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class $p{constructor(e,t,i){t===void 0?t=0:t>e.length&&Wt(),i===void 0?i=e.length-t:i>e.length-t&&Wt(),this.segments=e,this.offset=t,this.len=i}get length(){return this.len}isEqual(e){return $p.comparator(this,e)===0}child(e){const t=this.segments.slice(this.offset,this.limit());return e instanceof $p?e.forEach(i=>{t.push(i)}):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return e=e===void 0?1:e,this.construct(this.segments,this.offset+e,this.length-e)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(e){return this.segments[this.offset+e]}isEmpty(){return this.length===0}isPrefixOf(e){if(e.lengtho)return 1}return e.lengtht.length?1:0}}class qn extends $p{construct(e,t,i){return new qn(e,t,i)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}toUriEncodedString(){return this.toArray().map(encodeURIComponent).join("/")}static fromString(...e){const t=[];for(const i of e){if(i.indexOf("//")>=0)throw new Tt(qe.INVALID_ARGUMENT,`Invalid segment (${i}). Paths must not contain // in them.`);t.push(...i.split("/").filter(r=>r.length>0))}return new qn(t)}static emptyPath(){return new qn([])}}const tX=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class pr extends $p{construct(e,t,i){return new pr(e,t,i)}static isValidIdentifier(e){return tX.test(e)}canonicalString(){return this.toArray().map(e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),pr.isValidIdentifier(e)||(e="`"+e+"`"),e)).join(".")}toString(){return this.canonicalString()}isKeyField(){return this.length===1&&this.get(0)==="__name__"}static keyField(){return new pr(["__name__"])}static fromServerFormat(e){const t=[];let i="",r=0;const s=()=>{if(i.length===0)throw new Tt(qe.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(i),i=""};let o=!1;for(;r=2&&this.path.get(this.path.length-2)===e}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(e){return e!==null&&qn.comparator(this.path,e.path)===0}toString(){return this.path.toString()}static comparator(e,t){return qn.comparator(e.path,t.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new Pt(new qn(e.slice()))}}function nX(n,e){const t=n.toTimestamp().seconds,i=n.toTimestamp().nanoseconds+1,r=kt.fromTimestamp(i===1e9?new Vr(t+1,0):new Vr(t,i));return new Cl(r,Pt.empty(),e)}function iX(n){return new Cl(n.readTime,n.key,-1)}class Cl{constructor(e,t,i){this.readTime=e,this.documentKey=t,this.largestBatchId=i}static min(){return new Cl(kt.min(),Pt.empty(),-1)}static max(){return new Cl(kt.max(),Pt.empty(),-1)}}function rX(n,e){let t=n.readTime.compareTo(e.readTime);return t!==0?t:(t=Pt.comparator(n.documentKey,e.documentKey),t!==0?t:hn(n.largestBatchId,e.largestBatchId))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const sX="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class oX{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach(e=>e())}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function uM(n){if(n.code!==qe.FAILED_PRECONDITION||n.message!==sX)throw n;pt("LocalStore","Unexpectedly lost primary lease")}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Ie{constructor(e){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,e(t=>{this.isDone=!0,this.result=t,this.nextCallback&&this.nextCallback(t)},t=>{this.isDone=!0,this.error=t,this.catchCallback&&this.catchCallback(t)})}catch(e){return this.next(void 0,e)}next(e,t){return this.callbackAttached&&Wt(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(t,this.error):this.wrapSuccess(e,this.result):new Ie((i,r)=>{this.nextCallback=s=>{this.wrapSuccess(e,s).next(i,r)},this.catchCallback=s=>{this.wrapFailure(t,s).next(i,r)}})}toPromise(){return new Promise((e,t)=>{this.next(e,t)})}wrapUserFunction(e){try{const t=e();return t instanceof Ie?t:Ie.resolve(t)}catch(t){return Ie.reject(t)}}wrapSuccess(e,t){return e?this.wrapUserFunction(()=>e(t)):Ie.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction(()=>e(t)):Ie.reject(t)}static resolve(e){return new Ie((t,i)=>{t(e)})}static reject(e){return new Ie((t,i)=>{i(e)})}static waitFor(e){return new Ie((t,i)=>{let r=0,s=0,o=!1;e.forEach(a=>{++r,a.next(()=>{++s,o&&s===r&&t()},l=>i(l))}),o=!0,s===r&&t()})}static or(e){let t=Ie.resolve(!1);for(const i of e)t=t.next(r=>r?Ie.resolve(r):i());return t}static forEach(e,t){const i=[];return e.forEach((r,s)=>{i.push(t.call(this,r,s))}),this.waitFor(i)}static mapArray(e,t){return new Ie((i,r)=>{const s=e.length,o=new Array(s);let a=0;for(let l=0;l{o[c]=d,++a,a===s&&i(o)},d=>r(d))}})}static doWhile(e,t){return new Ie((i,r)=>{const s=()=>{e()===!0?t().next(()=>{s()},r):i()};s()})}}function aX(n){const e=n.match(/Android ([\d.]+)/i),t=e?e[1].split(".").slice(0,2).join("."):"-1";return Number(t)}function km(n){return n.name==="IndexedDbTransactionError"}/** + * @license + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class hM{constructor(e,t){this.previousValue=e,t&&(t.sequenceNumberHandler=i=>this.ie(i),this.se=i=>t.writeSequenceNumber(i))}ie(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){const e=++this.previousValue;return this.se&&this.se(e),e}}hM.oe=-1;function q_(n){return n==null}function YE(n){return n===0&&1/n==-1/0}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function zI(n){let e=0;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&e++;return e}function $_(n,e){for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&e(t,n[t])}function lX(n){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e))return!1;return!0}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ri{constructor(e,t){this.comparator=e,this.root=t||Ii.EMPTY}insert(e,t){return new ri(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,Ii.BLACK,null,null))}remove(e){return new ri(this.comparator,this.root.remove(e,this.comparator).copy(null,null,Ii.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){const i=this.comparator(e,t.key);if(i===0)return t.value;i<0?t=t.left:i>0&&(t=t.right)}return null}indexOf(e){let t=0,i=this.root;for(;!i.isEmpty();){const r=this.comparator(e,i.key);if(r===0)return t+i.left.size;r<0?i=i.left:(t+=i.left.size+1,i=i.right)}return-1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(e){return this.root.inorderTraversal(e)}forEach(e){this.inorderTraversal((t,i)=>(e(t,i),!1))}toString(){const e=[];return this.inorderTraversal((t,i)=>(e.push(`${t}:${i}`),!1)),`{${e.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new uy(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new uy(this.root,e,this.comparator,!1)}getReverseIterator(){return new uy(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new uy(this.root,e,this.comparator,!0)}}class uy{constructor(e,t,i,r){this.isReverse=r,this.nodeStack=[];let s=1;for(;!e.isEmpty();)if(s=t?i(e.key,t):1,t&&r&&(s*=-1),s<0)e=this.isReverse?e.left:e.right;else{if(s===0){this.nodeStack.push(e);break}this.nodeStack.push(e),e=this.isReverse?e.right:e.left}}getNext(){let e=this.nodeStack.pop();const t={key:e.key,value:e.value};if(this.isReverse)for(e=e.left;!e.isEmpty();)this.nodeStack.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack.push(e),e=e.left;return t}hasNext(){return this.nodeStack.length>0}peek(){if(this.nodeStack.length===0)return null;const e=this.nodeStack[this.nodeStack.length-1];return{key:e.key,value:e.value}}}class Ii{constructor(e,t,i,r,s){this.key=e,this.value=t,this.color=i??Ii.RED,this.left=r??Ii.EMPTY,this.right=s??Ii.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,t,i,r,s){return new Ii(e??this.key,t??this.value,i??this.color,r??this.left,s??this.right)}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,t,i){let r=this;const s=i(e,r.key);return r=s<0?r.copy(null,null,null,r.left.insert(e,t,i),null):s===0?r.copy(null,t,null,null,null):r.copy(null,null,null,null,r.right.insert(e,t,i)),r.fixUp()}removeMin(){if(this.left.isEmpty())return Ii.EMPTY;let e=this;return e.left.isRed()||e.left.left.isRed()||(e=e.moveRedLeft()),e=e.copy(null,null,null,e.left.removeMin(),null),e.fixUp()}remove(e,t){let i,r=this;if(t(e,r.key)<0)r.left.isEmpty()||r.left.isRed()||r.left.left.isRed()||(r=r.moveRedLeft()),r=r.copy(null,null,null,r.left.remove(e,t),null);else{if(r.left.isRed()&&(r=r.rotateRight()),r.right.isEmpty()||r.right.isRed()||r.right.left.isRed()||(r=r.moveRedRight()),t(e,r.key)===0){if(r.right.isEmpty())return Ii.EMPTY;i=r.right.min(),r=r.copy(i.key,i.value,null,null,r.right.removeMin())}r=r.copy(null,null,null,null,r.right.remove(e,t))}return r.fixUp()}isRed(){return this.color}fixUp(){let e=this;return e.right.isRed()&&!e.left.isRed()&&(e=e.rotateLeft()),e.left.isRed()&&e.left.left.isRed()&&(e=e.rotateRight()),e.left.isRed()&&e.right.isRed()&&(e=e.colorFlip()),e}moveRedLeft(){let e=this.colorFlip();return e.right.left.isRed()&&(e=e.copy(null,null,null,null,e.right.rotateRight()),e=e.rotateLeft(),e=e.colorFlip()),e}moveRedRight(){let e=this.colorFlip();return e.left.left.isRed()&&(e=e.rotateRight(),e=e.colorFlip()),e}rotateLeft(){const e=this.copy(null,null,Ii.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){const e=this.copy(null,null,Ii.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip(){const e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)}checkMaxDepth(){const e=this.check();return Math.pow(2,e)<=this.size+1}check(){if(this.isRed()&&this.left.isRed()||this.right.isRed())throw Wt();const e=this.left.check();if(e!==this.right.check())throw Wt();return e+(this.isRed()?0:1)}}Ii.EMPTY=null,Ii.RED=!0,Ii.BLACK=!1;Ii.EMPTY=new class{constructor(){this.size=0}get key(){throw Wt()}get value(){throw Wt()}get color(){throw Wt()}get left(){throw Wt()}get right(){throw Wt()}copy(e,t,i,r,s){return this}insert(e,t,i){return new Ii(e,t)}remove(e,t){return this}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Ni{constructor(e){this.comparator=e,this.data=new ri(this.comparator)}has(e){return this.data.get(e)!==null}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(e){return this.data.indexOf(e)}forEach(e){this.data.inorderTraversal((t,i)=>(e(t),!1))}forEachInRange(e,t){const i=this.data.getIteratorFrom(e[0]);for(;i.hasNext();){const r=i.getNext();if(this.comparator(r.key,e[1])>=0)return;t(r.key)}}forEachWhile(e,t){let i;for(i=t!==void 0?this.data.getIteratorFrom(t):this.data.getIterator();i.hasNext();)if(!e(i.getNext().key))return}firstAfterOrEqual(e){const t=this.data.getIteratorFrom(e);return t.hasNext()?t.getNext().key:null}getIterator(){return new HI(this.data.getIterator())}getIteratorFrom(e){return new HI(this.data.getIteratorFrom(e))}add(e){return this.copy(this.data.remove(e).insert(e,!0))}delete(e){return this.has(e)?this.copy(this.data.remove(e)):this}isEmpty(){return this.data.isEmpty()}unionWith(e){let t=this;return t.size{t=t.add(i)}),t}isEqual(e){if(!(e instanceof Ni)||this.size!==e.size)return!1;const t=this.data.getIterator(),i=e.data.getIterator();for(;t.hasNext();){const r=t.getNext().key,s=i.getNext().key;if(this.comparator(r,s)!==0)return!1}return!0}toArray(){const e=[];return this.forEach(t=>{e.push(t)}),e}toString(){const e=[];return this.forEach(t=>e.push(t)),"SortedSet("+e.toString()+")"}copy(e){const t=new Ni(this.comparator);return t.data=e,t}}class HI{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ol{constructor(e){this.fields=e,e.sort(pr.comparator)}static empty(){return new ol([])}unionWith(e){let t=new Ni(pr.comparator);for(const i of this.fields)t=t.add(i);for(const i of e)t=t.add(i);return new ol(t.toArray())}covers(e){for(const t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return ad(this.fields,e.fields,(t,i)=>t.isEqual(i))}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class uU extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ki{constructor(e){this.binaryString=e}static fromBase64String(e){const t=function(r){try{return atob(r)}catch(s){throw typeof DOMException<"u"&&s instanceof DOMException?new uU("Invalid base64 string: "+s):s}}(e);return new ki(t)}static fromUint8Array(e){const t=function(r){let s="";for(let o=0;oeEo(t,e))!==void 0}function ld(n,e){if(n===e)return 0;const t=ou(n),i=ou(e);if(t!==i)return hn(t,i);switch(t){case 0:case 9007199254740991:return 0;case 1:return hn(n.booleanValue,e.booleanValue);case 2:return function(s,o){const a=ei(s.integerValue||s.doubleValue),l=ei(o.integerValue||o.doubleValue);return al?1:a===l?0:isNaN(a)?isNaN(l)?0:-1:1}(n,e);case 3:return GI(n.timestampValue,e.timestampValue);case 4:return GI(Yp(n),Yp(e));case 5:return hn(n.stringValue,e.stringValue);case 6:return function(s,o){const a=su(s),l=su(o);return a.compareTo(l)}(n.bytesValue,e.bytesValue);case 7:return function(s,o){const a=s.split("/"),l=o.split("/");for(let c=0;ce.mapValue.fields[t]=up(i)),e}if(n.arrayValue){const e={arrayValue:{values:[]}};for(let t=0;t<(n.arrayValue.values||[]).length;++t)e.arrayValue.values[t]=up(n.arrayValue.values[t]);return e}return Object.assign({},n)}function dX(n){return(((n.mapValue||{}).fields||{}).__type__||{}).stringValue==="__max__"}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class uo{constructor(e){this.value=e}static empty(){return new uo({mapValue:{}})}field(e){if(e.isEmpty())return this.value;{let t=this.value;for(let i=0;i{if(!t.isImmediateParentOf(a)){const l=this.getFieldsMap(t);this.applyChanges(l,i,r),i={},r=[],t=a.popLast()}o?i[a.lastSegment()]=up(o):r.push(a.lastSegment())});const s=this.getFieldsMap(t);this.applyChanges(s,i,r)}delete(e){const t=this.field(e.popLast());Aw(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return Eo(this.value,e.value)}getFieldsMap(e){let t=this.value;t.mapValue.fields||(t.mapValue={fields:{}});for(let i=0;ie[r]=s);for(const r of i)delete e[r]}clone(){return new uo(up(this.value))}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Zi{constructor(e,t,i,r,s,o,a){this.key=e,this.documentType=t,this.version=i,this.readTime=r,this.createTime=s,this.data=o,this.documentState=a}static newInvalidDocument(e){return new Zi(e,0,kt.min(),kt.min(),kt.min(),uo.empty(),0)}static newFoundDocument(e,t,i,r){return new Zi(e,1,t,kt.min(),i,r,0)}static newNoDocument(e,t){return new Zi(e,2,t,kt.min(),kt.min(),uo.empty(),0)}static newUnknownDocument(e,t){return new Zi(e,3,t,kt.min(),kt.min(),uo.empty(),2)}convertToFoundDocument(e,t){return!this.createTime.isEqual(kt.min())||this.documentType!==2&&this.documentType!==0||(this.createTime=e),this.version=e,this.documentType=1,this.data=t,this.documentState=0,this}convertToNoDocument(e){return this.version=e,this.documentType=2,this.data=uo.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=uo.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=kt.min(),this}setReadTime(e){return this.readTime=e,this}get hasLocalMutations(){return this.documentState===1}get hasCommittedMutations(){return this.documentState===2}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return this.documentType!==0}isFoundDocument(){return this.documentType===1}isNoDocument(){return this.documentType===2}isUnknownDocument(){return this.documentType===3}isEqual(e){return e instanceof Zi&&this.key.isEqual(e.key)&&this.version.isEqual(e.version)&&this.documentType===e.documentType&&this.documentState===e.documentState&&this.data.isEqual(e.data)}mutableCopy(){return new Zi(this.key,this.documentType,this.version,this.readTime,this.createTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class _0{constructor(e,t){this.position=e,this.inclusive=t}}function qI(n,e,t){let i=0;for(let r=0;r":return e>0;case">=":return e>=0;default:return Wt()}}isInequality(){return["<","<=",">",">=","!=","not-in"].indexOf(this.op)>=0}getFlattenedFilters(){return[this]}getFilters(){return[this]}}class To extends hU{constructor(e,t){super(),this.filters=e,this.op=t,this.ae=null}static create(e,t){return new To(e,t)}matches(e){return dU(this)?this.filters.find(t=>!t.matches(e))===void 0:this.filters.find(t=>t.matches(e))!==void 0}getFlattenedFilters(){return this.ae!==null||(this.ae=this.filters.reduce((e,t)=>e.concat(t.getFlattenedFilters()),[])),this.ae}getFilters(){return Object.assign([],this.filters)}}function dU(n){return n.op==="and"}function fU(n){return pX(n)&&dU(n)}function pX(n){for(const e of n.filters)if(e instanceof To)return!1;return!0}function JE(n){if(n instanceof gi)return n.field.canonicalString()+n.op.toString()+cd(n.value);if(fU(n))return n.filters.map(e=>JE(e)).join(",");{const e=n.filters.map(t=>JE(t)).join(",");return`${n.op}(${e})`}}function pU(n,e){return n instanceof gi?function(i,r){return r instanceof gi&&i.op===r.op&&i.field.isEqual(r.field)&&Eo(i.value,r.value)}(n,e):n instanceof To?function(i,r){return r instanceof To&&i.op===r.op&&i.filters.length===r.filters.length?i.filters.reduce((s,o,a)=>s&&pU(o,r.filters[a]),!0):!1}(n,e):void Wt()}function mU(n){return n instanceof gi?function(t){return`${t.field.canonicalString()} ${t.op} ${cd(t.value)}`}(n):n instanceof To?function(t){return t.op.toString()+" {"+t.getFilters().map(mU).join(" ,")+"}"}(n):"Filter"}class mX extends gi{constructor(e,t,i){super(e,t,i),this.key=Pt.fromName(i.referenceValue)}matches(e){const t=Pt.comparator(e.key,this.key);return this.matchesComparison(t)}}class gX extends gi{constructor(e,t){super(e,"in",t),this.keys=gU("in",t)}matches(e){return this.keys.some(t=>t.isEqual(e.key))}}class yX extends gi{constructor(e,t){super(e,"not-in",t),this.keys=gU("not-in",t)}matches(e){return!this.keys.some(t=>t.isEqual(e.key))}}function gU(n,e){var t;return(((t=e.arrayValue)===null||t===void 0?void 0:t.values)||[]).map(i=>Pt.fromName(i.referenceValue))}class vX extends gi{constructor(e,t){super(e,"array-contains",t)}matches(e){const t=e.data.field(this.field);return pM(t)&&Qp(t.arrayValue,this.value)}}class _X extends gi{constructor(e,t){super(e,"in",t)}matches(e){const t=e.data.field(this.field);return t!==null&&Qp(this.value.arrayValue,t)}}class xX extends gi{constructor(e,t){super(e,"not-in",t)}matches(e){if(Qp(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;const t=e.data.field(this.field);return t!==null&&!Qp(this.value.arrayValue,t)}}class SX extends gi{constructor(e,t){super(e,"array-contains-any",t)}matches(e){const t=e.data.field(this.field);return!(!pM(t)||!t.arrayValue.values)&&t.arrayValue.values.some(i=>Qp(this.value.arrayValue,i))}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class wX{constructor(e,t=null,i=[],r=[],s=null,o=null,a=null){this.path=e,this.collectionGroup=t,this.orderBy=i,this.filters=r,this.limit=s,this.startAt=o,this.endAt=a,this.ue=null}}function YI(n,e=null,t=[],i=[],r=null,s=null,o=null){return new wX(n,e,t,i,r,s,o)}function mM(n){const e=en(n);if(e.ue===null){let t=e.path.canonicalString();e.collectionGroup!==null&&(t+="|cg:"+e.collectionGroup),t+="|f:",t+=e.filters.map(i=>JE(i)).join(","),t+="|ob:",t+=e.orderBy.map(i=>function(s){return s.field.canonicalString()+s.dir}(i)).join(","),q_(e.limit)||(t+="|l:",t+=e.limit),e.startAt&&(t+="|lb:",t+=e.startAt.inclusive?"b:":"a:",t+=e.startAt.position.map(i=>cd(i)).join(",")),e.endAt&&(t+="|ub:",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map(i=>cd(i)).join(",")),e.ue=t}return e.ue}function gM(n,e){if(n.limit!==e.limit||n.orderBy.length!==e.orderBy.length)return!1;for(let t=0;t0?e.explicitOrderBy[e.explicitOrderBy.length-1].dir:"asc";(function(o){let a=new Ni(pr.comparator);return o.filters.forEach(l=>{l.getFlattenedFilters().forEach(c=>{c.isInequality()&&(a=a.add(c.field))})}),a})(e).forEach(s=>{t.has(s.canonicalString())||s.isKeyField()||e.ce.push(new x0(s,i))}),t.has(pr.keyField().canonicalString())||e.ce.push(new x0(pr.keyField(),i))}return e.ce}function yo(n){const e=en(n);return e.le||(e.le=AX(e,hp(n))),e.le}function AX(n,e){if(n.limitType==="F")return YI(n.path,n.collectionGroup,e,n.filters,n.limit,n.startAt,n.endAt);{e=e.map(r=>{const s=r.dir==="desc"?"asc":"desc";return new x0(r.field,s)});const t=n.endAt?new _0(n.endAt.position,n.endAt.inclusive):null,i=n.startAt?new _0(n.startAt.position,n.startAt.inclusive):null;return YI(n.path,n.collectionGroup,e,n.filters,n.limit,t,i)}}function eT(n,e,t){return new Y_(n.path,n.collectionGroup,n.explicitOrderBy.slice(),n.filters.slice(),e,t,n.startAt,n.endAt)}function K_(n,e){return gM(yo(n),yo(e))&&n.limitType===e.limitType}function vU(n){return`${mM(yo(n))}|lt:${n.limitType}`}function lh(n){return`Query(target=${function(t){let i=t.path.canonicalString();return t.collectionGroup!==null&&(i+=" collectionGroup="+t.collectionGroup),t.filters.length>0&&(i+=`, filters: [${t.filters.map(r=>mU(r)).join(", ")}]`),q_(t.limit)||(i+=", limit: "+t.limit),t.orderBy.length>0&&(i+=`, orderBy: [${t.orderBy.map(r=>function(o){return`${o.field.canonicalString()} (${o.dir})`}(r)).join(", ")}]`),t.startAt&&(i+=", startAt: ",i+=t.startAt.inclusive?"b:":"a:",i+=t.startAt.position.map(r=>cd(r)).join(",")),t.endAt&&(i+=", endAt: ",i+=t.endAt.inclusive?"a:":"b:",i+=t.endAt.position.map(r=>cd(r)).join(",")),`Target(${i})`}(yo(n))}; limitType=${n.limitType})`}function Q_(n,e){return e.isFoundDocument()&&function(i,r){const s=r.key.path;return i.collectionGroup!==null?r.key.hasCollectionId(i.collectionGroup)&&i.path.isPrefixOf(s):Pt.isDocumentKey(i.path)?i.path.isEqual(s):i.path.isImmediateParentOf(s)}(n,e)&&function(i,r){for(const s of hp(i))if(!s.field.isKeyField()&&r.data.field(s.field)===null)return!1;return!0}(n,e)&&function(i,r){for(const s of i.filters)if(!s.matches(r))return!1;return!0}(n,e)&&function(i,r){return!(i.startAt&&!function(o,a,l){const c=qI(o,a,l);return o.inclusive?c<=0:c<0}(i.startAt,hp(i),r)||i.endAt&&!function(o,a,l){const c=qI(o,a,l);return o.inclusive?c>=0:c>0}(i.endAt,hp(i),r))}(n,e)}function MX(n){return n.collectionGroup||(n.path.length%2==1?n.path.lastSegment():n.path.get(n.path.length-2))}function _U(n){return(e,t)=>{let i=!1;for(const r of hp(n)){const s=CX(r,e,t);if(s!==0)return s;i=i||r.field.isKeyField()}return 0}}function CX(n,e,t){const i=n.field.isKeyField()?Pt.comparator(e.key,t.key):function(s,o,a){const l=o.data.field(s),c=a.data.field(s);return l!==null&&c!==null?ld(l,c):Wt()}(n.field,e,t);switch(n.dir){case"asc":return i;case"desc":return-1*i;default:return Wt()}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Cd{constructor(e,t){this.mapKeyFn=e,this.equalsFn=t,this.inner={},this.innerSize=0}get(e){const t=this.mapKeyFn(e),i=this.inner[t];if(i!==void 0){for(const[r,s]of i)if(this.equalsFn(r,e))return s}}has(e){return this.get(e)!==void 0}set(e,t){const i=this.mapKeyFn(e),r=this.inner[i];if(r===void 0)return this.inner[i]=[[e,t]],void this.innerSize++;for(let s=0;s{for(const[r,s]of i)e(r,s)})}isEmpty(){return lX(this.inner)}size(){return this.innerSize}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const bX=new ri(Pt.comparator);function Pl(){return bX}const xU=new ri(Pt.comparator);function qf(...n){let e=xU;for(const t of n)e=e.insert(t.key,t);return e}function PX(n){let e=xU;return n.forEach((t,i)=>e=e.insert(t,i.overlayedDocument)),e}function Oc(){return dp()}function SU(){return dp()}function dp(){return new Cd(n=>n.toString(),(n,e)=>n.isEqual(e))}const RX=new Ni(Pt.comparator);function rn(...n){let e=RX;for(const t of n)e=e.add(t);return e}const IX=new Ni(hn);function LX(){return IX}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function NX(n,e){if(n.useProto3Json){if(isNaN(e))return{doubleValue:"NaN"};if(e===1/0)return{doubleValue:"Infinity"};if(e===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:YE(e)?"-0":e}}function DX(n){return{integerValue:""+n}}/** + * @license + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class J_{constructor(){this._=void 0}}function kX(n,e,t){return n instanceof tT?function(r,s){const o={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:r.seconds,nanos:r.nanoseconds}}}};return s&&dM(s)&&(s=fM(s)),s&&(o.fields.__previous_value__=s),{mapValue:o}}(t,e):n instanceof S0?wU(n,e):n instanceof w0?EU(n,e):function(r,s){const o=UX(r,s),a=QI(o)+QI(r.Pe);return QE(o)&&QE(r.Pe)?DX(a):NX(r.serializer,a)}(n,e)}function OX(n,e,t){return n instanceof S0?wU(n,e):n instanceof w0?EU(n,e):t}function UX(n,e){return n instanceof nT?function(i){return QE(i)||function(s){return!!s&&"doubleValue"in s}(i)}(e)?e:{integerValue:0}:null}class tT extends J_{}class S0 extends J_{constructor(e){super(),this.elements=e}}function wU(n,e){const t=TU(e);for(const i of n.elements)t.some(r=>Eo(r,i))||t.push(i);return{arrayValue:{values:t}}}class w0 extends J_{constructor(e){super(),this.elements=e}}function EU(n,e){let t=TU(e);for(const i of n.elements)t=t.filter(r=>!Eo(r,i));return{arrayValue:{values:t}}}class nT extends J_{constructor(e,t){super(),this.serializer=e,this.Pe=t}}function QI(n){return ei(n.integerValue||n.doubleValue)}function TU(n){return pM(n)&&n.arrayValue.values?n.arrayValue.values.slice():[]}function FX(n,e){return n.field.isEqual(e.field)&&function(i,r){return i instanceof S0&&r instanceof S0||i instanceof w0&&r instanceof w0?ad(i.elements,r.elements,Eo):i instanceof nT&&r instanceof nT?Eo(i.Pe,r.Pe):i instanceof tT&&r instanceof tT}(n.transform,e.transform)}class Xc{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new Xc}static exists(e){return new Xc(void 0,e)}static updateTime(e){return new Xc(e)}get isNone(){return this.updateTime===void 0&&this.exists===void 0}isEqual(e){return this.exists===e.exists&&(this.updateTime?!!e.updateTime&&this.updateTime.isEqual(e.updateTime):!e.updateTime)}}function Tv(n,e){return n.updateTime!==void 0?e.isFoundDocument()&&e.version.isEqual(n.updateTime):n.exists===void 0||n.exists===e.isFoundDocument()}class yM{}function AU(n,e){if(!n.hasLocalMutations||e&&e.fields.length===0)return null;if(e===null)return n.isNoDocument()?new BX(n.key,Xc.none()):new vM(n.key,n.data,Xc.none());{const t=n.data,i=uo.empty();let r=new Ni(pr.comparator);for(let s of e.fields)if(!r.has(s)){let o=t.field(s);o===null&&s.length>1&&(s=s.popLast(),o=t.field(s)),o===null?i.delete(s):i.set(s,o),r=r.add(s)}return new Z_(n.key,i,new ol(r.toArray()),Xc.none())}}function VX(n,e,t){n instanceof vM?function(r,s,o){const a=r.value.clone(),l=ZI(r.fieldTransforms,s,o.transformResults);a.setAll(l),s.convertToFoundDocument(o.version,a).setHasCommittedMutations()}(n,e,t):n instanceof Z_?function(r,s,o){if(!Tv(r.precondition,s))return void s.convertToUnknownDocument(o.version);const a=ZI(r.fieldTransforms,s,o.transformResults),l=s.data;l.setAll(MU(r)),l.setAll(a),s.convertToFoundDocument(o.version,l).setHasCommittedMutations()}(n,e,t):function(r,s,o){s.convertToNoDocument(o.version).setHasCommittedMutations()}(0,e,t)}function fp(n,e,t,i){return n instanceof vM?function(s,o,a,l){if(!Tv(s.precondition,o))return a;const c=s.value.clone(),d=e2(s.fieldTransforms,l,o);return c.setAll(d),o.convertToFoundDocument(o.version,c).setHasLocalMutations(),null}(n,e,t,i):n instanceof Z_?function(s,o,a,l){if(!Tv(s.precondition,o))return a;const c=e2(s.fieldTransforms,l,o),d=o.data;return d.setAll(MU(s)),d.setAll(c),o.convertToFoundDocument(o.version,d).setHasLocalMutations(),a===null?null:a.unionWith(s.fieldMask.fields).unionWith(s.fieldTransforms.map(f=>f.field))}(n,e,t,i):function(s,o,a){return Tv(s.precondition,o)?(o.convertToNoDocument(o.version).setHasLocalMutations(),null):a}(n,e,t)}function JI(n,e){return n.type===e.type&&!!n.key.isEqual(e.key)&&!!n.precondition.isEqual(e.precondition)&&!!function(i,r){return i===void 0&&r===void 0||!(!i||!r)&&ad(i,r,(s,o)=>FX(s,o))}(n.fieldTransforms,e.fieldTransforms)&&(n.type===0?n.value.isEqual(e.value):n.type!==1||n.data.isEqual(e.data)&&n.fieldMask.isEqual(e.fieldMask))}class vM extends yM{constructor(e,t,i,r=[]){super(),this.key=e,this.value=t,this.precondition=i,this.fieldTransforms=r,this.type=0}getFieldMask(){return null}}class Z_ extends yM{constructor(e,t,i,r,s=[]){super(),this.key=e,this.data=t,this.fieldMask=i,this.precondition=r,this.fieldTransforms=s,this.type=1}getFieldMask(){return this.fieldMask}}function MU(n){const e=new Map;return n.fieldMask.fields.forEach(t=>{if(!t.isEmpty()){const i=n.data.field(t);e.set(t,i)}}),e}function ZI(n,e,t){const i=new Map;Kn(n.length===t.length);for(let r=0;r{const s=e.get(r.key),o=s.overlayedDocument;let a=this.applyToLocalView(o,s.mutatedFields);a=t.has(r.key)?null:a;const l=AU(o,a);l!==null&&i.set(r.key,l),o.isValidDocument()||o.convertToNoDocument(kt.min())}),i}keys(){return this.mutations.reduce((e,t)=>e.add(t.key),rn())}isEqual(e){return this.batchId===e.batchId&&ad(this.mutations,e.mutations,(t,i)=>JI(t,i))&&ad(this.baseMutations,e.baseMutations,(t,i)=>JI(t,i))}}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class HX{constructor(e,t){this.largestBatchId=e,this.mutation=t}getKey(){return this.mutation.key}isEqual(e){return e!==null&&this.mutation===e.mutation}toString(){return`Overlay{ + largestBatchId: ${this.largestBatchId}, + mutation: ${this.mutation.toString()} + }`}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class GX{constructor(e,t){this.count=e,this.unchangedNames=t}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */var ui,Jt;function CU(n){if(n===void 0)return ha("GRPC error has no .code"),qe.UNKNOWN;switch(n){case ui.OK:return qe.OK;case ui.CANCELLED:return qe.CANCELLED;case ui.UNKNOWN:return qe.UNKNOWN;case ui.DEADLINE_EXCEEDED:return qe.DEADLINE_EXCEEDED;case ui.RESOURCE_EXHAUSTED:return qe.RESOURCE_EXHAUSTED;case ui.INTERNAL:return qe.INTERNAL;case ui.UNAVAILABLE:return qe.UNAVAILABLE;case ui.UNAUTHENTICATED:return qe.UNAUTHENTICATED;case ui.INVALID_ARGUMENT:return qe.INVALID_ARGUMENT;case ui.NOT_FOUND:return qe.NOT_FOUND;case ui.ALREADY_EXISTS:return qe.ALREADY_EXISTS;case ui.PERMISSION_DENIED:return qe.PERMISSION_DENIED;case ui.FAILED_PRECONDITION:return qe.FAILED_PRECONDITION;case ui.ABORTED:return qe.ABORTED;case ui.OUT_OF_RANGE:return qe.OUT_OF_RANGE;case ui.UNIMPLEMENTED:return qe.UNIMPLEMENTED;case ui.DATA_LOSS:return qe.DATA_LOSS;default:return Wt()}}(Jt=ui||(ui={}))[Jt.OK=0]="OK",Jt[Jt.CANCELLED=1]="CANCELLED",Jt[Jt.UNKNOWN=2]="UNKNOWN",Jt[Jt.INVALID_ARGUMENT=3]="INVALID_ARGUMENT",Jt[Jt.DEADLINE_EXCEEDED=4]="DEADLINE_EXCEEDED",Jt[Jt.NOT_FOUND=5]="NOT_FOUND",Jt[Jt.ALREADY_EXISTS=6]="ALREADY_EXISTS",Jt[Jt.PERMISSION_DENIED=7]="PERMISSION_DENIED",Jt[Jt.UNAUTHENTICATED=16]="UNAUTHENTICATED",Jt[Jt.RESOURCE_EXHAUSTED=8]="RESOURCE_EXHAUSTED",Jt[Jt.FAILED_PRECONDITION=9]="FAILED_PRECONDITION",Jt[Jt.ABORTED=10]="ABORTED",Jt[Jt.OUT_OF_RANGE=11]="OUT_OF_RANGE",Jt[Jt.UNIMPLEMENTED=12]="UNIMPLEMENTED",Jt[Jt.INTERNAL=13]="INTERNAL",Jt[Jt.UNAVAILABLE=14]="UNAVAILABLE",Jt[Jt.DATA_LOSS=15]="DATA_LOSS";/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function WX(){return new TextEncoder}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const jX=new Wc([4294967295,4294967295],0);function t2(n){const e=WX().encode(n),t=new iU;return t.update(e),new Uint8Array(t.digest())}function n2(n){const e=new DataView(n.buffer),t=e.getUint32(0,!0),i=e.getUint32(4,!0),r=e.getUint32(8,!0),s=e.getUint32(12,!0);return[new Wc([t,i],0),new Wc([r,s],0)]}class _M{constructor(e,t,i){if(this.bitmap=e,this.padding=t,this.hashCount=i,t<0||t>=8)throw new $f(`Invalid padding: ${t}`);if(i<0)throw new $f(`Invalid hash count: ${i}`);if(e.length>0&&this.hashCount===0)throw new $f(`Invalid hash count: ${i}`);if(e.length===0&&t!==0)throw new $f(`Invalid padding when bitmap length is 0: ${t}`);this.Ie=8*e.length-t,this.Te=Wc.fromNumber(this.Ie)}Ee(e,t,i){let r=e.add(t.multiply(Wc.fromNumber(i)));return r.compare(jX)===1&&(r=new Wc([r.getBits(0),r.getBits(1)],0)),r.modulo(this.Te).toNumber()}de(e){return(this.bitmap[Math.floor(e/8)]&1<o.insert(a)),o}insert(e){if(this.Ie===0)return;const t=t2(e),[i,r]=n2(t);for(let s=0;s0&&(this.we=!0,this.pe=e)}ve(){let e=rn(),t=rn(),i=rn();return this.ge.forEach((r,s)=>{switch(s){case 0:e=e.add(r);break;case 2:t=t.add(r);break;case 1:i=i.add(r);break;default:Wt()}}),new Om(this.pe,this.ye,e,t,i)}Ce(){this.we=!1,this.ge=s2()}Fe(e,t){this.we=!0,this.ge=this.ge.insert(e,t)}Me(e){this.we=!0,this.ge=this.ge.remove(e)}xe(){this.fe+=1}Oe(){this.fe-=1,Kn(this.fe>=0)}Ne(){this.we=!0,this.ye=!0}}class XX{constructor(e){this.Le=e,this.Be=new Map,this.ke=Pl(),this.qe=r2(),this.Qe=new ri(hn)}Ke(e){for(const t of e.Re)e.Ve&&e.Ve.isFoundDocument()?this.$e(t,e.Ve):this.Ue(t,e.key,e.Ve);for(const t of e.removedTargetIds)this.Ue(t,e.key,e.Ve)}We(e){this.forEachTarget(e,t=>{const i=this.Ge(t);switch(e.state){case 0:this.ze(t)&&i.De(e.resumeToken);break;case 1:i.Oe(),i.Se||i.Ce(),i.De(e.resumeToken);break;case 2:i.Oe(),i.Se||this.removeTarget(t);break;case 3:this.ze(t)&&(i.Ne(),i.De(e.resumeToken));break;case 4:this.ze(t)&&(this.je(t),i.De(e.resumeToken));break;default:Wt()}})}forEachTarget(e,t){e.targetIds.length>0?e.targetIds.forEach(t):this.Be.forEach((i,r)=>{this.ze(r)&&t(r)})}He(e){const t=e.targetId,i=e.me.count,r=this.Je(t);if(r){const s=r.target;if(ZE(s))if(i===0){const o=new Pt(s.path);this.Ue(t,o,Zi.newNoDocument(o,kt.min()))}else Kn(i===1);else{const o=this.Ye(t);if(o!==i){const a=this.Ze(e),l=a?this.Xe(a,e,o):1;if(l!==0){this.je(t);const c=l===2?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch";this.Qe=this.Qe.insert(t,c)}}}}}Ze(e){const t=e.me.unchangedNames;if(!t||!t.bits)return null;const{bits:{bitmap:i="",padding:r=0},hashCount:s=0}=t;let o,a;try{o=su(i).toUint8Array()}catch(l){if(l instanceof uU)return od("Decoding the base64 bloom filter in existence filter failed ("+l.message+"); ignoring the bloom filter and falling back to full re-query."),null;throw l}try{a=new _M(o,r,s)}catch(l){return od(l instanceof $f?"BloomFilter error: ":"Applying bloom filter failed: ",l),null}return a.Ie===0?null:a}Xe(e,t,i){return t.me.count===i-this.nt(e,t.targetId)?0:2}nt(e,t){const i=this.Le.getRemoteKeysForTarget(t);let r=0;return i.forEach(s=>{const o=this.Le.tt(),a=`projects/${o.projectId}/databases/${o.database}/documents/${s.path.canonicalString()}`;e.mightContain(a)||(this.Ue(t,s,null),r++)}),r}rt(e){const t=new Map;this.Be.forEach((s,o)=>{const a=this.Je(o);if(a){if(s.current&&ZE(a.target)){const l=new Pt(a.target.path);this.ke.get(l)!==null||this.it(o,l)||this.Ue(o,l,Zi.newNoDocument(l,e))}s.be&&(t.set(o,s.ve()),s.Ce())}});let i=rn();this.qe.forEach((s,o)=>{let a=!0;o.forEachWhile(l=>{const c=this.Je(l);return!c||c.purpose==="TargetPurposeLimboResolution"||(a=!1,!1)}),a&&(i=i.add(s))}),this.ke.forEach((s,o)=>o.setReadTime(e));const r=new ex(e,t,this.Qe,this.ke,i);return this.ke=Pl(),this.qe=r2(),this.Qe=new ri(hn),r}$e(e,t){if(!this.ze(e))return;const i=this.it(e,t.key)?2:0;this.Ge(e).Fe(t.key,i),this.ke=this.ke.insert(t.key,t),this.qe=this.qe.insert(t.key,this.st(t.key).add(e))}Ue(e,t,i){if(!this.ze(e))return;const r=this.Ge(e);this.it(e,t)?r.Fe(t,1):r.Me(t),this.qe=this.qe.insert(t,this.st(t).delete(e)),i&&(this.ke=this.ke.insert(t,i))}removeTarget(e){this.Be.delete(e)}Ye(e){const t=this.Ge(e).ve();return this.Le.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}xe(e){this.Ge(e).xe()}Ge(e){let t=this.Be.get(e);return t||(t=new i2,this.Be.set(e,t)),t}st(e){let t=this.qe.get(e);return t||(t=new Ni(hn),this.qe=this.qe.insert(e,t)),t}ze(e){const t=this.Je(e)!==null;return t||pt("WatchChangeAggregator","Detected inactive target",e),t}Je(e){const t=this.Be.get(e);return t&&t.Se?null:this.Le.ot(e)}je(e){this.Be.set(e,new i2),this.Le.getRemoteKeysForTarget(e).forEach(t=>{this.Ue(e,t,null)})}it(e,t){return this.Le.getRemoteKeysForTarget(e).has(t)}}function r2(){return new ri(Pt.comparator)}function s2(){return new ri(Pt.comparator)}const qX=(()=>({asc:"ASCENDING",desc:"DESCENDING"}))(),$X=(()=>({"<":"LESS_THAN","<=":"LESS_THAN_OR_EQUAL",">":"GREATER_THAN",">=":"GREATER_THAN_OR_EQUAL","==":"EQUAL","!=":"NOT_EQUAL","array-contains":"ARRAY_CONTAINS",in:"IN","not-in":"NOT_IN","array-contains-any":"ARRAY_CONTAINS_ANY"}))(),YX=(()=>({and:"AND",or:"OR"}))();class KX{constructor(e,t){this.databaseId=e,this.useProto3Json=t}}function iT(n,e){return n.useProto3Json||q_(e)?e:{value:e}}function QX(n,e){return n.useProto3Json?`${new Date(1e3*e.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+e.nanoseconds).slice(-9)}Z`:{seconds:""+e.seconds,nanos:e.nanoseconds}}function JX(n,e){return n.useProto3Json?e.toBase64():e.toUint8Array()}function Gh(n){return Kn(!!n),kt.fromTimestamp(function(t){const i=bl(t);return new Vr(i.seconds,i.nanos)}(n))}function ZX(n,e){return rT(n,e).canonicalString()}function rT(n,e){const t=function(r){return new qn(["projects",r.projectId,"databases",r.database])}(n).child("documents");return e===void 0?t:t.child(e)}function RU(n){const e=qn.fromString(n);return Kn(kU(e)),e}function Mw(n,e){const t=RU(e);if(t.get(1)!==n.databaseId.projectId)throw new Tt(qe.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+t.get(1)+" vs "+n.databaseId.projectId);if(t.get(3)!==n.databaseId.database)throw new Tt(qe.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+t.get(3)+" vs "+n.databaseId.database);return new Pt(LU(t))}function IU(n,e){return ZX(n.databaseId,e)}function eq(n){const e=RU(n);return e.length===4?qn.emptyPath():LU(e)}function o2(n){return new qn(["projects",n.databaseId.projectId,"databases",n.databaseId.database]).canonicalString()}function LU(n){return Kn(n.length>4&&n.get(4)==="documents"),n.popFirst(5)}function tq(n,e){let t;if("targetChange"in e){e.targetChange;const i=function(c){return c==="NO_CHANGE"?0:c==="ADD"?1:c==="REMOVE"?2:c==="CURRENT"?3:c==="RESET"?4:Wt()}(e.targetChange.targetChangeType||"NO_CHANGE"),r=e.targetChange.targetIds||[],s=function(c,d){return c.useProto3Json?(Kn(d===void 0||typeof d=="string"),ki.fromBase64String(d||"")):(Kn(d===void 0||d instanceof Buffer||d instanceof Uint8Array),ki.fromUint8Array(d||new Uint8Array))}(n,e.targetChange.resumeToken),o=e.targetChange.cause,a=o&&function(c){const d=c.code===void 0?qe.UNKNOWN:CU(c.code);return new Tt(d,c.message||"")}(o);t=new PU(i,r,s,a||null)}else if("documentChange"in e){e.documentChange;const i=e.documentChange;i.document,i.document.name,i.document.updateTime;const r=Mw(n,i.document.name),s=Gh(i.document.updateTime),o=i.document.createTime?Gh(i.document.createTime):kt.min(),a=new uo({mapValue:{fields:i.document.fields}}),l=Zi.newFoundDocument(r,s,o,a),c=i.targetIds||[],d=i.removedTargetIds||[];t=new Av(c,d,l.key,l)}else if("documentDelete"in e){e.documentDelete;const i=e.documentDelete;i.document;const r=Mw(n,i.document),s=i.readTime?Gh(i.readTime):kt.min(),o=Zi.newNoDocument(r,s),a=i.removedTargetIds||[];t=new Av([],a,o.key,o)}else if("documentRemove"in e){e.documentRemove;const i=e.documentRemove;i.document;const r=Mw(n,i.document),s=i.removedTargetIds||[];t=new Av([],s,r,null)}else{if(!("filter"in e))return Wt();{e.filter;const i=e.filter;i.targetId;const{count:r=0,unchangedNames:s}=i,o=new GX(r,s),a=i.targetId;t=new bU(a,o)}}return t}function nq(n,e){return{documents:[IU(n,e.path)]}}function iq(n,e){const t={structuredQuery:{}},i=e.path;let r;e.collectionGroup!==null?(r=i,t.structuredQuery.from=[{collectionId:e.collectionGroup,allDescendants:!0}]):(r=i.popLast(),t.structuredQuery.from=[{collectionId:i.lastSegment()}]),t.parent=IU(n,r);const s=function(c){if(c.length!==0)return DU(To.create(c,"and"))}(e.filters);s&&(t.structuredQuery.where=s);const o=function(c){if(c.length!==0)return c.map(d=>function(p){return{field:ch(p.field),direction:oq(p.dir)}}(d))}(e.orderBy);o&&(t.structuredQuery.orderBy=o);const a=iT(n,e.limit);return a!==null&&(t.structuredQuery.limit=a),e.startAt&&(t.structuredQuery.startAt=function(c){return{before:c.inclusive,values:c.position}}(e.startAt)),e.endAt&&(t.structuredQuery.endAt=function(c){return{before:!c.inclusive,values:c.position}}(e.endAt)),{_t:t,parent:r}}function rq(n){let e=eq(n.parent);const t=n.structuredQuery,i=t.from?t.from.length:0;let r=null;if(i>0){Kn(i===1);const d=t.from[0];d.allDescendants?r=d.collectionId:e=e.child(d.collectionId)}let s=[];t.where&&(s=function(f){const p=NU(f);return p instanceof To&&fU(p)?p.getFilters():[p]}(t.where));let o=[];t.orderBy&&(o=function(f){return f.map(p=>function(_){return new x0(uh(_.field),function(x){switch(x){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(_.direction))}(p))}(t.orderBy));let a=null;t.limit&&(a=function(f){let p;return p=typeof f=="object"?f.value:f,q_(p)?null:p}(t.limit));let l=null;t.startAt&&(l=function(f){const p=!!f.before,m=f.values||[];return new _0(m,p)}(t.startAt));let c=null;return t.endAt&&(c=function(f){const p=!f.before,m=f.values||[];return new _0(m,p)}(t.endAt)),EX(e,r,o,s,a,"F",l,c)}function sq(n,e){const t=function(r){switch(r){case"TargetPurposeListen":return null;case"TargetPurposeExistenceFilterMismatch":return"existence-filter-mismatch";case"TargetPurposeExistenceFilterMismatchBloom":return"existence-filter-mismatch-bloom";case"TargetPurposeLimboResolution":return"limbo-document";default:return Wt()}}(e.purpose);return t==null?null:{"goog-listen-tags":t}}function NU(n){return n.unaryFilter!==void 0?function(t){switch(t.unaryFilter.op){case"IS_NAN":const i=uh(t.unaryFilter.field);return gi.create(i,"==",{doubleValue:NaN});case"IS_NULL":const r=uh(t.unaryFilter.field);return gi.create(r,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const s=uh(t.unaryFilter.field);return gi.create(s,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const o=uh(t.unaryFilter.field);return gi.create(o,"!=",{nullValue:"NULL_VALUE"});default:return Wt()}}(n):n.fieldFilter!==void 0?function(t){return gi.create(uh(t.fieldFilter.field),function(r){switch(r){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";default:return Wt()}}(t.fieldFilter.op),t.fieldFilter.value)}(n):n.compositeFilter!==void 0?function(t){return To.create(t.compositeFilter.filters.map(i=>NU(i)),function(r){switch(r){case"AND":return"and";case"OR":return"or";default:return Wt()}}(t.compositeFilter.op))}(n):Wt()}function oq(n){return qX[n]}function aq(n){return $X[n]}function lq(n){return YX[n]}function ch(n){return{fieldPath:n.canonicalString()}}function uh(n){return pr.fromServerFormat(n.fieldPath)}function DU(n){return n instanceof gi?function(t){if(t.op==="=="){if(XI(t.value))return{unaryFilter:{field:ch(t.field),op:"IS_NAN"}};if(jI(t.value))return{unaryFilter:{field:ch(t.field),op:"IS_NULL"}}}else if(t.op==="!="){if(XI(t.value))return{unaryFilter:{field:ch(t.field),op:"IS_NOT_NAN"}};if(jI(t.value))return{unaryFilter:{field:ch(t.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:ch(t.field),op:aq(t.op),value:t.value}}}(n):n instanceof To?function(t){const i=t.getFilters().map(r=>DU(r));return i.length===1?i[0]:{compositeFilter:{op:lq(t.op),filters:i}}}(n):Wt()}function kU(n){return n.length>=4&&n.get(0)==="projects"&&n.get(2)==="databases"}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class al{constructor(e,t,i,r,s=kt.min(),o=kt.min(),a=ki.EMPTY_BYTE_STRING,l=null){this.target=e,this.targetId=t,this.purpose=i,this.sequenceNumber=r,this.snapshotVersion=s,this.lastLimboFreeSnapshotVersion=o,this.resumeToken=a,this.expectedCount=l}withSequenceNumber(e){return new al(this.target,this.targetId,this.purpose,e,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(e,t){return new al(this.target,this.targetId,this.purpose,this.sequenceNumber,t,this.lastLimboFreeSnapshotVersion,e,null)}withExpectedCount(e){return new al(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,e)}withLastLimboFreeSnapshotVersion(e){return new al(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,e,this.resumeToken,this.expectedCount)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class cq{constructor(e){this.ct=e}}function uq(n){const e=rq({parent:n.parent,structuredQuery:n.structuredQuery});return n.limitType==="LAST"?eT(e,e.limit,"L"):e}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class hq{constructor(){this.un=new dq}addToCollectionParentIndex(e,t){return this.un.add(t),Ie.resolve()}getCollectionParents(e,t){return Ie.resolve(this.un.getEntries(t))}addFieldIndex(e,t){return Ie.resolve()}deleteFieldIndex(e,t){return Ie.resolve()}deleteAllFieldIndexes(e){return Ie.resolve()}createTargetIndexes(e,t){return Ie.resolve()}getDocumentsMatchingTarget(e,t){return Ie.resolve(null)}getIndexType(e,t){return Ie.resolve(0)}getFieldIndexes(e,t){return Ie.resolve([])}getNextCollectionGroupToUpdate(e){return Ie.resolve(null)}getMinOffset(e,t){return Ie.resolve(Cl.min())}getMinOffsetFromCollectionGroup(e,t){return Ie.resolve(Cl.min())}updateCollectionGroup(e,t,i){return Ie.resolve()}updateIndexEntries(e,t){return Ie.resolve()}}class dq{constructor(){this.index={}}add(e){const t=e.lastSegment(),i=e.popLast(),r=this.index[t]||new Ni(qn.comparator),s=!r.has(i);return this.index[t]=r.add(i),s}has(e){const t=e.lastSegment(),i=e.popLast(),r=this.index[t];return r&&r.has(i)}getEntries(e){return(this.index[e]||new Ni(qn.comparator)).toArray()}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ud{constructor(e){this.Ln=e}next(){return this.Ln+=2,this.Ln}static Bn(){return new ud(0)}static kn(){return new ud(-1)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class fq{constructor(){this.changes=new Cd(e=>e.toString(),(e,t)=>e.isEqual(t)),this.changesApplied=!1}addEntry(e){this.assertNotApplied(),this.changes.set(e.key,e)}removeEntry(e,t){this.assertNotApplied(),this.changes.set(e,Zi.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();const i=this.changes.get(t);return i!==void 0?Ie.resolve(i):this.getFromCache(e,t)}getEntries(e,t){return this.getAllFromCache(e,t)}apply(e){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(e)}assertNotApplied(){}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *//** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class pq{constructor(e,t){this.overlayedDocument=e,this.mutatedFields=t}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class mq{constructor(e,t,i,r){this.remoteDocumentCache=e,this.mutationQueue=t,this.documentOverlayCache=i,this.indexManager=r}getDocument(e,t){let i=null;return this.documentOverlayCache.getOverlay(e,t).next(r=>(i=r,this.remoteDocumentCache.getEntry(e,t))).next(r=>(i!==null&&fp(i.mutation,r,ol.empty(),Vr.now()),r))}getDocuments(e,t){return this.remoteDocumentCache.getEntries(e,t).next(i=>this.getLocalViewOfDocuments(e,i,rn()).next(()=>i))}getLocalViewOfDocuments(e,t,i=rn()){const r=Oc();return this.populateOverlays(e,r,t).next(()=>this.computeViews(e,t,r,i).next(s=>{let o=qf();return s.forEach((a,l)=>{o=o.insert(a,l.overlayedDocument)}),o}))}getOverlayedDocuments(e,t){const i=Oc();return this.populateOverlays(e,i,t).next(()=>this.computeViews(e,t,i,rn()))}populateOverlays(e,t,i){const r=[];return i.forEach(s=>{t.has(s)||r.push(s)}),this.documentOverlayCache.getOverlays(e,r).next(s=>{s.forEach((o,a)=>{t.set(o,a)})})}computeViews(e,t,i,r){let s=Pl();const o=dp(),a=function(){return dp()}();return t.forEach((l,c)=>{const d=i.get(c.key);r.has(c.key)&&(d===void 0||d.mutation instanceof Z_)?s=s.insert(c.key,c):d!==void 0?(o.set(c.key,d.mutation.getFieldMask()),fp(d.mutation,c,d.mutation.getFieldMask(),Vr.now())):o.set(c.key,ol.empty())}),this.recalculateAndSaveOverlays(e,s).next(l=>(l.forEach((c,d)=>o.set(c,d)),t.forEach((c,d)=>{var f;return a.set(c,new pq(d,(f=o.get(c))!==null&&f!==void 0?f:null))}),a))}recalculateAndSaveOverlays(e,t){const i=dp();let r=new ri((o,a)=>o-a),s=rn();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(e,t).next(o=>{for(const a of o)a.keys().forEach(l=>{const c=t.get(l);if(c===null)return;let d=i.get(l)||ol.empty();d=a.applyToLocalView(c,d),i.set(l,d);const f=(r.get(a.batchId)||rn()).add(l);r=r.insert(a.batchId,f)})}).next(()=>{const o=[],a=r.getReverseIterator();for(;a.hasNext();){const l=a.getNext(),c=l.key,d=l.value,f=SU();d.forEach(p=>{if(!s.has(p)){const m=AU(t.get(p),i.get(p));m!==null&&f.set(p,m),s=s.add(p)}}),o.push(this.documentOverlayCache.saveOverlays(e,c,f))}return Ie.waitFor(o)}).next(()=>i)}recalculateAndSaveOverlaysForDocumentKeys(e,t){return this.remoteDocumentCache.getEntries(e,t).next(i=>this.recalculateAndSaveOverlays(e,i))}getDocumentsMatchingQuery(e,t,i,r){return function(o){return Pt.isDocumentKey(o.path)&&o.collectionGroup===null&&o.filters.length===0}(t)?this.getDocumentsMatchingDocumentQuery(e,t.path):TX(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,i,r):this.getDocumentsMatchingCollectionQuery(e,t,i,r)}getNextDocuments(e,t,i,r){return this.remoteDocumentCache.getAllFromCollectionGroup(e,t,i,r).next(s=>{const o=r-s.size>0?this.documentOverlayCache.getOverlaysForCollectionGroup(e,t,i.largestBatchId,r-s.size):Ie.resolve(Oc());let a=-1,l=s;return o.next(c=>Ie.forEach(c,(d,f)=>(a{l=l.insert(d,p)}))).next(()=>this.populateOverlays(e,c,s)).next(()=>this.computeViews(e,l,c,rn())).next(d=>({batchId:a,changes:PX(d)})))})}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new Pt(t)).next(i=>{let r=qf();return i.isFoundDocument()&&(r=r.insert(i.key,i)),r})}getDocumentsMatchingCollectionGroupQuery(e,t,i,r){const s=t.collectionGroup;let o=qf();return this.indexManager.getCollectionParents(e,s).next(a=>Ie.forEach(a,l=>{const c=function(f,p){return new Y_(p,null,f.explicitOrderBy.slice(),f.filters.slice(),f.limit,f.limitType,f.startAt,f.endAt)}(t,l.child(s));return this.getDocumentsMatchingCollectionQuery(e,c,i,r).next(d=>{d.forEach((f,p)=>{o=o.insert(f,p)})})}).next(()=>o))}getDocumentsMatchingCollectionQuery(e,t,i,r){let s;return this.documentOverlayCache.getOverlaysForCollection(e,t.path,i.largestBatchId).next(o=>(s=o,this.remoteDocumentCache.getDocumentsMatchingQuery(e,t,i,s,r))).next(o=>{s.forEach((l,c)=>{const d=c.getKey();o.get(d)===null&&(o=o.insert(d,Zi.newInvalidDocument(d)))});let a=qf();return o.forEach((l,c)=>{const d=s.get(l);d!==void 0&&fp(d.mutation,c,ol.empty(),Vr.now()),Q_(t,c)&&(a=a.insert(l,c))}),a})}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class gq{constructor(e){this.serializer=e,this.hr=new Map,this.Pr=new Map}getBundleMetadata(e,t){return Ie.resolve(this.hr.get(t))}saveBundleMetadata(e,t){return this.hr.set(t.id,function(r){return{id:r.id,version:r.version,createTime:Gh(r.createTime)}}(t)),Ie.resolve()}getNamedQuery(e,t){return Ie.resolve(this.Pr.get(t))}saveNamedQuery(e,t){return this.Pr.set(t.name,function(r){return{name:r.name,query:uq(r.bundledQuery),readTime:Gh(r.readTime)}}(t)),Ie.resolve()}}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class yq{constructor(){this.overlays=new ri(Pt.comparator),this.Ir=new Map}getOverlay(e,t){return Ie.resolve(this.overlays.get(t))}getOverlays(e,t){const i=Oc();return Ie.forEach(t,r=>this.getOverlay(e,r).next(s=>{s!==null&&i.set(r,s)})).next(()=>i)}saveOverlays(e,t,i){return i.forEach((r,s)=>{this.ht(e,t,s)}),Ie.resolve()}removeOverlaysForBatchId(e,t,i){const r=this.Ir.get(i);return r!==void 0&&(r.forEach(s=>this.overlays=this.overlays.remove(s)),this.Ir.delete(i)),Ie.resolve()}getOverlaysForCollection(e,t,i){const r=Oc(),s=t.length+1,o=new Pt(t.child("")),a=this.overlays.getIteratorFrom(o);for(;a.hasNext();){const l=a.getNext().value,c=l.getKey();if(!t.isPrefixOf(c.path))break;c.path.length===s&&l.largestBatchId>i&&r.set(l.getKey(),l)}return Ie.resolve(r)}getOverlaysForCollectionGroup(e,t,i,r){let s=new ri((c,d)=>c-d);const o=this.overlays.getIterator();for(;o.hasNext();){const c=o.getNext().value;if(c.getKey().getCollectionGroup()===t&&c.largestBatchId>i){let d=s.get(c.largestBatchId);d===null&&(d=Oc(),s=s.insert(c.largestBatchId,d)),d.set(c.getKey(),c)}}const a=Oc(),l=s.getIterator();for(;l.hasNext()&&(l.getNext().value.forEach((c,d)=>a.set(c,d)),!(a.size()>=r)););return Ie.resolve(a)}ht(e,t,i){const r=this.overlays.get(i.key);if(r!==null){const o=this.Ir.get(r.largestBatchId).delete(i.key);this.Ir.set(r.largestBatchId,o)}this.overlays=this.overlays.insert(i.key,new HX(t,i));let s=this.Ir.get(t);s===void 0&&(s=rn(),this.Ir.set(t,s)),this.Ir.set(t,s.add(i.key))}}/** + * @license + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class vq{constructor(){this.sessionToken=ki.EMPTY_BYTE_STRING}getSessionToken(e){return Ie.resolve(this.sessionToken)}setSessionToken(e,t){return this.sessionToken=t,Ie.resolve()}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class xM{constructor(){this.Tr=new Ni(Ei.Er),this.dr=new Ni(Ei.Ar)}isEmpty(){return this.Tr.isEmpty()}addReference(e,t){const i=new Ei(e,t);this.Tr=this.Tr.add(i),this.dr=this.dr.add(i)}Rr(e,t){e.forEach(i=>this.addReference(i,t))}removeReference(e,t){this.Vr(new Ei(e,t))}mr(e,t){e.forEach(i=>this.removeReference(i,t))}gr(e){const t=new Pt(new qn([])),i=new Ei(t,e),r=new Ei(t,e+1),s=[];return this.dr.forEachInRange([i,r],o=>{this.Vr(o),s.push(o.key)}),s}pr(){this.Tr.forEach(e=>this.Vr(e))}Vr(e){this.Tr=this.Tr.delete(e),this.dr=this.dr.delete(e)}yr(e){const t=new Pt(new qn([])),i=new Ei(t,e),r=new Ei(t,e+1);let s=rn();return this.dr.forEachInRange([i,r],o=>{s=s.add(o.key)}),s}containsKey(e){const t=new Ei(e,0),i=this.Tr.firstAfterOrEqual(t);return i!==null&&e.isEqual(i.key)}}class Ei{constructor(e,t){this.key=e,this.wr=t}static Er(e,t){return Pt.comparator(e.key,t.key)||hn(e.wr,t.wr)}static Ar(e,t){return hn(e.wr,t.wr)||Pt.comparator(e.key,t.key)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class _q{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.Sr=1,this.br=new Ni(Ei.Er)}checkEmpty(e){return Ie.resolve(this.mutationQueue.length===0)}addMutationBatch(e,t,i,r){const s=this.Sr;this.Sr++,this.mutationQueue.length>0&&this.mutationQueue[this.mutationQueue.length-1];const o=new zX(s,t,i,r);this.mutationQueue.push(o);for(const a of r)this.br=this.br.add(new Ei(a.key,s)),this.indexManager.addToCollectionParentIndex(e,a.key.path.popLast());return Ie.resolve(o)}lookupMutationBatch(e,t){return Ie.resolve(this.Dr(t))}getNextMutationBatchAfterBatchId(e,t){const i=t+1,r=this.vr(i),s=r<0?0:r;return Ie.resolve(this.mutationQueue.length>s?this.mutationQueue[s]:null)}getHighestUnacknowledgedBatchId(){return Ie.resolve(this.mutationQueue.length===0?-1:this.Sr-1)}getAllMutationBatches(e){return Ie.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){const i=new Ei(t,0),r=new Ei(t,Number.POSITIVE_INFINITY),s=[];return this.br.forEachInRange([i,r],o=>{const a=this.Dr(o.wr);s.push(a)}),Ie.resolve(s)}getAllMutationBatchesAffectingDocumentKeys(e,t){let i=new Ni(hn);return t.forEach(r=>{const s=new Ei(r,0),o=new Ei(r,Number.POSITIVE_INFINITY);this.br.forEachInRange([s,o],a=>{i=i.add(a.wr)})}),Ie.resolve(this.Cr(i))}getAllMutationBatchesAffectingQuery(e,t){const i=t.path,r=i.length+1;let s=i;Pt.isDocumentKey(s)||(s=s.child(""));const o=new Ei(new Pt(s),0);let a=new Ni(hn);return this.br.forEachWhile(l=>{const c=l.key.path;return!!i.isPrefixOf(c)&&(c.length===r&&(a=a.add(l.wr)),!0)},o),Ie.resolve(this.Cr(a))}Cr(e){const t=[];return e.forEach(i=>{const r=this.Dr(i);r!==null&&t.push(r)}),t}removeMutationBatch(e,t){Kn(this.Fr(t.batchId,"removed")===0),this.mutationQueue.shift();let i=this.br;return Ie.forEach(t.mutations,r=>{const s=new Ei(r.key,t.batchId);return i=i.delete(s),this.referenceDelegate.markPotentiallyOrphaned(e,r.key)}).next(()=>{this.br=i})}On(e){}containsKey(e,t){const i=new Ei(t,0),r=this.br.firstAfterOrEqual(i);return Ie.resolve(t.isEqual(r&&r.key))}performConsistencyCheck(e){return this.mutationQueue.length,Ie.resolve()}Fr(e,t){return this.vr(e)}vr(e){return this.mutationQueue.length===0?0:e-this.mutationQueue[0].batchId}Dr(e){const t=this.vr(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class xq{constructor(e){this.Mr=e,this.docs=function(){return new ri(Pt.comparator)}(),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){const i=t.key,r=this.docs.get(i),s=r?r.size:0,o=this.Mr(t);return this.docs=this.docs.insert(i,{document:t.mutableCopy(),size:o}),this.size+=o-s,this.indexManager.addToCollectionParentIndex(e,i.path.popLast())}removeEntry(e){const t=this.docs.get(e);t&&(this.docs=this.docs.remove(e),this.size-=t.size)}getEntry(e,t){const i=this.docs.get(t);return Ie.resolve(i?i.document.mutableCopy():Zi.newInvalidDocument(t))}getEntries(e,t){let i=Pl();return t.forEach(r=>{const s=this.docs.get(r);i=i.insert(r,s?s.document.mutableCopy():Zi.newInvalidDocument(r))}),Ie.resolve(i)}getDocumentsMatchingQuery(e,t,i,r){let s=Pl();const o=t.path,a=new Pt(o.child("")),l=this.docs.getIteratorFrom(a);for(;l.hasNext();){const{key:c,value:{document:d}}=l.getNext();if(!o.isPrefixOf(c.path))break;c.path.length>o.length+1||rX(iX(d),i)<=0||(r.has(d.key)||Q_(t,d))&&(s=s.insert(d.key,d.mutableCopy()))}return Ie.resolve(s)}getAllFromCollectionGroup(e,t,i,r){Wt()}Or(e,t){return Ie.forEach(this.docs,i=>t(i))}newChangeBuffer(e){return new Sq(this)}getSize(e){return Ie.resolve(this.size)}}class Sq extends fq{constructor(e){super(),this.cr=e}applyChanges(e){const t=[];return this.changes.forEach((i,r)=>{r.isValidDocument()?t.push(this.cr.addEntry(e,r)):this.cr.removeEntry(i)}),Ie.waitFor(t)}getFromCache(e,t){return this.cr.getEntry(e,t)}getAllFromCache(e,t){return this.cr.getEntries(e,t)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class wq{constructor(e){this.persistence=e,this.Nr=new Cd(t=>mM(t),gM),this.lastRemoteSnapshotVersion=kt.min(),this.highestTargetId=0,this.Lr=0,this.Br=new xM,this.targetCount=0,this.kr=ud.Bn()}forEachTarget(e,t){return this.Nr.forEach((i,r)=>t(r)),Ie.resolve()}getLastRemoteSnapshotVersion(e){return Ie.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return Ie.resolve(this.Lr)}allocateTargetId(e){return this.highestTargetId=this.kr.next(),Ie.resolve(this.highestTargetId)}setTargetsMetadata(e,t,i){return i&&(this.lastRemoteSnapshotVersion=i),t>this.Lr&&(this.Lr=t),Ie.resolve()}Kn(e){this.Nr.set(e.target,e);const t=e.targetId;t>this.highestTargetId&&(this.kr=new ud(t),this.highestTargetId=t),e.sequenceNumber>this.Lr&&(this.Lr=e.sequenceNumber)}addTargetData(e,t){return this.Kn(t),this.targetCount+=1,Ie.resolve()}updateTargetData(e,t){return this.Kn(t),Ie.resolve()}removeTargetData(e,t){return this.Nr.delete(t.target),this.Br.gr(t.targetId),this.targetCount-=1,Ie.resolve()}removeTargets(e,t,i){let r=0;const s=[];return this.Nr.forEach((o,a)=>{a.sequenceNumber<=t&&i.get(a.targetId)===null&&(this.Nr.delete(o),s.push(this.removeMatchingKeysForTargetId(e,a.targetId)),r++)}),Ie.waitFor(s).next(()=>r)}getTargetCount(e){return Ie.resolve(this.targetCount)}getTargetData(e,t){const i=this.Nr.get(t)||null;return Ie.resolve(i)}addMatchingKeys(e,t,i){return this.Br.Rr(t,i),Ie.resolve()}removeMatchingKeys(e,t,i){this.Br.mr(t,i);const r=this.persistence.referenceDelegate,s=[];return r&&t.forEach(o=>{s.push(r.markPotentiallyOrphaned(e,o))}),Ie.waitFor(s)}removeMatchingKeysForTargetId(e,t){return this.Br.gr(t),Ie.resolve()}getMatchingKeysForTargetId(e,t){const i=this.Br.yr(t);return Ie.resolve(i)}containsKey(e,t){return Ie.resolve(this.Br.containsKey(t))}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Eq{constructor(e,t){this.qr={},this.overlays={},this.Qr=new hM(0),this.Kr=!1,this.Kr=!0,this.$r=new vq,this.referenceDelegate=e(this),this.Ur=new wq(this),this.indexManager=new hq,this.remoteDocumentCache=function(r){return new xq(r)}(i=>this.referenceDelegate.Wr(i)),this.serializer=new cq(t),this.Gr=new gq(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.Kr=!1,Promise.resolve()}get started(){return this.Kr}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new yq,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let i=this.qr[e.toKey()];return i||(i=new _q(t,this.referenceDelegate),this.qr[e.toKey()]=i),i}getGlobalsCache(){return this.$r}getTargetCache(){return this.Ur}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.Gr}runTransaction(e,t,i){pt("MemoryPersistence","Starting transaction:",e);const r=new Tq(this.Qr.next());return this.referenceDelegate.zr(),i(r).next(s=>this.referenceDelegate.jr(r).next(()=>s)).toPromise().then(s=>(r.raiseOnCommittedEvent(),s))}Hr(e,t){return Ie.or(Object.values(this.qr).map(i=>()=>i.containsKey(e,t)))}}class Tq extends oX{constructor(e){super(),this.currentSequenceNumber=e}}class SM{constructor(e){this.persistence=e,this.Jr=new xM,this.Yr=null}static Zr(e){return new SM(e)}get Xr(){if(this.Yr)return this.Yr;throw Wt()}addReference(e,t,i){return this.Jr.addReference(i,t),this.Xr.delete(i.toString()),Ie.resolve()}removeReference(e,t,i){return this.Jr.removeReference(i,t),this.Xr.add(i.toString()),Ie.resolve()}markPotentiallyOrphaned(e,t){return this.Xr.add(t.toString()),Ie.resolve()}removeTarget(e,t){this.Jr.gr(t.targetId).forEach(r=>this.Xr.add(r.toString()));const i=this.persistence.getTargetCache();return i.getMatchingKeysForTargetId(e,t.targetId).next(r=>{r.forEach(s=>this.Xr.add(s.toString()))}).next(()=>i.removeTargetData(e,t))}zr(){this.Yr=new Set}jr(e){const t=this.persistence.getRemoteDocumentCache().newChangeBuffer();return Ie.forEach(this.Xr,i=>{const r=Pt.fromPath(i);return this.ei(e,r).next(s=>{s||t.removeEntry(r,kt.min())})}).next(()=>(this.Yr=null,t.apply(e)))}updateLimboDocument(e,t){return this.ei(e,t).next(i=>{i?this.Xr.delete(t.toString()):this.Xr.add(t.toString())})}Wr(e){return 0}ei(e,t){return Ie.or([()=>Ie.resolve(this.Jr.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Hr(e,t)])}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class wM{constructor(e,t,i,r){this.targetId=e,this.fromCache=t,this.$i=i,this.Ui=r}static Wi(e,t){let i=rn(),r=rn();for(const s of t.docChanges)switch(s.type){case 0:i=i.add(s.doc.key);break;case 1:r=r.add(s.doc.key)}return new wM(e,t.fromCache,i,r)}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Aq{constructor(){this._documentReadCount=0}get documentReadCount(){return this._documentReadCount}incrementDocumentReadCount(e){this._documentReadCount+=e}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Mq{constructor(){this.Gi=!1,this.zi=!1,this.ji=100,this.Hi=function(){return Pj()?8:aX(or())>0?6:4}()}initialize(e,t){this.Ji=e,this.indexManager=t,this.Gi=!0}getDocumentsMatchingQuery(e,t,i,r){const s={result:null};return this.Yi(e,t).next(o=>{s.result=o}).next(()=>{if(!s.result)return this.Zi(e,t,r,i).next(o=>{s.result=o})}).next(()=>{if(s.result)return;const o=new Aq;return this.Xi(e,t,o).next(a=>{if(s.result=a,this.zi)return this.es(e,t,o,a.size)})}).next(()=>s.result)}es(e,t,i,r){return i.documentReadCountthis.Hi*r?(wf()<=Qt.DEBUG&&pt("QueryEngine","The SDK decides to create cache indexes for query:",lh(t),"as using cache indexes may help improve performance."),this.indexManager.createTargetIndexes(e,yo(t))):Ie.resolve())}Yi(e,t){if(KI(t))return Ie.resolve(null);let i=yo(t);return this.indexManager.getIndexType(e,i).next(r=>r===0?null:(t.limit!==null&&r===1&&(t=eT(t,null,"F"),i=yo(t)),this.indexManager.getDocumentsMatchingTarget(e,i).next(s=>{const o=rn(...s);return this.Ji.getDocuments(e,o).next(a=>this.indexManager.getMinOffset(e,i).next(l=>{const c=this.ts(t,a);return this.ns(t,c,o,l.readTime)?this.Yi(e,eT(t,null,"F")):this.rs(e,c,t,l)}))})))}Zi(e,t,i,r){return KI(t)||r.isEqual(kt.min())?Ie.resolve(null):this.Ji.getDocuments(e,i).next(s=>{const o=this.ts(t,s);return this.ns(t,o,i,r)?Ie.resolve(null):(wf()<=Qt.DEBUG&&pt("QueryEngine","Re-using previous result from %s to execute query: %s",r.toString(),lh(t)),this.rs(e,o,t,nX(r,-1)).next(a=>a))})}ts(e,t){let i=new Ni(_U(e));return t.forEach((r,s)=>{Q_(e,s)&&(i=i.add(s))}),i}ns(e,t,i,r){if(e.limit===null)return!1;if(i.size!==t.size)return!0;const s=e.limitType==="F"?t.last():t.first();return!!s&&(s.hasPendingWrites||s.version.compareTo(r)>0)}Xi(e,t,i){return wf()<=Qt.DEBUG&&pt("QueryEngine","Using full collection scan to execute query:",lh(t)),this.Ji.getDocumentsMatchingQuery(e,t,Cl.min(),i)}rs(e,t,i,r){return this.Ji.getDocumentsMatchingQuery(e,i,r).next(s=>(t.forEach(o=>{s=s.insert(o.key,o)}),s))}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Cq{constructor(e,t,i,r){this.persistence=e,this.ss=t,this.serializer=r,this.os=new ri(hn),this._s=new Cd(s=>mM(s),gM),this.us=new Map,this.cs=e.getRemoteDocumentCache(),this.Ur=e.getTargetCache(),this.Gr=e.getBundleCache(),this.ls(i)}ls(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new mq(this.cs,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.cs.setIndexManager(this.indexManager),this.ss.initialize(this.localDocuments,this.indexManager)}collectGarbage(e){return this.persistence.runTransaction("Collect garbage","readwrite-primary",t=>e.collect(t,this.os))}}function bq(n,e,t,i){return new Cq(n,e,t,i)}async function OU(n,e){const t=en(n);return await t.persistence.runTransaction("Handle user change","readonly",i=>{let r;return t.mutationQueue.getAllMutationBatches(i).next(s=>(r=s,t.ls(e),t.mutationQueue.getAllMutationBatches(i))).next(s=>{const o=[],a=[];let l=rn();for(const c of r){o.push(c.batchId);for(const d of c.mutations)l=l.add(d.key)}for(const c of s){a.push(c.batchId);for(const d of c.mutations)l=l.add(d.key)}return t.localDocuments.getDocuments(i,l).next(c=>({hs:c,removedBatchIds:o,addedBatchIds:a}))})})}function UU(n){const e=en(n);return e.persistence.runTransaction("Get last remote snapshot version","readonly",t=>e.Ur.getLastRemoteSnapshotVersion(t))}function Pq(n,e){const t=en(n),i=e.snapshotVersion;let r=t.os;return t.persistence.runTransaction("Apply remote event","readwrite-primary",s=>{const o=t.cs.newChangeBuffer({trackRemovals:!0});r=t.os;const a=[];e.targetChanges.forEach((d,f)=>{const p=r.get(f);if(!p)return;a.push(t.Ur.removeMatchingKeys(s,d.removedDocuments,f).next(()=>t.Ur.addMatchingKeys(s,d.addedDocuments,f)));let m=p.withSequenceNumber(s.currentSequenceNumber);e.targetMismatches.get(f)!==null?m=m.withResumeToken(ki.EMPTY_BYTE_STRING,kt.min()).withLastLimboFreeSnapshotVersion(kt.min()):d.resumeToken.approximateByteSize()>0&&(m=m.withResumeToken(d.resumeToken,i)),r=r.insert(f,m),function(S,x,y){return S.resumeToken.approximateByteSize()===0||x.snapshotVersion.toMicroseconds()-S.snapshotVersion.toMicroseconds()>=3e8?!0:y.addedDocuments.size+y.modifiedDocuments.size+y.removedDocuments.size>0}(p,m,d)&&a.push(t.Ur.updateTargetData(s,m))});let l=Pl(),c=rn();if(e.documentUpdates.forEach(d=>{e.resolvedLimboDocuments.has(d)&&a.push(t.persistence.referenceDelegate.updateLimboDocument(s,d))}),a.push(Rq(s,o,e.documentUpdates).next(d=>{l=d.Ps,c=d.Is})),!i.isEqual(kt.min())){const d=t.Ur.getLastRemoteSnapshotVersion(s).next(f=>t.Ur.setTargetsMetadata(s,s.currentSequenceNumber,i));a.push(d)}return Ie.waitFor(a).next(()=>o.apply(s)).next(()=>t.localDocuments.getLocalViewOfDocuments(s,l,c)).next(()=>l)}).then(s=>(t.os=r,s))}function Rq(n,e,t){let i=rn(),r=rn();return t.forEach(s=>i=i.add(s)),e.getEntries(n,i).next(s=>{let o=Pl();return t.forEach((a,l)=>{const c=s.get(a);l.isFoundDocument()!==c.isFoundDocument()&&(r=r.add(a)),l.isNoDocument()&&l.version.isEqual(kt.min())?(e.removeEntry(a,l.readTime),o=o.insert(a,l)):!c.isValidDocument()||l.version.compareTo(c.version)>0||l.version.compareTo(c.version)===0&&c.hasPendingWrites?(e.addEntry(l),o=o.insert(a,l)):pt("LocalStore","Ignoring outdated watch update for ",a,". Current version:",c.version," Watch version:",l.version)}),{Ps:o,Is:r}})}function Iq(n,e){const t=en(n);return t.persistence.runTransaction("Allocate target","readwrite",i=>{let r;return t.Ur.getTargetData(i,e).next(s=>s?(r=s,Ie.resolve(r)):t.Ur.allocateTargetId(i).next(o=>(r=new al(e,o,"TargetPurposeListen",i.currentSequenceNumber),t.Ur.addTargetData(i,r).next(()=>r))))}).then(i=>{const r=t.os.get(i.targetId);return(r===null||i.snapshotVersion.compareTo(r.snapshotVersion)>0)&&(t.os=t.os.insert(i.targetId,i),t._s.set(e,i.targetId)),i})}async function sT(n,e,t){const i=en(n),r=i.os.get(e),s=t?"readwrite":"readwrite-primary";try{t||await i.persistence.runTransaction("Release target",s,o=>i.persistence.referenceDelegate.removeTarget(o,r))}catch(o){if(!km(o))throw o;pt("LocalStore",`Failed to update sequence numbers for target ${e}: ${o}`)}i.os=i.os.remove(e),i._s.delete(r.target)}function a2(n,e,t){const i=en(n);let r=kt.min(),s=rn();return i.persistence.runTransaction("Execute query","readwrite",o=>function(l,c,d){const f=en(l),p=f._s.get(d);return p!==void 0?Ie.resolve(f.os.get(p)):f.Ur.getTargetData(c,d)}(i,o,yo(e)).next(a=>{if(a)return r=a.lastLimboFreeSnapshotVersion,i.Ur.getMatchingKeysForTargetId(o,a.targetId).next(l=>{s=l})}).next(()=>i.ss.getDocumentsMatchingQuery(o,e,t?r:kt.min(),t?s:rn())).next(a=>(Lq(i,MX(e),a),{documents:a,Ts:s})))}function Lq(n,e,t){let i=n.us.get(e)||kt.min();t.forEach((r,s)=>{s.readTime.compareTo(i)>0&&(i=s.readTime)}),n.us.set(e,i)}class l2{constructor(){this.activeTargetIds=LX()}fs(e){this.activeTargetIds=this.activeTargetIds.add(e)}gs(e){this.activeTargetIds=this.activeTargetIds.delete(e)}Vs(){const e={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(e)}}class Nq{constructor(){this.so=new l2,this.oo={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,i){}addLocalQueryTarget(e,t=!0){return t&&this.so.fs(e),this.oo[e]||"not-current"}updateQueryState(e,t,i){this.oo[e]=t}removeLocalQueryTarget(e){this.so.gs(e)}isLocalQueryTarget(e){return this.so.activeTargetIds.has(e)}clearQueryState(e){delete this.oo[e]}getAllActiveQueryTargets(){return this.so.activeTargetIds}isActiveQueryTarget(e){return this.so.activeTargetIds.has(e)}start(){return this.so=new l2,Promise.resolve()}handleUserChange(e,t,i){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Dq{_o(e){}shutdown(){}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class c2{constructor(){this.ao=()=>this.uo(),this.co=()=>this.lo(),this.ho=[],this.Po()}_o(e){this.ho.push(e)}shutdown(){window.removeEventListener("online",this.ao),window.removeEventListener("offline",this.co)}Po(){window.addEventListener("online",this.ao),window.addEventListener("offline",this.co)}uo(){pt("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const e of this.ho)e(0)}lo(){pt("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const e of this.ho)e(1)}static D(){return typeof window<"u"&&window.addEventListener!==void 0&&window.removeEventListener!==void 0}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */let dy=null;function Cw(){return dy===null?dy=function(){return 268435456+Math.round(2147483648*Math.random())}():dy++,"0x"+dy.toString(16)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const kq={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Oq{constructor(e){this.Io=e.Io,this.To=e.To}Eo(e){this.Ao=e}Ro(e){this.Vo=e}mo(e){this.fo=e}onMessage(e){this.po=e}close(){this.To()}send(e){this.Io(e)}yo(){this.Ao()}wo(){this.Vo()}So(e){this.fo(e)}bo(e){this.po(e)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Xi="WebChannelConnection";class Uq extends class{constructor(t){this.databaseInfo=t,this.databaseId=t.databaseId;const i=t.ssl?"https":"http",r=encodeURIComponent(this.databaseId.projectId),s=encodeURIComponent(this.databaseId.database);this.Do=i+"://"+t.host,this.vo=`projects/${r}/databases/${s}`,this.Co=this.databaseId.database==="(default)"?`project_id=${r}`:`project_id=${r}&database_id=${s}`}get Fo(){return!1}Mo(t,i,r,s,o){const a=Cw(),l=this.xo(t,i.toUriEncodedString());pt("RestConnection",`Sending RPC '${t}' ${a}:`,l,r);const c={"google-cloud-resource-prefix":this.vo,"x-goog-request-params":this.Co};return this.Oo(c,s,o),this.No(t,l,c,r).then(d=>(pt("RestConnection",`Received RPC '${t}' ${a}: `,d),d),d=>{throw od("RestConnection",`RPC '${t}' ${a} failed with error: `,d,"url: ",l,"request:",r),d})}Lo(t,i,r,s,o,a){return this.Mo(t,i,r,s,o)}Oo(t,i,r){t["X-Goog-Api-Client"]=function(){return"gl-js/ fire/"+Md}(),t["Content-Type"]="text/plain",this.databaseInfo.appId&&(t["X-Firebase-GMPID"]=this.databaseInfo.appId),i&&i.headers.forEach((s,o)=>t[o]=s),r&&r.headers.forEach((s,o)=>t[o]=s)}xo(t,i){const r=kq[t];return`${this.Do}/v1/${i}:${r}`}terminate(){}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams,this.longPollingOptions=e.longPollingOptions}No(e,t,i,r){const s=Cw();return new Promise((o,a)=>{const l=new rU;l.setWithCredentials(!0),l.listenOnce(sU.COMPLETE,()=>{try{switch(l.getLastErrorCode()){case Ev.NO_ERROR:const d=l.getResponseJson();pt(Xi,`XHR for RPC '${e}' ${s} received:`,JSON.stringify(d)),o(d);break;case Ev.TIMEOUT:pt(Xi,`RPC '${e}' ${s} timed out`),a(new Tt(qe.DEADLINE_EXCEEDED,"Request time out"));break;case Ev.HTTP_ERROR:const f=l.getStatus();if(pt(Xi,`RPC '${e}' ${s} failed with status:`,f,"response text:",l.getResponseText()),f>0){let p=l.getResponseJson();Array.isArray(p)&&(p=p[0]);const m=p==null?void 0:p.error;if(m&&m.status&&m.message){const _=function(x){const y=x.toLowerCase().replace(/_/g,"-");return Object.values(qe).indexOf(y)>=0?y:qe.UNKNOWN}(m.status);a(new Tt(_,m.message))}else a(new Tt(qe.UNKNOWN,"Server responded with status "+l.getStatus()))}else a(new Tt(qe.UNAVAILABLE,"Connection failed."));break;default:Wt()}}finally{pt(Xi,`RPC '${e}' ${s} completed.`)}});const c=JSON.stringify(r);pt(Xi,`RPC '${e}' ${s} sending request:`,r),l.send(t,"POST",c,i,15)})}Bo(e,t,i){const r=Cw(),s=[this.Do,"/","google.firestore.v1.Firestore","/",e,"/channel"],o=lU(),a=aU(),l={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling},c=this.longPollingOptions.timeoutSeconds;c!==void 0&&(l.longPollingTimeout=Math.round(1e3*c)),this.useFetchStreams&&(l.useFetchStreams=!0),this.Oo(l.initMessageHeaders,t,i),l.encodeInitMessageHeaders=!0;const d=s.join("");pt(Xi,`Creating RPC '${e}' stream ${r}: ${d}`,l);const f=o.createWebChannel(d,l);let p=!1,m=!1;const _=new Oq({Io:x=>{m?pt(Xi,`Not sending because RPC '${e}' stream ${r} is closed:`,x):(p||(pt(Xi,`Opening RPC '${e}' stream ${r} transport.`),f.open(),p=!0),pt(Xi,`RPC '${e}' stream ${r} sending:`,x),f.send(x))},To:()=>f.close()}),S=(x,y,E)=>{x.listen(y,w=>{try{E(w)}catch(M){setTimeout(()=>{throw M},0)}})};return S(f,Xf.EventType.OPEN,()=>{m||(pt(Xi,`RPC '${e}' stream ${r} transport opened.`),_.yo())}),S(f,Xf.EventType.CLOSE,()=>{m||(m=!0,pt(Xi,`RPC '${e}' stream ${r} transport closed`),_.So())}),S(f,Xf.EventType.ERROR,x=>{m||(m=!0,od(Xi,`RPC '${e}' stream ${r} transport errored:`,x),_.So(new Tt(qe.UNAVAILABLE,"The operation could not be completed")))}),S(f,Xf.EventType.MESSAGE,x=>{var y;if(!m){const E=x.data[0];Kn(!!E);const w=E,M=w.error||((y=w[0])===null||y===void 0?void 0:y.error);if(M){pt(Xi,`RPC '${e}' stream ${r} received error:`,M);const O=M.status;let k=function(D){const A=ui[D];if(A!==void 0)return CU(A)}(O),I=M.message;k===void 0&&(k=qe.INTERNAL,I="Unknown error status: "+O+" with message "+M.message),m=!0,_.So(new Tt(k,I)),f.close()}else pt(Xi,`RPC '${e}' stream ${r} received:`,E),_.bo(E)}}),S(a,oU.STAT_EVENT,x=>{x.stat===$E.PROXY?pt(Xi,`RPC '${e}' stream ${r} detected buffering proxy`):x.stat===$E.NOPROXY&&pt(Xi,`RPC '${e}' stream ${r} detected no buffering proxy`)}),setTimeout(()=>{_.wo()},0),_}}function bw(){return typeof document<"u"?document:null}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function FU(n){return new KX(n,!0)}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class VU{constructor(e,t,i=1e3,r=1.5,s=6e4){this.ui=e,this.timerId=t,this.ko=i,this.qo=r,this.Qo=s,this.Ko=0,this.$o=null,this.Uo=Date.now(),this.reset()}reset(){this.Ko=0}Wo(){this.Ko=this.Qo}Go(e){this.cancel();const t=Math.floor(this.Ko+this.zo()),i=Math.max(0,Date.now()-this.Uo),r=Math.max(0,t-i);r>0&&pt("ExponentialBackoff",`Backing off for ${r} ms (base delay: ${this.Ko} ms, delay with jitter: ${t} ms, last attempt: ${i} ms ago)`),this.$o=this.ui.enqueueAfterDelay(this.timerId,r,()=>(this.Uo=Date.now(),e())),this.Ko*=this.qo,this.Kothis.Qo&&(this.Ko=this.Qo)}jo(){this.$o!==null&&(this.$o.skipDelay(),this.$o=null)}cancel(){this.$o!==null&&(this.$o.cancel(),this.$o=null)}zo(){return(Math.random()-.5)*this.Ko}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Fq{constructor(e,t,i,r,s,o,a,l){this.ui=e,this.Ho=i,this.Jo=r,this.connection=s,this.authCredentialsProvider=o,this.appCheckCredentialsProvider=a,this.listener=l,this.state=0,this.Yo=0,this.Zo=null,this.Xo=null,this.stream=null,this.e_=0,this.t_=new VU(e,t)}n_(){return this.state===1||this.state===5||this.r_()}r_(){return this.state===2||this.state===3}start(){this.e_=0,this.state!==4?this.auth():this.i_()}async stop(){this.n_()&&await this.close(0)}s_(){this.state=0,this.t_.reset()}o_(){this.r_()&&this.Zo===null&&(this.Zo=this.ui.enqueueAfterDelay(this.Ho,6e4,()=>this.__()))}a_(e){this.u_(),this.stream.send(e)}async __(){if(this.r_())return this.close(0)}u_(){this.Zo&&(this.Zo.cancel(),this.Zo=null)}c_(){this.Xo&&(this.Xo.cancel(),this.Xo=null)}async close(e,t){this.u_(),this.c_(),this.t_.cancel(),this.Yo++,e!==4?this.t_.reset():t&&t.code===qe.RESOURCE_EXHAUSTED?(ha(t.toString()),ha("Using maximum backoff delay to prevent overloading the backend."),this.t_.Wo()):t&&t.code===qe.UNAUTHENTICATED&&this.state!==3&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),this.stream!==null&&(this.l_(),this.stream.close(),this.stream=null),this.state=e,await this.listener.mo(t)}l_(){}auth(){this.state=1;const e=this.h_(this.Yo),t=this.Yo;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then(([i,r])=>{this.Yo===t&&this.P_(i,r)},i=>{e(()=>{const r=new Tt(qe.UNKNOWN,"Fetching auth token failed: "+i.message);return this.I_(r)})})}P_(e,t){const i=this.h_(this.Yo);this.stream=this.T_(e,t),this.stream.Eo(()=>{i(()=>this.listener.Eo())}),this.stream.Ro(()=>{i(()=>(this.state=2,this.Xo=this.ui.enqueueAfterDelay(this.Jo,1e4,()=>(this.r_()&&(this.state=3),Promise.resolve())),this.listener.Ro()))}),this.stream.mo(r=>{i(()=>this.I_(r))}),this.stream.onMessage(r=>{i(()=>++this.e_==1?this.E_(r):this.onNext(r))})}i_(){this.state=5,this.t_.Go(async()=>{this.state=0,this.start()})}I_(e){return pt("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}h_(e){return t=>{this.ui.enqueueAndForget(()=>this.Yo===e?t():(pt("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve()))}}}class Vq extends Fq{constructor(e,t,i,r,s,o){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,i,r,o),this.serializer=s}T_(e,t){return this.connection.Bo("Listen",e,t)}E_(e){return this.onNext(e)}onNext(e){this.t_.reset();const t=tq(this.serializer,e),i=function(s){if(!("targetChange"in s))return kt.min();const o=s.targetChange;return o.targetIds&&o.targetIds.length?kt.min():o.readTime?Gh(o.readTime):kt.min()}(e);return this.listener.d_(t,i)}A_(e){const t={};t.database=o2(this.serializer),t.addTarget=function(s,o){let a;const l=o.target;if(a=ZE(l)?{documents:nq(s,l)}:{query:iq(s,l)._t},a.targetId=o.targetId,o.resumeToken.approximateByteSize()>0){a.resumeToken=JX(s,o.resumeToken);const c=iT(s,o.expectedCount);c!==null&&(a.expectedCount=c)}else if(o.snapshotVersion.compareTo(kt.min())>0){a.readTime=QX(s,o.snapshotVersion.toTimestamp());const c=iT(s,o.expectedCount);c!==null&&(a.expectedCount=c)}return a}(this.serializer,e);const i=sq(this.serializer,e);i&&(t.labels=i),this.a_(t)}R_(e){const t={};t.database=o2(this.serializer),t.removeTarget=e,this.a_(t)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Bq extends class{}{constructor(e,t,i,r){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=i,this.serializer=r,this.y_=!1}w_(){if(this.y_)throw new Tt(qe.FAILED_PRECONDITION,"The client has already been terminated.")}Mo(e,t,i,r){return this.w_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([s,o])=>this.connection.Mo(e,rT(t,i),r,s,o)).catch(s=>{throw s.name==="FirebaseError"?(s.code===qe.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),s):new Tt(qe.UNKNOWN,s.toString())})}Lo(e,t,i,r,s){return this.w_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([o,a])=>this.connection.Lo(e,rT(t,i),r,o,a,s)).catch(o=>{throw o.name==="FirebaseError"?(o.code===qe.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),o):new Tt(qe.UNKNOWN,o.toString())})}terminate(){this.y_=!0,this.connection.terminate()}}class zq{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.S_=0,this.b_=null,this.D_=!0}v_(){this.S_===0&&(this.C_("Unknown"),this.b_=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,()=>(this.b_=null,this.F_("Backend didn't respond within 10 seconds."),this.C_("Offline"),Promise.resolve())))}M_(e){this.state==="Online"?this.C_("Unknown"):(this.S_++,this.S_>=1&&(this.x_(),this.F_(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.C_("Offline")))}set(e){this.x_(),this.S_=0,e==="Online"&&(this.D_=!1),this.C_(e)}C_(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}F_(e){const t=`Could not reach Cloud Firestore backend. ${e} +This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.D_?(ha(t),this.D_=!1):pt("OnlineStateTracker",t)}x_(){this.b_!==null&&(this.b_.cancel(),this.b_=null)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Hq{constructor(e,t,i,r,s){this.localStore=e,this.datastore=t,this.asyncQueue=i,this.remoteSyncer={},this.O_=[],this.N_=new Map,this.L_=new Set,this.B_=[],this.k_=s,this.k_._o(o=>{i.enqueueAndForget(async()=>{Fm(this)&&(pt("RemoteStore","Restarting streams for network reachability change."),await async function(l){const c=en(l);c.L_.add(4),await Um(c),c.q_.set("Unknown"),c.L_.delete(4),await tx(c)}(this))})}),this.q_=new zq(i,r)}}async function tx(n){if(Fm(n))for(const e of n.B_)await e(!0)}async function Um(n){for(const e of n.B_)await e(!1)}function BU(n,e){const t=en(n);t.N_.has(e.targetId)||(t.N_.set(e.targetId,e),MM(t)?AM(t):bd(t).r_()&&TM(t,e))}function EM(n,e){const t=en(n),i=bd(t);t.N_.delete(e),i.r_()&&zU(t,e),t.N_.size===0&&(i.r_()?i.o_():Fm(t)&&t.q_.set("Unknown"))}function TM(n,e){if(n.Q_.xe(e.targetId),e.resumeToken.approximateByteSize()>0||e.snapshotVersion.compareTo(kt.min())>0){const t=n.remoteSyncer.getRemoteKeysForTarget(e.targetId).size;e=e.withExpectedCount(t)}bd(n).A_(e)}function zU(n,e){n.Q_.xe(e),bd(n).R_(e)}function AM(n){n.Q_=new XX({getRemoteKeysForTarget:e=>n.remoteSyncer.getRemoteKeysForTarget(e),ot:e=>n.N_.get(e)||null,tt:()=>n.datastore.serializer.databaseId}),bd(n).start(),n.q_.v_()}function MM(n){return Fm(n)&&!bd(n).n_()&&n.N_.size>0}function Fm(n){return en(n).L_.size===0}function HU(n){n.Q_=void 0}async function Gq(n){n.q_.set("Online")}async function Wq(n){n.N_.forEach((e,t)=>{TM(n,e)})}async function jq(n,e){HU(n),MM(n)?(n.q_.M_(e),AM(n)):n.q_.set("Unknown")}async function Xq(n,e,t){if(n.q_.set("Online"),e instanceof PU&&e.state===2&&e.cause)try{await async function(r,s){const o=s.cause;for(const a of s.targetIds)r.N_.has(a)&&(await r.remoteSyncer.rejectListen(a,o),r.N_.delete(a),r.Q_.removeTarget(a))}(n,e)}catch(i){pt("RemoteStore","Failed to remove targets %s: %s ",e.targetIds.join(","),i),await u2(n,i)}else if(e instanceof Av?n.Q_.Ke(e):e instanceof bU?n.Q_.He(e):n.Q_.We(e),!t.isEqual(kt.min()))try{const i=await UU(n.localStore);t.compareTo(i)>=0&&await function(s,o){const a=s.Q_.rt(o);return a.targetChanges.forEach((l,c)=>{if(l.resumeToken.approximateByteSize()>0){const d=s.N_.get(c);d&&s.N_.set(c,d.withResumeToken(l.resumeToken,o))}}),a.targetMismatches.forEach((l,c)=>{const d=s.N_.get(l);if(!d)return;s.N_.set(l,d.withResumeToken(ki.EMPTY_BYTE_STRING,d.snapshotVersion)),zU(s,l);const f=new al(d.target,l,c,d.sequenceNumber);TM(s,f)}),s.remoteSyncer.applyRemoteEvent(a)}(n,t)}catch(i){pt("RemoteStore","Failed to raise snapshot:",i),await u2(n,i)}}async function u2(n,e,t){if(!km(e))throw e;n.L_.add(1),await Um(n),n.q_.set("Offline"),t||(t=()=>UU(n.localStore)),n.asyncQueue.enqueueRetryable(async()=>{pt("RemoteStore","Retrying IndexedDB access"),await t(),n.L_.delete(1),await tx(n)})}async function h2(n,e){const t=en(n);t.asyncQueue.verifyOperationInProgress(),pt("RemoteStore","RemoteStore received new credentials");const i=Fm(t);t.L_.add(3),await Um(t),i&&t.q_.set("Unknown"),await t.remoteSyncer.handleCredentialChange(e),t.L_.delete(3),await tx(t)}async function qq(n,e){const t=en(n);e?(t.L_.delete(2),await tx(t)):e||(t.L_.add(2),await Um(t),t.q_.set("Unknown"))}function bd(n){return n.K_||(n.K_=function(t,i,r){const s=en(t);return s.w_(),new Vq(i,s.connection,s.authCredentials,s.appCheckCredentials,s.serializer,r)}(n.datastore,n.asyncQueue,{Eo:Gq.bind(null,n),Ro:Wq.bind(null,n),mo:jq.bind(null,n),d_:Xq.bind(null,n)}),n.B_.push(async e=>{e?(n.K_.s_(),MM(n)?AM(n):n.q_.set("Unknown")):(await n.K_.stop(),HU(n))})),n.K_}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class CM{constructor(e,t,i,r,s){this.asyncQueue=e,this.timerId=t,this.targetTimeMs=i,this.op=r,this.removalCallback=s,this.deferred=new jc,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch(o=>{})}get promise(){return this.deferred.promise}static createAndSchedule(e,t,i,r,s){const o=Date.now()+i,a=new CM(e,t,o,r,s);return a.start(i),a}start(e){this.timerHandle=setTimeout(()=>this.handleDelayElapsed(),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){this.timerHandle!==null&&(this.clearTimeout(),this.deferred.reject(new Tt(qe.CANCELLED,"Operation cancelled"+(e?": "+e:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget(()=>this.timerHandle!==null?(this.clearTimeout(),this.op().then(e=>this.deferred.resolve(e))):Promise.resolve())}clearTimeout(){this.timerHandle!==null&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function GU(n,e){if(ha("AsyncQueue",`${e}: ${n}`),km(n))return new Tt(qe.UNAVAILABLE,`${e}: ${n}`);throw n}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Wh{constructor(e){this.comparator=e?(t,i)=>e(t,i)||Pt.comparator(t.key,i.key):(t,i)=>Pt.comparator(t.key,i.key),this.keyedMap=qf(),this.sortedSet=new ri(this.comparator)}static emptySet(e){return new Wh(e.comparator)}has(e){return this.keyedMap.get(e)!=null}get(e){return this.keyedMap.get(e)}first(){return this.sortedSet.minKey()}last(){return this.sortedSet.maxKey()}isEmpty(){return this.sortedSet.isEmpty()}indexOf(e){const t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(e){this.sortedSet.inorderTraversal((t,i)=>(e(t),!1))}add(e){const t=this.delete(e.key);return t.copy(t.keyedMap.insert(e.key,e),t.sortedSet.insert(e,null))}delete(e){const t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof Wh)||this.size!==e.size)return!1;const t=this.sortedSet.getIterator(),i=e.sortedSet.getIterator();for(;t.hasNext();){const r=t.getNext().key,s=i.getNext().key;if(!r.isEqual(s))return!1}return!0}toString(){const e=[];return this.forEach(t=>{e.push(t.toString())}),e.length===0?"DocumentSet ()":`DocumentSet ( + `+e.join(` +`)+` +)`}copy(e,t){const i=new Wh;return i.comparator=this.comparator,i.keyedMap=e,i.sortedSet=t,i}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class d2{constructor(){this.W_=new ri(Pt.comparator)}track(e){const t=e.doc.key,i=this.W_.get(t);i?e.type!==0&&i.type===3?this.W_=this.W_.insert(t,e):e.type===3&&i.type!==1?this.W_=this.W_.insert(t,{type:i.type,doc:e.doc}):e.type===2&&i.type===2?this.W_=this.W_.insert(t,{type:2,doc:e.doc}):e.type===2&&i.type===0?this.W_=this.W_.insert(t,{type:0,doc:e.doc}):e.type===1&&i.type===0?this.W_=this.W_.remove(t):e.type===1&&i.type===2?this.W_=this.W_.insert(t,{type:1,doc:i.doc}):e.type===0&&i.type===1?this.W_=this.W_.insert(t,{type:2,doc:e.doc}):Wt():this.W_=this.W_.insert(t,e)}G_(){const e=[];return this.W_.inorderTraversal((t,i)=>{e.push(i)}),e}}class hd{constructor(e,t,i,r,s,o,a,l,c){this.query=e,this.docs=t,this.oldDocs=i,this.docChanges=r,this.mutatedKeys=s,this.fromCache=o,this.syncStateChanged=a,this.excludesMetadataChanges=l,this.hasCachedResults=c}static fromInitialDocuments(e,t,i,r,s){const o=[];return t.forEach(a=>{o.push({type:0,doc:a})}),new hd(e,t,Wh.emptySet(t),o,i,r,!0,!1,s)}get hasPendingWrites(){return!this.mutatedKeys.isEmpty()}isEqual(e){if(!(this.fromCache===e.fromCache&&this.hasCachedResults===e.hasCachedResults&&this.syncStateChanged===e.syncStateChanged&&this.mutatedKeys.isEqual(e.mutatedKeys)&&K_(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;const t=this.docChanges,i=e.docChanges;if(t.length!==i.length)return!1;for(let r=0;re.J_())}}class Yq{constructor(){this.queries=f2(),this.onlineState="Unknown",this.Y_=new Set}terminate(){(function(t,i){const r=en(t),s=r.queries;r.queries=f2(),s.forEach((o,a)=>{for(const l of a.j_)l.onError(i)})})(this,new Tt(qe.ABORTED,"Firestore shutting down"))}}function f2(){return new Cd(n=>vU(n),K_)}async function Kq(n,e){const t=en(n);let i=3;const r=e.query;let s=t.queries.get(r);s?!s.H_()&&e.J_()&&(i=2):(s=new $q,i=e.J_()?0:1);try{switch(i){case 0:s.z_=await t.onListen(r,!0);break;case 1:s.z_=await t.onListen(r,!1);break;case 2:await t.onFirstRemoteStoreListen(r)}}catch(o){const a=GU(o,`Initialization of query '${lh(e.query)}' failed`);return void e.onError(a)}t.queries.set(r,s),s.j_.push(e),e.Z_(t.onlineState),s.z_&&e.X_(s.z_)&&bM(t)}async function Qq(n,e){const t=en(n),i=e.query;let r=3;const s=t.queries.get(i);if(s){const o=s.j_.indexOf(e);o>=0&&(s.j_.splice(o,1),s.j_.length===0?r=e.J_()?0:1:!s.H_()&&e.J_()&&(r=2))}switch(r){case 0:return t.queries.delete(i),t.onUnlisten(i,!0);case 1:return t.queries.delete(i),t.onUnlisten(i,!1);case 2:return t.onLastRemoteStoreUnlisten(i);default:return}}function Jq(n,e){const t=en(n);let i=!1;for(const r of e){const s=r.query,o=t.queries.get(s);if(o){for(const a of o.j_)a.X_(r)&&(i=!0);o.z_=r}}i&&bM(t)}function Zq(n,e,t){const i=en(n),r=i.queries.get(e);if(r)for(const s of r.j_)s.onError(t);i.queries.delete(e)}function bM(n){n.Y_.forEach(e=>{e.next()})}var oT,p2;(p2=oT||(oT={})).ea="default",p2.Cache="cache";class e${constructor(e,t,i){this.query=e,this.ta=t,this.na=!1,this.ra=null,this.onlineState="Unknown",this.options=i||{}}X_(e){if(!this.options.includeMetadataChanges){const i=[];for(const r of e.docChanges)r.type!==3&&i.push(r);e=new hd(e.query,e.docs,e.oldDocs,i,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.na?this.ia(e)&&(this.ta.next(e),t=!0):this.sa(e,this.onlineState)&&(this.oa(e),t=!0),this.ra=e,t}onError(e){this.ta.error(e)}Z_(e){this.onlineState=e;let t=!1;return this.ra&&!this.na&&this.sa(this.ra,e)&&(this.oa(this.ra),t=!0),t}sa(e,t){if(!e.fromCache||!this.J_())return!0;const i=t!=="Offline";return(!this.options._a||!i)&&(!e.docs.isEmpty()||e.hasCachedResults||t==="Offline")}ia(e){if(e.docChanges.length>0)return!0;const t=this.ra&&this.ra.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&this.options.includeMetadataChanges===!0}oa(e){e=hd.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.na=!0,this.ta.next(e)}J_(){return this.options.source!==oT.Cache}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class WU{constructor(e){this.key=e}}class jU{constructor(e){this.key=e}}class t${constructor(e,t){this.query=e,this.Ta=t,this.Ea=null,this.hasCachedResults=!1,this.current=!1,this.da=rn(),this.mutatedKeys=rn(),this.Aa=_U(e),this.Ra=new Wh(this.Aa)}get Va(){return this.Ta}ma(e,t){const i=t?t.fa:new d2,r=t?t.Ra:this.Ra;let s=t?t.mutatedKeys:this.mutatedKeys,o=r,a=!1;const l=this.query.limitType==="F"&&r.size===this.query.limit?r.last():null,c=this.query.limitType==="L"&&r.size===this.query.limit?r.first():null;if(e.inorderTraversal((d,f)=>{const p=r.get(d),m=Q_(this.query,f)?f:null,_=!!p&&this.mutatedKeys.has(p.key),S=!!m&&(m.hasLocalMutations||this.mutatedKeys.has(m.key)&&m.hasCommittedMutations);let x=!1;p&&m?p.data.isEqual(m.data)?_!==S&&(i.track({type:3,doc:m}),x=!0):this.ga(p,m)||(i.track({type:2,doc:m}),x=!0,(l&&this.Aa(m,l)>0||c&&this.Aa(m,c)<0)&&(a=!0)):!p&&m?(i.track({type:0,doc:m}),x=!0):p&&!m&&(i.track({type:1,doc:p}),x=!0,(l||c)&&(a=!0)),x&&(m?(o=o.add(m),s=S?s.add(d):s.delete(d)):(o=o.delete(d),s=s.delete(d)))}),this.query.limit!==null)for(;o.size>this.query.limit;){const d=this.query.limitType==="F"?o.last():o.first();o=o.delete(d.key),s=s.delete(d.key),i.track({type:1,doc:d})}return{Ra:o,fa:i,ns:a,mutatedKeys:s}}ga(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,i,r){const s=this.Ra;this.Ra=e.Ra,this.mutatedKeys=e.mutatedKeys;const o=e.fa.G_();o.sort((d,f)=>function(m,_){const S=x=>{switch(x){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return Wt()}};return S(m)-S(_)}(d.type,f.type)||this.Aa(d.doc,f.doc)),this.pa(i),r=r!=null&&r;const a=t&&!r?this.ya():[],l=this.da.size===0&&this.current&&!r?1:0,c=l!==this.Ea;return this.Ea=l,o.length!==0||c?{snapshot:new hd(this.query,e.Ra,s,o,e.mutatedKeys,l===0,c,!1,!!i&&i.resumeToken.approximateByteSize()>0),wa:a}:{wa:a}}Z_(e){return this.current&&e==="Offline"?(this.current=!1,this.applyChanges({Ra:this.Ra,fa:new d2,mutatedKeys:this.mutatedKeys,ns:!1},!1)):{wa:[]}}Sa(e){return!this.Ta.has(e)&&!!this.Ra.has(e)&&!this.Ra.get(e).hasLocalMutations}pa(e){e&&(e.addedDocuments.forEach(t=>this.Ta=this.Ta.add(t)),e.modifiedDocuments.forEach(t=>{}),e.removedDocuments.forEach(t=>this.Ta=this.Ta.delete(t)),this.current=e.current)}ya(){if(!this.current)return[];const e=this.da;this.da=rn(),this.Ra.forEach(i=>{this.Sa(i.key)&&(this.da=this.da.add(i.key))});const t=[];return e.forEach(i=>{this.da.has(i)||t.push(new jU(i))}),this.da.forEach(i=>{e.has(i)||t.push(new WU(i))}),t}ba(e){this.Ta=e.Ts,this.da=rn();const t=this.ma(e.documents);return this.applyChanges(t,!0)}Da(){return hd.fromInitialDocuments(this.query,this.Ra,this.mutatedKeys,this.Ea===0,this.hasCachedResults)}}class n${constructor(e,t,i){this.query=e,this.targetId=t,this.view=i}}class i${constructor(e){this.key=e,this.va=!1}}class r${constructor(e,t,i,r,s,o){this.localStore=e,this.remoteStore=t,this.eventManager=i,this.sharedClientState=r,this.currentUser=s,this.maxConcurrentLimboResolutions=o,this.Ca={},this.Fa=new Cd(a=>vU(a),K_),this.Ma=new Map,this.xa=new Set,this.Oa=new ri(Pt.comparator),this.Na=new Map,this.La=new xM,this.Ba={},this.ka=new Map,this.qa=ud.kn(),this.onlineState="Unknown",this.Qa=void 0}get isPrimaryClient(){return this.Qa===!0}}async function s$(n,e,t=!0){const i=KU(n);let r;const s=i.Fa.get(e);return s?(i.sharedClientState.addLocalQueryTarget(s.targetId),r=s.view.Da()):r=await XU(i,e,t,!0),r}async function o$(n,e){const t=KU(n);await XU(t,e,!0,!1)}async function XU(n,e,t,i){const r=await Iq(n.localStore,yo(e)),s=r.targetId,o=n.sharedClientState.addLocalQueryTarget(s,t);let a;return i&&(a=await a$(n,e,s,o==="current",r.resumeToken)),n.isPrimaryClient&&t&&BU(n.remoteStore,r),a}async function a$(n,e,t,i,r){n.Ka=(f,p,m)=>async function(S,x,y,E){let w=x.view.ma(y);w.ns&&(w=await a2(S.localStore,x.query,!1).then(({documents:I})=>x.view.ma(I,w)));const M=E&&E.targetChanges.get(x.targetId),O=E&&E.targetMismatches.get(x.targetId)!=null,k=x.view.applyChanges(w,S.isPrimaryClient,M,O);return g2(S,x.targetId,k.wa),k.snapshot}(n,f,p,m);const s=await a2(n.localStore,e,!0),o=new t$(e,s.Ts),a=o.ma(s.documents),l=Om.createSynthesizedTargetChangeForCurrentChange(t,i&&n.onlineState!=="Offline",r),c=o.applyChanges(a,n.isPrimaryClient,l);g2(n,t,c.wa);const d=new n$(e,t,o);return n.Fa.set(e,d),n.Ma.has(t)?n.Ma.get(t).push(e):n.Ma.set(t,[e]),c.snapshot}async function l$(n,e,t){const i=en(n),r=i.Fa.get(e),s=i.Ma.get(r.targetId);if(s.length>1)return i.Ma.set(r.targetId,s.filter(o=>!K_(o,e))),void i.Fa.delete(e);i.isPrimaryClient?(i.sharedClientState.removeLocalQueryTarget(r.targetId),i.sharedClientState.isActiveQueryTarget(r.targetId)||await sT(i.localStore,r.targetId,!1).then(()=>{i.sharedClientState.clearQueryState(r.targetId),t&&EM(i.remoteStore,r.targetId),aT(i,r.targetId)}).catch(uM)):(aT(i,r.targetId),await sT(i.localStore,r.targetId,!0))}async function c$(n,e){const t=en(n),i=t.Fa.get(e),r=t.Ma.get(i.targetId);t.isPrimaryClient&&r.length===1&&(t.sharedClientState.removeLocalQueryTarget(i.targetId),EM(t.remoteStore,i.targetId))}async function qU(n,e){const t=en(n);try{const i=await Pq(t.localStore,e);e.targetChanges.forEach((r,s)=>{const o=t.Na.get(s);o&&(Kn(r.addedDocuments.size+r.modifiedDocuments.size+r.removedDocuments.size<=1),r.addedDocuments.size>0?o.va=!0:r.modifiedDocuments.size>0?Kn(o.va):r.removedDocuments.size>0&&(Kn(o.va),o.va=!1))}),await YU(t,i,e)}catch(i){await uM(i)}}function m2(n,e,t){const i=en(n);if(i.isPrimaryClient&&t===0||!i.isPrimaryClient&&t===1){const r=[];i.Fa.forEach((s,o)=>{const a=o.view.Z_(e);a.snapshot&&r.push(a.snapshot)}),function(o,a){const l=en(o);l.onlineState=a;let c=!1;l.queries.forEach((d,f)=>{for(const p of f.j_)p.Z_(a)&&(c=!0)}),c&&bM(l)}(i.eventManager,e),r.length&&i.Ca.d_(r),i.onlineState=e,i.isPrimaryClient&&i.sharedClientState.setOnlineState(e)}}async function u$(n,e,t){const i=en(n);i.sharedClientState.updateQueryState(e,"rejected",t);const r=i.Na.get(e),s=r&&r.key;if(s){let o=new ri(Pt.comparator);o=o.insert(s,Zi.newNoDocument(s,kt.min()));const a=rn().add(s),l=new ex(kt.min(),new Map,new ri(hn),o,a);await qU(i,l),i.Oa=i.Oa.remove(s),i.Na.delete(e),PM(i)}else await sT(i.localStore,e,!1).then(()=>aT(i,e,t)).catch(uM)}function aT(n,e,t=null){n.sharedClientState.removeLocalQueryTarget(e);for(const i of n.Ma.get(e))n.Fa.delete(i),t&&n.Ca.$a(i,t);n.Ma.delete(e),n.isPrimaryClient&&n.La.gr(e).forEach(i=>{n.La.containsKey(i)||$U(n,i)})}function $U(n,e){n.xa.delete(e.path.canonicalString());const t=n.Oa.get(e);t!==null&&(EM(n.remoteStore,t),n.Oa=n.Oa.remove(e),n.Na.delete(t),PM(n))}function g2(n,e,t){for(const i of t)i instanceof WU?(n.La.addReference(i.key,e),h$(n,i)):i instanceof jU?(pt("SyncEngine","Document no longer in limbo: "+i.key),n.La.removeReference(i.key,e),n.La.containsKey(i.key)||$U(n,i.key)):Wt()}function h$(n,e){const t=e.key,i=t.path.canonicalString();n.Oa.get(t)||n.xa.has(i)||(pt("SyncEngine","New document in limbo: "+t),n.xa.add(i),PM(n))}function PM(n){for(;n.xa.size>0&&n.Oa.size{o.push(i.Ka(l,e,t).then(c=>{var d;if((c||t)&&i.isPrimaryClient){const f=c?!c.fromCache:(d=t==null?void 0:t.targetChanges.get(l.targetId))===null||d===void 0?void 0:d.current;i.sharedClientState.updateQueryState(l.targetId,f?"current":"not-current")}if(c){r.push(c);const f=wM.Wi(l.targetId,c);s.push(f)}}))}),await Promise.all(o),i.Ca.d_(r),await async function(l,c){const d=en(l);try{await d.persistence.runTransaction("notifyLocalViewChanges","readwrite",f=>Ie.forEach(c,p=>Ie.forEach(p.$i,m=>d.persistence.referenceDelegate.addReference(f,p.targetId,m)).next(()=>Ie.forEach(p.Ui,m=>d.persistence.referenceDelegate.removeReference(f,p.targetId,m)))))}catch(f){if(!km(f))throw f;pt("LocalStore","Failed to update sequence numbers: "+f)}for(const f of c){const p=f.targetId;if(!f.fromCache){const m=d.os.get(p),_=m.snapshotVersion,S=m.withLastLimboFreeSnapshotVersion(_);d.os=d.os.insert(p,S)}}}(i.localStore,s))}async function d$(n,e){const t=en(n);if(!t.currentUser.isEqual(e)){pt("SyncEngine","User change. New user:",e.toKey());const i=await OU(t.localStore,e);t.currentUser=e,function(s,o){s.ka.forEach(a=>{a.forEach(l=>{l.reject(new Tt(qe.CANCELLED,o))})}),s.ka.clear()}(t,"'waitForPendingWrites' promise is rejected due to a user change."),t.sharedClientState.handleUserChange(e,i.removedBatchIds,i.addedBatchIds),await YU(t,i.hs)}}function f$(n,e){const t=en(n),i=t.Na.get(e);if(i&&i.va)return rn().add(i.key);{let r=rn();const s=t.Ma.get(e);if(!s)return r;for(const o of s){const a=t.Fa.get(o);r=r.unionWith(a.view.Va)}return r}}function KU(n){const e=en(n);return e.remoteStore.remoteSyncer.applyRemoteEvent=qU.bind(null,e),e.remoteStore.remoteSyncer.getRemoteKeysForTarget=f$.bind(null,e),e.remoteStore.remoteSyncer.rejectListen=u$.bind(null,e),e.Ca.d_=Jq.bind(null,e.eventManager),e.Ca.$a=Zq.bind(null,e.eventManager),e}class E0{constructor(){this.kind="memory",this.synchronizeTabs=!1}async initialize(e){this.serializer=FU(e.databaseInfo.databaseId),this.sharedClientState=this.Wa(e),this.persistence=this.Ga(e),await this.persistence.start(),this.localStore=this.za(e),this.gcScheduler=this.ja(e,this.localStore),this.indexBackfillerScheduler=this.Ha(e,this.localStore)}ja(e,t){return null}Ha(e,t){return null}za(e){return bq(this.persistence,new Mq,e.initialUser,this.serializer)}Ga(e){return new Eq(SM.Zr,this.serializer)}Wa(e){return new Nq}async terminate(){var e,t;(e=this.gcScheduler)===null||e===void 0||e.stop(),(t=this.indexBackfillerScheduler)===null||t===void 0||t.stop(),this.sharedClientState.shutdown(),await this.persistence.shutdown()}}E0.provider={build:()=>new E0};class lT{async initialize(e,t){this.localStore||(this.localStore=e.localStore,this.sharedClientState=e.sharedClientState,this.datastore=this.createDatastore(t),this.remoteStore=this.createRemoteStore(t),this.eventManager=this.createEventManager(t),this.syncEngine=this.createSyncEngine(t,!e.synchronizeTabs),this.sharedClientState.onlineStateHandler=i=>m2(this.syncEngine,i,1),this.remoteStore.remoteSyncer.handleCredentialChange=d$.bind(null,this.syncEngine),await qq(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return function(){return new Yq}()}createDatastore(e){const t=FU(e.databaseInfo.databaseId),i=function(s){return new Uq(s)}(e.databaseInfo);return function(s,o,a,l){return new Bq(s,o,a,l)}(e.authCredentials,e.appCheckCredentials,i,t)}createRemoteStore(e){return function(i,r,s,o,a){return new Hq(i,r,s,o,a)}(this.localStore,this.datastore,e.asyncQueue,t=>m2(this.syncEngine,t,0),function(){return c2.D()?new c2:new Dq}())}createSyncEngine(e,t){return function(r,s,o,a,l,c,d){const f=new r$(r,s,o,a,l,c);return d&&(f.Qa=!0),f}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}async terminate(){var e,t;await async function(r){const s=en(r);pt("RemoteStore","RemoteStore shutting down."),s.L_.add(5),await Um(s),s.k_.shutdown(),s.q_.set("Unknown")}(this.remoteStore),(e=this.datastore)===null||e===void 0||e.terminate(),(t=this.eventManager)===null||t===void 0||t.terminate()}}lT.provider={build:()=>new lT};/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *//** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class p${constructor(e){this.observer=e,this.muted=!1}next(e){this.muted||this.observer.next&&this.Ya(this.observer.next,e)}error(e){this.muted||(this.observer.error?this.Ya(this.observer.error,e):ha("Uncaught Error in snapshot listener:",e.toString()))}Za(){this.muted=!0}Ya(e,t){setTimeout(()=>{this.muted||e(t)},0)}}/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class m${constructor(e,t,i,r,s){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=i,this.databaseInfo=r,this.user=Qi.UNAUTHENTICATED,this.clientId=eX.newId(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this._uninitializedComponentsProvider=s,this.authCredentials.start(i,async o=>{pt("FirestoreClient","Received user=",o.uid),await this.authCredentialListener(o),this.user=o}),this.appCheckCredentials.start(i,o=>(pt("FirestoreClient","Received new app check token=",o),this.appCheckCredentialListener(o,this.user)))}get configuration(){return{asyncQueue:this.asyncQueue,databaseInfo:this.databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(e){this.authCredentialListener=e}setAppCheckTokenChangeListener(e){this.appCheckCredentialListener=e}terminate(){this.asyncQueue.enterRestrictedMode();const e=new jc;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted(async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),e.resolve()}catch(t){const i=GU(t,"Failed to shutdown persistence");e.reject(i)}}),e.promise}}async function Pw(n,e){n.asyncQueue.verifyOperationInProgress(),pt("FirestoreClient","Initializing OfflineComponentProvider");const t=n.configuration;await e.initialize(t);let i=t.initialUser;n.setCredentialChangeListener(async r=>{i.isEqual(r)||(await OU(e.localStore,r),i=r)}),e.persistence.setDatabaseDeletedListener(()=>n.terminate()),n._offlineComponents=e}async function y2(n,e){n.asyncQueue.verifyOperationInProgress();const t=await g$(n);pt("FirestoreClient","Initializing OnlineComponentProvider"),await e.initialize(t,n.configuration),n.setCredentialChangeListener(i=>h2(e.remoteStore,i)),n.setAppCheckTokenChangeListener((i,r)=>h2(e.remoteStore,r)),n._onlineComponents=e}async function g$(n){if(!n._offlineComponents)if(n._uninitializedComponentsProvider){pt("FirestoreClient","Using user provided OfflineComponentProvider");try{await Pw(n,n._uninitializedComponentsProvider._offline)}catch(e){const t=e;if(!function(r){return r.name==="FirebaseError"?r.code===qe.FAILED_PRECONDITION||r.code===qe.UNIMPLEMENTED:!(typeof DOMException<"u"&&r instanceof DOMException)||r.code===22||r.code===20||r.code===11}(t))throw t;od("Error using user provided cache. Falling back to memory cache: "+t),await Pw(n,new E0)}}else pt("FirestoreClient","Using default OfflineComponentProvider"),await Pw(n,new E0);return n._offlineComponents}async function y$(n){return n._onlineComponents||(n._uninitializedComponentsProvider?(pt("FirestoreClient","Using user provided OnlineComponentProvider"),await y2(n,n._uninitializedComponentsProvider._online)):(pt("FirestoreClient","Using default OnlineComponentProvider"),await y2(n,new lT))),n._onlineComponents}async function v$(n){const e=await y$(n),t=e.eventManager;return t.onListen=s$.bind(null,e.syncEngine),t.onUnlisten=l$.bind(null,e.syncEngine),t.onFirstRemoteStoreListen=o$.bind(null,e.syncEngine),t.onLastRemoteStoreUnlisten=c$.bind(null,e.syncEngine),t}function _$(n,e,t={}){const i=new jc;return n.asyncQueue.enqueueAndForget(async()=>function(s,o,a,l,c){const d=new p$({next:p=>{d.Za(),o.enqueueAndForget(()=>Qq(s,f)),p.fromCache&&l.source==="server"?c.reject(new Tt(qe.UNAVAILABLE,'Failed to get documents from server. (However, these documents may exist in the local cache. Run again without setting source to "server" to retrieve the cached documents.)')):c.resolve(p)},error:p=>c.reject(p)}),f=new e$(a,d,{includeMetadataChanges:!0,_a:!0});return Kq(s,f)}(await v$(n),n.asyncQueue,e,t,i)),i.promise}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function QU(n){const e={};return n.timeoutSeconds!==void 0&&(e.timeoutSeconds=n.timeoutSeconds),e}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const v2=new Map;/** + * @license + * Copyright 2017 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function x$(n,e,t){if(!t)throw new Tt(qe.INVALID_ARGUMENT,`Function ${n}() cannot be called with an empty ${e}.`)}function S$(n,e,t,i){if(e===!0&&i===!0)throw new Tt(qe.INVALID_ARGUMENT,`${n} and ${t} cannot be used together.`)}function _2(n){if(Pt.isDocumentKey(n))throw new Tt(qe.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${n} has ${n.length}.`)}function w$(n){if(n===void 0)return"undefined";if(n===null)return"null";if(typeof n=="string")return n.length>20&&(n=`${n.substring(0,20)}...`),JSON.stringify(n);if(typeof n=="number"||typeof n=="boolean")return""+n;if(typeof n=="object"){if(n instanceof Array)return"an array";{const e=function(i){return i.constructor?i.constructor.name:null}(n);return e?`a custom ${e} object`:"an object"}}return typeof n=="function"?"a function":Wt()}function cT(n,e){if("_delegate"in n&&(n=n._delegate),!(n instanceof e)){if(e.name===n.constructor.name)throw new Tt(qe.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");{const t=w$(n);throw new Tt(qe.INVALID_ARGUMENT,`Expected type '${e.name}', but it was: ${t}`)}}return n}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class x2{constructor(e){var t,i;if(e.host===void 0){if(e.ssl!==void 0)throw new Tt(qe.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host="firestore.googleapis.com",this.ssl=!0}else this.host=e.host,this.ssl=(t=e.ssl)===null||t===void 0||t;if(this.credentials=e.credentials,this.ignoreUndefinedProperties=!!e.ignoreUndefinedProperties,this.localCache=e.localCache,e.cacheSizeBytes===void 0)this.cacheSizeBytes=41943040;else{if(e.cacheSizeBytes!==-1&&e.cacheSizeBytes<1048576)throw new Tt(qe.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}S$("experimentalForceLongPolling",e.experimentalForceLongPolling,"experimentalAutoDetectLongPolling",e.experimentalAutoDetectLongPolling),this.experimentalForceLongPolling=!!e.experimentalForceLongPolling,this.experimentalForceLongPolling?this.experimentalAutoDetectLongPolling=!1:e.experimentalAutoDetectLongPolling===void 0?this.experimentalAutoDetectLongPolling=!0:this.experimentalAutoDetectLongPolling=!!e.experimentalAutoDetectLongPolling,this.experimentalLongPollingOptions=QU((i=e.experimentalLongPollingOptions)!==null&&i!==void 0?i:{}),function(s){if(s.timeoutSeconds!==void 0){if(isNaN(s.timeoutSeconds))throw new Tt(qe.INVALID_ARGUMENT,`invalid long polling timeout: ${s.timeoutSeconds} (must not be NaN)`);if(s.timeoutSeconds<5)throw new Tt(qe.INVALID_ARGUMENT,`invalid long polling timeout: ${s.timeoutSeconds} (minimum allowed value is 5)`);if(s.timeoutSeconds>30)throw new Tt(qe.INVALID_ARGUMENT,`invalid long polling timeout: ${s.timeoutSeconds} (maximum allowed value is 30)`)}}(this.experimentalLongPollingOptions),this.useFetchStreams=!!e.useFetchStreams}isEqual(e){return this.host===e.host&&this.ssl===e.ssl&&this.credentials===e.credentials&&this.cacheSizeBytes===e.cacheSizeBytes&&this.experimentalForceLongPolling===e.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===e.experimentalAutoDetectLongPolling&&function(i,r){return i.timeoutSeconds===r.timeoutSeconds}(this.experimentalLongPollingOptions,e.experimentalLongPollingOptions)&&this.ignoreUndefinedProperties===e.ignoreUndefinedProperties&&this.useFetchStreams===e.useFetchStreams}}class RM{constructor(e,t,i,r){this._authCredentials=e,this._appCheckCredentials=t,this._databaseId=i,this._app=r,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new x2({}),this._settingsFrozen=!1,this._terminateTask="notTerminated"}get app(){if(!this._app)throw new Tt(qe.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return this._terminateTask!=="notTerminated"}_setSettings(e){if(this._settingsFrozen)throw new Tt(qe.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new x2(e),e.credentials!==void 0&&(this._authCredentials=function(i){if(!i)return new X7;switch(i.type){case"firstParty":return new K7(i.sessionIndex||"0",i.iamToken||null,i.authTokenFactory||null);case"provider":return i.client;default:throw new Tt(qe.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}}(e.credentials))}_getSettings(){return this._settings}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return this._terminateTask==="notTerminated"&&(this._terminateTask=this._terminate()),this._terminateTask}async _restart(){this._terminateTask==="notTerminated"?await this._terminate():this._terminateTask="notTerminated"}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return function(t){const i=v2.get(t);i&&(pt("ComponentProvider","Removing Datastore"),v2.delete(t),i.terminate())}(this),Promise.resolve()}}function E$(n,e,t,i={}){var r;const s=(n=cT(n,RM))._getSettings(),o=`${e}:${t}`;if(s.host!=="firestore.googleapis.com"&&s.host!==o&&od("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used."),n._setSettings(Object.assign(Object.assign({},s),{host:o,ssl:!1})),i.mockUserToken){let a,l;if(typeof i.mockUserToken=="string")a=i.mockUserToken,l=Qi.MOCK_USER;else{a=wj(i.mockUserToken,(r=n._app)===null||r===void 0?void 0:r.options.projectId);const c=i.mockUserToken.sub||i.mockUserToken.user_id;if(!c)throw new Tt(qe.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");l=new Qi(c)}n._authCredentials=new q7(new cU(a,l))}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class nx{constructor(e,t,i){this.converter=t,this._query=i,this.type="query",this.firestore=e}withConverter(e){return new nx(this.firestore,e,this._query)}}class Pd{constructor(e,t,i){this.converter=t,this._key=i,this.type="document",this.firestore=e}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new jh(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new Pd(this.firestore,e,this._key)}}class jh extends nx{constructor(e,t,i){super(e,t,yU(i)),this._path=i,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){const e=this._path.popLast();return e.isEmpty()?null:new Pd(this.firestore,null,new Pt(e))}withConverter(e){return new jh(this.firestore,e,this._path)}}function IM(n,e,...t){if(n=Ul(n),x$("collection","path",e),n instanceof RM){const i=qn.fromString(e,...t);return _2(i),new jh(n,null,i)}{if(!(n instanceof Pd||n instanceof jh))throw new Tt(qe.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const i=n._path.child(qn.fromString(e,...t));return _2(i),new jh(n.firestore,null,i)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class S2{constructor(e=Promise.resolve()){this.Pu=[],this.Iu=!1,this.Tu=[],this.Eu=null,this.du=!1,this.Au=!1,this.Ru=[],this.t_=new VU(this,"async_queue_retry"),this.Vu=()=>{const i=bw();i&&pt("AsyncQueue","Visibility state changed to "+i.visibilityState),this.t_.jo()},this.mu=e;const t=bw();t&&typeof t.addEventListener=="function"&&t.addEventListener("visibilitychange",this.Vu)}get isShuttingDown(){return this.Iu}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.fu(),this.gu(e)}enterRestrictedMode(e){if(!this.Iu){this.Iu=!0,this.Au=e||!1;const t=bw();t&&typeof t.removeEventListener=="function"&&t.removeEventListener("visibilitychange",this.Vu)}}enqueue(e){if(this.fu(),this.Iu)return new Promise(()=>{});const t=new jc;return this.gu(()=>this.Iu&&this.Au?Promise.resolve():(e().then(t.resolve,t.reject),t.promise)).then(()=>t.promise)}enqueueRetryable(e){this.enqueueAndForget(()=>(this.Pu.push(e),this.pu()))}async pu(){if(this.Pu.length!==0){try{await this.Pu[0](),this.Pu.shift(),this.t_.reset()}catch(e){if(!km(e))throw e;pt("AsyncQueue","Operation failed with retryable error: "+e)}this.Pu.length>0&&this.t_.Go(()=>this.pu())}}gu(e){const t=this.mu.then(()=>(this.du=!0,e().catch(i=>{this.Eu=i,this.du=!1;const r=function(o){let a=o.message||"";return o.stack&&(a=o.stack.includes(o.message)?o.stack:o.message+` +`+o.stack),a}(i);throw ha("INTERNAL UNHANDLED ERROR: ",r),i}).then(i=>(this.du=!1,i))));return this.mu=t,t}enqueueAfterDelay(e,t,i){this.fu(),this.Ru.indexOf(e)>-1&&(t=0);const r=CM.createAndSchedule(this,e,t,i,s=>this.yu(s));return this.Tu.push(r),r}fu(){this.Eu&&Wt()}verifyOperationInProgress(){}async wu(){let e;do e=this.mu,await e;while(e!==this.mu)}Su(e){for(const t of this.Tu)if(t.timerId===e)return!0;return!1}bu(e){return this.wu().then(()=>{this.Tu.sort((t,i)=>t.targetTimeMs-i.targetTimeMs);for(const t of this.Tu)if(t.skipDelay(),e!=="all"&&t.timerId===e)break;return this.wu()})}Du(e){this.Ru.push(e)}yu(e){const t=this.Tu.indexOf(e);this.Tu.splice(t,1)}}class JU extends RM{constructor(e,t,i,r){super(e,t,i,r),this.type="firestore",this._queue=new S2,this._persistenceKey=(r==null?void 0:r.name)||"[DEFAULT]"}async _terminate(){if(this._firestoreClient){const e=this._firestoreClient.terminate();this._queue=new S2(e),this._firestoreClient=void 0,await e}}}function T$(n,e){const t=typeof n=="object"?n:eU(),i=typeof n=="string"?n:e||"(default)",r=lM(t,"firestore").getImmediate({identifier:i});if(!r._initialized){const s=xj("firestore");s&&E$(r,...s)}return r}function A$(n){if(n._terminated)throw new Tt(qe.FAILED_PRECONDITION,"The client has already been terminated.");return n._firestoreClient||M$(n),n._firestoreClient}function M$(n){var e,t,i;const r=n._freezeSettings(),s=function(a,l,c,d){return new uX(a,l,c,d.host,d.ssl,d.experimentalForceLongPolling,d.experimentalAutoDetectLongPolling,QU(d.experimentalLongPollingOptions),d.useFetchStreams)}(n._databaseId,((e=n._app)===null||e===void 0?void 0:e.options.appId)||"",n._persistenceKey,r);n._componentsProvider||!((t=r.localCache)===null||t===void 0)&&t._offlineComponentProvider&&(!((i=r.localCache)===null||i===void 0)&&i._onlineComponentProvider)&&(n._componentsProvider={_offline:r.localCache._offlineComponentProvider,_online:r.localCache._onlineComponentProvider}),n._firestoreClient=new m$(n._authCredentials,n._appCheckCredentials,n._queue,s,n._componentsProvider&&function(a){const l=a==null?void 0:a._online.build();return{_offline:a==null?void 0:a._offline.build(l),_online:l}}(n._componentsProvider))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class T0{constructor(e){this._byteString=e}static fromBase64String(e){try{return new T0(ki.fromBase64String(e))}catch(t){throw new Tt(qe.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+t)}}static fromUint8Array(e){return new T0(ki.fromUint8Array(e))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(e){return this._byteString.isEqual(e._byteString)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ZU{constructor(...e){for(let t=0;t90)throw new Tt(qe.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(t)||t<-180||t>180)throw new Tt(qe.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+t);this._lat=e,this._long=t}get latitude(){return this._lat}get longitude(){return this._long}isEqual(e){return this._lat===e._lat&&this._long===e._long}toJSON(){return{latitude:this._lat,longitude:this._long}}_compareTo(e){return hn(this._lat,e._lat)||hn(this._long,e._long)}}/** + * @license + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class b${constructor(e){this._values=(e||[]).map(t=>t)}toArray(){return this._values.map(e=>e)}isEqual(e){return function(i,r){if(i.length!==r.length)return!1;for(let s=0;s=0)throw w2(`Invalid field path (${e}). Paths must not contain '~', '*', '/', '[', or ']'`,n,!1,void 0,t);try{return new ZU(...e.split("."))._internalPath}catch{throw w2(`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,n,!1,void 0,t)}}function w2(n,e,t,i,r){const s=i&&!i.isEmpty(),o=r!==void 0;let a=`Function ${e}() called with invalid data`;t&&(a+=" (via `toFirestore()`)"),a+=". ";let l="";return(s||o)&&(l+=" (found",s&&(l+=` in field ${i}`),o&&(l+=` in document ${r}`),l+=")"),new Tt(qe.INVALID_ARGUMENT,a+n+l)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class eF{constructor(e,t,i,r,s){this._firestore=e,this._userDataWriter=t,this._key=i,this._document=r,this._converter=s}get id(){return this._key.path.lastSegment()}get ref(){return new Pd(this._firestore,this._converter,this._key)}exists(){return this._document!==null}data(){if(this._document){if(this._converter){const e=new I$(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(e)}return this._userDataWriter.convertValue(this._document.data.value)}}get(e){if(this._document){const t=this._document.data.field(tF("DocumentSnapshot.get",e));if(t!==null)return this._userDataWriter.convertValue(t)}}}class I$ extends eF{data(){return super.data()}}function tF(n,e){return typeof e=="string"?R$(n,e):e instanceof ZU?e._internalPath:e._delegate._internalPath}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function L$(n){if(n.limitType==="L"&&n.explicitOrderBy.length===0)throw new Tt(qe.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}class N${convertValue(e,t="none"){switch(ou(e)){case 0:return null;case 1:return e.booleanValue;case 2:return ei(e.integerValue||e.doubleValue);case 3:return this.convertTimestamp(e.timestampValue);case 4:return this.convertServerTimestamp(e,t);case 5:return e.stringValue;case 6:return this.convertBytes(su(e.bytesValue));case 7:return this.convertReference(e.referenceValue);case 8:return this.convertGeoPoint(e.geoPointValue);case 9:return this.convertArray(e.arrayValue,t);case 11:return this.convertObject(e.mapValue,t);case 10:return this.convertVectorValue(e.mapValue);default:throw Wt()}}convertObject(e,t){return this.convertObjectMap(e.fields,t)}convertObjectMap(e,t="none"){const i={};return $_(e,(r,s)=>{i[r]=this.convertValue(s,t)}),i}convertVectorValue(e){var t,i,r;const s=(r=(i=(t=e.fields)===null||t===void 0?void 0:t.value.arrayValue)===null||i===void 0?void 0:i.values)===null||r===void 0?void 0:r.map(o=>ei(o.doubleValue));return new b$(s)}convertGeoPoint(e){return new C$(ei(e.latitude),ei(e.longitude))}convertArray(e,t){return(e.values||[]).map(i=>this.convertValue(i,t))}convertServerTimestamp(e,t){switch(t){case"previous":const i=fM(e);return i==null?null:this.convertValue(i,t);case"estimate":return this.convertTimestamp(Yp(e));default:return null}}convertTimestamp(e){const t=bl(e);return new Vr(t.seconds,t.nanos)}convertDocumentKey(e,t){const i=qn.fromString(e);Kn(kU(i));const r=new Kp(i.get(1),i.get(3)),s=new Pt(i.popFirst(5));return r.isEqual(t)||ha(`Document ${s} contains a document reference within a different database (${r.projectId}/${r.database}) which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),s}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class fy{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class D$ extends eF{constructor(e,t,i,r,s,o){super(e,t,i,r,o),this._firestore=e,this._firestoreImpl=e,this.metadata=s}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){const t=new Mv(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(t,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,t={}){if(this._document){const i=this._document.data.field(tF("DocumentSnapshot.get",e));if(i!==null)return this._userDataWriter.convertValue(i,t.serverTimestamps)}}}class Mv extends D${data(e={}){return super.data(e)}}class k${constructor(e,t,i,r){this._firestore=e,this._userDataWriter=t,this._snapshot=r,this.metadata=new fy(r.hasPendingWrites,r.fromCache),this.query=i}get docs(){const e=[];return this.forEach(t=>e.push(t)),e}get size(){return this._snapshot.docs.size}get empty(){return this.size===0}forEach(e,t){this._snapshot.docs.forEach(i=>{e.call(t,new Mv(this._firestore,this._userDataWriter,i.key,i,new fy(this._snapshot.mutatedKeys.has(i.key),this._snapshot.fromCache),this.query.converter))})}docChanges(e={}){const t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new Tt(qe.INVALID_ARGUMENT,"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().");return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===t||(this._cachedChanges=function(r,s){if(r._snapshot.oldDocs.isEmpty()){let o=0;return r._snapshot.docChanges.map(a=>{const l=new Mv(r._firestore,r._userDataWriter,a.doc.key,a.doc,new fy(r._snapshot.mutatedKeys.has(a.doc.key),r._snapshot.fromCache),r.query.converter);return a.doc,{type:"added",doc:l,oldIndex:-1,newIndex:o++}})}{let o=r._snapshot.oldDocs;return r._snapshot.docChanges.filter(a=>s||a.type!==3).map(a=>{const l=new Mv(r._firestore,r._userDataWriter,a.doc.key,a.doc,new fy(r._snapshot.mutatedKeys.has(a.doc.key),r._snapshot.fromCache),r.query.converter);let c=-1,d=-1;return a.type!==0&&(c=o.indexOf(a.doc.key),o=o.delete(a.doc.key)),a.type!==1&&(o=o.add(a.doc),d=o.indexOf(a.doc.key)),{type:O$(a.type),doc:l,oldIndex:c,newIndex:d}})}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}}function O$(n){switch(n){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return Wt()}}class U$ extends N${constructor(e){super(),this.firestore=e}convertBytes(e){return new T0(e)}convertReference(e){const t=this.convertDocumentKey(e,this.firestore._databaseId);return new Pd(this.firestore,null,t)}}function LM(n){n=cT(n,nx);const e=cT(n.firestore,JU),t=A$(e),i=new U$(e);return L$(n._query),_$(t,n._query).then(r=>new k$(e,i,n,r))}(function(e,t=!0){(function(r){Md=r})(Ad),sd(new iu("firestore",(i,{instanceIdentifier:r,options:s})=>{const o=i.getProvider("app").getImmediate(),a=new JU(new $7(i.getProvider("auth-internal")),new J7(i.getProvider("app-check-internal")),function(c,d){if(!Object.prototype.hasOwnProperty.apply(c.options,["projectId"]))throw new Tt(qe.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new Kp(c.options.projectId,d)}(o,r),o);return s=Object.assign({useFetchStreams:t},s),a._setSettings(s),a},"PUBLIC").setMultipleInstances(!0)),Sl(BI,"4.7.3",e),Sl(BI,"4.7.3","esm2017")})();var F$="firebase",V$="10.14.1";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */Sl(F$,V$,"app");const B$={apiKey:"AIzaSyC_lxk5L-t6jwEb9g8h7ErMyQ7sjkvy6AM",authDomain:"portfolio-9f302.firebaseapp.com",projectId:"portfolio-9f302",storageBucket:"portfolio-9f302.appspot.com",messagingSenderId:"202288634568",appId:"1:202288634568:web:edf2762243915c92b923fd"},z$=ZO(B$),NM=T$(z$),H$=({experience:n})=>B.jsxs(WO.VerticalTimelineElement,{contentStyle:{background:"black",color:"black"},contentArrowStyle:{borderRight:"7px solid black"},date:n.date,iconStyle:{background:n.iconBg},icon:B.jsx("div",{className:"flex justify-center items-center w-full h-full",children:B.jsx("img",{src:n.icon,alt:n.company_name,className:"w-[75%] h-[75%] object-contain"})}),children:[B.jsxs("div",{children:[B.jsx("h3",{className:"text-[#fcd4d4] text-[24px] font-bold",children:n.title}),B.jsx("p",{className:"text-white text-[16px] font-semibold",style:{margin:0},children:n.company_name})]}),B.jsx("ul",{className:"mt-5 list-disc ml-5 space-y-2",children:n.points.map((e,t)=>B.jsx("li",{className:"text-white-100 text-[14px] pl-1 tracking-wider",children:e},`experience-point-${t}`))})]}),G$=()=>{const[n,e]=q.useState([]);return q.useEffect(()=>{(async()=>{const r=(await LM(IM(NM,"Experience"))).docs.map(s=>s.data()).sort((s,o)=>o.index-s.index);e(r)})()},[]),B.jsxs("section",{children:[B.jsxs(er.div,{variants:Lm(),children:[B.jsx("h2",{className:`${sr.sectionHeadText} text-center`,children:"Work Experience."}),B.jsx("p",{className:`${sr.sectionSubText} text-center`,children:"Where I have worked so far?"})]}),B.jsx("div",{className:"mt-20 flex flex-col",children:B.jsx(WO.VerticalTimeline,{lineColor:"#373737",children:n.map((t,i)=>B.jsx(H$,{experience:t},`experience-${i}`))})})]})},W$=Td(G$,"ExperienceSection"),j$=()=>B.jsxs("div",{id:"HeroSection",className:"relative bg-black text-white h-fit flex flex-col rounded-b-[356px]",children:[B.jsxs("div",{className:"flex-grow flex flex-col justify-center items-center text-center px-6 py-32",children:[B.jsxs("h1",{className:"text-6xl font-bold",children:["Hello, I am Satyam ",B.jsx("br",{})," Mishra"]}),B.jsx("p",{className:"mt-6 max-w-md text-gray-400",children:"I'm a computer science student with a simple and curious mind."}),B.jsx("a",{href:"https://medium.com/@Satyam_Mishra/",target:"_blank",children:B.jsxs("button",{className:"mt-8 bg-yellow-400 hover:bg-yellow-500 text-black font-bold py-3 px-8 rounded-full flex items-center",children:["Read my blogs ",B.jsx("span",{className:"ml-2",children:"▶"})]})})]}),B.jsx("div",{className:" absolute z-10 xs:bottom-8 bottom-8 w-full flex justify-center items-center",children:B.jsx("a",{href:"#AboutSection",children:B.jsx("div",{className:"w-[35px] h-[64px] rounded-3xl border-4 border-primary flex justify-center items-start p-2",children:B.jsx(er.div,{animate:{y:[0,24,0]},transition:{duration:1.5,repeat:1/0,repeatType:"loop"},className:"w-3 h-3 rounded-full bg-primary mb-2"})})})})]});/** + * @license + * Copyright 2010-2024 Three.js Authors + * SPDX-License-Identifier: MIT + */const ix="169",Cc={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},bc={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},nF=0,uT=1,iF=2,X$=3,rF=0,rx=1,pp=2,Os=3,da=0,yr=1,Bs=2,ra=0,qc=1,hT=2,dT=3,fT=4,sF=5,Ja=100,oF=101,aF=102,lF=103,cF=104,uF=200,hF=201,dF=202,fF=203,A0=204,M0=205,pF=206,mF=207,gF=208,yF=209,vF=210,_F=211,xF=212,SF=213,wF=214,C0=0,b0=1,P0=2,au=3,R0=4,I0=5,L0=6,N0=7,Vm=0,EF=1,TF=2,vo=0,AF=1,MF=2,CF=3,DM=4,bF=5,PF=6,RF=7,pT="attached",IF="detached",sx=300,fa=301,Rl=302,Jp=303,Zp=304,Rd=306,em=1e3,Es=1001,tm=1002,Ai=1003,kM=1004,q$=1004,Ph=1005,$$=1005,fi=1006,mp=1007,Y$=1007,ho=1008,K$=1008,js=1009,OM=1010,UM=1011,dd=1012,ox=1013,pa=1014,kr=1015,Id=1016,ax=1017,lx=1018,lu=1020,FM=35902,VM=1021,BM=1022,tr=1023,zM=1024,HM=1025,$c=1026,cu=1027,cx=1028,Bm=1029,GM=1030,ux=1031,Q$=1032,hx=1033,gp=33776,yp=33777,vp=33778,_p=33779,D0=35840,k0=35841,O0=35842,U0=35843,F0=36196,V0=37492,B0=37496,z0=37808,H0=37809,G0=37810,W0=37811,j0=37812,X0=37813,q0=37814,$0=37815,Y0=37816,K0=37817,Q0=37818,J0=37819,Z0=37820,e_=37821,xp=36492,t_=36494,n_=36495,WM=36283,i_=36284,r_=36285,s_=36286,LF=2200,NF=2201,DF=2202,nm=2300,o_=2301,Cv=2302,Uc=2400,Fc=2401,im=2402,dx=2500,jM=2501,J$=0,Z$=1,eY=2,kF=3200,OF=3201,tY=3202,nY=3203,Fl=0,UF=1,jo="",_s="srgb",xa="srgb-linear",fx="display-p3",zm="display-p3-linear",rm="linear",En="srgb",sm="rec709",om="p3",iY=0,Pc=7680,rY=7681,sY=7682,oY=7683,aY=34055,lY=34056,cY=5386,uY=512,hY=513,dY=514,fY=515,pY=516,mY=517,gY=518,mT=519,FF=512,VF=513,BF=514,XM=515,zF=516,HF=517,GF=518,WF=519,am=35044,yY=35048,vY=35040,_Y=35045,xY=35049,SY=35041,wY=35046,EY=35050,TY=35042,AY="100",gT="300 es",fo=2e3,lm=2001;class Ys{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const i=this._listeners;return i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const r=this._listeners[e];if(r!==void 0){const s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const i=this._listeners[e.type];if(i!==void 0){e.target=this;const r=i.slice(0);for(let s=0,o=r.length;s>8&255]+qi[n>>16&255]+qi[n>>24&255]+"-"+qi[e&255]+qi[e>>8&255]+"-"+qi[e>>16&15|64]+qi[e>>24&255]+"-"+qi[t&63|128]+qi[t>>8&255]+"-"+qi[t>>16&255]+qi[t>>24&255]+qi[i&255]+qi[i>>8&255]+qi[i>>16&255]+qi[i>>24&255]).toLowerCase()}function $n(n,e,t){return Math.max(e,Math.min(t,n))}function qM(n,e){return(n%e+e)%e}function MY(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function CY(n,e,t){return n!==e?(t-n)/(e-n):0}function Sp(n,e,t){return(1-t)*n+t*e}function bY(n,e,t,i){return Sp(n,e,1-Math.exp(-t*i))}function PY(n,e=1){return e-Math.abs(qM(n,e*2)-e)}function RY(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function IY(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function LY(n,e){return n+Math.floor(Math.random()*(e-n+1))}function NY(n,e){return n+Math.random()*(e-n)}function DY(n){return n*(.5-Math.random())}function kY(n){n!==void 0&&(E2=n);let e=E2+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function OY(n){return n*Yc}function UY(n){return n*fd}function FY(n){return(n&n-1)===0&&n!==0}function VY(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function BY(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function zY(n,e,t,i,r){const s=Math.cos,o=Math.sin,a=s(t/2),l=o(t/2),c=s((e+i)/2),d=o((e+i)/2),f=s((e-i)/2),p=o((e-i)/2),m=s((i-e)/2),_=o((i-e)/2);switch(r){case"XYX":n.set(a*d,l*f,l*p,a*c);break;case"YZY":n.set(l*p,a*d,l*f,a*c);break;case"ZXZ":n.set(l*f,l*p,a*d,a*c);break;case"XZX":n.set(a*d,l*_,l*m,a*c);break;case"YXY":n.set(l*m,a*d,l*_,a*c);break;case"ZYZ":n.set(l*_,l*m,a*d,a*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function mr(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function Ft(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const jF={DEG2RAD:Yc,RAD2DEG:fd,generateUUID:Zr,clamp:$n,euclideanModulo:qM,mapLinear:MY,inverseLerp:CY,lerp:Sp,damp:bY,pingpong:PY,smoothstep:RY,smootherstep:IY,randInt:LY,randFloat:NY,randFloatSpread:DY,seededRandom:kY,degToRad:OY,radToDeg:UY,isPowerOfTwo:FY,ceilPowerOfTwo:VY,floorPowerOfTwo:BY,setQuaternionFromProperEuler:zY,normalize:Ft,denormalize:mr};class Ee{constructor(e=0,t=0){Ee.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6],this.y=r[1]*t+r[4]*i+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos($n(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),r=Math.sin(t),s=this.x-e.x,o=this.y-e.y;return this.x=s*i-o*r+e.x,this.y=s*r+o*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Ut{constructor(e,t,i,r,s,o,a,l,c){Ut.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,o,a,l,c)}set(e,t,i,r,s,o,a,l,c){const d=this.elements;return d[0]=e,d[1]=r,d[2]=a,d[3]=t,d[4]=s,d[5]=l,d[6]=i,d[7]=o,d[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,s=this.elements,o=i[0],a=i[3],l=i[6],c=i[1],d=i[4],f=i[7],p=i[2],m=i[5],_=i[8],S=r[0],x=r[3],y=r[6],E=r[1],w=r[4],M=r[7],O=r[2],k=r[5],I=r[8];return s[0]=o*S+a*E+l*O,s[3]=o*x+a*w+l*k,s[6]=o*y+a*M+l*I,s[1]=c*S+d*E+f*O,s[4]=c*x+d*w+f*k,s[7]=c*y+d*M+f*I,s[2]=p*S+m*E+_*O,s[5]=p*x+m*w+_*k,s[8]=p*y+m*M+_*I,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],d=e[8];return t*o*d-t*a*c-i*s*d+i*a*l+r*s*c-r*o*l}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],d=e[8],f=d*o-a*c,p=a*l-d*s,m=c*s-o*l,_=t*f+i*p+r*m;if(_===0)return this.set(0,0,0,0,0,0,0,0,0);const S=1/_;return e[0]=f*S,e[1]=(r*c-d*i)*S,e[2]=(a*i-r*o)*S,e[3]=p*S,e[4]=(d*t-r*l)*S,e[5]=(r*s-a*t)*S,e[6]=m*S,e[7]=(i*l-c*t)*S,e[8]=(o*t-i*s)*S,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,s,o,a){const l=Math.cos(s),c=Math.sin(s);return this.set(i*l,i*c,-i*(l*o+c*a)+o+e,-r*c,r*l,-r*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(Rw.makeScale(e,t)),this}rotate(e){return this.premultiply(Rw.makeRotation(-e)),this}translate(e,t){return this.premultiply(Rw.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Rw=new Ut;function XF(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}const HY={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Rh(n,e){return new HY[n](e)}function cm(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function qF(){const n=cm("canvas");return n.style.display="block",n}const T2={};function bv(n){n in T2||(T2[n]=!0,console.warn(n))}function GY(n,e,t){return new Promise(function(i,r){function s(){switch(n.clientWaitSync(e,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:r();break;case n.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:i()}}setTimeout(s,t)})}function WY(n){const e=n.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function jY(n){const e=n.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}const A2=new Ut().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),M2=new Ut().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Ef={[xa]:{transfer:rm,primaries:sm,luminanceCoefficients:[.2126,.7152,.0722],toReference:n=>n,fromReference:n=>n},[_s]:{transfer:En,primaries:sm,luminanceCoefficients:[.2126,.7152,.0722],toReference:n=>n.convertSRGBToLinear(),fromReference:n=>n.convertLinearToSRGB()},[zm]:{transfer:rm,primaries:om,luminanceCoefficients:[.2289,.6917,.0793],toReference:n=>n.applyMatrix3(M2),fromReference:n=>n.applyMatrix3(A2)},[fx]:{transfer:En,primaries:om,luminanceCoefficients:[.2289,.6917,.0793],toReference:n=>n.convertSRGBToLinear().applyMatrix3(M2),fromReference:n=>n.applyMatrix3(A2).convertLinearToSRGB()}},XY=new Set([xa,zm]),cn={enabled:!0,_workingColorSpace:xa,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(n){if(!XY.has(n))throw new Error(`Unsupported working color space, "${n}".`);this._workingColorSpace=n},convert:function(n,e,t){if(this.enabled===!1||e===t||!e||!t)return n;const i=Ef[e].toReference,r=Ef[t].fromReference;return r(i(n))},fromWorkingColorSpace:function(n,e){return this.convert(n,this._workingColorSpace,e)},toWorkingColorSpace:function(n,e){return this.convert(n,e,this._workingColorSpace)},getPrimaries:function(n){return Ef[n].primaries},getTransfer:function(n){return n===jo?rm:Ef[n].transfer},getLuminanceCoefficients:function(n,e=this._workingColorSpace){return n.fromArray(Ef[e].luminanceCoefficients)}};function Xh(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Iw(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let Gu;class $F{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Gu===void 0&&(Gu=cm("canvas")),Gu.width=e.width,Gu.height=e.height;const i=Gu.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=Gu}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=cm("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const r=i.getImageData(0,0,e.width,e.height),s=r.data;for(let o=0;o0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==sx)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case em:e.x=e.x-Math.floor(e.x);break;case Es:e.x=e.x<0?0:1;break;case tm:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case em:e.y=e.y-Math.floor(e.y);break;case Es:e.y=e.y<0?0:1;break;case tm:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}In.DEFAULT_IMAGE=null;In.DEFAULT_MAPPING=sx;In.DEFAULT_ANISOTROPY=1;class sn{constructor(e=0,t=0,i=0,r=1){sn.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,r=this.z,s=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*r+o[12]*s,this.y=o[1]*t+o[5]*i+o[9]*r+o[13]*s,this.z=o[2]*t+o[6]*i+o[10]*r+o[14]*s,this.w=o[3]*t+o[7]*i+o[11]*r+o[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,r,s;const l=e.elements,c=l[0],d=l[4],f=l[8],p=l[1],m=l[5],_=l[9],S=l[2],x=l[6],y=l[10];if(Math.abs(d-p)<.01&&Math.abs(f-S)<.01&&Math.abs(_-x)<.01){if(Math.abs(d+p)<.1&&Math.abs(f+S)<.1&&Math.abs(_+x)<.1&&Math.abs(c+m+y-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const w=(c+1)/2,M=(m+1)/2,O=(y+1)/2,k=(d+p)/4,I=(f+S)/4,P=(_+x)/4;return w>M&&w>O?w<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(w),r=k/i,s=I/i):M>O?M<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(M),i=k/r,s=P/r):O<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(O),i=I/s,r=P/s),this.set(i,r,s,t),this}let E=Math.sqrt((x-_)*(x-_)+(f-S)*(f-S)+(p-d)*(p-d));return Math.abs(E)<.001&&(E=1),this.x=(x-_)/E,this.y=(f-S)/E,this.z=(p-d)/E,this.w=Math.acos((c+m+y-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class YF extends Ys{constructor(e=1,t=1,i={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new sn(0,0,e,t),this.scissorTest=!1,this.viewport=new sn(0,0,e,t);const r={width:e,height:t,depth:1};i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:fi,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},i);const s=new In(r,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.colorSpace);s.flipY=!1,s.generateMipmaps=i.generateMipmaps,s.internalFormat=i.internalFormat,this.textures=[];const o=i.count;for(let a=0;a=0?1:-1,w=1-y*y;if(w>Number.EPSILON){const O=Math.sqrt(w),k=Math.atan2(O,y*E);x=Math.sin(x*k)/O,a=Math.sin(a*k)/O}const M=a*E;if(l=l*x+p*M,c=c*x+m*M,d=d*x+_*M,f=f*x+S*M,x===1-a){const O=1/Math.sqrt(l*l+c*c+d*d+f*f);l*=O,c*=O,d*=O,f*=O}}e[t]=l,e[t+1]=c,e[t+2]=d,e[t+3]=f}static multiplyQuaternionsFlat(e,t,i,r,s,o){const a=i[r],l=i[r+1],c=i[r+2],d=i[r+3],f=s[o],p=s[o+1],m=s[o+2],_=s[o+3];return e[t]=a*_+d*f+l*m-c*p,e[t+1]=l*_+d*p+c*f-a*m,e[t+2]=c*_+d*m+a*p-l*f,e[t+3]=d*_-a*f-l*p-c*m,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const i=e._x,r=e._y,s=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(i/2),d=a(r/2),f=a(s/2),p=l(i/2),m=l(r/2),_=l(s/2);switch(o){case"XYZ":this._x=p*d*f+c*m*_,this._y=c*m*f-p*d*_,this._z=c*d*_+p*m*f,this._w=c*d*f-p*m*_;break;case"YXZ":this._x=p*d*f+c*m*_,this._y=c*m*f-p*d*_,this._z=c*d*_-p*m*f,this._w=c*d*f+p*m*_;break;case"ZXY":this._x=p*d*f-c*m*_,this._y=c*m*f+p*d*_,this._z=c*d*_+p*m*f,this._w=c*d*f-p*m*_;break;case"ZYX":this._x=p*d*f-c*m*_,this._y=c*m*f+p*d*_,this._z=c*d*_-p*m*f,this._w=c*d*f+p*m*_;break;case"YZX":this._x=p*d*f+c*m*_,this._y=c*m*f+p*d*_,this._z=c*d*_-p*m*f,this._w=c*d*f-p*m*_;break;case"XZY":this._x=p*d*f-c*m*_,this._y=c*m*f-p*d*_,this._z=c*d*_+p*m*f,this._w=c*d*f+p*m*_;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,r=Math.sin(i);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],r=t[4],s=t[8],o=t[1],a=t[5],l=t[9],c=t[2],d=t[6],f=t[10],p=i+a+f;if(p>0){const m=.5/Math.sqrt(p+1);this._w=.25/m,this._x=(d-l)*m,this._y=(s-c)*m,this._z=(o-r)*m}else if(i>a&&i>f){const m=2*Math.sqrt(1+i-a-f);this._w=(d-l)/m,this._x=.25*m,this._y=(r+o)/m,this._z=(s+c)/m}else if(a>f){const m=2*Math.sqrt(1+a-i-f);this._w=(s-c)/m,this._x=(r+o)/m,this._y=.25*m,this._z=(l+d)/m}else{const m=2*Math.sqrt(1+f-i-a);this._w=(o-r)/m,this._x=(s+c)/m,this._y=(l+d)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs($n(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(i===0)return this;const r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,r=e._y,s=e._z,o=e._w,a=t._x,l=t._y,c=t._z,d=t._w;return this._x=i*d+o*a+r*c-s*l,this._y=r*d+o*l+s*a-i*c,this._z=s*d+o*c+i*l-r*a,this._w=o*d-i*a-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const i=this._x,r=this._y,s=this._z,o=this._w;let a=o*e._w+i*e._x+r*e._y+s*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=i,this._y=r,this._z=s,this;const l=1-a*a;if(l<=Number.EPSILON){const m=1-t;return this._w=m*o+t*this._w,this._x=m*i+t*this._x,this._y=m*r+t*this._y,this._z=m*s+t*this._z,this.normalize(),this}const c=Math.sqrt(l),d=Math.atan2(c,a),f=Math.sin((1-t)*d)/c,p=Math.sin(t*d)/c;return this._w=o*f+this._w*p,this._x=i*f+this._x*p,this._y=r*f+this._y*p,this._z=s*f+this._z*p,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),r=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class G{constructor(e=0,t=0,i=0){G.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(C2.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(C2.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6]*r,this.y=s[1]*t+s[4]*i+s[7]*r,this.z=s[2]*t+s[5]*i+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,r=this.z,s=e.elements,o=1/(s[3]*t+s[7]*i+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*i+s[8]*r+s[12])*o,this.y=(s[1]*t+s[5]*i+s[9]*r+s[13])*o,this.z=(s[2]*t+s[6]*i+s[10]*r+s[14])*o,this}applyQuaternion(e){const t=this.x,i=this.y,r=this.z,s=e.x,o=e.y,a=e.z,l=e.w,c=2*(o*r-a*i),d=2*(a*t-s*r),f=2*(s*i-o*t);return this.x=t+l*c+o*f-a*d,this.y=i+l*d+a*c-s*f,this.z=r+l*f+s*d-o*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r,this.y=s[1]*t+s[5]*i+s[9]*r,this.z=s[2]*t+s[6]*i+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,r=e.y,s=e.z,o=t.x,a=t.y,l=t.z;return this.x=r*l-s*a,this.y=s*o-i*l,this.z=i*a-r*o,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return Nw.copy(this).projectOnVector(e),this.sub(Nw)}reflect(e){return this.sub(Nw.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos($n(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Nw=new G,C2=new nr;class vr{constructor(e=new G(1/0,1/0,1/0),t=new G(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Ls),Ls.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Tf),my.subVectors(this.max,Tf),Wu.subVectors(e.a,Tf),ju.subVectors(e.b,Tf),Xu.subVectors(e.c,Tf),Ua.subVectors(ju,Wu),Fa.subVectors(Xu,ju),cc.subVectors(Wu,Xu);let t=[0,-Ua.z,Ua.y,0,-Fa.z,Fa.y,0,-cc.z,cc.y,Ua.z,0,-Ua.x,Fa.z,0,-Fa.x,cc.z,0,-cc.x,-Ua.y,Ua.x,0,-Fa.y,Fa.x,0,-cc.y,cc.x,0];return!Dw(t,Wu,ju,Xu,my)||(t=[1,0,0,0,1,0,0,0,1],!Dw(t,Wu,ju,Xu,my))?!1:(gy.crossVectors(Ua,Fa),t=[gy.x,gy.y,gy.z],Dw(t,Wu,ju,Xu,my))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Ls).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Ls).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Oo[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Oo[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Oo[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Oo[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Oo[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Oo[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Oo[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Oo[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Oo),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Oo=[new G,new G,new G,new G,new G,new G,new G,new G],Ls=new G,py=new vr,Wu=new G,ju=new G,Xu=new G,Ua=new G,Fa=new G,cc=new G,Tf=new G,my=new G,gy=new G,uc=new G;function Dw(n,e,t,i,r){for(let s=0,o=n.length-3;s<=o;s+=3){uc.fromArray(n,s);const a=r.x*Math.abs(uc.x)+r.y*Math.abs(uc.y)+r.z*Math.abs(uc.z),l=e.dot(uc),c=t.dot(uc),d=i.dot(uc);if(Math.max(-Math.max(l,c,d),Math.min(l,c,d))>a)return!1}return!0}const QY=new vr,Af=new G,kw=new G;class ir{constructor(e=new G,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;t!==void 0?i.copy(t):QY.setFromPoints(e).getCenter(i);let r=0;for(let s=0,o=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Af.subVectors(e,this.center);const t=Af.lengthSq();if(t>this.radius*this.radius){const i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(Af,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(kw.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Af.copy(e.center).add(kw)),this.expandByPoint(Af.copy(e.center).sub(kw))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const Uo=new G,Ow=new G,yy=new G,Va=new G,Uw=new G,vy=new G,Fw=new G;class yu{constructor(e=new G,t=new G(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Uo)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Uo.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Uo.copy(this.origin).addScaledVector(this.direction,t),Uo.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){Ow.copy(e).add(t).multiplyScalar(.5),yy.copy(t).sub(e).normalize(),Va.copy(this.origin).sub(Ow);const s=e.distanceTo(t)*.5,o=-this.direction.dot(yy),a=Va.dot(this.direction),l=-Va.dot(yy),c=Va.lengthSq(),d=Math.abs(1-o*o);let f,p,m,_;if(d>0)if(f=o*l-a,p=o*a-l,_=s*d,f>=0)if(p>=-_)if(p<=_){const S=1/d;f*=S,p*=S,m=f*(f+o*p+2*a)+p*(o*f+p+2*l)+c}else p=s,f=Math.max(0,-(o*p+a)),m=-f*f+p*(p+2*l)+c;else p=-s,f=Math.max(0,-(o*p+a)),m=-f*f+p*(p+2*l)+c;else p<=-_?(f=Math.max(0,-(-o*s+a)),p=f>0?-s:Math.min(Math.max(-s,-l),s),m=-f*f+p*(p+2*l)+c):p<=_?(f=0,p=Math.min(Math.max(-s,-l),s),m=p*(p+2*l)+c):(f=Math.max(0,-(o*s+a)),p=f>0?s:Math.min(Math.max(-s,-l),s),m=-f*f+p*(p+2*l)+c);else p=o>0?-s:s,f=Math.max(0,-(o*p+a)),m=-f*f+p*(p+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,f),r&&r.copy(Ow).addScaledVector(yy,p),m}intersectSphere(e,t){Uo.subVectors(e.center,this.origin);const i=Uo.dot(this.direction),r=Uo.dot(Uo)-i*i,s=e.radius*e.radius;if(r>s)return null;const o=Math.sqrt(s-r),a=i-o,l=i+o;return l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,s,o,a,l;const c=1/this.direction.x,d=1/this.direction.y,f=1/this.direction.z,p=this.origin;return c>=0?(i=(e.min.x-p.x)*c,r=(e.max.x-p.x)*c):(i=(e.max.x-p.x)*c,r=(e.min.x-p.x)*c),d>=0?(s=(e.min.y-p.y)*d,o=(e.max.y-p.y)*d):(s=(e.max.y-p.y)*d,o=(e.min.y-p.y)*d),i>o||s>r||((s>i||isNaN(i))&&(i=s),(o=0?(a=(e.min.z-p.z)*f,l=(e.max.z-p.z)*f):(a=(e.max.z-p.z)*f,l=(e.min.z-p.z)*f),i>l||a>r)||((a>i||i!==i)&&(i=a),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,Uo)!==null}intersectTriangle(e,t,i,r,s){Uw.subVectors(t,e),vy.subVectors(i,e),Fw.crossVectors(Uw,vy);let o=this.direction.dot(Fw),a;if(o>0){if(r)return null;a=1}else if(o<0)a=-1,o=-o;else return null;Va.subVectors(this.origin,e);const l=a*this.direction.dot(vy.crossVectors(Va,vy));if(l<0)return null;const c=a*this.direction.dot(Uw.cross(Va));if(c<0||l+c>o)return null;const d=-a*Va.dot(Fw);return d<0?null:this.at(d/o,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class St{constructor(e,t,i,r,s,o,a,l,c,d,f,p,m,_,S,x){St.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,o,a,l,c,d,f,p,m,_,S,x)}set(e,t,i,r,s,o,a,l,c,d,f,p,m,_,S,x){const y=this.elements;return y[0]=e,y[4]=t,y[8]=i,y[12]=r,y[1]=s,y[5]=o,y[9]=a,y[13]=l,y[2]=c,y[6]=d,y[10]=f,y[14]=p,y[3]=m,y[7]=_,y[11]=S,y[15]=x,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new St().fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,r=1/qu.setFromMatrixColumn(e,0).length(),s=1/qu.setFromMatrixColumn(e,1).length(),o=1/qu.setFromMatrixColumn(e,2).length();return t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t[3]=0,t[4]=i[4]*s,t[5]=i[5]*s,t[6]=i[6]*s,t[7]=0,t[8]=i[8]*o,t[9]=i[9]*o,t[10]=i[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,r=e.y,s=e.z,o=Math.cos(i),a=Math.sin(i),l=Math.cos(r),c=Math.sin(r),d=Math.cos(s),f=Math.sin(s);if(e.order==="XYZ"){const p=o*d,m=o*f,_=a*d,S=a*f;t[0]=l*d,t[4]=-l*f,t[8]=c,t[1]=m+_*c,t[5]=p-S*c,t[9]=-a*l,t[2]=S-p*c,t[6]=_+m*c,t[10]=o*l}else if(e.order==="YXZ"){const p=l*d,m=l*f,_=c*d,S=c*f;t[0]=p+S*a,t[4]=_*a-m,t[8]=o*c,t[1]=o*f,t[5]=o*d,t[9]=-a,t[2]=m*a-_,t[6]=S+p*a,t[10]=o*l}else if(e.order==="ZXY"){const p=l*d,m=l*f,_=c*d,S=c*f;t[0]=p-S*a,t[4]=-o*f,t[8]=_+m*a,t[1]=m+_*a,t[5]=o*d,t[9]=S-p*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order==="ZYX"){const p=o*d,m=o*f,_=a*d,S=a*f;t[0]=l*d,t[4]=_*c-m,t[8]=p*c+S,t[1]=l*f,t[5]=S*c+p,t[9]=m*c-_,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order==="YZX"){const p=o*l,m=o*c,_=a*l,S=a*c;t[0]=l*d,t[4]=S-p*f,t[8]=_*f+m,t[1]=f,t[5]=o*d,t[9]=-a*d,t[2]=-c*d,t[6]=m*f+_,t[10]=p-S*f}else if(e.order==="XZY"){const p=o*l,m=o*c,_=a*l,S=a*c;t[0]=l*d,t[4]=-f,t[8]=c*d,t[1]=p*f+S,t[5]=o*d,t[9]=m*f-_,t[2]=_*f-m,t[6]=a*d,t[10]=S*f+p}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(JY,e,ZY)}lookAt(e,t,i){const r=this.elements;return qr.subVectors(e,t),qr.lengthSq()===0&&(qr.z=1),qr.normalize(),Ba.crossVectors(i,qr),Ba.lengthSq()===0&&(Math.abs(i.z)===1?qr.x+=1e-4:qr.z+=1e-4,qr.normalize(),Ba.crossVectors(i,qr)),Ba.normalize(),_y.crossVectors(qr,Ba),r[0]=Ba.x,r[4]=_y.x,r[8]=qr.x,r[1]=Ba.y,r[5]=_y.y,r[9]=qr.y,r[2]=Ba.z,r[6]=_y.z,r[10]=qr.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,s=this.elements,o=i[0],a=i[4],l=i[8],c=i[12],d=i[1],f=i[5],p=i[9],m=i[13],_=i[2],S=i[6],x=i[10],y=i[14],E=i[3],w=i[7],M=i[11],O=i[15],k=r[0],I=r[4],P=r[8],D=r[12],A=r[1],R=r[5],V=r[9],U=r[13],se=r[2],le=r[6],ee=r[10],pe=r[14],W=r[3],J=r[7],Z=r[11],oe=r[15];return s[0]=o*k+a*A+l*se+c*W,s[4]=o*I+a*R+l*le+c*J,s[8]=o*P+a*V+l*ee+c*Z,s[12]=o*D+a*U+l*pe+c*oe,s[1]=d*k+f*A+p*se+m*W,s[5]=d*I+f*R+p*le+m*J,s[9]=d*P+f*V+p*ee+m*Z,s[13]=d*D+f*U+p*pe+m*oe,s[2]=_*k+S*A+x*se+y*W,s[6]=_*I+S*R+x*le+y*J,s[10]=_*P+S*V+x*ee+y*Z,s[14]=_*D+S*U+x*pe+y*oe,s[3]=E*k+w*A+M*se+O*W,s[7]=E*I+w*R+M*le+O*J,s[11]=E*P+w*V+M*ee+O*Z,s[15]=E*D+w*U+M*pe+O*oe,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],r=e[8],s=e[12],o=e[1],a=e[5],l=e[9],c=e[13],d=e[2],f=e[6],p=e[10],m=e[14],_=e[3],S=e[7],x=e[11],y=e[15];return _*(+s*l*f-r*c*f-s*a*p+i*c*p+r*a*m-i*l*m)+S*(+t*l*m-t*c*p+s*o*p-r*o*m+r*c*d-s*l*d)+x*(+t*c*f-t*a*m-s*o*f+i*o*m+s*a*d-i*c*d)+y*(-r*a*d-t*l*f+t*a*p+r*o*f-i*o*p+i*l*d)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],d=e[8],f=e[9],p=e[10],m=e[11],_=e[12],S=e[13],x=e[14],y=e[15],E=f*x*c-S*p*c+S*l*m-a*x*m-f*l*y+a*p*y,w=_*p*c-d*x*c-_*l*m+o*x*m+d*l*y-o*p*y,M=d*S*c-_*f*c+_*a*m-o*S*m-d*a*y+o*f*y,O=_*f*l-d*S*l-_*a*p+o*S*p+d*a*x-o*f*x,k=t*E+i*w+r*M+s*O;if(k===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const I=1/k;return e[0]=E*I,e[1]=(S*p*s-f*x*s-S*r*m+i*x*m+f*r*y-i*p*y)*I,e[2]=(a*x*s-S*l*s+S*r*c-i*x*c-a*r*y+i*l*y)*I,e[3]=(f*l*s-a*p*s-f*r*c+i*p*c+a*r*m-i*l*m)*I,e[4]=w*I,e[5]=(d*x*s-_*p*s+_*r*m-t*x*m-d*r*y+t*p*y)*I,e[6]=(_*l*s-o*x*s-_*r*c+t*x*c+o*r*y-t*l*y)*I,e[7]=(o*p*s-d*l*s+d*r*c-t*p*c-o*r*m+t*l*m)*I,e[8]=M*I,e[9]=(_*f*s-d*S*s-_*i*m+t*S*m+d*i*y-t*f*y)*I,e[10]=(o*S*s-_*a*s+_*i*c-t*S*c-o*i*y+t*a*y)*I,e[11]=(d*a*s-o*f*s-d*i*c+t*f*c+o*i*m-t*a*m)*I,e[12]=O*I,e[13]=(d*S*r-_*f*r+_*i*p-t*S*p-d*i*x+t*f*x)*I,e[14]=(_*a*r-o*S*r-_*i*l+t*S*l+o*i*x-t*a*x)*I,e[15]=(o*f*r-d*a*r+d*i*l-t*f*l-o*i*p+t*a*p)*I,this}scale(e){const t=this.elements,i=e.x,r=e.y,s=e.z;return t[0]*=i,t[4]*=r,t[8]*=s,t[1]*=i,t[5]*=r,t[9]*=s,t[2]*=i,t[6]*=r,t[10]*=s,t[3]*=i,t[7]*=r,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,r))}makeTranslation(e,t,i){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),r=Math.sin(t),s=1-i,o=e.x,a=e.y,l=e.z,c=s*o,d=s*a;return this.set(c*o+i,c*a-r*l,c*l+r*a,0,c*a+r*l,d*a+i,d*l-r*o,0,c*l-r*a,d*l+r*o,s*l*l+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,r,s,o){return this.set(1,i,s,0,e,1,o,0,t,r,1,0,0,0,0,1),this}compose(e,t,i){const r=this.elements,s=t._x,o=t._y,a=t._z,l=t._w,c=s+s,d=o+o,f=a+a,p=s*c,m=s*d,_=s*f,S=o*d,x=o*f,y=a*f,E=l*c,w=l*d,M=l*f,O=i.x,k=i.y,I=i.z;return r[0]=(1-(S+y))*O,r[1]=(m+M)*O,r[2]=(_-w)*O,r[3]=0,r[4]=(m-M)*k,r[5]=(1-(p+y))*k,r[6]=(x+E)*k,r[7]=0,r[8]=(_+w)*I,r[9]=(x-E)*I,r[10]=(1-(p+S))*I,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,i){const r=this.elements;let s=qu.set(r[0],r[1],r[2]).length();const o=qu.set(r[4],r[5],r[6]).length(),a=qu.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),e.x=r[12],e.y=r[13],e.z=r[14],Ns.copy(this);const c=1/s,d=1/o,f=1/a;return Ns.elements[0]*=c,Ns.elements[1]*=c,Ns.elements[2]*=c,Ns.elements[4]*=d,Ns.elements[5]*=d,Ns.elements[6]*=d,Ns.elements[8]*=f,Ns.elements[9]*=f,Ns.elements[10]*=f,t.setFromRotationMatrix(Ns),i.x=s,i.y=o,i.z=a,this}makePerspective(e,t,i,r,s,o,a=fo){const l=this.elements,c=2*s/(t-e),d=2*s/(i-r),f=(t+e)/(t-e),p=(i+r)/(i-r);let m,_;if(a===fo)m=-(o+s)/(o-s),_=-2*o*s/(o-s);else if(a===lm)m=-o/(o-s),_=-o*s/(o-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);return l[0]=c,l[4]=0,l[8]=f,l[12]=0,l[1]=0,l[5]=d,l[9]=p,l[13]=0,l[2]=0,l[6]=0,l[10]=m,l[14]=_,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,i,r,s,o,a=fo){const l=this.elements,c=1/(t-e),d=1/(i-r),f=1/(o-s),p=(t+e)*c,m=(i+r)*d;let _,S;if(a===fo)_=(o+s)*f,S=-2*f;else if(a===lm)_=s*f,S=-1*f;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-p,l[1]=0,l[5]=2*d,l[9]=0,l[13]=-m,l[2]=0,l[6]=0,l[10]=S,l[14]=-_,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<16;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const qu=new G,Ns=new St,JY=new G(0,0,0),ZY=new G(1,1,1),Ba=new G,_y=new G,qr=new G,b2=new St,P2=new nr;class _r{constructor(e=0,t=0,i=0,r=_r.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,r=this._order){return this._x=e,this._y=t,this._z=i,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const r=e.elements,s=r[0],o=r[4],a=r[8],l=r[1],c=r[5],d=r[9],f=r[2],p=r[6],m=r[10];switch(t){case"XYZ":this._y=Math.asin($n(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-d,m),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(p,c),this._z=0);break;case"YXZ":this._x=Math.asin(-$n(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(a,m),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-f,s),this._z=0);break;case"ZXY":this._x=Math.asin($n(p,-1,1)),Math.abs(p)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-$n(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(p,m),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-o,c));break;case"YZX":this._z=Math.asin($n(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-d,c),this._y=Math.atan2(-f,s)):(this._x=0,this._y=Math.atan2(a,m));break;case"XZY":this._z=Math.asin(-$n(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(p,c),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-d,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return b2.makeRotationFromQuaternion(e),this.setFromRotationMatrix(b2,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return P2.setFromEuler(this),this.setFromQuaternion(P2,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}_r.DEFAULT_ORDER="XYZ";class Kc{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(a=>({boxInitialized:a.boxInitialized,boxMin:a.box.min.toArray(),boxMax:a.box.max.toArray(),sphereInitialized:a.sphereInitialized,sphereRadius:a.sphere.radius,sphereCenter:a.sphere.center.toArray()})),r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));function s(a,l){return a[l.uuid]===void 0&&(a[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);const a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){const l=a.shapes;if(Array.isArray(l))for(let c=0,d=l.length;c0){r.children=[];for(let a=0;a0){r.animations=[];for(let a=0;a0&&(i.geometries=a),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),d.length>0&&(i.images=d),f.length>0&&(i.shapes=f),p.length>0&&(i.skeletons=p),m.length>0&&(i.animations=m),_.length>0&&(i.nodes=_)}return i.object=r,i;function o(a){const l=[];for(const c in a){const d=a[c];delete d.metadata,l.push(d)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,i,r,s){Ds.subVectors(r,t),Vo.subVectors(i,t),Bw.subVectors(e,t);const o=Ds.dot(Ds),a=Ds.dot(Vo),l=Ds.dot(Bw),c=Vo.dot(Vo),d=Vo.dot(Bw),f=o*c-a*a;if(f===0)return s.set(0,0,0),null;const p=1/f,m=(c*l-a*d)*p,_=(o*d-a*l)*p;return s.set(1-m-_,_,m)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,Bo)===null?!1:Bo.x>=0&&Bo.y>=0&&Bo.x+Bo.y<=1}static getInterpolation(e,t,i,r,s,o,a,l){return this.getBarycoord(e,t,i,r,Bo)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Bo.x),l.addScaledVector(o,Bo.y),l.addScaledVector(a,Bo.z),l)}static getInterpolatedAttribute(e,t,i,r,s,o){return Ww.setScalar(0),jw.setScalar(0),Xw.setScalar(0),Ww.fromBufferAttribute(e,t),jw.fromBufferAttribute(e,i),Xw.fromBufferAttribute(e,r),o.setScalar(0),o.addScaledVector(Ww,s.x),o.addScaledVector(jw,s.y),o.addScaledVector(Xw,s.z),o}static isFrontFacing(e,t,i,r){return Ds.subVectors(i,t),Vo.subVectors(e,t),Ds.cross(Vo).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Ds.subVectors(this.c,this.b),Vo.subVectors(this.a,this.b),Ds.cross(Vo).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Nr.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Nr.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,i,r,s){return Nr.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}containsPoint(e){return Nr.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Nr.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,r=this.b,s=this.c;let o,a;Ku.subVectors(r,i),Qu.subVectors(s,i),zw.subVectors(e,i);const l=Ku.dot(zw),c=Qu.dot(zw);if(l<=0&&c<=0)return t.copy(i);Hw.subVectors(e,r);const d=Ku.dot(Hw),f=Qu.dot(Hw);if(d>=0&&f<=d)return t.copy(r);const p=l*f-d*c;if(p<=0&&l>=0&&d<=0)return o=l/(l-d),t.copy(i).addScaledVector(Ku,o);Gw.subVectors(e,s);const m=Ku.dot(Gw),_=Qu.dot(Gw);if(_>=0&&m<=_)return t.copy(s);const S=m*c-l*_;if(S<=0&&c>=0&&_<=0)return a=c/(c-_),t.copy(i).addScaledVector(Qu,a);const x=d*_-m*f;if(x<=0&&f-d>=0&&m-_>=0)return k2.subVectors(s,r),a=(f-d)/(f-d+(m-_)),t.copy(r).addScaledVector(k2,a);const y=1/(x+S+p);return o=S*y,a=p*y,t.copy(i).addScaledVector(Ku,o).addScaledVector(Qu,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const KF={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},za={h:0,s:0,l:0},Sy={h:0,s:0,l:0};function qw(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}class rt{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=_s){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,cn.toWorkingColorSpace(this,t),this}setRGB(e,t,i,r=cn.workingColorSpace){return this.r=e,this.g=t,this.b=i,cn.toWorkingColorSpace(this,r),this}setHSL(e,t,i,r=cn.workingColorSpace){if(e=qM(e,1),t=$n(t,0,1),i=$n(i,0,1),t===0)this.r=this.g=this.b=i;else{const s=i<=.5?i*(1+t):i+t-i*t,o=2*i-s;this.r=qw(o,s,e+1/3),this.g=qw(o,s,e),this.b=qw(o,s,e-1/3)}return cn.toWorkingColorSpace(this,r),this}setStyle(e,t=_s){function i(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const o=r[1],a=r[2];switch(o){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=r[1],o=s.length;if(o===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=_s){const i=KF[e.toLowerCase()];return i!==void 0?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Xh(e.r),this.g=Xh(e.g),this.b=Xh(e.b),this}copyLinearToSRGB(e){return this.r=Iw(e.r),this.g=Iw(e.g),this.b=Iw(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=_s){return cn.fromWorkingColorSpace($i.copy(this),e),Math.round($n($i.r*255,0,255))*65536+Math.round($n($i.g*255,0,255))*256+Math.round($n($i.b*255,0,255))}getHexString(e=_s){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=cn.workingColorSpace){cn.fromWorkingColorSpace($i.copy(this),t);const i=$i.r,r=$i.g,s=$i.b,o=Math.max(i,r,s),a=Math.min(i,r,s);let l,c;const d=(a+o)/2;if(a===o)l=0,c=0;else{const f=o-a;switch(c=d<=.5?f/(o+a):f/(2-o-a),o){case i:l=(r-s)/f+(r0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const i=e[t];if(i===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const i={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==qc&&(i.blending=this.blending),this.side!==da&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==A0&&(i.blendSrc=this.blendSrc),this.blendDst!==M0&&(i.blendDst=this.blendDst),this.blendEquation!==Ja&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==au&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==mT&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Pc&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Pc&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Pc&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function r(s){const o=[];for(const a in s){const l=s[a];delete l.metadata,o.push(l)}return o}if(t){const s=r(e.textures),o=r(e.images);s.length>0&&(i.textures=s),o.length>0&&(i.images=o)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(t!==null){const r=t.length;i=new Array(r);for(let s=0;s!==r;++s)i[s]=t[s].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class Vl extends Oi{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new rt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new _r,this.combine=Vm,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Xo=sK();function sK(){const n=new ArrayBuffer(4),e=new Float32Array(n),t=new Uint32Array(n),i=new Uint32Array(512),r=new Uint32Array(512);for(let l=0;l<256;++l){const c=l-127;c<-27?(i[l]=0,i[l|256]=32768,r[l]=24,r[l|256]=24):c<-14?(i[l]=1024>>-c-14,i[l|256]=1024>>-c-14|32768,r[l]=-c-1,r[l|256]=-c-1):c<=15?(i[l]=c+15<<10,i[l|256]=c+15<<10|32768,r[l]=13,r[l|256]=13):c<128?(i[l]=31744,i[l|256]=64512,r[l]=24,r[l|256]=24):(i[l]=31744,i[l|256]=64512,r[l]=13,r[l|256]=13)}const s=new Uint32Array(2048),o=new Uint32Array(64),a=new Uint32Array(64);for(let l=1;l<1024;++l){let c=l<<13,d=0;for(;!(c&8388608);)c<<=1,d-=8388608;c&=-8388609,d+=947912704,s[l]=c|d}for(let l=1024;l<2048;++l)s[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)o[l]=l<<23;o[31]=1199570944,o[32]=2147483648;for(let l=33;l<63;++l)o[l]=2147483648+(l-32<<23);o[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(a[l]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:r,mantissaTable:s,exponentTable:o,offsetTable:a}}function Ir(n){Math.abs(n)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),n=$n(n,-65504,65504),Xo.floatView[0]=n;const e=Xo.uint32View[0],t=e>>23&511;return Xo.baseTable[t]+((e&8388607)>>Xo.shiftTable[t])}function Yf(n){const e=n>>10;return Xo.uint32View[0]=Xo.mantissaTable[Xo.offsetTable[e]+(n&1023)]+Xo.exponentTable[e],Xo.floatView[0]}const oK={toHalfFloat:Ir,fromHalfFloat:Yf},ci=new G,wy=new Ee;class vn{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=am,this.updateRanges=[],this.gpuType=kr,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,s=this.itemSize;r0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const l in i){const c=i[l];e.data.attributes[l]=c.toJSON(e.data)}const r={};let s=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],d=[];for(let f=0,p=c.length;f0&&(r[l]=d,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;i!==null&&this.setIndex(i.clone(t));const r=e.attributes;for(const c in r){const d=r[c];this.setAttribute(c,d.clone(t))}const s=e.morphAttributes;for(const c in s){const d=[],f=s[c];for(let p=0,m=f.length;p0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;s(e.far-e.near)**2))&&(O2.copy(s).invert(),hc.copy(e.ray).applyMatrix4(O2),!(i.boundingBox!==null&&hc.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,hc)))}_computeIntersections(e,t,i){let r;const s=this.geometry,o=this.material,a=s.index,l=s.attributes.position,c=s.attributes.uv,d=s.attributes.uv1,f=s.attributes.normal,p=s.groups,m=s.drawRange;if(a!==null)if(Array.isArray(o))for(let _=0,S=p.length;_t.far?null:{distance:c,point:by.clone(),object:n}}function Py(n,e,t,i,r,s,o,a,l,c){n.getVertexPosition(a,Ty),n.getVertexPosition(l,Ay),n.getVertexPosition(c,My);const d=pK(n,e,t,i,Ty,Ay,My,F2);if(d){const f=new G;Nr.getBarycoord(F2,Ty,Ay,My,f),r&&(d.uv=Nr.getInterpolatedAttribute(r,a,l,c,f,new Ee)),s&&(d.uv1=Nr.getInterpolatedAttribute(s,a,l,c,f,new Ee)),o&&(d.normal=Nr.getInterpolatedAttribute(o,a,l,c,f,new G),d.normal.dot(i.direction)>0&&d.normal.multiplyScalar(-1));const p={a,b:l,c,normal:new G,materialIndex:0};Nr.getNormal(Ty,Ay,My,p.normal),d.face=p,d.barycoord=f}return d}class vu extends Vt{constructor(e=1,t=1,i=1,r=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:r,heightSegments:s,depthSegments:o};const a=this;r=Math.floor(r),s=Math.floor(s),o=Math.floor(o);const l=[],c=[],d=[],f=[];let p=0,m=0;_("z","y","x",-1,-1,i,t,e,o,s,0),_("z","y","x",1,-1,i,t,-e,o,s,1),_("x","z","y",1,1,e,i,t,r,o,2),_("x","z","y",1,-1,e,i,-t,r,o,3),_("x","y","z",1,-1,e,t,i,r,s,4),_("x","y","z",-1,-1,e,t,-i,r,s,5),this.setIndex(l),this.setAttribute("position",new ht(c,3)),this.setAttribute("normal",new ht(d,3)),this.setAttribute("uv",new ht(f,2));function _(S,x,y,E,w,M,O,k,I,P,D){const A=M/I,R=O/P,V=M/2,U=O/2,se=k/2,le=I+1,ee=P+1;let pe=0,W=0;const J=new G;for(let Z=0;Z0?1:-1,d.push(J.x,J.y,J.z),f.push(Me/I),f.push(1-Z/P),pe+=1}}for(let Z=0;Z0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const i={};for(const r in this.extensions)this.extensions[r]===!0&&(i[r]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class Hm extends Zt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new St,this.projectionMatrix=new St,this.projectionMatrixInverse=new St,this.coordinateSystem=fo}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Ha=new G,V2=new Ee,B2=new Ee;class Dn extends Hm{constructor(e=50,t=1,i=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=fd*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Yc*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return fd*2*Math.atan(Math.tan(Yc*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,i){Ha.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(Ha.x,Ha.y).multiplyScalar(-e/Ha.z),Ha.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),i.set(Ha.x,Ha.y).multiplyScalar(-e/Ha.z)}getViewSize(e,t){return this.getViewBounds(e,V2,B2),t.subVectors(B2,V2)}setViewOffset(e,t,i,r,s,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Yc*.5*this.fov)/this.zoom,i=2*t,r=this.aspect*i,s=-.5*r;const o=this.view;if(this.view!==null&&this.view.enabled){const l=o.fullWidth,c=o.fullHeight;s+=o.offsetX*r/l,t-=o.offsetY*i/c,r*=o.width/l,i*=o.height/c}const a=this.filmOffset;a!==0&&(s+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,t,t-i,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const Zu=-90,eh=1;class QM extends Zt{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new Dn(Zu,eh,e,t);r.layers=this.layers,this.add(r);const s=new Dn(Zu,eh,e,t);s.layers=this.layers,this.add(s);const o=new Dn(Zu,eh,e,t);o.layers=this.layers,this.add(o);const a=new Dn(Zu,eh,e,t);a.layers=this.layers,this.add(a);const l=new Dn(Zu,eh,e,t);l.layers=this.layers,this.add(l);const c=new Dn(Zu,eh,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[i,r,s,o,a,l]=t;for(const c of t)this.remove(c);if(e===fo)i.up.set(0,1,0),i.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===lm)i.up.set(0,-1,0),i.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:i,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[s,o,a,l,c,d]=this.children,f=e.getRenderTarget(),p=e.getActiveCubeFace(),m=e.getActiveMipmapLevel(),_=e.xr.enabled;e.xr.enabled=!1;const S=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0,r),e.render(t,s),e.setRenderTarget(i,1,r),e.render(t,o),e.setRenderTarget(i,2,r),e.render(t,a),e.setRenderTarget(i,3,r),e.render(t,l),e.setRenderTarget(i,4,r),e.render(t,c),i.texture.generateMipmaps=S,e.setRenderTarget(i,5,r),e.render(t,d),e.setRenderTarget(f,p,m),e.xr.enabled=_,i.texture.needsPMREMUpdate=!0}}class Gm extends In{constructor(e,t,i,r,s,o,a,l,c,d){e=e!==void 0?e:[],t=t!==void 0?t:fa,super(e,t,i,r,s,o,a,l,c,d),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class JM extends Xs{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];this.texture=new Gm(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:fi}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},r=new vu(5,5,5),s=new qs({name:"CubemapFromEquirect",uniforms:pd(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:yr,blending:ra});s.uniforms.tEquirect.value=t;const o=new ni(r,s),a=t.minFilter;return t.minFilter===ho&&(t.minFilter=fi),new QM(1,10,this).update(e,o),t.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,i,r){const s=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,i,r);e.setRenderTarget(s)}}const Kw=new G,vK=new G,_K=new Ut;class Wo{constructor(e=new G(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,r){return this.normal.set(e,t,i),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){const r=Kw.subVectors(i,t).cross(vK.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const i=e.delta(Kw),r=this.normal.dot(i);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/r;return s<0||s>1?null:t.copy(e.start).addScaledVector(i,s)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||_K.getNormalMatrix(e),r=this.coplanarPoint(Kw).applyMatrix4(e),s=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const dc=new ir,Ry=new G;class Wm{constructor(e=new Wo,t=new Wo,i=new Wo,r=new Wo,s=new Wo,o=new Wo){this.planes=[e,t,i,r,s,o]}set(e,t,i,r,s,o){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(r),a[4].copy(s),a[5].copy(o),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=fo){const i=this.planes,r=e.elements,s=r[0],o=r[1],a=r[2],l=r[3],c=r[4],d=r[5],f=r[6],p=r[7],m=r[8],_=r[9],S=r[10],x=r[11],y=r[12],E=r[13],w=r[14],M=r[15];if(i[0].setComponents(l-s,p-c,x-m,M-y).normalize(),i[1].setComponents(l+s,p+c,x+m,M+y).normalize(),i[2].setComponents(l+o,p+d,x+_,M+E).normalize(),i[3].setComponents(l-o,p-d,x-_,M-E).normalize(),i[4].setComponents(l-a,p-f,x-S,M-w).normalize(),t===fo)i[5].setComponents(l+a,p+f,x+S,M+w).normalize();else if(t===lm)i[5].setComponents(a,f,S,w).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),dc.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),dc.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(dc)}intersectsSprite(e){return dc.center.set(0,0,0),dc.radius=.7071067811865476,dc.applyMatrix4(e.matrixWorld),this.intersectsSphere(dc)}intersectsSphere(e){const t=this.planes,i=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(i)0?e.max.x:e.min.x,Ry.y=r.normal.y>0?e.max.y:e.min.y,Ry.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(Ry)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function ZF(){let n=null,e=!1,t=null,i=null;function r(s,o){t(s,o),i=n.requestAnimationFrame(r)}return{start:function(){e!==!0&&t!==null&&(i=n.requestAnimationFrame(r),e=!0)},stop:function(){n.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){n=s}}}function xK(n){const e=new WeakMap;function t(a,l){const c=a.array,d=a.usage,f=c.byteLength,p=n.createBuffer();n.bindBuffer(l,p),n.bufferData(l,c,d),a.onUploadCallback();let m;if(c instanceof Float32Array)m=n.FLOAT;else if(c instanceof Uint16Array)a.isFloat16BufferAttribute?m=n.HALF_FLOAT:m=n.UNSIGNED_SHORT;else if(c instanceof Int16Array)m=n.SHORT;else if(c instanceof Uint32Array)m=n.UNSIGNED_INT;else if(c instanceof Int32Array)m=n.INT;else if(c instanceof Int8Array)m=n.BYTE;else if(c instanceof Uint8Array)m=n.UNSIGNED_BYTE;else if(c instanceof Uint8ClampedArray)m=n.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+c);return{buffer:p,type:m,bytesPerElement:c.BYTES_PER_ELEMENT,version:a.version,size:f}}function i(a,l,c){const d=l.array,f=l.updateRanges;if(n.bindBuffer(c,a),f.length===0)n.bufferSubData(c,0,d);else{f.sort((m,_)=>m.start-_.start);let p=0;for(let m=1;m 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,UK=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,FK=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,VK=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,BK=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,zK=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,HK=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,GK=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,WK=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,jK=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,XK=`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,qK=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,$K=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,YK=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,KK=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,QK="gl_FragColor = linearToOutputTexel( gl_FragColor );",JK=` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,ZK=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,eQ=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,tQ=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,nQ=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,iQ=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,rQ=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,sQ=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,oQ=`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,aQ=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,lQ=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,cQ=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,uQ=`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,hQ=`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,dQ=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,fQ=`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,pQ=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,mQ=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,gQ=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,yQ=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,vQ=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,_Q=`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,xQ=` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,SQ=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,wQ=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,EQ=`#if defined( USE_LOGDEPTHBUF ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,TQ=`#if defined( USE_LOGDEPTHBUF ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,AQ=`#ifdef USE_LOGDEPTHBUF + varying float vFragDepth; + varying float vIsPerspective; +#endif`,MQ=`#ifdef USE_LOGDEPTHBUF + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,CQ=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,bQ=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,PQ=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,RQ=`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,IQ=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,LQ=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,NQ=`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,DQ=`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,kQ=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,OQ=`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,UQ=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,FQ=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,VQ=`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,BQ=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,zQ=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,HQ=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,GQ=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,WQ=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,jQ=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,XQ=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,qQ=`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,$Q=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,YQ=`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,KQ=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,QQ=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,JQ=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,ZQ=`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,eJ=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,tJ=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,nJ=`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + + float lightToPositionLength = length( lightToPosition ); + if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { + float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + shadow = ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } +#endif`,iJ=`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,rJ=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,sJ=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,oJ=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,aJ=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,lJ=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,cJ=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,uJ=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,hJ=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,dJ=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,fJ=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,pJ=`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,mJ=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + + #else + + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,gJ=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,yJ=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,vJ=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,_J=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`;const xJ=`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,SJ=`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,wJ=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,EJ=`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,TJ=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,AJ=`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,MJ=`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,CJ=`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,bJ=`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,PJ=`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,RJ=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,IJ=`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,LJ=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,NJ=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,DJ=`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,kJ=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,OJ=`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,UJ=`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,FJ=`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,VJ=`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,BJ=`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,zJ=`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,HJ=`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,GJ=`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,WJ=`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,jJ=`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,XJ=`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,qJ=`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,$J=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,YJ=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,KJ=`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,QJ=`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,JJ=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,ZJ=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`,Gt={alphahash_fragment:SK,alphahash_pars_fragment:wK,alphamap_fragment:EK,alphamap_pars_fragment:TK,alphatest_fragment:AK,alphatest_pars_fragment:MK,aomap_fragment:CK,aomap_pars_fragment:bK,batching_pars_vertex:PK,batching_vertex:RK,begin_vertex:IK,beginnormal_vertex:LK,bsdfs:NK,iridescence_fragment:DK,bumpmap_pars_fragment:kK,clipping_planes_fragment:OK,clipping_planes_pars_fragment:UK,clipping_planes_pars_vertex:FK,clipping_planes_vertex:VK,color_fragment:BK,color_pars_fragment:zK,color_pars_vertex:HK,color_vertex:GK,common:WK,cube_uv_reflection_fragment:jK,defaultnormal_vertex:XK,displacementmap_pars_vertex:qK,displacementmap_vertex:$K,emissivemap_fragment:YK,emissivemap_pars_fragment:KK,colorspace_fragment:QK,colorspace_pars_fragment:JK,envmap_fragment:ZK,envmap_common_pars_fragment:eQ,envmap_pars_fragment:tQ,envmap_pars_vertex:nQ,envmap_physical_pars_fragment:fQ,envmap_vertex:iQ,fog_vertex:rQ,fog_pars_vertex:sQ,fog_fragment:oQ,fog_pars_fragment:aQ,gradientmap_pars_fragment:lQ,lightmap_pars_fragment:cQ,lights_lambert_fragment:uQ,lights_lambert_pars_fragment:hQ,lights_pars_begin:dQ,lights_toon_fragment:pQ,lights_toon_pars_fragment:mQ,lights_phong_fragment:gQ,lights_phong_pars_fragment:yQ,lights_physical_fragment:vQ,lights_physical_pars_fragment:_Q,lights_fragment_begin:xQ,lights_fragment_maps:SQ,lights_fragment_end:wQ,logdepthbuf_fragment:EQ,logdepthbuf_pars_fragment:TQ,logdepthbuf_pars_vertex:AQ,logdepthbuf_vertex:MQ,map_fragment:CQ,map_pars_fragment:bQ,map_particle_fragment:PQ,map_particle_pars_fragment:RQ,metalnessmap_fragment:IQ,metalnessmap_pars_fragment:LQ,morphinstance_vertex:NQ,morphcolor_vertex:DQ,morphnormal_vertex:kQ,morphtarget_pars_vertex:OQ,morphtarget_vertex:UQ,normal_fragment_begin:FQ,normal_fragment_maps:VQ,normal_pars_fragment:BQ,normal_pars_vertex:zQ,normal_vertex:HQ,normalmap_pars_fragment:GQ,clearcoat_normal_fragment_begin:WQ,clearcoat_normal_fragment_maps:jQ,clearcoat_pars_fragment:XQ,iridescence_pars_fragment:qQ,opaque_fragment:$Q,packing:YQ,premultiplied_alpha_fragment:KQ,project_vertex:QQ,dithering_fragment:JQ,dithering_pars_fragment:ZQ,roughnessmap_fragment:eJ,roughnessmap_pars_fragment:tJ,shadowmap_pars_fragment:nJ,shadowmap_pars_vertex:iJ,shadowmap_vertex:rJ,shadowmask_pars_fragment:sJ,skinbase_vertex:oJ,skinning_pars_vertex:aJ,skinning_vertex:lJ,skinnormal_vertex:cJ,specularmap_fragment:uJ,specularmap_pars_fragment:hJ,tonemapping_fragment:dJ,tonemapping_pars_fragment:fJ,transmission_fragment:pJ,transmission_pars_fragment:mJ,uv_pars_fragment:gJ,uv_pars_vertex:yJ,uv_vertex:vJ,worldpos_vertex:_J,background_vert:xJ,background_frag:SJ,backgroundCube_vert:wJ,backgroundCube_frag:EJ,cube_vert:TJ,cube_frag:AJ,depth_vert:MJ,depth_frag:CJ,distanceRGBA_vert:bJ,distanceRGBA_frag:PJ,equirect_vert:RJ,equirect_frag:IJ,linedashed_vert:LJ,linedashed_frag:NJ,meshbasic_vert:DJ,meshbasic_frag:kJ,meshlambert_vert:OJ,meshlambert_frag:UJ,meshmatcap_vert:FJ,meshmatcap_frag:VJ,meshnormal_vert:BJ,meshnormal_frag:zJ,meshphong_vert:HJ,meshphong_frag:GJ,meshphysical_vert:WJ,meshphysical_frag:jJ,meshtoon_vert:XJ,meshtoon_frag:qJ,points_vert:$J,points_frag:YJ,shadow_vert:KJ,shadow_frag:QJ,sprite_vert:JJ,sprite_frag:ZJ},Ye={common:{diffuse:{value:new rt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Ut},alphaMap:{value:null},alphaMapTransform:{value:new Ut},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Ut}},envmap:{envMap:{value:null},envMapRotation:{value:new Ut},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Ut}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Ut}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Ut},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Ut},normalScale:{value:new Ee(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Ut},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Ut}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Ut}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Ut}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new rt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new rt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Ut},alphaTest:{value:0},uvTransform:{value:new Ut}},sprite:{diffuse:{value:new rt(16777215)},opacity:{value:1},center:{value:new Ee(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Ut},alphaMap:{value:null},alphaMapTransform:{value:new Ut},alphaTest:{value:0}}},Vs={basic:{uniforms:hr([Ye.common,Ye.specularmap,Ye.envmap,Ye.aomap,Ye.lightmap,Ye.fog]),vertexShader:Gt.meshbasic_vert,fragmentShader:Gt.meshbasic_frag},lambert:{uniforms:hr([Ye.common,Ye.specularmap,Ye.envmap,Ye.aomap,Ye.lightmap,Ye.emissivemap,Ye.bumpmap,Ye.normalmap,Ye.displacementmap,Ye.fog,Ye.lights,{emissive:{value:new rt(0)}}]),vertexShader:Gt.meshlambert_vert,fragmentShader:Gt.meshlambert_frag},phong:{uniforms:hr([Ye.common,Ye.specularmap,Ye.envmap,Ye.aomap,Ye.lightmap,Ye.emissivemap,Ye.bumpmap,Ye.normalmap,Ye.displacementmap,Ye.fog,Ye.lights,{emissive:{value:new rt(0)},specular:{value:new rt(1118481)},shininess:{value:30}}]),vertexShader:Gt.meshphong_vert,fragmentShader:Gt.meshphong_frag},standard:{uniforms:hr([Ye.common,Ye.envmap,Ye.aomap,Ye.lightmap,Ye.emissivemap,Ye.bumpmap,Ye.normalmap,Ye.displacementmap,Ye.roughnessmap,Ye.metalnessmap,Ye.fog,Ye.lights,{emissive:{value:new rt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Gt.meshphysical_vert,fragmentShader:Gt.meshphysical_frag},toon:{uniforms:hr([Ye.common,Ye.aomap,Ye.lightmap,Ye.emissivemap,Ye.bumpmap,Ye.normalmap,Ye.displacementmap,Ye.gradientmap,Ye.fog,Ye.lights,{emissive:{value:new rt(0)}}]),vertexShader:Gt.meshtoon_vert,fragmentShader:Gt.meshtoon_frag},matcap:{uniforms:hr([Ye.common,Ye.bumpmap,Ye.normalmap,Ye.displacementmap,Ye.fog,{matcap:{value:null}}]),vertexShader:Gt.meshmatcap_vert,fragmentShader:Gt.meshmatcap_frag},points:{uniforms:hr([Ye.points,Ye.fog]),vertexShader:Gt.points_vert,fragmentShader:Gt.points_frag},dashed:{uniforms:hr([Ye.common,Ye.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Gt.linedashed_vert,fragmentShader:Gt.linedashed_frag},depth:{uniforms:hr([Ye.common,Ye.displacementmap]),vertexShader:Gt.depth_vert,fragmentShader:Gt.depth_frag},normal:{uniforms:hr([Ye.common,Ye.bumpmap,Ye.normalmap,Ye.displacementmap,{opacity:{value:1}}]),vertexShader:Gt.meshnormal_vert,fragmentShader:Gt.meshnormal_frag},sprite:{uniforms:hr([Ye.sprite,Ye.fog]),vertexShader:Gt.sprite_vert,fragmentShader:Gt.sprite_frag},background:{uniforms:{uvTransform:{value:new Ut},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Gt.background_vert,fragmentShader:Gt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Ut}},vertexShader:Gt.backgroundCube_vert,fragmentShader:Gt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Gt.cube_vert,fragmentShader:Gt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Gt.equirect_vert,fragmentShader:Gt.equirect_frag},distanceRGBA:{uniforms:hr([Ye.common,Ye.displacementmap,{referencePosition:{value:new G},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Gt.distanceRGBA_vert,fragmentShader:Gt.distanceRGBA_frag},shadow:{uniforms:hr([Ye.lights,Ye.fog,{color:{value:new rt(0)},opacity:{value:1}}]),vertexShader:Gt.shadow_vert,fragmentShader:Gt.shadow_frag}};Vs.physical={uniforms:hr([Vs.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Ut},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Ut},clearcoatNormalScale:{value:new Ee(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Ut},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Ut},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Ut},sheen:{value:0},sheenColor:{value:new rt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Ut},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Ut},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Ut},transmissionSamplerSize:{value:new Ee},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Ut},attenuationDistance:{value:0},attenuationColor:{value:new rt(0)},specularColor:{value:new rt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Ut},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Ut},anisotropyVector:{value:new Ee},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Ut}}]),vertexShader:Gt.meshphysical_vert,fragmentShader:Gt.meshphysical_frag};const Iy={r:0,b:0,g:0},fc=new _r,eZ=new St;function tZ(n,e,t,i,r,s,o){const a=new rt(0);let l=s===!0?0:1,c,d,f=null,p=0,m=null;function _(E){let w=E.isScene===!0?E.background:null;return w&&w.isTexture&&(w=(E.backgroundBlurriness>0?t:e).get(w)),w}function S(E){let w=!1;const M=_(E);M===null?y(a,l):M&&M.isColor&&(y(M,1),w=!0);const O=n.xr.getEnvironmentBlendMode();O==="additive"?i.buffers.color.setClear(0,0,0,1,o):O==="alpha-blend"&&i.buffers.color.setClear(0,0,0,0,o),(n.autoClear||w)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function x(E,w){const M=_(w);M&&(M.isCubeTexture||M.mapping===Rd)?(d===void 0&&(d=new ni(new vu(1,1,1),new qs({name:"BackgroundCubeMaterial",uniforms:pd(Vs.backgroundCube.uniforms),vertexShader:Vs.backgroundCube.vertexShader,fragmentShader:Vs.backgroundCube.fragmentShader,side:yr,depthTest:!1,depthWrite:!1,fog:!1})),d.geometry.deleteAttribute("normal"),d.geometry.deleteAttribute("uv"),d.onBeforeRender=function(O,k,I){this.matrixWorld.copyPosition(I.matrixWorld)},Object.defineProperty(d.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(d)),fc.copy(w.backgroundRotation),fc.x*=-1,fc.y*=-1,fc.z*=-1,M.isCubeTexture&&M.isRenderTargetTexture===!1&&(fc.y*=-1,fc.z*=-1),d.material.uniforms.envMap.value=M,d.material.uniforms.flipEnvMap.value=M.isCubeTexture&&M.isRenderTargetTexture===!1?-1:1,d.material.uniforms.backgroundBlurriness.value=w.backgroundBlurriness,d.material.uniforms.backgroundIntensity.value=w.backgroundIntensity,d.material.uniforms.backgroundRotation.value.setFromMatrix4(eZ.makeRotationFromEuler(fc)),d.material.toneMapped=cn.getTransfer(M.colorSpace)!==En,(f!==M||p!==M.version||m!==n.toneMapping)&&(d.material.needsUpdate=!0,f=M,p=M.version,m=n.toneMapping),d.layers.enableAll(),E.unshift(d,d.geometry,d.material,0,0,null)):M&&M.isTexture&&(c===void 0&&(c=new ni(new Ld(2,2),new qs({name:"BackgroundMaterial",uniforms:pd(Vs.background.uniforms),vertexShader:Vs.background.vertexShader,fragmentShader:Vs.background.fragmentShader,side:da,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(c)),c.material.uniforms.t2D.value=M,c.material.uniforms.backgroundIntensity.value=w.backgroundIntensity,c.material.toneMapped=cn.getTransfer(M.colorSpace)!==En,M.matrixAutoUpdate===!0&&M.updateMatrix(),c.material.uniforms.uvTransform.value.copy(M.matrix),(f!==M||p!==M.version||m!==n.toneMapping)&&(c.material.needsUpdate=!0,f=M,p=M.version,m=n.toneMapping),c.layers.enableAll(),E.unshift(c,c.geometry,c.material,0,0,null))}function y(E,w){E.getRGB(Iy,QF(n)),i.buffers.color.setClear(Iy.r,Iy.g,Iy.b,w,o)}return{getClearColor:function(){return a},setClearColor:function(E,w=1){a.set(E),l=w,y(a,l)},getClearAlpha:function(){return l},setClearAlpha:function(E){l=E,y(a,l)},render:S,addToRenderList:x}}function nZ(n,e){const t=n.getParameter(n.MAX_VERTEX_ATTRIBS),i={},r=p(null);let s=r,o=!1;function a(A,R,V,U,se){let le=!1;const ee=f(U,V,R);s!==ee&&(s=ee,c(s.object)),le=m(A,U,V,se),le&&_(A,U,V,se),se!==null&&e.update(se,n.ELEMENT_ARRAY_BUFFER),(le||o)&&(o=!1,M(A,R,V,U),se!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e.get(se).buffer))}function l(){return n.createVertexArray()}function c(A){return n.bindVertexArray(A)}function d(A){return n.deleteVertexArray(A)}function f(A,R,V){const U=V.wireframe===!0;let se=i[A.id];se===void 0&&(se={},i[A.id]=se);let le=se[R.id];le===void 0&&(le={},se[R.id]=le);let ee=le[U];return ee===void 0&&(ee=p(l()),le[U]=ee),ee}function p(A){const R=[],V=[],U=[];for(let se=0;se=0){const Z=se[W];let oe=le[W];if(oe===void 0&&(W==="instanceMatrix"&&A.instanceMatrix&&(oe=A.instanceMatrix),W==="instanceColor"&&A.instanceColor&&(oe=A.instanceColor)),Z===void 0||Z.attribute!==oe||oe&&Z.data!==oe.data)return!0;ee++}return s.attributesNum!==ee||s.index!==U}function _(A,R,V,U){const se={},le=R.attributes;let ee=0;const pe=V.getAttributes();for(const W in pe)if(pe[W].location>=0){let Z=le[W];Z===void 0&&(W==="instanceMatrix"&&A.instanceMatrix&&(Z=A.instanceMatrix),W==="instanceColor"&&A.instanceColor&&(Z=A.instanceColor));const oe={};oe.attribute=Z,Z&&Z.data&&(oe.data=Z.data),se[W]=oe,ee++}s.attributes=se,s.attributesNum=ee,s.index=U}function S(){const A=s.newAttributes;for(let R=0,V=A.length;R=0){let J=se[pe];if(J===void 0&&(pe==="instanceMatrix"&&A.instanceMatrix&&(J=A.instanceMatrix),pe==="instanceColor"&&A.instanceColor&&(J=A.instanceColor)),J!==void 0){const Z=J.normalized,oe=J.itemSize,Me=e.get(J);if(Me===void 0)continue;const Re=Me.buffer,he=Me.type,we=Me.bytesPerElement,Ne=he===n.INT||he===n.UNSIGNED_INT||J.gpuType===ox;if(J.isInterleavedBufferAttribute){const be=J.data,ft=be.stride,dt=J.offset;if(be.isInstancedInterleavedBuffer){for(let Ke=0;Ke0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";I="mediump"}return I==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp";const d=l(c);d!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",d,"instead."),c=d);const f=t.logarithmicDepthBuffer===!0,p=t.reverseDepthBuffer===!0&&e.has("EXT_clip_control");if(p===!0){const I=e.get("EXT_clip_control");I.clipControlEXT(I.LOWER_LEFT_EXT,I.ZERO_TO_ONE_EXT)}const m=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),_=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),S=n.getParameter(n.MAX_TEXTURE_SIZE),x=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),y=n.getParameter(n.MAX_VERTEX_ATTRIBS),E=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),w=n.getParameter(n.MAX_VARYING_VECTORS),M=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),O=_>0,k=n.getParameter(n.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:o,textureTypeReadable:a,precision:c,logarithmicDepthBuffer:f,reverseDepthBuffer:p,maxTextures:m,maxVertexTextures:_,maxTextureSize:S,maxCubemapSize:x,maxAttributes:y,maxVertexUniforms:E,maxVaryings:w,maxFragmentUniforms:M,vertexTextures:O,maxSamples:k}}function sZ(n){const e=this;let t=null,i=0,r=!1,s=!1;const o=new Wo,a=new Ut,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(f,p){const m=f.length!==0||p||i!==0||r;return r=p,i=f.length,m},this.beginShadows=function(){s=!0,d(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(f,p){t=d(f,p,0)},this.setState=function(f,p,m){const _=f.clippingPlanes,S=f.clipIntersection,x=f.clipShadows,y=n.get(f);if(!r||_===null||_.length===0||s&&!x)s?d(null):c();else{const E=s?0:i,w=E*4;let M=y.clippingState||null;l.value=M,M=d(_,p,w,m);for(let O=0;O!==w;++O)M[O]=t[O];y.clippingState=M,this.numIntersection=S?this.numPlanes:0,this.numPlanes+=E}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function d(f,p,m,_){const S=f!==null?f.length:0;let x=null;if(S!==0){if(x=l.value,_!==!0||x===null){const y=m+S*4,E=p.matrixWorldInverse;a.getNormalMatrix(E),(x===null||x.length0){const c=new JM(l.height);return c.fromEquirectangularTexture(n,o),e.set(o,c),o.addEventListener("dispose",r),t(c.texture,o.mapping)}else return null}}return o}function r(o){const a=o.target;a.removeEventListener("dispose",r);const l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function s(){e=new WeakMap}return{get:i,dispose:s}}class zs extends Hm{constructor(e=-1,t=1,i=1,r=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=r,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,r,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let s=i-e,o=i+e,a=r+t,l=r-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,d=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,o=s+c*this.view.width,a-=d*this.view.offsetY,l=a-d*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,l,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}const Ih=4,z2=[.125,.215,.35,.446,.526,.582],Ic=20,Qw=new zs,H2=new rt;let Jw=null,Zw=0,e1=0,t1=!1;const Rc=(1+Math.sqrt(5))/2,th=1/Rc,G2=[new G(-Rc,th,0),new G(Rc,th,0),new G(-th,0,Rc),new G(th,0,Rc),new G(0,Rc,-th),new G(0,Rc,th),new G(-1,1,-1),new G(1,1,-1),new G(-1,1,1),new G(1,1,1)];class yT{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,r=100){Jw=this._renderer.getRenderTarget(),Zw=this._renderer.getActiveCubeFace(),e1=this._renderer.getActiveMipmapLevel(),t1=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(e,i,r,s),t>0&&this._blur(s,0,0,t),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=X2(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=j2(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?w:0,w,w),d.setRenderTarget(r),S&&d.render(_,a),d.render(e,a)}_.geometry.dispose(),_.material.dispose(),d.toneMapping=p,d.autoClear=f,e.background=x}_textureToCubeUV(e,t){const i=this._renderer,r=e.mapping===fa||e.mapping===Rl;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=X2()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=j2());const s=r?this._cubemapMaterial:this._equirectMaterial,o=new ni(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=e;const l=this._cubeSize;Ly(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(o,Qw)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;const r=this._lodPlanes.length;for(let s=1;sIc&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${x} samples when the maximum is set to ${Ic}`);const y=[];let E=0;for(let I=0;Iw-Ih?r-w+Ih:0),k=4*(this._cubeSize-M);Ly(t,O,k,3*M,2*M),l.setRenderTarget(t),l.render(f,Qw)}}function aZ(n){const e=[],t=[],i=[];let r=n;const s=n-Ih+1+z2.length;for(let o=0;on-Ih?l=z2[o-n+Ih-1]:o===0&&(l=0),i.push(l);const c=1/(a-2),d=-c,f=1+c,p=[d,d,f,d,f,f,d,d,f,f,d,f],m=6,_=6,S=3,x=2,y=1,E=new Float32Array(S*_*m),w=new Float32Array(x*_*m),M=new Float32Array(y*_*m);for(let k=0;k2?0:-1,D=[I,P,0,I+2/3,P,0,I+2/3,P+1,0,I,P,0,I+2/3,P+1,0,I,P+1,0];E.set(D,S*_*k),w.set(p,x*_*k);const A=[k,k,k,k,k,k];M.set(A,y*_*k)}const O=new Vt;O.setAttribute("position",new vn(E,S)),O.setAttribute("uv",new vn(w,x)),O.setAttribute("faceIndex",new vn(M,y)),e.push(O),r>Ih&&r--}return{lodPlanes:e,sizeLods:t,sigmas:i}}function W2(n,e,t){const i=new Xs(n,e,t);return i.texture.mapping=Rd,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Ly(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function lZ(n,e,t){const i=new Float32Array(Ic),r=new G(0,1,0);return new qs({name:"SphericalGaussianBlur",defines:{n:Ic,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:ZM(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:ra,depthTest:!1,depthWrite:!1})}function j2(){return new qs({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:ZM(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:ra,depthTest:!1,depthWrite:!1})}function X2(){return new qs({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:ZM(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:ra,depthTest:!1,depthWrite:!1})}function ZM(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function cZ(n){let e=new WeakMap,t=null;function i(a){if(a&&a.isTexture){const l=a.mapping,c=l===Jp||l===Zp,d=l===fa||l===Rl;if(c||d){let f=e.get(a);const p=f!==void 0?f.texture.pmremVersion:0;if(a.isRenderTargetTexture&&a.pmremVersion!==p)return t===null&&(t=new yT(n)),f=c?t.fromEquirectangular(a,f):t.fromCubemap(a,f),f.texture.pmremVersion=a.pmremVersion,e.set(a,f),f.texture;if(f!==void 0)return f.texture;{const m=a.image;return c&&m&&m.height>0||d&&m&&r(m)?(t===null&&(t=new yT(n)),f=c?t.fromEquirectangular(a):t.fromCubemap(a),f.texture.pmremVersion=a.pmremVersion,e.set(a,f),a.addEventListener("dispose",s),f.texture):null}}}return a}function r(a){let l=0;const c=6;for(let d=0;de.maxTextureSize&&(k=Math.ceil(O/e.maxTextureSize),O=e.maxTextureSize);const I=new Float32Array(O*k*4*f),P=new px(I,O,k,f);P.type=kr,P.needsUpdate=!0;const D=M*4;for(let R=0;R0)return n;const r=e*t;let s=$2[r];if(s===void 0&&(s=new Float32Array(r),$2[r]=s),e!==0){i.toArray(s,0);for(let o=1,a=0;o!==e;++o)a+=t,n[o].toArray(s,a)}return s}function vi(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t":" "} ${a}: ${t[o]}`)}return i.join(` +`)}function cee(n){const e=cn.getPrimaries(cn.workingColorSpace),t=cn.getPrimaries(n);let i;switch(e===t?i="":e===om&&t===sm?i="LinearDisplayP3ToLinearSRGB":e===sm&&t===om&&(i="LinearSRGBToLinearDisplayP3"),n){case xa:case zm:return[i,"LinearTransferOETF"];case _s:case fx:return[i,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",n),[i,"LinearTransferOETF"]}}function tL(n,e,t){const i=n.getShaderParameter(e,n.COMPILE_STATUS),r=n.getShaderInfoLog(e).trim();if(i&&r==="")return"";const s=/ERROR: 0:(\d+)/.exec(r);if(s){const o=parseInt(s[1]);return t.toUpperCase()+` + +`+r+` + +`+lee(n.getShaderSource(e),o)}else return r}function uee(n,e){const t=cee(e);return`vec4 ${n}( vec4 value ) { return ${t[0]}( ${t[1]}( value ) ); }`}function hee(n,e){let t;switch(e){case AF:t="Linear";break;case MF:t="Reinhard";break;case CF:t="Cineon";break;case DM:t="ACESFilmic";break;case PF:t="AgX";break;case RF:t="Neutral";break;case bF:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+n+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const Ny=new G;function dee(){cn.getLuminanceCoefficients(Ny);const n=Ny.x.toFixed(4),e=Ny.y.toFixed(4),t=Ny.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${n}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` +`)}function fee(n){return[n.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",n.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Kf).join(` +`)}function pee(n){const e=[];for(const t in n){const i=n[t];i!==!1&&e.push("#define "+t+" "+i)}return e.join(` +`)}function mee(n,e){const t={},i=n.getProgramParameter(e,n.ACTIVE_ATTRIBUTES);for(let r=0;r/gm;function vT(n){return n.replace(gee,vee)}const yee=new Map;function vee(n,e){let t=Gt[e];if(t===void 0){const i=yee.get(e);if(i!==void 0)t=Gt[i],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,i);else throw new Error("Can not resolve #include <"+e+">")}return vT(t)}const _ee=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function rL(n){return n.replace(_ee,xee)}function xee(n,e,t,i){let r="";for(let s=parseInt(e);s0&&(x+=` +`),y=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,_].filter(Kf).join(` +`),y.length>0&&(y+=` +`)):(x=[sL(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,_,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+d:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(Kf).join(` +`),y=[sL(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,_,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+d:"",t.envMap?"#define "+f:"",p?"#define CUBEUV_TEXEL_WIDTH "+p.texelWidth:"",p?"#define CUBEUV_TEXEL_HEIGHT "+p.texelHeight:"",p?"#define CUBEUV_MAX_MIP "+p.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==vo?"#define TONE_MAPPING":"",t.toneMapping!==vo?Gt.tonemapping_pars_fragment:"",t.toneMapping!==vo?hee("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",Gt.colorspace_pars_fragment,uee("linearToOutputTexel",t.outputColorSpace),dee(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(Kf).join(` +`)),o=vT(o),o=nL(o,t),o=iL(o,t),a=vT(a),a=nL(a,t),a=iL(a,t),o=rL(o),a=rL(a),t.isRawShaderMaterial!==!0&&(E=`#version 300 es +`,x=[m,"#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+x,y=["#define varying in",t.glslVersion===gT?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===gT?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`)+` +`+y);const w=E+x+o,M=E+y+a,O=eL(r,r.VERTEX_SHADER,w),k=eL(r,r.FRAGMENT_SHADER,M);r.attachShader(S,O),r.attachShader(S,k),t.index0AttributeName!==void 0?r.bindAttribLocation(S,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(S,0,"position"),r.linkProgram(S);function I(R){if(n.debug.checkShaderErrors){const V=r.getProgramInfoLog(S).trim(),U=r.getShaderInfoLog(O).trim(),se=r.getShaderInfoLog(k).trim();let le=!0,ee=!0;if(r.getProgramParameter(S,r.LINK_STATUS)===!1)if(le=!1,typeof n.debug.onShaderError=="function")n.debug.onShaderError(r,S,O,k);else{const pe=tL(r,O,"vertex"),W=tL(r,k,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(S,r.VALIDATE_STATUS)+` + +Material Name: `+R.name+` +Material Type: `+R.type+` + +Program Info Log: `+V+` +`+pe+` +`+W)}else V!==""?console.warn("THREE.WebGLProgram: Program Info Log:",V):(U===""||se==="")&&(ee=!1);ee&&(R.diagnostics={runnable:le,programLog:V,vertexShader:{log:U,prefix:x},fragmentShader:{log:se,prefix:y}})}r.deleteShader(O),r.deleteShader(k),P=new Pv(r,S),D=mee(r,S)}let P;this.getUniforms=function(){return P===void 0&&I(this),P};let D;this.getAttributes=function(){return D===void 0&&I(this),D};let A=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return A===!1&&(A=r.getProgramParameter(S,oee)),A},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(S),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=aee++,this.cacheKey=e,this.usedTimes=1,this.program=S,this.vertexShader=O,this.fragmentShader=k,this}let Cee=0;class bee{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(i),o=this._getShaderCacheForMaterial(e);return o.has(r)===!1&&(o.add(r),r.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return i===void 0&&(i=new Pee(e),t.set(e,i)),i}}class Pee{constructor(e){this.id=Cee++,this.code=e,this.usedTimes=0}}function Ree(n,e,t,i,r,s,o){const a=new Kc,l=new bee,c=new Set,d=[],f=r.logarithmicDepthBuffer,p=r.reverseDepthBuffer,m=r.vertexTextures;let _=r.precision;const S={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function x(A){return c.add(A),A===0?"uv":`uv${A}`}function y(A,R,V,U,se){const le=U.fog,ee=se.geometry,pe=A.isMeshStandardMaterial?U.environment:null,W=(A.isMeshStandardMaterial?t:e).get(A.envMap||pe),J=W&&W.mapping===Rd?W.image.height:null,Z=S[A.type];A.precision!==null&&(_=r.getMaxPrecision(A.precision),_!==A.precision&&console.warn("THREE.WebGLProgram.getParameters:",A.precision,"not supported, using",_,"instead."));const oe=ee.morphAttributes.position||ee.morphAttributes.normal||ee.morphAttributes.color,Me=oe!==void 0?oe.length:0;let Re=0;ee.morphAttributes.position!==void 0&&(Re=1),ee.morphAttributes.normal!==void 0&&(Re=2),ee.morphAttributes.color!==void 0&&(Re=3);let he,we,Ne,be;if(Z){const Sn=Vs[Z];he=Sn.vertexShader,we=Sn.fragmentShader}else he=A.vertexShader,we=A.fragmentShader,l.update(A),Ne=l.getVertexShaderID(A),be=l.getFragmentShaderID(A);const ft=n.getRenderTarget(),dt=se.isInstancedMesh===!0,Ke=se.isBatchedMesh===!0,ke=!!A.map,xe=!!A.matcap,j=!!W,Ve=!!A.aoMap,Oe=!!A.lightMap,Pe=!!A.bumpMap,Ue=!!A.normalMap,lt=!!A.displacementMap,We=!!A.emissiveMap,X=!!A.metalnessMap,F=!!A.roughnessMap,ae=A.anisotropy>0,_e=A.clearcoat>0,Te=A.dispersion>0,Se=A.iridescence>0,nt=A.sheen>0,Ce=A.transmission>0,Ge=ae&&!!A.anisotropyMap,Lt=_e&&!!A.clearcoatMap,Le=_e&&!!A.clearcoatNormalMap,Ze=_e&&!!A.clearcoatRoughnessMap,Et=Se&&!!A.iridescenceMap,vt=Se&&!!A.iridescenceThicknessMap,et=nt&&!!A.sheenColorMap,K=nt&&!!A.sheenRoughnessMap,ve=!!A.specularMap,je=!!A.specularColorMap,Y=!!A.specularIntensityMap,Fe=Ce&&!!A.transmissionMap,me=Ce&&!!A.thicknessMap,Ae=!!A.gradientMap,Xe=!!A.alphaMap,$e=A.alphaTest>0,At=!!A.alphaHash,Bt=!!A.extensions;let Cn=vo;A.toneMapped&&(ft===null||ft.isXRRenderTarget===!0)&&(Cn=n.toneMapping);const It={shaderID:Z,shaderType:A.type,shaderName:A.name,vertexShader:he,fragmentShader:we,defines:A.defines,customVertexShaderID:Ne,customFragmentShaderID:be,isRawShaderMaterial:A.isRawShaderMaterial===!0,glslVersion:A.glslVersion,precision:_,batching:Ke,batchingColor:Ke&&se._colorsTexture!==null,instancing:dt,instancingColor:dt&&se.instanceColor!==null,instancingMorph:dt&&se.morphTexture!==null,supportsVertexTextures:m,outputColorSpace:ft===null?n.outputColorSpace:ft.isXRRenderTarget===!0?ft.texture.colorSpace:xa,alphaToCoverage:!!A.alphaToCoverage,map:ke,matcap:xe,envMap:j,envMapMode:j&&W.mapping,envMapCubeUVHeight:J,aoMap:Ve,lightMap:Oe,bumpMap:Pe,normalMap:Ue,displacementMap:m&<,emissiveMap:We,normalMapObjectSpace:Ue&&A.normalMapType===UF,normalMapTangentSpace:Ue&&A.normalMapType===Fl,metalnessMap:X,roughnessMap:F,anisotropy:ae,anisotropyMap:Ge,clearcoat:_e,clearcoatMap:Lt,clearcoatNormalMap:Le,clearcoatRoughnessMap:Ze,dispersion:Te,iridescence:Se,iridescenceMap:Et,iridescenceThicknessMap:vt,sheen:nt,sheenColorMap:et,sheenRoughnessMap:K,specularMap:ve,specularColorMap:je,specularIntensityMap:Y,transmission:Ce,transmissionMap:Fe,thicknessMap:me,gradientMap:Ae,opaque:A.transparent===!1&&A.blending===qc&&A.alphaToCoverage===!1,alphaMap:Xe,alphaTest:$e,alphaHash:At,combine:A.combine,mapUv:ke&&x(A.map.channel),aoMapUv:Ve&&x(A.aoMap.channel),lightMapUv:Oe&&x(A.lightMap.channel),bumpMapUv:Pe&&x(A.bumpMap.channel),normalMapUv:Ue&&x(A.normalMap.channel),displacementMapUv:lt&&x(A.displacementMap.channel),emissiveMapUv:We&&x(A.emissiveMap.channel),metalnessMapUv:X&&x(A.metalnessMap.channel),roughnessMapUv:F&&x(A.roughnessMap.channel),anisotropyMapUv:Ge&&x(A.anisotropyMap.channel),clearcoatMapUv:Lt&&x(A.clearcoatMap.channel),clearcoatNormalMapUv:Le&&x(A.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Ze&&x(A.clearcoatRoughnessMap.channel),iridescenceMapUv:Et&&x(A.iridescenceMap.channel),iridescenceThicknessMapUv:vt&&x(A.iridescenceThicknessMap.channel),sheenColorMapUv:et&&x(A.sheenColorMap.channel),sheenRoughnessMapUv:K&&x(A.sheenRoughnessMap.channel),specularMapUv:ve&&x(A.specularMap.channel),specularColorMapUv:je&&x(A.specularColorMap.channel),specularIntensityMapUv:Y&&x(A.specularIntensityMap.channel),transmissionMapUv:Fe&&x(A.transmissionMap.channel),thicknessMapUv:me&&x(A.thicknessMap.channel),alphaMapUv:Xe&&x(A.alphaMap.channel),vertexTangents:!!ee.attributes.tangent&&(Ue||ae),vertexColors:A.vertexColors,vertexAlphas:A.vertexColors===!0&&!!ee.attributes.color&&ee.attributes.color.itemSize===4,pointsUvs:se.isPoints===!0&&!!ee.attributes.uv&&(ke||Xe),fog:!!le,useFog:A.fog===!0,fogExp2:!!le&&le.isFogExp2,flatShading:A.flatShading===!0,sizeAttenuation:A.sizeAttenuation===!0,logarithmicDepthBuffer:f,reverseDepthBuffer:p,skinning:se.isSkinnedMesh===!0,morphTargets:ee.morphAttributes.position!==void 0,morphNormals:ee.morphAttributes.normal!==void 0,morphColors:ee.morphAttributes.color!==void 0,morphTargetsCount:Me,morphTextureStride:Re,numDirLights:R.directional.length,numPointLights:R.point.length,numSpotLights:R.spot.length,numSpotLightMaps:R.spotLightMap.length,numRectAreaLights:R.rectArea.length,numHemiLights:R.hemi.length,numDirLightShadows:R.directionalShadowMap.length,numPointLightShadows:R.pointShadowMap.length,numSpotLightShadows:R.spotShadowMap.length,numSpotLightShadowsWithMaps:R.numSpotLightShadowsWithMaps,numLightProbes:R.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:A.dithering,shadowMapEnabled:n.shadowMap.enabled&&V.length>0,shadowMapType:n.shadowMap.type,toneMapping:Cn,decodeVideoTexture:ke&&A.map.isVideoTexture===!0&&cn.getTransfer(A.map.colorSpace)===En,premultipliedAlpha:A.premultipliedAlpha,doubleSided:A.side===Bs,flipSided:A.side===yr,useDepthPacking:A.depthPacking>=0,depthPacking:A.depthPacking||0,index0AttributeName:A.index0AttributeName,extensionClipCullDistance:Bt&&A.extensions.clipCullDistance===!0&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Bt&&A.extensions.multiDraw===!0||Ke)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:A.customProgramCacheKey()};return It.vertexUv1s=c.has(1),It.vertexUv2s=c.has(2),It.vertexUv3s=c.has(3),c.clear(),It}function E(A){const R=[];if(A.shaderID?R.push(A.shaderID):(R.push(A.customVertexShaderID),R.push(A.customFragmentShaderID)),A.defines!==void 0)for(const V in A.defines)R.push(V),R.push(A.defines[V]);return A.isRawShaderMaterial===!1&&(w(R,A),M(R,A),R.push(n.outputColorSpace)),R.push(A.customProgramCacheKey),R.join()}function w(A,R){A.push(R.precision),A.push(R.outputColorSpace),A.push(R.envMapMode),A.push(R.envMapCubeUVHeight),A.push(R.mapUv),A.push(R.alphaMapUv),A.push(R.lightMapUv),A.push(R.aoMapUv),A.push(R.bumpMapUv),A.push(R.normalMapUv),A.push(R.displacementMapUv),A.push(R.emissiveMapUv),A.push(R.metalnessMapUv),A.push(R.roughnessMapUv),A.push(R.anisotropyMapUv),A.push(R.clearcoatMapUv),A.push(R.clearcoatNormalMapUv),A.push(R.clearcoatRoughnessMapUv),A.push(R.iridescenceMapUv),A.push(R.iridescenceThicknessMapUv),A.push(R.sheenColorMapUv),A.push(R.sheenRoughnessMapUv),A.push(R.specularMapUv),A.push(R.specularColorMapUv),A.push(R.specularIntensityMapUv),A.push(R.transmissionMapUv),A.push(R.thicknessMapUv),A.push(R.combine),A.push(R.fogExp2),A.push(R.sizeAttenuation),A.push(R.morphTargetsCount),A.push(R.morphAttributeCount),A.push(R.numDirLights),A.push(R.numPointLights),A.push(R.numSpotLights),A.push(R.numSpotLightMaps),A.push(R.numHemiLights),A.push(R.numRectAreaLights),A.push(R.numDirLightShadows),A.push(R.numPointLightShadows),A.push(R.numSpotLightShadows),A.push(R.numSpotLightShadowsWithMaps),A.push(R.numLightProbes),A.push(R.shadowMapType),A.push(R.toneMapping),A.push(R.numClippingPlanes),A.push(R.numClipIntersection),A.push(R.depthPacking)}function M(A,R){a.disableAll(),R.supportsVertexTextures&&a.enable(0),R.instancing&&a.enable(1),R.instancingColor&&a.enable(2),R.instancingMorph&&a.enable(3),R.matcap&&a.enable(4),R.envMap&&a.enable(5),R.normalMapObjectSpace&&a.enable(6),R.normalMapTangentSpace&&a.enable(7),R.clearcoat&&a.enable(8),R.iridescence&&a.enable(9),R.alphaTest&&a.enable(10),R.vertexColors&&a.enable(11),R.vertexAlphas&&a.enable(12),R.vertexUv1s&&a.enable(13),R.vertexUv2s&&a.enable(14),R.vertexUv3s&&a.enable(15),R.vertexTangents&&a.enable(16),R.anisotropy&&a.enable(17),R.alphaHash&&a.enable(18),R.batching&&a.enable(19),R.dispersion&&a.enable(20),R.batchingColor&&a.enable(21),A.push(a.mask),a.disableAll(),R.fog&&a.enable(0),R.useFog&&a.enable(1),R.flatShading&&a.enable(2),R.logarithmicDepthBuffer&&a.enable(3),R.reverseDepthBuffer&&a.enable(4),R.skinning&&a.enable(5),R.morphTargets&&a.enable(6),R.morphNormals&&a.enable(7),R.morphColors&&a.enable(8),R.premultipliedAlpha&&a.enable(9),R.shadowMapEnabled&&a.enable(10),R.doubleSided&&a.enable(11),R.flipSided&&a.enable(12),R.useDepthPacking&&a.enable(13),R.dithering&&a.enable(14),R.transmission&&a.enable(15),R.sheen&&a.enable(16),R.opaque&&a.enable(17),R.pointsUvs&&a.enable(18),R.decodeVideoTexture&&a.enable(19),R.alphaToCoverage&&a.enable(20),A.push(a.mask)}function O(A){const R=S[A.type];let V;if(R){const U=Vs[R];V=JF.clone(U.uniforms)}else V=A.uniforms;return V}function k(A,R){let V;for(let U=0,se=d.length;U0?i.push(y):m.transparent===!0?r.push(y):t.push(y)}function l(f,p,m,_,S,x){const y=o(f,p,m,_,S,x);m.transmission>0?i.unshift(y):m.transparent===!0?r.unshift(y):t.unshift(y)}function c(f,p){t.length>1&&t.sort(f||Lee),i.length>1&&i.sort(p||oL),r.length>1&&r.sort(p||oL)}function d(){for(let f=e,p=n.length;f=s.length?(o=new aL,s.push(o)):o=s[r],o}function t(){n=new WeakMap}return{get:e,dispose:t}}function Dee(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new G,color:new rt};break;case"SpotLight":t={position:new G,direction:new G,color:new rt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new G,color:new rt,distance:0,decay:0};break;case"HemisphereLight":t={direction:new G,skyColor:new rt,groundColor:new rt};break;case"RectAreaLight":t={color:new rt,position:new G,halfWidth:new G,halfHeight:new G};break}return n[e.id]=t,t}}}function kee(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ee};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ee};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ee,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}let Oee=0;function Uee(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function Fee(n){const e=new Dee,t=kee(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)i.probe.push(new G);const r=new G,s=new St,o=new St;function a(c){let d=0,f=0,p=0;for(let D=0;D<9;D++)i.probe[D].set(0,0,0);let m=0,_=0,S=0,x=0,y=0,E=0,w=0,M=0,O=0,k=0,I=0;c.sort(Uee);for(let D=0,A=c.length;D0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=Ye.LTC_FLOAT_1,i.rectAreaLTC2=Ye.LTC_FLOAT_2):(i.rectAreaLTC1=Ye.LTC_HALF_1,i.rectAreaLTC2=Ye.LTC_HALF_2)),i.ambient[0]=d,i.ambient[1]=f,i.ambient[2]=p;const P=i.hash;(P.directionalLength!==m||P.pointLength!==_||P.spotLength!==S||P.rectAreaLength!==x||P.hemiLength!==y||P.numDirectionalShadows!==E||P.numPointShadows!==w||P.numSpotShadows!==M||P.numSpotMaps!==O||P.numLightProbes!==I)&&(i.directional.length=m,i.spot.length=S,i.rectArea.length=x,i.point.length=_,i.hemi.length=y,i.directionalShadow.length=E,i.directionalShadowMap.length=E,i.pointShadow.length=w,i.pointShadowMap.length=w,i.spotShadow.length=M,i.spotShadowMap.length=M,i.directionalShadowMatrix.length=E,i.pointShadowMatrix.length=w,i.spotLightMatrix.length=M+O-k,i.spotLightMap.length=O,i.numSpotLightShadowsWithMaps=k,i.numLightProbes=I,P.directionalLength=m,P.pointLength=_,P.spotLength=S,P.rectAreaLength=x,P.hemiLength=y,P.numDirectionalShadows=E,P.numPointShadows=w,P.numSpotShadows=M,P.numSpotMaps=O,P.numLightProbes=I,i.version=Oee++)}function l(c,d){let f=0,p=0,m=0,_=0,S=0;const x=d.matrixWorldInverse;for(let y=0,E=c.length;y=o.length?(a=new lL(n),o.push(a)):a=o[s],a}function i(){e=new WeakMap}return{get:t,dispose:i}}class tC extends Oi{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=kF,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class nC extends Oi{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const Bee=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,zee=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`;function Hee(n,e,t){let i=new Wm;const r=new Ee,s=new Ee,o=new sn,a=new tC({depthPacking:OF}),l=new nC,c={},d=t.maxTextureSize,f={[da]:yr,[yr]:da,[Bs]:Bs},p=new qs({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ee},radius:{value:4}},vertexShader:Bee,fragmentShader:zee}),m=p.clone();m.defines.HORIZONTAL_PASS=1;const _=new Vt;_.setAttribute("position",new vn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const S=new ni(_,p),x=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=rx;let y=this.type;this.render=function(k,I,P){if(x.enabled===!1||x.autoUpdate===!1&&x.needsUpdate===!1||k.length===0)return;const D=n.getRenderTarget(),A=n.getActiveCubeFace(),R=n.getActiveMipmapLevel(),V=n.state;V.setBlending(ra),V.buffers.color.setClear(1,1,1,1),V.buffers.depth.setTest(!0),V.setScissorTest(!1);const U=y!==Os&&this.type===Os,se=y===Os&&this.type!==Os;for(let le=0,ee=k.length;led||r.y>d)&&(r.x>d&&(s.x=Math.floor(d/J.x),r.x=s.x*J.x,W.mapSize.x=s.x),r.y>d&&(s.y=Math.floor(d/J.y),r.y=s.y*J.y,W.mapSize.y=s.y)),W.map===null||U===!0||se===!0){const oe=this.type!==Os?{minFilter:Ai,magFilter:Ai}:{};W.map!==null&&W.map.dispose(),W.map=new Xs(r.x,r.y,oe),W.map.texture.name=pe.name+".shadowMap",W.camera.updateProjectionMatrix()}n.setRenderTarget(W.map),n.clear();const Z=W.getViewportCount();for(let oe=0;oe0||I.map&&I.alphaTest>0){const V=A.uuid,U=I.uuid;let se=c[V];se===void 0&&(se={},c[V]=se);let le=se[U];le===void 0&&(le=A.clone(),se[U]=le,I.addEventListener("dispose",O)),A=le}if(A.visible=I.visible,A.wireframe=I.wireframe,D===Os?A.side=I.shadowSide!==null?I.shadowSide:I.side:A.side=I.shadowSide!==null?I.shadowSide:f[I.side],A.alphaMap=I.alphaMap,A.alphaTest=I.alphaTest,A.map=I.map,A.clipShadows=I.clipShadows,A.clippingPlanes=I.clippingPlanes,A.clipIntersection=I.clipIntersection,A.displacementMap=I.displacementMap,A.displacementScale=I.displacementScale,A.displacementBias=I.displacementBias,A.wireframeLinewidth=I.wireframeLinewidth,A.linewidth=I.linewidth,P.isPointLight===!0&&A.isMeshDistanceMaterial===!0){const V=n.properties.get(A);V.light=P}return A}function M(k,I,P,D,A){if(k.visible===!1)return;if(k.layers.test(I.layers)&&(k.isMesh||k.isLine||k.isPoints)&&(k.castShadow||k.receiveShadow&&A===Os)&&(!k.frustumCulled||i.intersectsObject(k))){k.modelViewMatrix.multiplyMatrices(P.matrixWorldInverse,k.matrixWorld);const U=e.update(k),se=k.material;if(Array.isArray(se)){const le=U.groups;for(let ee=0,pe=le.length;ee=1):pe.indexOf("OpenGL ES")!==-1&&(ee=parseFloat(/^OpenGL ES (\d)/.exec(pe)[1]),le=ee>=2);let W=null,J={};const Z=n.getParameter(n.SCISSOR_BOX),oe=n.getParameter(n.VIEWPORT),Me=new sn().fromArray(Z),Re=new sn().fromArray(oe);function he(Y,Fe,me,Ae){const Xe=new Uint8Array(4),$e=n.createTexture();n.bindTexture(Y,$e),n.texParameteri(Y,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(Y,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let At=0;Ate?(n.repeat.x=1,n.repeat.y=t/e,n.offset.x=0,n.offset.y=(1-n.repeat.y)/2):(n.repeat.x=e/t,n.repeat.y=1,n.offset.x=(1-n.repeat.x)/2,n.offset.y=0),n}function Xee(n,e){const t=n.image&&n.image.width?n.image.width/n.image.height:1;return t>e?(n.repeat.x=e/t,n.repeat.y=1,n.offset.x=(1-n.repeat.x)/2,n.offset.y=0):(n.repeat.x=1,n.repeat.y=t/e,n.offset.x=0,n.offset.y=(1-n.repeat.y)/2),n}function qee(n){return n.repeat.x=1,n.repeat.y=1,n.offset.x=0,n.offset.y=0,n}function _T(n,e,t,i){const r=$ee(i);switch(t){case VM:return n*e;case zM:return n*e;case HM:return n*e*2;case cx:return n*e/r.components*r.byteLength;case Bm:return n*e/r.components*r.byteLength;case GM:return n*e*2/r.components*r.byteLength;case ux:return n*e*2/r.components*r.byteLength;case BM:return n*e*3/r.components*r.byteLength;case tr:return n*e*4/r.components*r.byteLength;case hx:return n*e*4/r.components*r.byteLength;case gp:case yp:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*8;case vp:case _p:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case k0:case U0:return Math.max(n,16)*Math.max(e,8)/4;case D0:case O0:return Math.max(n,8)*Math.max(e,8)/2;case F0:case V0:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*8;case B0:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case z0:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case H0:return Math.floor((n+4)/5)*Math.floor((e+3)/4)*16;case G0:return Math.floor((n+4)/5)*Math.floor((e+4)/5)*16;case W0:return Math.floor((n+5)/6)*Math.floor((e+4)/5)*16;case j0:return Math.floor((n+5)/6)*Math.floor((e+5)/6)*16;case X0:return Math.floor((n+7)/8)*Math.floor((e+4)/5)*16;case q0:return Math.floor((n+7)/8)*Math.floor((e+5)/6)*16;case $0:return Math.floor((n+7)/8)*Math.floor((e+7)/8)*16;case Y0:return Math.floor((n+9)/10)*Math.floor((e+4)/5)*16;case K0:return Math.floor((n+9)/10)*Math.floor((e+5)/6)*16;case Q0:return Math.floor((n+9)/10)*Math.floor((e+7)/8)*16;case J0:return Math.floor((n+9)/10)*Math.floor((e+9)/10)*16;case Z0:return Math.floor((n+11)/12)*Math.floor((e+9)/10)*16;case e_:return Math.floor((n+11)/12)*Math.floor((e+11)/12)*16;case xp:case t_:case n_:return Math.ceil(n/4)*Math.ceil(e/4)*16;case WM:case i_:return Math.ceil(n/4)*Math.ceil(e/4)*8;case r_:case s_:return Math.ceil(n/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function $ee(n){switch(n){case js:case OM:return{byteLength:1,components:1};case dd:case UM:case Id:return{byteLength:2,components:1};case ax:case lx:return{byteLength:2,components:4};case pa:case ox:case kr:return{byteLength:4,components:1};case FM:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${n}.`)}const Yee={contain:jee,cover:Xee,fill:qee,getByteLength:_T};function Kee(n,e,t,i,r,s,o){const a=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,l=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new Ee,d=new WeakMap;let f;const p=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function _(X,F){return m?new OffscreenCanvas(X,F):cm("canvas")}function S(X,F,ae){let _e=1;const Te=We(X);if((Te.width>ae||Te.height>ae)&&(_e=ae/Math.max(Te.width,Te.height)),_e<1)if(typeof HTMLImageElement<"u"&&X instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&X instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&X instanceof ImageBitmap||typeof VideoFrame<"u"&&X instanceof VideoFrame){const Se=Math.floor(_e*Te.width),nt=Math.floor(_e*Te.height);f===void 0&&(f=_(Se,nt));const Ce=F?_(Se,nt):f;return Ce.width=Se,Ce.height=nt,Ce.getContext("2d").drawImage(X,0,0,Se,nt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+Te.width+"x"+Te.height+") to ("+Se+"x"+nt+")."),Ce}else return"data"in X&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+Te.width+"x"+Te.height+")."),X;return X}function x(X){return X.generateMipmaps&&X.minFilter!==Ai&&X.minFilter!==fi}function y(X){n.generateMipmap(X)}function E(X,F,ae,_e,Te=!1){if(X!==null){if(n[X]!==void 0)return n[X];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+X+"'")}let Se=F;if(F===n.RED&&(ae===n.FLOAT&&(Se=n.R32F),ae===n.HALF_FLOAT&&(Se=n.R16F),ae===n.UNSIGNED_BYTE&&(Se=n.R8)),F===n.RED_INTEGER&&(ae===n.UNSIGNED_BYTE&&(Se=n.R8UI),ae===n.UNSIGNED_SHORT&&(Se=n.R16UI),ae===n.UNSIGNED_INT&&(Se=n.R32UI),ae===n.BYTE&&(Se=n.R8I),ae===n.SHORT&&(Se=n.R16I),ae===n.INT&&(Se=n.R32I)),F===n.RG&&(ae===n.FLOAT&&(Se=n.RG32F),ae===n.HALF_FLOAT&&(Se=n.RG16F),ae===n.UNSIGNED_BYTE&&(Se=n.RG8)),F===n.RG_INTEGER&&(ae===n.UNSIGNED_BYTE&&(Se=n.RG8UI),ae===n.UNSIGNED_SHORT&&(Se=n.RG16UI),ae===n.UNSIGNED_INT&&(Se=n.RG32UI),ae===n.BYTE&&(Se=n.RG8I),ae===n.SHORT&&(Se=n.RG16I),ae===n.INT&&(Se=n.RG32I)),F===n.RGB_INTEGER&&(ae===n.UNSIGNED_BYTE&&(Se=n.RGB8UI),ae===n.UNSIGNED_SHORT&&(Se=n.RGB16UI),ae===n.UNSIGNED_INT&&(Se=n.RGB32UI),ae===n.BYTE&&(Se=n.RGB8I),ae===n.SHORT&&(Se=n.RGB16I),ae===n.INT&&(Se=n.RGB32I)),F===n.RGBA_INTEGER&&(ae===n.UNSIGNED_BYTE&&(Se=n.RGBA8UI),ae===n.UNSIGNED_SHORT&&(Se=n.RGBA16UI),ae===n.UNSIGNED_INT&&(Se=n.RGBA32UI),ae===n.BYTE&&(Se=n.RGBA8I),ae===n.SHORT&&(Se=n.RGBA16I),ae===n.INT&&(Se=n.RGBA32I)),F===n.RGB&&ae===n.UNSIGNED_INT_5_9_9_9_REV&&(Se=n.RGB9_E5),F===n.RGBA){const nt=Te?rm:cn.getTransfer(_e);ae===n.FLOAT&&(Se=n.RGBA32F),ae===n.HALF_FLOAT&&(Se=n.RGBA16F),ae===n.UNSIGNED_BYTE&&(Se=nt===En?n.SRGB8_ALPHA8:n.RGBA8),ae===n.UNSIGNED_SHORT_4_4_4_4&&(Se=n.RGBA4),ae===n.UNSIGNED_SHORT_5_5_5_1&&(Se=n.RGB5_A1)}return(Se===n.R16F||Se===n.R32F||Se===n.RG16F||Se===n.RG32F||Se===n.RGBA16F||Se===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Se}function w(X,F){let ae;return X?F===null||F===pa||F===lu?ae=n.DEPTH24_STENCIL8:F===kr?ae=n.DEPTH32F_STENCIL8:F===dd&&(ae=n.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):F===null||F===pa||F===lu?ae=n.DEPTH_COMPONENT24:F===kr?ae=n.DEPTH_COMPONENT32F:F===dd&&(ae=n.DEPTH_COMPONENT16),ae}function M(X,F){return x(X)===!0||X.isFramebufferTexture&&X.minFilter!==Ai&&X.minFilter!==fi?Math.log2(Math.max(F.width,F.height))+1:X.mipmaps!==void 0&&X.mipmaps.length>0?X.mipmaps.length:X.isCompressedTexture&&Array.isArray(X.image)?F.mipmaps.length:1}function O(X){const F=X.target;F.removeEventListener("dispose",O),I(F),F.isVideoTexture&&d.delete(F)}function k(X){const F=X.target;F.removeEventListener("dispose",k),D(F)}function I(X){const F=i.get(X);if(F.__webglInit===void 0)return;const ae=X.source,_e=p.get(ae);if(_e){const Te=_e[F.__cacheKey];Te.usedTimes--,Te.usedTimes===0&&P(X),Object.keys(_e).length===0&&p.delete(ae)}i.remove(X)}function P(X){const F=i.get(X);n.deleteTexture(F.__webglTexture);const ae=X.source,_e=p.get(ae);delete _e[F.__cacheKey],o.memory.textures--}function D(X){const F=i.get(X);if(X.depthTexture&&X.depthTexture.dispose(),X.isWebGLCubeRenderTarget)for(let _e=0;_e<6;_e++){if(Array.isArray(F.__webglFramebuffer[_e]))for(let Te=0;Te=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+X+" texture units while this GPU supports only "+r.maxTextures),A+=1,X}function U(X){const F=[];return F.push(X.wrapS),F.push(X.wrapT),F.push(X.wrapR||0),F.push(X.magFilter),F.push(X.minFilter),F.push(X.anisotropy),F.push(X.internalFormat),F.push(X.format),F.push(X.type),F.push(X.generateMipmaps),F.push(X.premultiplyAlpha),F.push(X.flipY),F.push(X.unpackAlignment),F.push(X.colorSpace),F.join()}function se(X,F){const ae=i.get(X);if(X.isVideoTexture&&Ue(X),X.isRenderTargetTexture===!1&&X.version>0&&ae.__version!==X.version){const _e=X.image;if(_e===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(_e.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Re(ae,X,F);return}}t.bindTexture(n.TEXTURE_2D,ae.__webglTexture,n.TEXTURE0+F)}function le(X,F){const ae=i.get(X);if(X.version>0&&ae.__version!==X.version){Re(ae,X,F);return}t.bindTexture(n.TEXTURE_2D_ARRAY,ae.__webglTexture,n.TEXTURE0+F)}function ee(X,F){const ae=i.get(X);if(X.version>0&&ae.__version!==X.version){Re(ae,X,F);return}t.bindTexture(n.TEXTURE_3D,ae.__webglTexture,n.TEXTURE0+F)}function pe(X,F){const ae=i.get(X);if(X.version>0&&ae.__version!==X.version){he(ae,X,F);return}t.bindTexture(n.TEXTURE_CUBE_MAP,ae.__webglTexture,n.TEXTURE0+F)}const W={[em]:n.REPEAT,[Es]:n.CLAMP_TO_EDGE,[tm]:n.MIRRORED_REPEAT},J={[Ai]:n.NEAREST,[kM]:n.NEAREST_MIPMAP_NEAREST,[Ph]:n.NEAREST_MIPMAP_LINEAR,[fi]:n.LINEAR,[mp]:n.LINEAR_MIPMAP_NEAREST,[ho]:n.LINEAR_MIPMAP_LINEAR},Z={[FF]:n.NEVER,[WF]:n.ALWAYS,[VF]:n.LESS,[XM]:n.LEQUAL,[BF]:n.EQUAL,[GF]:n.GEQUAL,[zF]:n.GREATER,[HF]:n.NOTEQUAL};function oe(X,F){if(F.type===kr&&e.has("OES_texture_float_linear")===!1&&(F.magFilter===fi||F.magFilter===mp||F.magFilter===Ph||F.magFilter===ho||F.minFilter===fi||F.minFilter===mp||F.minFilter===Ph||F.minFilter===ho)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(X,n.TEXTURE_WRAP_S,W[F.wrapS]),n.texParameteri(X,n.TEXTURE_WRAP_T,W[F.wrapT]),(X===n.TEXTURE_3D||X===n.TEXTURE_2D_ARRAY)&&n.texParameteri(X,n.TEXTURE_WRAP_R,W[F.wrapR]),n.texParameteri(X,n.TEXTURE_MAG_FILTER,J[F.magFilter]),n.texParameteri(X,n.TEXTURE_MIN_FILTER,J[F.minFilter]),F.compareFunction&&(n.texParameteri(X,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(X,n.TEXTURE_COMPARE_FUNC,Z[F.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(F.magFilter===Ai||F.minFilter!==Ph&&F.minFilter!==ho||F.type===kr&&e.has("OES_texture_float_linear")===!1)return;if(F.anisotropy>1||i.get(F).__currentAnisotropy){const ae=e.get("EXT_texture_filter_anisotropic");n.texParameterf(X,ae.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(F.anisotropy,r.getMaxAnisotropy())),i.get(F).__currentAnisotropy=F.anisotropy}}}function Me(X,F){let ae=!1;X.__webglInit===void 0&&(X.__webglInit=!0,F.addEventListener("dispose",O));const _e=F.source;let Te=p.get(_e);Te===void 0&&(Te={},p.set(_e,Te));const Se=U(F);if(Se!==X.__cacheKey){Te[Se]===void 0&&(Te[Se]={texture:n.createTexture(),usedTimes:0},o.memory.textures++,ae=!0),Te[Se].usedTimes++;const nt=Te[X.__cacheKey];nt!==void 0&&(Te[X.__cacheKey].usedTimes--,nt.usedTimes===0&&P(F)),X.__cacheKey=Se,X.__webglTexture=Te[Se].texture}return ae}function Re(X,F,ae){let _e=n.TEXTURE_2D;(F.isDataArrayTexture||F.isCompressedArrayTexture)&&(_e=n.TEXTURE_2D_ARRAY),F.isData3DTexture&&(_e=n.TEXTURE_3D);const Te=Me(X,F),Se=F.source;t.bindTexture(_e,X.__webglTexture,n.TEXTURE0+ae);const nt=i.get(Se);if(Se.version!==nt.__version||Te===!0){t.activeTexture(n.TEXTURE0+ae);const Ce=cn.getPrimaries(cn.workingColorSpace),Ge=F.colorSpace===jo?null:cn.getPrimaries(F.colorSpace),Lt=F.colorSpace===jo||Ce===Ge?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,F.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,F.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,F.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,Lt);let Le=S(F.image,!1,r.maxTextureSize);Le=lt(F,Le);const Ze=s.convert(F.format,F.colorSpace),Et=s.convert(F.type);let vt=E(F.internalFormat,Ze,Et,F.colorSpace,F.isVideoTexture);oe(_e,F);let et;const K=F.mipmaps,ve=F.isVideoTexture!==!0,je=nt.__version===void 0||Te===!0,Y=Se.dataReady,Fe=M(F,Le);if(F.isDepthTexture)vt=w(F.format===cu,F.type),je&&(ve?t.texStorage2D(n.TEXTURE_2D,1,vt,Le.width,Le.height):t.texImage2D(n.TEXTURE_2D,0,vt,Le.width,Le.height,0,Ze,Et,null));else if(F.isDataTexture)if(K.length>0){ve&&je&&t.texStorage2D(n.TEXTURE_2D,Fe,vt,K[0].width,K[0].height);for(let me=0,Ae=K.length;me0){const Xe=_T(et.width,et.height,F.format,F.type);for(const $e of F.layerUpdates){const At=et.data.subarray($e*Xe/et.data.BYTES_PER_ELEMENT,($e+1)*Xe/et.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,me,0,0,$e,et.width,et.height,1,Ze,At,0,0)}F.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,me,0,0,0,et.width,et.height,Le.depth,Ze,et.data,0,0)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,me,vt,et.width,et.height,Le.depth,0,et.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else ve?Y&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,me,0,0,0,et.width,et.height,Le.depth,Ze,Et,et.data):t.texImage3D(n.TEXTURE_2D_ARRAY,me,vt,et.width,et.height,Le.depth,0,Ze,Et,et.data)}else{ve&&je&&t.texStorage2D(n.TEXTURE_2D,Fe,vt,K[0].width,K[0].height);for(let me=0,Ae=K.length;me0){const me=_T(Le.width,Le.height,F.format,F.type);for(const Ae of F.layerUpdates){const Xe=Le.data.subarray(Ae*me/Le.data.BYTES_PER_ELEMENT,(Ae+1)*me/Le.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,Ae,Le.width,Le.height,1,Ze,Et,Xe)}F.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,Le.width,Le.height,Le.depth,Ze,Et,Le.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,vt,Le.width,Le.height,Le.depth,0,Ze,Et,Le.data);else if(F.isData3DTexture)ve?(je&&t.texStorage3D(n.TEXTURE_3D,Fe,vt,Le.width,Le.height,Le.depth),Y&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,Le.width,Le.height,Le.depth,Ze,Et,Le.data)):t.texImage3D(n.TEXTURE_3D,0,vt,Le.width,Le.height,Le.depth,0,Ze,Et,Le.data);else if(F.isFramebufferTexture){if(je)if(ve)t.texStorage2D(n.TEXTURE_2D,Fe,vt,Le.width,Le.height);else{let me=Le.width,Ae=Le.height;for(let Xe=0;Xe>=1,Ae>>=1}}else if(K.length>0){if(ve&&je){const me=We(K[0]);t.texStorage2D(n.TEXTURE_2D,Fe,vt,me.width,me.height)}for(let me=0,Ae=K.length;me0&&Fe++;const Ae=We(Ze[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,Fe,K,Ae.width,Ae.height)}for(let Ae=0;Ae<6;Ae++)if(Le){ve?Y&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ae,0,0,0,Ze[Ae].width,Ze[Ae].height,vt,et,Ze[Ae].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ae,0,K,Ze[Ae].width,Ze[Ae].height,0,vt,et,Ze[Ae].data);for(let Xe=0;Xe>Se),Ze=Math.max(1,F.height>>Se);Te===n.TEXTURE_3D||Te===n.TEXTURE_2D_ARRAY?t.texImage3D(Te,Se,Ge,Le,Ze,F.depth,0,nt,Ce,null):t.texImage2D(Te,Se,Ge,Le,Ze,0,nt,Ce,null)}t.bindFramebuffer(n.FRAMEBUFFER,X),Pe(F)?a.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,_e,Te,i.get(ae).__webglTexture,0,Oe(F)):(Te===n.TEXTURE_2D||Te>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Te<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,_e,Te,i.get(ae).__webglTexture,Se),t.bindFramebuffer(n.FRAMEBUFFER,null)}function Ne(X,F,ae){if(n.bindRenderbuffer(n.RENDERBUFFER,X),F.depthBuffer){const _e=F.depthTexture,Te=_e&&_e.isDepthTexture?_e.type:null,Se=w(F.stencilBuffer,Te),nt=F.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Ce=Oe(F);Pe(F)?a.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Ce,Se,F.width,F.height):ae?n.renderbufferStorageMultisample(n.RENDERBUFFER,Ce,Se,F.width,F.height):n.renderbufferStorage(n.RENDERBUFFER,Se,F.width,F.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,nt,n.RENDERBUFFER,X)}else{const _e=F.textures;for(let Te=0;Te<_e.length;Te++){const Se=_e[Te],nt=s.convert(Se.format,Se.colorSpace),Ce=s.convert(Se.type),Ge=E(Se.internalFormat,nt,Ce,Se.colorSpace),Lt=Oe(F);ae&&Pe(F)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,Lt,Ge,F.width,F.height):Pe(F)?a.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Lt,Ge,F.width,F.height):n.renderbufferStorage(n.RENDERBUFFER,Ge,F.width,F.height)}}n.bindRenderbuffer(n.RENDERBUFFER,null)}function be(X,F){if(F&&F.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(n.FRAMEBUFFER,X),!(F.depthTexture&&F.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!i.get(F.depthTexture).__webglTexture||F.depthTexture.image.width!==F.width||F.depthTexture.image.height!==F.height)&&(F.depthTexture.image.width=F.width,F.depthTexture.image.height=F.height,F.depthTexture.needsUpdate=!0),se(F.depthTexture,0);const _e=i.get(F.depthTexture).__webglTexture,Te=Oe(F);if(F.depthTexture.format===$c)Pe(F)?a.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,_e,0,Te):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,_e,0);else if(F.depthTexture.format===cu)Pe(F)?a.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,_e,0,Te):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,_e,0);else throw new Error("Unknown depthTexture format")}function ft(X){const F=i.get(X),ae=X.isWebGLCubeRenderTarget===!0;if(F.__boundDepthTexture!==X.depthTexture){const _e=X.depthTexture;if(F.__depthDisposeCallback&&F.__depthDisposeCallback(),_e){const Te=()=>{delete F.__boundDepthTexture,delete F.__depthDisposeCallback,_e.removeEventListener("dispose",Te)};_e.addEventListener("dispose",Te),F.__depthDisposeCallback=Te}F.__boundDepthTexture=_e}if(X.depthTexture&&!F.__autoAllocateDepthBuffer){if(ae)throw new Error("target.depthTexture not supported in Cube render targets");be(F.__webglFramebuffer,X)}else if(ae){F.__webglDepthbuffer=[];for(let _e=0;_e<6;_e++)if(t.bindFramebuffer(n.FRAMEBUFFER,F.__webglFramebuffer[_e]),F.__webglDepthbuffer[_e]===void 0)F.__webglDepthbuffer[_e]=n.createRenderbuffer(),Ne(F.__webglDepthbuffer[_e],X,!1);else{const Te=X.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Se=F.__webglDepthbuffer[_e];n.bindRenderbuffer(n.RENDERBUFFER,Se),n.framebufferRenderbuffer(n.FRAMEBUFFER,Te,n.RENDERBUFFER,Se)}}else if(t.bindFramebuffer(n.FRAMEBUFFER,F.__webglFramebuffer),F.__webglDepthbuffer===void 0)F.__webglDepthbuffer=n.createRenderbuffer(),Ne(F.__webglDepthbuffer,X,!1);else{const _e=X.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Te=F.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,Te),n.framebufferRenderbuffer(n.FRAMEBUFFER,_e,n.RENDERBUFFER,Te)}t.bindFramebuffer(n.FRAMEBUFFER,null)}function dt(X,F,ae){const _e=i.get(X);F!==void 0&&we(_e.__webglFramebuffer,X,X.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),ae!==void 0&&ft(X)}function Ke(X){const F=X.texture,ae=i.get(X),_e=i.get(F);X.addEventListener("dispose",k);const Te=X.textures,Se=X.isWebGLCubeRenderTarget===!0,nt=Te.length>1;if(nt||(_e.__webglTexture===void 0&&(_e.__webglTexture=n.createTexture()),_e.__version=F.version,o.memory.textures++),Se){ae.__webglFramebuffer=[];for(let Ce=0;Ce<6;Ce++)if(F.mipmaps&&F.mipmaps.length>0){ae.__webglFramebuffer[Ce]=[];for(let Ge=0;Ge0){ae.__webglFramebuffer=[];for(let Ce=0;Ce0&&Pe(X)===!1){ae.__webglMultisampledFramebuffer=n.createFramebuffer(),ae.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,ae.__webglMultisampledFramebuffer);for(let Ce=0;Ce0)for(let Ge=0;Ge0)for(let Ge=0;Ge0){if(Pe(X)===!1){const F=X.textures,ae=X.width,_e=X.height;let Te=n.COLOR_BUFFER_BIT;const Se=X.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,nt=i.get(X),Ce=F.length>1;if(Ce)for(let Ge=0;Ge0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&F.__useRenderToTexture!==!1}function Ue(X){const F=o.render.frame;d.get(X)!==F&&(d.set(X,F),X.update())}function lt(X,F){const ae=X.colorSpace,_e=X.format,Te=X.type;return X.isCompressedTexture===!0||X.isVideoTexture===!0||ae!==xa&&ae!==jo&&(cn.getTransfer(ae)===En?(_e!==tr||Te!==js)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",ae)),F}function We(X){return typeof HTMLImageElement<"u"&&X instanceof HTMLImageElement?(c.width=X.naturalWidth||X.width,c.height=X.naturalHeight||X.height):typeof VideoFrame<"u"&&X instanceof VideoFrame?(c.width=X.displayWidth,c.height=X.displayHeight):(c.width=X.width,c.height=X.height),c}this.allocateTextureUnit=V,this.resetTextureUnits=R,this.setTexture2D=se,this.setTexture2DArray=le,this.setTexture3D=ee,this.setTextureCube=pe,this.rebindTextures=dt,this.setupRenderTarget=Ke,this.updateRenderTargetMipmap=ke,this.updateMultisampleRenderTarget=Ve,this.setupDepthRenderbuffer=ft,this.setupFrameBufferTexture=we,this.useMultisampledRTT=Pe}function rV(n,e){function t(i,r=jo){let s;const o=cn.getTransfer(r);if(i===js)return n.UNSIGNED_BYTE;if(i===ax)return n.UNSIGNED_SHORT_4_4_4_4;if(i===lx)return n.UNSIGNED_SHORT_5_5_5_1;if(i===FM)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===OM)return n.BYTE;if(i===UM)return n.SHORT;if(i===dd)return n.UNSIGNED_SHORT;if(i===ox)return n.INT;if(i===pa)return n.UNSIGNED_INT;if(i===kr)return n.FLOAT;if(i===Id)return n.HALF_FLOAT;if(i===VM)return n.ALPHA;if(i===BM)return n.RGB;if(i===tr)return n.RGBA;if(i===zM)return n.LUMINANCE;if(i===HM)return n.LUMINANCE_ALPHA;if(i===$c)return n.DEPTH_COMPONENT;if(i===cu)return n.DEPTH_STENCIL;if(i===cx)return n.RED;if(i===Bm)return n.RED_INTEGER;if(i===GM)return n.RG;if(i===ux)return n.RG_INTEGER;if(i===hx)return n.RGBA_INTEGER;if(i===gp||i===yp||i===vp||i===_p)if(o===En)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===gp)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===yp)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===vp)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===_p)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===gp)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===yp)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===vp)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===_p)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===D0||i===k0||i===O0||i===U0)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===D0)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===k0)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===O0)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===U0)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===F0||i===V0||i===B0)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(i===F0||i===V0)return o===En?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===B0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(i===z0||i===H0||i===G0||i===W0||i===j0||i===X0||i===q0||i===$0||i===Y0||i===K0||i===Q0||i===J0||i===Z0||i===e_)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(i===z0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===H0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===G0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===W0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===j0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===X0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===q0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===$0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===Y0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===K0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===Q0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===J0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===Z0)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===e_)return o===En?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===xp||i===t_||i===n_)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(i===xp)return o===En?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===t_)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===n_)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===WM||i===i_||i===r_||i===s_)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(i===xp)return s.COMPRESSED_RED_RGTC1_EXT;if(i===i_)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===r_)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===s_)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===lu?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}class sV extends Dn{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class Lh extends Zt{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Qee={type:"move"};class i1{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Lh,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Lh,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new G,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new G),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Lh,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new G,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new G),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const i of e.hand.values())this._getHandJoint(t,i)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let r=null,s=null,o=null;const a=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){o=!0;for(const S of e.hand.values()){const x=t.getJointPose(S,i),y=this._getHandJoint(c,S);x!==null&&(y.matrix.fromArray(x.transform.matrix),y.matrix.decompose(y.position,y.rotation,y.scale),y.matrixWorldNeedsUpdate=!0,y.jointRadius=x.radius),y.visible=x!==null}const d=c.joints["index-finger-tip"],f=c.joints["thumb-tip"],p=d.position.distanceTo(f.position),m=.02,_=.005;c.inputState.pinching&&p>m+_?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&p<=m-_&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,i),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));a!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(Qee)))}return a!==null&&(a.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const i=new Lh;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}const Jee=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,Zee=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class ete{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,i){if(this.texture===null){const r=new In,s=e.properties.get(r);s.__webglTexture=t.texture,(t.depthNear!=i.depthNear||t.depthFar!=i.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=r}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,i=new qs({vertexShader:Jee,fragmentShader:Zee,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new ni(new Ld(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class tte extends Ys{constructor(e,t){super();const i=this;let r=null,s=1,o=null,a="local-floor",l=1,c=null,d=null,f=null,p=null,m=null,_=null;const S=new ete,x=t.getContextAttributes();let y=null,E=null;const w=[],M=[],O=new Ee;let k=null;const I=new Dn;I.layers.enable(1),I.viewport=new sn;const P=new Dn;P.layers.enable(2),P.viewport=new sn;const D=[I,P],A=new sV;A.layers.enable(1),A.layers.enable(2);let R=null,V=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(he){let we=w[he];return we===void 0&&(we=new i1,w[he]=we),we.getTargetRaySpace()},this.getControllerGrip=function(he){let we=w[he];return we===void 0&&(we=new i1,w[he]=we),we.getGripSpace()},this.getHand=function(he){let we=w[he];return we===void 0&&(we=new i1,w[he]=we),we.getHandSpace()};function U(he){const we=M.indexOf(he.inputSource);if(we===-1)return;const Ne=w[we];Ne!==void 0&&(Ne.update(he.inputSource,he.frame,c||o),Ne.dispatchEvent({type:he.type,data:he.inputSource}))}function se(){r.removeEventListener("select",U),r.removeEventListener("selectstart",U),r.removeEventListener("selectend",U),r.removeEventListener("squeeze",U),r.removeEventListener("squeezestart",U),r.removeEventListener("squeezeend",U),r.removeEventListener("end",se),r.removeEventListener("inputsourceschange",le);for(let he=0;he=0&&(M[be]=null,w[be].disconnect(Ne))}for(let we=0;we=M.length){M.push(Ne),be=dt;break}else if(M[dt]===null){M[dt]=Ne,be=dt;break}if(be===-1)break}const ft=w[be];ft&&ft.connect(Ne)}}const ee=new G,pe=new G;function W(he,we,Ne){ee.setFromMatrixPosition(we.matrixWorld),pe.setFromMatrixPosition(Ne.matrixWorld);const be=ee.distanceTo(pe),ft=we.projectionMatrix.elements,dt=Ne.projectionMatrix.elements,Ke=ft[14]/(ft[10]-1),ke=ft[14]/(ft[10]+1),xe=(ft[9]+1)/ft[5],j=(ft[9]-1)/ft[5],Ve=(ft[8]-1)/ft[0],Oe=(dt[8]+1)/dt[0],Pe=Ke*Ve,Ue=Ke*Oe,lt=be/(-Ve+Oe),We=lt*-Ve;if(we.matrixWorld.decompose(he.position,he.quaternion,he.scale),he.translateX(We),he.translateZ(lt),he.matrixWorld.compose(he.position,he.quaternion,he.scale),he.matrixWorldInverse.copy(he.matrixWorld).invert(),ft[10]===-1)he.projectionMatrix.copy(we.projectionMatrix),he.projectionMatrixInverse.copy(we.projectionMatrixInverse);else{const X=Ke+lt,F=ke+lt,ae=Pe-We,_e=Ue+(be-We),Te=xe*ke/F*X,Se=j*ke/F*X;he.projectionMatrix.makePerspective(ae,_e,Te,Se,X,F),he.projectionMatrixInverse.copy(he.projectionMatrix).invert()}}function J(he,we){we===null?he.matrixWorld.copy(he.matrix):he.matrixWorld.multiplyMatrices(we.matrixWorld,he.matrix),he.matrixWorldInverse.copy(he.matrixWorld).invert()}this.updateCamera=function(he){if(r===null)return;let we=he.near,Ne=he.far;S.texture!==null&&(S.depthNear>0&&(we=S.depthNear),S.depthFar>0&&(Ne=S.depthFar)),A.near=P.near=I.near=we,A.far=P.far=I.far=Ne,(R!==A.near||V!==A.far)&&(r.updateRenderState({depthNear:A.near,depthFar:A.far}),R=A.near,V=A.far);const be=he.parent,ft=A.cameras;J(A,be);for(let dt=0;dt0&&(x.alphaTest.value=y.alphaTest);const E=e.get(y),w=E.envMap,M=E.envMapRotation;w&&(x.envMap.value=w,pc.copy(M),pc.x*=-1,pc.y*=-1,pc.z*=-1,w.isCubeTexture&&w.isRenderTargetTexture===!1&&(pc.y*=-1,pc.z*=-1),x.envMapRotation.value.setFromMatrix4(nte.makeRotationFromEuler(pc)),x.flipEnvMap.value=w.isCubeTexture&&w.isRenderTargetTexture===!1?-1:1,x.reflectivity.value=y.reflectivity,x.ior.value=y.ior,x.refractionRatio.value=y.refractionRatio),y.lightMap&&(x.lightMap.value=y.lightMap,x.lightMapIntensity.value=y.lightMapIntensity,t(y.lightMap,x.lightMapTransform)),y.aoMap&&(x.aoMap.value=y.aoMap,x.aoMapIntensity.value=y.aoMapIntensity,t(y.aoMap,x.aoMapTransform))}function o(x,y){x.diffuse.value.copy(y.color),x.opacity.value=y.opacity,y.map&&(x.map.value=y.map,t(y.map,x.mapTransform))}function a(x,y){x.dashSize.value=y.dashSize,x.totalSize.value=y.dashSize+y.gapSize,x.scale.value=y.scale}function l(x,y,E,w){x.diffuse.value.copy(y.color),x.opacity.value=y.opacity,x.size.value=y.size*E,x.scale.value=w*.5,y.map&&(x.map.value=y.map,t(y.map,x.uvTransform)),y.alphaMap&&(x.alphaMap.value=y.alphaMap,t(y.alphaMap,x.alphaMapTransform)),y.alphaTest>0&&(x.alphaTest.value=y.alphaTest)}function c(x,y){x.diffuse.value.copy(y.color),x.opacity.value=y.opacity,x.rotation.value=y.rotation,y.map&&(x.map.value=y.map,t(y.map,x.mapTransform)),y.alphaMap&&(x.alphaMap.value=y.alphaMap,t(y.alphaMap,x.alphaMapTransform)),y.alphaTest>0&&(x.alphaTest.value=y.alphaTest)}function d(x,y){x.specular.value.copy(y.specular),x.shininess.value=Math.max(y.shininess,1e-4)}function f(x,y){y.gradientMap&&(x.gradientMap.value=y.gradientMap)}function p(x,y){x.metalness.value=y.metalness,y.metalnessMap&&(x.metalnessMap.value=y.metalnessMap,t(y.metalnessMap,x.metalnessMapTransform)),x.roughness.value=y.roughness,y.roughnessMap&&(x.roughnessMap.value=y.roughnessMap,t(y.roughnessMap,x.roughnessMapTransform)),y.envMap&&(x.envMapIntensity.value=y.envMapIntensity)}function m(x,y,E){x.ior.value=y.ior,y.sheen>0&&(x.sheenColor.value.copy(y.sheenColor).multiplyScalar(y.sheen),x.sheenRoughness.value=y.sheenRoughness,y.sheenColorMap&&(x.sheenColorMap.value=y.sheenColorMap,t(y.sheenColorMap,x.sheenColorMapTransform)),y.sheenRoughnessMap&&(x.sheenRoughnessMap.value=y.sheenRoughnessMap,t(y.sheenRoughnessMap,x.sheenRoughnessMapTransform))),y.clearcoat>0&&(x.clearcoat.value=y.clearcoat,x.clearcoatRoughness.value=y.clearcoatRoughness,y.clearcoatMap&&(x.clearcoatMap.value=y.clearcoatMap,t(y.clearcoatMap,x.clearcoatMapTransform)),y.clearcoatRoughnessMap&&(x.clearcoatRoughnessMap.value=y.clearcoatRoughnessMap,t(y.clearcoatRoughnessMap,x.clearcoatRoughnessMapTransform)),y.clearcoatNormalMap&&(x.clearcoatNormalMap.value=y.clearcoatNormalMap,t(y.clearcoatNormalMap,x.clearcoatNormalMapTransform),x.clearcoatNormalScale.value.copy(y.clearcoatNormalScale),y.side===yr&&x.clearcoatNormalScale.value.negate())),y.dispersion>0&&(x.dispersion.value=y.dispersion),y.iridescence>0&&(x.iridescence.value=y.iridescence,x.iridescenceIOR.value=y.iridescenceIOR,x.iridescenceThicknessMinimum.value=y.iridescenceThicknessRange[0],x.iridescenceThicknessMaximum.value=y.iridescenceThicknessRange[1],y.iridescenceMap&&(x.iridescenceMap.value=y.iridescenceMap,t(y.iridescenceMap,x.iridescenceMapTransform)),y.iridescenceThicknessMap&&(x.iridescenceThicknessMap.value=y.iridescenceThicknessMap,t(y.iridescenceThicknessMap,x.iridescenceThicknessMapTransform))),y.transmission>0&&(x.transmission.value=y.transmission,x.transmissionSamplerMap.value=E.texture,x.transmissionSamplerSize.value.set(E.width,E.height),y.transmissionMap&&(x.transmissionMap.value=y.transmissionMap,t(y.transmissionMap,x.transmissionMapTransform)),x.thickness.value=y.thickness,y.thicknessMap&&(x.thicknessMap.value=y.thicknessMap,t(y.thicknessMap,x.thicknessMapTransform)),x.attenuationDistance.value=y.attenuationDistance,x.attenuationColor.value.copy(y.attenuationColor)),y.anisotropy>0&&(x.anisotropyVector.value.set(y.anisotropy*Math.cos(y.anisotropyRotation),y.anisotropy*Math.sin(y.anisotropyRotation)),y.anisotropyMap&&(x.anisotropyMap.value=y.anisotropyMap,t(y.anisotropyMap,x.anisotropyMapTransform))),x.specularIntensity.value=y.specularIntensity,x.specularColor.value.copy(y.specularColor),y.specularColorMap&&(x.specularColorMap.value=y.specularColorMap,t(y.specularColorMap,x.specularColorMapTransform)),y.specularIntensityMap&&(x.specularIntensityMap.value=y.specularIntensityMap,t(y.specularIntensityMap,x.specularIntensityMapTransform))}function _(x,y){y.matcap&&(x.matcap.value=y.matcap)}function S(x,y){const E=e.get(y).light;x.referencePosition.value.setFromMatrixPosition(E.matrixWorld),x.nearDistance.value=E.shadow.camera.near,x.farDistance.value=E.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function rte(n,e,t,i){let r={},s={},o=[];const a=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function l(E,w){const M=w.program;i.uniformBlockBinding(E,M)}function c(E,w){let M=r[E.id];M===void 0&&(_(E),M=d(E),r[E.id]=M,E.addEventListener("dispose",x));const O=w.program;i.updateUBOMapping(E,O);const k=e.render.frame;s[E.id]!==k&&(p(E),s[E.id]=k)}function d(E){const w=f();E.__bindingPointIndex=w;const M=n.createBuffer(),O=E.__size,k=E.usage;return n.bindBuffer(n.UNIFORM_BUFFER,M),n.bufferData(n.UNIFORM_BUFFER,O,k),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,w,M),M}function f(){for(let E=0;E0&&(M+=O-k),E.__size=M,E.__cache={},this}function S(E){const w={boundary:0,storage:0};return typeof E=="number"||typeof E=="boolean"?(w.boundary=4,w.storage=4):E.isVector2?(w.boundary=8,w.storage=8):E.isVector3||E.isColor?(w.boundary=16,w.storage=12):E.isVector4?(w.boundary=16,w.storage=16):E.isMatrix3?(w.boundary=48,w.storage=48):E.isMatrix4?(w.boundary=64,w.storage=64):E.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",E),w}function x(E){const w=E.target;w.removeEventListener("dispose",x);const M=o.indexOf(w.__bindingPointIndex);o.splice(M,1),n.deleteBuffer(r[w.id]),delete r[w.id],delete s[w.id]}function y(){for(const E in r)n.deleteBuffer(r[E]);o=[],r={},s={}}return{bind:l,update:c,dispose:y}}class oV{constructor(e={}){const{canvas:t=qF(),context:i=null,depth:r=!0,stencil:s=!1,alpha:o=!1,antialias:a=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:d="default",failIfMajorPerformanceCaveat:f=!1}=e;this.isWebGLRenderer=!0;let p;if(i!==null){if(typeof WebGLRenderingContext<"u"&&i instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");p=i.getContextAttributes().alpha}else p=o;const m=new Uint32Array(4),_=new Int32Array(4);let S=null,x=null;const y=[],E=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=_s,this.toneMapping=vo,this.toneMappingExposure=1;const w=this;let M=!1,O=0,k=0,I=null,P=-1,D=null;const A=new sn,R=new sn;let V=null;const U=new rt(0);let se=0,le=t.width,ee=t.height,pe=1,W=null,J=null;const Z=new sn(0,0,le,ee),oe=new sn(0,0,le,ee);let Me=!1;const Re=new Wm;let he=!1,we=!1;const Ne=new St,be=new St,ft=new G,dt=new sn,Ke={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let ke=!1;function xe(){return I===null?pe:1}let j=i;function Ve(H,te){return t.getContext(H,te)}try{const H={alpha:!0,depth:r,stencil:s,antialias:a,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:d,failIfMajorPerformanceCaveat:f};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${ix}`),t.addEventListener("webglcontextlost",Ae,!1),t.addEventListener("webglcontextrestored",Xe,!1),t.addEventListener("webglcontextcreationerror",$e,!1),j===null){const te="webgl2";if(j=Ve(te,H),j===null)throw Ve(te)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(H){throw console.error("THREE.WebGLRenderer: "+H.message),H}let Oe,Pe,Ue,lt,We,X,F,ae,_e,Te,Se,nt,Ce,Ge,Lt,Le,Ze,Et,vt,et,K,ve,je,Y;function Fe(){Oe=new uZ(j),Oe.init(),ve=new rV(j,Oe),Pe=new rZ(j,Oe,e,ve),Ue=new Wee(j),Pe.reverseDepthBuffer&&Ue.buffers.depth.setReversed(!0),lt=new fZ(j),We=new Iee,X=new Kee(j,Oe,Ue,We,Pe,ve,lt),F=new oZ(w),ae=new cZ(w),_e=new xK(j),je=new nZ(j,_e),Te=new hZ(j,_e,lt,je),Se=new mZ(j,Te,_e,lt),vt=new pZ(j,Pe,X),Le=new sZ(We),nt=new Ree(w,F,ae,Oe,Pe,je,Le),Ce=new ite(w,We),Ge=new Nee,Lt=new Vee(Oe),Et=new tZ(w,F,ae,Ue,Se,p,l),Ze=new Hee(w,Se,Pe),Y=new rte(j,lt,Pe,Ue),et=new iZ(j,Oe,lt),K=new dZ(j,Oe,lt),lt.programs=nt.programs,w.capabilities=Pe,w.extensions=Oe,w.properties=We,w.renderLists=Ge,w.shadowMap=Ze,w.state=Ue,w.info=lt}Fe();const me=new tte(w,j);this.xr=me,this.getContext=function(){return j},this.getContextAttributes=function(){return j.getContextAttributes()},this.forceContextLoss=function(){const H=Oe.get("WEBGL_lose_context");H&&H.loseContext()},this.forceContextRestore=function(){const H=Oe.get("WEBGL_lose_context");H&&H.restoreContext()},this.getPixelRatio=function(){return pe},this.setPixelRatio=function(H){H!==void 0&&(pe=H,this.setSize(le,ee,!1))},this.getSize=function(H){return H.set(le,ee)},this.setSize=function(H,te,ce=!0){if(me.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}le=H,ee=te,t.width=Math.floor(H*pe),t.height=Math.floor(te*pe),ce===!0&&(t.style.width=H+"px",t.style.height=te+"px"),this.setViewport(0,0,H,te)},this.getDrawingBufferSize=function(H){return H.set(le*pe,ee*pe).floor()},this.setDrawingBufferSize=function(H,te,ce){le=H,ee=te,pe=ce,t.width=Math.floor(H*ce),t.height=Math.floor(te*ce),this.setViewport(0,0,H,te)},this.getCurrentViewport=function(H){return H.copy(A)},this.getViewport=function(H){return H.copy(Z)},this.setViewport=function(H,te,ce,de){H.isVector4?Z.set(H.x,H.y,H.z,H.w):Z.set(H,te,ce,de),Ue.viewport(A.copy(Z).multiplyScalar(pe).round())},this.getScissor=function(H){return H.copy(oe)},this.setScissor=function(H,te,ce,de){H.isVector4?oe.set(H.x,H.y,H.z,H.w):oe.set(H,te,ce,de),Ue.scissor(R.copy(oe).multiplyScalar(pe).round())},this.getScissorTest=function(){return Me},this.setScissorTest=function(H){Ue.setScissorTest(Me=H)},this.setOpaqueSort=function(H){W=H},this.setTransparentSort=function(H){J=H},this.getClearColor=function(H){return H.copy(Et.getClearColor())},this.setClearColor=function(){Et.setClearColor.apply(Et,arguments)},this.getClearAlpha=function(){return Et.getClearAlpha()},this.setClearAlpha=function(){Et.setClearAlpha.apply(Et,arguments)},this.clear=function(H=!0,te=!0,ce=!0){let de=0;if(H){let ie=!1;if(I!==null){const Be=I.texture.format;ie=Be===hx||Be===ux||Be===Bm}if(ie){const Be=I.texture.type,Qe=Be===js||Be===pa||Be===dd||Be===lu||Be===ax||Be===lx,st=Et.getClearColor(),it=Et.getClearAlpha(),_t=st.r,xt=st.g,ut=st.b;Qe?(m[0]=_t,m[1]=xt,m[2]=ut,m[3]=it,j.clearBufferuiv(j.COLOR,0,m)):(_[0]=_t,_[1]=xt,_[2]=ut,_[3]=it,j.clearBufferiv(j.COLOR,0,_))}else de|=j.COLOR_BUFFER_BIT}te&&(de|=j.DEPTH_BUFFER_BIT,j.clearDepth(this.capabilities.reverseDepthBuffer?0:1)),ce&&(de|=j.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),j.clear(de)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",Ae,!1),t.removeEventListener("webglcontextrestored",Xe,!1),t.removeEventListener("webglcontextcreationerror",$e,!1),Ge.dispose(),Lt.dispose(),We.dispose(),F.dispose(),ae.dispose(),Se.dispose(),je.dispose(),Y.dispose(),nt.dispose(),me.dispose(),me.removeEventListener("sessionstart",Gl),me.removeEventListener("sessionend",si),rs.stop()};function Ae(H){H.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),M=!0}function Xe(){console.log("THREE.WebGLRenderer: Context Restored."),M=!1;const H=lt.autoReset,te=Ze.enabled,ce=Ze.autoUpdate,de=Ze.needsUpdate,ie=Ze.type;Fe(),lt.autoReset=H,Ze.enabled=te,Ze.autoUpdate=ce,Ze.needsUpdate=de,Ze.type=ie}function $e(H){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",H.statusMessage)}function At(H){const te=H.target;te.removeEventListener("dispose",At),Bt(te)}function Bt(H){Cn(H),We.remove(H)}function Cn(H){const te=We.get(H).programs;te!==void 0&&(te.forEach(function(ce){nt.releaseProgram(ce)}),H.isShaderMaterial&&nt.releaseShaderCache(H))}this.renderBufferDirect=function(H,te,ce,de,ie,Be){te===null&&(te=Ke);const Qe=ie.isMesh&&ie.matrixWorld.determinant()<0,st=Au(H,te,ce,de,ie);Ue.setMaterial(de,Qe);let it=ce.index,_t=1;if(de.wireframe===!0){if(it=Te.getWireframeAttribute(ce),it===void 0)return;_t=2}const xt=ce.drawRange,ut=ce.attributes.position;let zt=xt.start*_t,Yt=(xt.start+xt.count)*_t;Be!==null&&(zt=Math.max(zt,Be.start*_t),Yt=Math.min(Yt,(Be.start+Be.count)*_t)),it!==null?(zt=Math.max(zt,0),Yt=Math.min(Yt,it.count)):ut!=null&&(zt=Math.max(zt,0),Yt=Math.min(Yt,ut.count));const tn=Yt-zt;if(tn<0||tn===1/0)return;je.setup(ie,de,st,ce,it);let Ot,mt=et;if(it!==null&&(Ot=_e.get(it),mt=K,mt.setIndex(Ot)),ie.isMesh)de.wireframe===!0?(Ue.setLineWidth(de.wireframeLinewidth*xe()),mt.setMode(j.LINES)):mt.setMode(j.TRIANGLES);else if(ie.isLine){let ot=de.linewidth;ot===void 0&&(ot=1),Ue.setLineWidth(ot*xe()),ie.isLineSegments?mt.setMode(j.LINES):ie.isLineLoop?mt.setMode(j.LINE_LOOP):mt.setMode(j.LINE_STRIP)}else ie.isPoints?mt.setMode(j.POINTS):ie.isSprite&&mt.setMode(j.TRIANGLES);if(ie.isBatchedMesh)if(ie._multiDrawInstances!==null)mt.renderMultiDrawInstances(ie._multiDrawStarts,ie._multiDrawCounts,ie._multiDrawCount,ie._multiDrawInstances);else if(Oe.get("WEBGL_multi_draw"))mt.renderMultiDraw(ie._multiDrawStarts,ie._multiDrawCounts,ie._multiDrawCount);else{const ot=ie._multiDrawStarts,qt=ie._multiDrawCounts,Mt=ie._multiDrawCount,Gn=it?_e.get(it).bytesPerElement:1,Ui=We.get(de).currentProgram.getUniforms();for(let dn=0;dn{function Be(){if(de.forEach(function(Qe){We.get(Qe).currentProgram.isReady()&&de.delete(Qe)}),de.size===0){ie(H);return}setTimeout(Be,10)}Oe.get("KHR_parallel_shader_compile")!==null?Be():setTimeout(Be,10)})};let Sn=null;function kn(H){Sn&&Sn(H)}function Gl(){rs.stop()}function si(){rs.start()}const rs=new ZF;rs.setAnimationLoop(kn),typeof self<"u"&&rs.setContext(self),this.setAnimationLoop=function(H){Sn=H,me.setAnimationLoop(H),H===null?rs.stop():rs.start()},me.addEventListener("sessionstart",Gl),me.addEventListener("sessionend",si),this.render=function(H,te){if(te!==void 0&&te.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(M===!0)return;if(H.matrixWorldAutoUpdate===!0&&H.updateMatrixWorld(),te.parent===null&&te.matrixWorldAutoUpdate===!0&&te.updateMatrixWorld(),me.enabled===!0&&me.isPresenting===!0&&(me.cameraAutoUpdate===!0&&me.updateCamera(te),te=me.getCamera()),H.isScene===!0&&H.onBeforeRender(w,H,te,I),x=Lt.get(H,E.length),x.init(te),E.push(x),be.multiplyMatrices(te.projectionMatrix,te.matrixWorldInverse),Re.setFromProjectionMatrix(be),we=this.localClippingEnabled,he=Le.init(this.clippingPlanes,we),S=Ge.get(H,y.length),S.init(),y.push(S),me.enabled===!0&&me.isPresenting===!0){const Be=w.xr.getDepthSensingMesh();Be!==null&&ss(Be,te,-1/0,w.sortObjects)}ss(H,te,0,w.sortObjects),S.finish(),w.sortObjects===!0&&S.sort(W,J),ke=me.enabled===!1||me.isPresenting===!1||me.hasDepthSensing()===!1,ke&&Et.addToRenderList(S,H),this.info.render.frame++,he===!0&&Le.beginShadows();const ce=x.state.shadowsArray;Ze.render(ce,H,te),he===!0&&Le.endShadows(),this.info.autoReset===!0&&this.info.reset();const de=S.opaque,ie=S.transmissive;if(x.setupLights(),te.isArrayCamera){const Be=te.cameras;if(ie.length>0)for(let Qe=0,st=Be.length;Qe0&&Eu(de,ie,H,te),ke&&Et.render(H),os(S,H,te);I!==null&&(X.updateMultisampleRenderTarget(I),X.updateRenderTargetMipmap(I)),H.isScene===!0&&H.onAfterRender(w,H,te),je.resetDefaultState(),P=-1,D=null,E.pop(),E.length>0?(x=E[E.length-1],he===!0&&Le.setGlobalState(w.clippingPlanes,x.state.camera)):x=null,y.pop(),y.length>0?S=y[y.length-1]:S=null};function ss(H,te,ce,de){if(H.visible===!1)return;if(H.layers.test(te.layers)){if(H.isGroup)ce=H.renderOrder;else if(H.isLOD)H.autoUpdate===!0&&H.update(te);else if(H.isLight)x.pushLight(H),H.castShadow&&x.pushShadow(H);else if(H.isSprite){if(!H.frustumCulled||Re.intersectsSprite(H)){de&&dt.setFromMatrixPosition(H.matrixWorld).applyMatrix4(be);const Qe=Se.update(H),st=H.material;st.visible&&S.push(H,Qe,st,ce,dt.z,null)}}else if((H.isMesh||H.isLine||H.isPoints)&&(!H.frustumCulled||Re.intersectsObject(H))){const Qe=Se.update(H),st=H.material;if(de&&(H.boundingSphere!==void 0?(H.boundingSphere===null&&H.computeBoundingSphere(),dt.copy(H.boundingSphere.center)):(Qe.boundingSphere===null&&Qe.computeBoundingSphere(),dt.copy(Qe.boundingSphere.center)),dt.applyMatrix4(H.matrixWorld).applyMatrix4(be)),Array.isArray(st)){const it=Qe.groups;for(let _t=0,xt=it.length;_t0&&as(ie,te,ce),Be.length>0&&as(Be,te,ce),Qe.length>0&&as(Qe,te,ce),Ue.buffers.depth.setTest(!0),Ue.buffers.depth.setMask(!0),Ue.buffers.color.setMask(!0),Ue.setPolygonOffset(!1)}function Eu(H,te,ce,de){if((ce.isScene===!0?ce.overrideMaterial:null)!==null)return;x.state.transmissionRenderTarget[de.id]===void 0&&(x.state.transmissionRenderTarget[de.id]=new Xs(1,1,{generateMipmaps:!0,type:Oe.has("EXT_color_buffer_half_float")||Oe.has("EXT_color_buffer_float")?Id:js,minFilter:ho,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:cn.workingColorSpace}));const Be=x.state.transmissionRenderTarget[de.id],Qe=de.viewport||A;Be.setSize(Qe.z,Qe.w);const st=w.getRenderTarget();w.setRenderTarget(Be),w.getClearColor(U),se=w.getClearAlpha(),se<1&&w.setClearColor(16777215,.5),w.clear(),ke&&Et.render(ce);const it=w.toneMapping;w.toneMapping=vo;const _t=de.viewport;if(de.viewport!==void 0&&(de.viewport=void 0),x.setupLightsView(de),he===!0&&Le.setGlobalState(w.clippingPlanes,de),as(H,ce,de),X.updateMultisampleRenderTarget(Be),X.updateRenderTargetMipmap(Be),Oe.has("WEBGL_multisampled_render_to_texture")===!1){let xt=!1;for(let ut=0,zt=te.length;ut0),ut=!!ce.morphAttributes.position,zt=!!ce.morphAttributes.normal,Yt=!!ce.morphAttributes.color;let tn=vo;de.toneMapped&&(I===null||I.isXRRenderTarget===!0)&&(tn=w.toneMapping);const Ot=ce.morphAttributes.position||ce.morphAttributes.normal||ce.morphAttributes.color,mt=Ot!==void 0?Ot.length:0,ot=We.get(de),qt=x.state.lights;if(he===!0&&(we===!0||H!==D)){const On=H===D&&de.id===P;Le.setState(de,H,On)}let Mt=!1;de.version===ot.__version?(ot.needsLights&&ot.lightsStateVersion!==qt.state.version||ot.outputColorSpace!==st||ie.isBatchedMesh&&ot.batching===!1||!ie.isBatchedMesh&&ot.batching===!0||ie.isBatchedMesh&&ot.batchingColor===!0&&ie.colorTexture===null||ie.isBatchedMesh&&ot.batchingColor===!1&&ie.colorTexture!==null||ie.isInstancedMesh&&ot.instancing===!1||!ie.isInstancedMesh&&ot.instancing===!0||ie.isSkinnedMesh&&ot.skinning===!1||!ie.isSkinnedMesh&&ot.skinning===!0||ie.isInstancedMesh&&ot.instancingColor===!0&&ie.instanceColor===null||ie.isInstancedMesh&&ot.instancingColor===!1&&ie.instanceColor!==null||ie.isInstancedMesh&&ot.instancingMorph===!0&&ie.morphTexture===null||ie.isInstancedMesh&&ot.instancingMorph===!1&&ie.morphTexture!==null||ot.envMap!==it||de.fog===!0&&ot.fog!==Be||ot.numClippingPlanes!==void 0&&(ot.numClippingPlanes!==Le.numPlanes||ot.numIntersection!==Le.numIntersection)||ot.vertexAlphas!==_t||ot.vertexTangents!==xt||ot.morphTargets!==ut||ot.morphNormals!==zt||ot.morphColors!==Yt||ot.toneMapping!==tn||ot.morphTargetsCount!==mt)&&(Mt=!0):(Mt=!0,ot.__version=de.version);let Gn=ot.currentProgram;Mt===!0&&(Gn=Sa(de,te,ie));let Ui=!1,dn=!1,Js=!1;const _n=Gn.getUniforms(),Er=ot.uniforms;if(Ue.useProgram(Gn.program)&&(Ui=!0,dn=!0,Js=!0),de.id!==P&&(P=de.id,dn=!0),Ui||D!==H){Pe.reverseDepthBuffer?(Ne.copy(H.projectionMatrix),WY(Ne),jY(Ne),_n.setValue(j,"projectionMatrix",Ne)):_n.setValue(j,"projectionMatrix",H.projectionMatrix),_n.setValue(j,"viewMatrix",H.matrixWorldInverse);const On=_n.map.cameraPosition;On!==void 0&&On.setValue(j,ft.setFromMatrixPosition(H.matrixWorld)),Pe.logarithmicDepthBuffer&&_n.setValue(j,"logDepthBufFC",2/(Math.log(H.far+1)/Math.LN2)),(de.isMeshPhongMaterial||de.isMeshToonMaterial||de.isMeshLambertMaterial||de.isMeshBasicMaterial||de.isMeshStandardMaterial||de.isShaderMaterial)&&_n.setValue(j,"isOrthographic",H.isOrthographicCamera===!0),D!==H&&(D=H,dn=!0,Js=!0)}if(ie.isSkinnedMesh){_n.setOptional(j,ie,"bindMatrix"),_n.setOptional(j,ie,"bindMatrixInverse");const On=ie.skeleton;On&&(On.boneTexture===null&&On.computeBoneTexture(),_n.setValue(j,"boneTexture",On.boneTexture,X))}ie.isBatchedMesh&&(_n.setOptional(j,ie,"batchingTexture"),_n.setValue(j,"batchingTexture",ie._matricesTexture,X),_n.setOptional(j,ie,"batchingIdTexture"),_n.setValue(j,"batchingIdTexture",ie._indirectTexture,X),_n.setOptional(j,ie,"batchingColorTexture"),ie._colorsTexture!==null&&_n.setValue(j,"batchingColorTexture",ie._colorsTexture,X));const Zs=ce.morphAttributes;if((Zs.position!==void 0||Zs.normal!==void 0||Zs.color!==void 0)&&vt.update(ie,ce,Gn),(dn||ot.receiveShadow!==ie.receiveShadow)&&(ot.receiveShadow=ie.receiveShadow,_n.setValue(j,"receiveShadow",ie.receiveShadow)),de.isMeshGouraudMaterial&&de.envMap!==null&&(Er.envMap.value=it,Er.flipEnvMap.value=it.isCubeTexture&&it.isRenderTargetTexture===!1?-1:1),de.isMeshStandardMaterial&&de.envMap===null&&te.environment!==null&&(Er.envMapIntensity.value=te.environmentIntensity),dn&&(_n.setValue(j,"toneMappingExposure",w.toneMappingExposure),ot.needsLights&&Wl(Er,Js),Be&&de.fog===!0&&Ce.refreshFogUniforms(Er,Be),Ce.refreshMaterialUniforms(Er,de,pe,ee,x.state.transmissionRenderTarget[H.id]),Pv.upload(j,Tu(ot),Er,X)),de.isShaderMaterial&&de.uniformsNeedUpdate===!0&&(Pv.upload(j,Tu(ot),Er,X),de.uniformsNeedUpdate=!1),de.isSpriteMaterial&&_n.setValue(j,"center",ie.center),_n.setValue(j,"modelViewMatrix",ie.modelViewMatrix),_n.setValue(j,"normalMatrix",ie.normalMatrix),_n.setValue(j,"modelMatrix",ie.matrixWorld),de.isShaderMaterial||de.isRawShaderMaterial){const On=de.uniformsGroups;for(let bn=0,Ea=On.length;bn0&&X.useMultisampledRTT(H)===!1?ie=We.get(H).__webglMultisampledFramebuffer:Array.isArray(xt)?ie=xt[ce]:ie=xt,A.copy(H.viewport),R.copy(H.scissor),V=H.scissorTest}else A.copy(Z).multiplyScalar(pe).floor(),R.copy(oe).multiplyScalar(pe).floor(),V=Me;if(Ue.bindFramebuffer(j.FRAMEBUFFER,ie)&&de&&Ue.drawBuffers(H,ie),Ue.viewport(A),Ue.scissor(R),Ue.setScissorTest(V),Be){const it=We.get(H.texture);j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,j.TEXTURE_CUBE_MAP_POSITIVE_X+te,it.__webglTexture,ce)}else if(Qe){const it=We.get(H.texture),_t=te||0;j.framebufferTextureLayer(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,it.__webglTexture,ce||0,_t)}P=-1},this.readRenderTargetPixels=function(H,te,ce,de,ie,Be,Qe){if(!(H&&H.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let st=We.get(H).__webglFramebuffer;if(H.isWebGLCubeRenderTarget&&Qe!==void 0&&(st=st[Qe]),st){Ue.bindFramebuffer(j.FRAMEBUFFER,st);try{const it=H.texture,_t=it.format,xt=it.type;if(!Pe.textureFormatReadable(_t)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Pe.textureTypeReadable(xt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}te>=0&&te<=H.width-de&&ce>=0&&ce<=H.height-ie&&j.readPixels(te,ce,de,ie,ve.convert(_t),ve.convert(xt),Be)}finally{const it=I!==null?We.get(I).__webglFramebuffer:null;Ue.bindFramebuffer(j.FRAMEBUFFER,it)}}},this.readRenderTargetPixelsAsync=async function(H,te,ce,de,ie,Be,Qe){if(!(H&&H.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let st=We.get(H).__webglFramebuffer;if(H.isWebGLCubeRenderTarget&&Qe!==void 0&&(st=st[Qe]),st){const it=H.texture,_t=it.format,xt=it.type;if(!Pe.textureFormatReadable(_t))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Pe.textureTypeReadable(xt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(te>=0&&te<=H.width-de&&ce>=0&&ce<=H.height-ie){Ue.bindFramebuffer(j.FRAMEBUFFER,st);const ut=j.createBuffer();j.bindBuffer(j.PIXEL_PACK_BUFFER,ut),j.bufferData(j.PIXEL_PACK_BUFFER,Be.byteLength,j.STREAM_READ),j.readPixels(te,ce,de,ie,ve.convert(_t),ve.convert(xt),0);const zt=I!==null?We.get(I).__webglFramebuffer:null;Ue.bindFramebuffer(j.FRAMEBUFFER,zt);const Yt=j.fenceSync(j.SYNC_GPU_COMMANDS_COMPLETE,0);return j.flush(),await GY(j,Yt,4),j.bindBuffer(j.PIXEL_PACK_BUFFER,ut),j.getBufferSubData(j.PIXEL_PACK_BUFFER,0,Be),j.deleteBuffer(ut),j.deleteSync(Yt),Be}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(H,te=null,ce=0){H.isTexture!==!0&&(bv("WebGLRenderer: copyFramebufferToTexture function signature has changed."),te=arguments[0]||null,H=arguments[1]);const de=Math.pow(2,-ce),ie=Math.floor(H.image.width*de),Be=Math.floor(H.image.height*de),Qe=te!==null?te.x:0,st=te!==null?te.y:0;X.setTexture2D(H,0),j.copyTexSubImage2D(j.TEXTURE_2D,ce,0,0,Qe,st,ie,Be),Ue.unbindTexture()},this.copyTextureToTexture=function(H,te,ce=null,de=null,ie=0){H.isTexture!==!0&&(bv("WebGLRenderer: copyTextureToTexture function signature has changed."),de=arguments[0]||null,H=arguments[1],te=arguments[2],ie=arguments[3]||0,ce=null);let Be,Qe,st,it,_t,xt;ce!==null?(Be=ce.max.x-ce.min.x,Qe=ce.max.y-ce.min.y,st=ce.min.x,it=ce.min.y):(Be=H.image.width,Qe=H.image.height,st=0,it=0),de!==null?(_t=de.x,xt=de.y):(_t=0,xt=0);const ut=ve.convert(te.format),zt=ve.convert(te.type);X.setTexture2D(te,0),j.pixelStorei(j.UNPACK_FLIP_Y_WEBGL,te.flipY),j.pixelStorei(j.UNPACK_PREMULTIPLY_ALPHA_WEBGL,te.premultiplyAlpha),j.pixelStorei(j.UNPACK_ALIGNMENT,te.unpackAlignment);const Yt=j.getParameter(j.UNPACK_ROW_LENGTH),tn=j.getParameter(j.UNPACK_IMAGE_HEIGHT),Ot=j.getParameter(j.UNPACK_SKIP_PIXELS),mt=j.getParameter(j.UNPACK_SKIP_ROWS),ot=j.getParameter(j.UNPACK_SKIP_IMAGES),qt=H.isCompressedTexture?H.mipmaps[ie]:H.image;j.pixelStorei(j.UNPACK_ROW_LENGTH,qt.width),j.pixelStorei(j.UNPACK_IMAGE_HEIGHT,qt.height),j.pixelStorei(j.UNPACK_SKIP_PIXELS,st),j.pixelStorei(j.UNPACK_SKIP_ROWS,it),H.isDataTexture?j.texSubImage2D(j.TEXTURE_2D,ie,_t,xt,Be,Qe,ut,zt,qt.data):H.isCompressedTexture?j.compressedTexSubImage2D(j.TEXTURE_2D,ie,_t,xt,qt.width,qt.height,ut,qt.data):j.texSubImage2D(j.TEXTURE_2D,ie,_t,xt,Be,Qe,ut,zt,qt),j.pixelStorei(j.UNPACK_ROW_LENGTH,Yt),j.pixelStorei(j.UNPACK_IMAGE_HEIGHT,tn),j.pixelStorei(j.UNPACK_SKIP_PIXELS,Ot),j.pixelStorei(j.UNPACK_SKIP_ROWS,mt),j.pixelStorei(j.UNPACK_SKIP_IMAGES,ot),ie===0&&te.generateMipmaps&&j.generateMipmap(j.TEXTURE_2D),Ue.unbindTexture()},this.copyTextureToTexture3D=function(H,te,ce=null,de=null,ie=0){H.isTexture!==!0&&(bv("WebGLRenderer: copyTextureToTexture3D function signature has changed."),ce=arguments[0]||null,de=arguments[1]||null,H=arguments[2],te=arguments[3],ie=arguments[4]||0);let Be,Qe,st,it,_t,xt,ut,zt,Yt;const tn=H.isCompressedTexture?H.mipmaps[ie]:H.image;ce!==null?(Be=ce.max.x-ce.min.x,Qe=ce.max.y-ce.min.y,st=ce.max.z-ce.min.z,it=ce.min.x,_t=ce.min.y,xt=ce.min.z):(Be=tn.width,Qe=tn.height,st=tn.depth,it=0,_t=0,xt=0),de!==null?(ut=de.x,zt=de.y,Yt=de.z):(ut=0,zt=0,Yt=0);const Ot=ve.convert(te.format),mt=ve.convert(te.type);let ot;if(te.isData3DTexture)X.setTexture3D(te,0),ot=j.TEXTURE_3D;else if(te.isDataArrayTexture||te.isCompressedArrayTexture)X.setTexture2DArray(te,0),ot=j.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}j.pixelStorei(j.UNPACK_FLIP_Y_WEBGL,te.flipY),j.pixelStorei(j.UNPACK_PREMULTIPLY_ALPHA_WEBGL,te.premultiplyAlpha),j.pixelStorei(j.UNPACK_ALIGNMENT,te.unpackAlignment);const qt=j.getParameter(j.UNPACK_ROW_LENGTH),Mt=j.getParameter(j.UNPACK_IMAGE_HEIGHT),Gn=j.getParameter(j.UNPACK_SKIP_PIXELS),Ui=j.getParameter(j.UNPACK_SKIP_ROWS),dn=j.getParameter(j.UNPACK_SKIP_IMAGES);j.pixelStorei(j.UNPACK_ROW_LENGTH,tn.width),j.pixelStorei(j.UNPACK_IMAGE_HEIGHT,tn.height),j.pixelStorei(j.UNPACK_SKIP_PIXELS,it),j.pixelStorei(j.UNPACK_SKIP_ROWS,_t),j.pixelStorei(j.UNPACK_SKIP_IMAGES,xt),H.isDataTexture||H.isData3DTexture?j.texSubImage3D(ot,ie,ut,zt,Yt,Be,Qe,st,Ot,mt,tn.data):te.isCompressedArrayTexture?j.compressedTexSubImage3D(ot,ie,ut,zt,Yt,Be,Qe,st,Ot,tn.data):j.texSubImage3D(ot,ie,ut,zt,Yt,Be,Qe,st,Ot,mt,tn),j.pixelStorei(j.UNPACK_ROW_LENGTH,qt),j.pixelStorei(j.UNPACK_IMAGE_HEIGHT,Mt),j.pixelStorei(j.UNPACK_SKIP_PIXELS,Gn),j.pixelStorei(j.UNPACK_SKIP_ROWS,Ui),j.pixelStorei(j.UNPACK_SKIP_IMAGES,dn),ie===0&&te.generateMipmaps&&j.generateMipmap(ot),Ue.unbindTexture()},this.initRenderTarget=function(H){We.get(H).__webglFramebuffer===void 0&&X.setupRenderTarget(H)},this.initTexture=function(H){H.isCubeTexture?X.setTextureCube(H,0):H.isData3DTexture?X.setTexture3D(H,0):H.isDataArrayTexture||H.isCompressedArrayTexture?X.setTexture2DArray(H,0):X.setTexture2D(H,0),Ue.unbindTexture()},this.resetState=function(){O=0,k=0,I=null,Ue.reset(),je.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return fo}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=e===fx?"display-p3":"srgb",t.unpackColorSpace=cn.workingColorSpace===zm?"display-p3":"srgb"}}class gx{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new rt(e),this.density=t}clone(){return new gx(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class yx{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new rt(e),this.near=t,this.far=i}clone(){return new yx(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class a_ extends Zt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new _r,this.environmentIntensity=1,this.environmentRotation=new _r,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class vx{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=am,this.updateRanges=[],this.version=0,this.uuid=Zr()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let r=0,s=this.stride;re.far||t.push({distance:l,point:bf.clone(),uv:Nr.getInterpolation(bf,Dy,Rf,ky,cL,r1,uL,new Ee),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function Oy(n,e,t,i,r,s){sh.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(Pf.x=s*sh.x-r*sh.y,Pf.y=r*sh.x+s*sh.y):Pf.copy(sh),n.copy(e),n.x+=Pf.x,n.y+=Pf.y,n.applyMatrix4(aV)}const Uy=new G,hL=new G;class cV extends Zt{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let i=0,r=t.length;i0){let i,r;for(i=1,r=t.length;i0){Uy.setFromMatrixPosition(this.matrixWorld);const r=e.ray.origin.distanceTo(Uy);this.getObjectForDistance(r).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){Uy.setFromMatrixPosition(e.matrixWorld),hL.setFromMatrixPosition(this.matrixWorld);const i=Uy.distanceTo(hL)/e.zoom;t[0].object.visible=!0;let r,s;for(r=1,s=t.length;r=o)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r=r.length&&r.push({start:-1,count:-1,z:-1,index:-1});const o=r[this.index];s.push(o),this.index++,o.start=e.start,o.count=e.count,o.z=t,o.index=i}reset(){this.list.length=0,this.index=0}}const Ga=new St,a1=new St,hte=new St,dte=new rt(1,1,1),xL=new St,l1=new Wm,By=new vr,mc=new ir,Nf=new G,SL=new G,fte=new G,c1=new ute,Yi=new ni,zy=[];function pte(n,e,t=0){const i=e.itemSize;if(n.isInterleavedBufferAttribute||n.array.constructor!==e.array.constructor){const r=n.count;for(let s=0;s65535?new Uint32Array(r):new Uint16Array(r);t.setIndex(new vn(s,1))}this._geometryInitialized=!0}}_validateGeometry(e){const t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw new Error('BatchedMesh: All geometries must consistently have "index".');for(const i in t.attributes){if(!e.hasAttribute(i))throw new Error(`BatchedMesh: Added geometry missing "${i}". All geometries must have consistent attributes.`);const r=e.getAttribute(i),s=t.getAttribute(i);if(r.itemSize!==s.itemSize||r.normalized!==s.normalized)throw new Error("BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new vr);const e=this.boundingBox,t=this._drawInfo;e.makeEmpty();for(let i=0,r=t.length;i=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("BatchedMesh: Maximum item count reached.");const i={visible:!0,active:!0,geometryIndex:e};let r=null;this._availableInstanceIds.length>0?(r=this._availableInstanceIds.pop(),this._drawInfo[r]=i):(r=this._drawInfo.length,this._drawInfo.push(i));const s=this._matricesTexture,o=s.image.data;hte.toArray(o,r*16),s.needsUpdate=!0;const a=this._colorsTexture;return a&&(dte.toArray(a.image.data,r*4),a.needsUpdate=!0),r}addGeometry(e,t=-1,i=-1){if(this._initializeGeometry(e),this._validateGeometry(e),this._drawInfo.length>=this._maxInstanceCount)throw new Error("BatchedMesh: Maximum item count reached.");const r={vertexStart:-1,vertexCount:-1,indexStart:-1,indexCount:-1};let s=null;const o=this._reservedRanges,a=this._drawRanges,l=this._bounds;this._geometryCount!==0&&(s=o[o.length-1]),t===-1?r.vertexCount=e.getAttribute("position").count:r.vertexCount=t,s===null?r.vertexStart=0:r.vertexStart=s.vertexStart+s.vertexCount;const c=e.getIndex(),d=c!==null;if(d&&(i===-1?r.indexCount=c.count:r.indexCount=i,s===null?r.indexStart=0:r.indexStart=s.indexStart+s.indexCount),r.indexStart!==-1&&r.indexStart+r.indexCount>this._maxIndexCount||r.vertexStart+r.vertexCount>this._maxVertexCount)throw new Error("BatchedMesh: Reserved space request exceeds the maximum buffer size.");const f=this._geometryCount;return this._geometryCount++,o.push(r),a.push({start:d?r.indexStart:r.vertexStart,count:-1}),l.push({boxInitialized:!1,box:new vr,sphereInitialized:!1,sphere:new ir}),this.setGeometryAt(f,e),f}setGeometryAt(e,t){if(e>=this._geometryCount)throw new Error("BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const i=this.geometry,r=i.getIndex()!==null,s=i.getIndex(),o=t.getIndex(),a=this._reservedRanges[e];if(r&&o.count>a.indexCount||t.attributes.position.count>a.vertexCount)throw new Error("BatchedMesh: Reserved space not large enough for provided geometry.");const l=a.vertexStart,c=a.vertexCount;for(const m in i.attributes){const _=t.getAttribute(m),S=i.getAttribute(m);pte(_,S,l);const x=_.itemSize;for(let y=_.count,E=c;y=t.length||t[e].active===!1?this:(t[e].active=!1,this._availableInstanceIds.push(e),this._visibilityChanged=!0,this)}getBoundingBoxAt(e,t){if(e>=this._geometryCount)return null;const i=this._bounds[e],r=i.box,s=this.geometry;if(i.boxInitialized===!1){r.makeEmpty();const o=s.index,a=s.attributes.position,l=this._drawRanges[e];for(let c=l.start,d=l.start+l.count;c=this._geometryCount)return null;const i=this._bounds[e],r=i.sphere,s=this.geometry;if(i.sphereInitialized===!1){r.makeEmpty(),this.getBoundingBoxAt(e,By),By.getCenter(r.center);const o=s.index,a=s.attributes.position,l=this._drawRanges[e];let c=0;for(let d=l.start,f=l.start+l.count;d=i.length||i[e].active===!1?this:(t.toArray(s,e*16),r.needsUpdate=!0,this)}getMatrixAt(e,t){const i=this._drawInfo,r=this._matricesTexture.image.data;return e>=i.length||i[e].active===!1?null:t.fromArray(r,e*16)}setColorAt(e,t){this._colorsTexture===null&&this._initColorsTexture();const i=this._colorsTexture,r=this._colorsTexture.image.data,s=this._drawInfo;return e>=s.length||s[e].active===!1?this:(t.toArray(r,e*4),i.needsUpdate=!0,this)}getColorAt(e,t){const i=this._colorsTexture.image.data,r=this._drawInfo;return e>=r.length||r[e].active===!1?null:t.fromArray(i,e*4)}setVisibleAt(e,t){const i=this._drawInfo;return e>=i.length||i[e].active===!1||i[e].visible===t?this:(i[e].visible=t,this._visibilityChanged=!0,this)}getVisibleAt(e){const t=this._drawInfo;return e>=t.length||t[e].active===!1?!1:t[e].visible}setGeometryIdAt(e,t){const i=this._drawInfo;return e>=i.length||i[e].active===!1||t<0||t>=this._geometryCount?null:(i[e].geometryIndex=t,this)}getGeometryIdAt(e){const t=this._drawInfo;return e>=t.length||t[e].active===!1?-1:t[e].geometryIndex}getGeometryRangeAt(e,t={}){if(e<0||e>=this._geometryCount)return null;const i=this._drawRanges[e];return t.start=i.start,t.count=i.count,t}raycast(e,t){const i=this._drawInfo,r=this._drawRanges,s=this.matrixWorld,o=this.geometry;Yi.material=this.material,Yi.geometry.index=o.index,Yi.geometry.attributes=o.attributes,Yi.geometry.boundingBox===null&&(Yi.geometry.boundingBox=new vr),Yi.geometry.boundingSphere===null&&(Yi.geometry.boundingSphere=new ir);for(let a=0,l=i.length;a({...t})),this._reservedRanges=e._reservedRanges.map(t=>({...t})),this._drawInfo=e._drawInfo.map(t=>({...t})),this._bounds=e._bounds.map(t=>({boxInitialized:t.boxInitialized,box:t.box.clone(),sphereInitialized:t.sphereInitialized,sphere:t.sphere.clone()})),this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._geometryCount=e._geometryCount,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){return this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null),this}onBeforeRender(e,t,i,r,s){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const o=r.getIndex(),a=o===null?1:o.array.BYTES_PER_ELEMENT,l=this._drawInfo,c=this._multiDrawStarts,d=this._multiDrawCounts,f=this._drawRanges,p=this.perObjectFrustumCulled,m=this._indirectTexture,_=m.image.data;p&&(xL.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse).multiply(this.matrixWorld),l1.setFromProjectionMatrix(xL,e.coordinateSystem));let S=0;if(this.sortObjects){a1.copy(this.matrixWorld).invert(),Nf.setFromMatrixPosition(i.matrixWorld).applyMatrix4(a1),SL.set(0,0,-1).transformDirection(i.matrixWorld).transformDirection(a1);for(let E=0,w=l.length;E0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;si)return;u1.applyMatrix4(n.matrixWorld);const l=e.ray.origin.distanceTo(u1);if(!(le.far))return{distance:l,point:EL.clone().applyMatrix4(n.matrixWorld),index:r,face:null,faceIndex:null,barycoord:null,object:n}}const TL=new G,AL=new G;class Ao extends Il{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,i=[];for(let r=0,s=t.count;r0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;sr.far)return;s.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:o})}}class mte extends In{constructor(e,t,i,r,s,o,a,l,c){super(e,t,i,r,s,o,a,l,c),this.isVideoTexture=!0,this.minFilter=o!==void 0?o:fi,this.magFilter=s!==void 0?s:fi,this.generateMipmaps=!1;const d=this;function f(){d.needsUpdate=!0,e.requestVideoFrameCallback(f)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(f)}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class gte extends In{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=Ai,this.minFilter=Ai,this.generateMipmaps=!1,this.needsUpdate=!0}}class xx extends In{constructor(e,t,i,r,s,o,a,l,c,d,f,p){super(null,o,a,l,c,d,r,s,f,p),this.isCompressedTexture=!0,this.image={width:t,height:i},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class yte extends xx{constructor(e,t,i,r,s,o){super(e,t,i,s,o),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=Es,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class vte extends xx{constructor(e,t,i){super(void 0,e[0].width,e[0].height,t,i,fa),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class _te extends In{constructor(e,t,i,r,s,o,a,l,c){super(e,t,i,r,s,o,a,l,c),this.isCanvasTexture=!0,this.needsUpdate=!0}}class Ks{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){const i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let i,r=this.getPoint(0),s=0;t.push(0);for(let o=1;o<=e;o++)i=this.getPoint(o/e),s+=i.distanceTo(r),t.push(s),r=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const i=this.getLengths();let r=0;const s=i.length;let o;t?o=t:o=e*i[s-1];let a=0,l=s-1,c;for(;a<=l;)if(r=Math.floor(a+(l-a)/2),c=i[r]-o,c<0)a=r+1;else if(c>0)l=r-1;else{l=r;break}if(r=l,i[r]===o)return r/(s-1);const d=i[r],p=i[r+1]-d,m=(o-d)/p;return(r+m)/(s-1)}getTangent(e,t){let r=e-1e-4,s=e+1e-4;r<0&&(r=0),s>1&&(s=1);const o=this.getPoint(r),a=this.getPoint(s),l=t||(o.isVector2?new Ee:new G);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){const i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){const i=new G,r=[],s=[],o=[],a=new G,l=new St;for(let m=0;m<=e;m++){const _=m/e;r[m]=this.getTangentAt(_,new G)}s[0]=new G,o[0]=new G;let c=Number.MAX_VALUE;const d=Math.abs(r[0].x),f=Math.abs(r[0].y),p=Math.abs(r[0].z);d<=c&&(c=d,i.set(1,0,0)),f<=c&&(c=f,i.set(0,1,0)),p<=c&&i.set(0,0,1),a.crossVectors(r[0],i).normalize(),s[0].crossVectors(r[0],a),o[0].crossVectors(r[0],s[0]);for(let m=1;m<=e;m++){if(s[m]=s[m-1].clone(),o[m]=o[m-1].clone(),a.crossVectors(r[m-1],r[m]),a.length()>Number.EPSILON){a.normalize();const _=Math.acos($n(r[m-1].dot(r[m]),-1,1));s[m].applyMatrix4(l.makeRotationAxis(a,_))}o[m].crossVectors(r[m],s[m])}if(t===!0){let m=Math.acos($n(s[0].dot(s[e]),-1,1));m/=e,r[0].dot(a.crossVectors(s[0],s[e]))>0&&(m=-m);for(let _=1;_<=e;_++)s[_].applyMatrix4(l.makeRotationAxis(r[_],m*_)),o[_].crossVectors(r[_],s[_])}return{tangents:r,normals:s,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class Sx extends Ks{constructor(e=0,t=0,i=1,r=1,s=0,o=Math.PI*2,a=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=r,this.aStartAngle=s,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t=new Ee){const i=t,r=Math.PI*2;let s=this.aEndAngle-this.aStartAngle;const o=Math.abs(s)r;)s-=r;s0?0:(Math.floor(Math.abs(a)/s)+1)*s:l===0&&a===s-1&&(a=s-2,l=1);let c,d;this.closed||a>0?c=r[(a-1)%s]:(Xy.subVectors(r[0],r[1]).add(r[0]),c=Xy);const f=r[a%s],p=r[(a+1)%s];if(this.closed||a+2r.length-2?r.length-1:o+1],f=r[o>r.length-3?r.length-1:o+2];return i.set(bL(a,l.x,c.x,d.x,f.x),bL(a,l.y,c.y,d.y,f.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t=i){const o=r[s]-i,a=this.curves[s],l=a.getLength(),c=l===0?0:1-o/l;return a.getPointAt(c,t)}s++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let i=0,r=this.curves.length;i1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t0){const f=c.getPoint(0);f.equals(this.currentPoint)||this.lineTo(f.x,f.y)}this.curves.push(c);const d=c.getPoint(1);return this.currentPoint.copy(d),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class jm extends Vt{constructor(e=[new Ee(0,-.5),new Ee(.5,0),new Ee(0,.5)],t=12,i=0,r=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:i,phiLength:r},t=Math.floor(t),r=$n(r,0,Math.PI*2);const s=[],o=[],a=[],l=[],c=[],d=1/t,f=new G,p=new Ee,m=new G,_=new G,S=new G;let x=0,y=0;for(let E=0;E<=e.length-1;E++)switch(E){case 0:x=e[E+1].x-e[E].x,y=e[E+1].y-e[E].y,m.x=y*1,m.y=-x,m.z=y*0,S.copy(m),m.normalize(),l.push(m.x,m.y,m.z);break;case e.length-1:l.push(S.x,S.y,S.z);break;default:x=e[E+1].x-e[E].x,y=e[E+1].y-e[E].y,m.x=y*1,m.y=-x,m.z=y*0,_.copy(m),m.x+=S.x,m.y+=S.y,m.z+=S.z,m.normalize(),l.push(m.x,m.y,m.z),S.copy(_)}for(let E=0;E<=t;E++){const w=i+E*d*r,M=Math.sin(w),O=Math.cos(w);for(let k=0;k<=e.length-1;k++){f.x=e[k].x*M,f.y=e[k].y,f.z=e[k].x*O,o.push(f.x,f.y,f.z),p.x=E/t,p.y=k/(e.length-1),a.push(p.x,p.y);const I=l[3*k+0]*M,P=l[3*k+1],D=l[3*k+0]*O;c.push(I,P,D)}}for(let E=0;E0&&w(!0),t>0&&w(!1)),this.setIndex(d),this.setAttribute("position",new ht(f,3)),this.setAttribute("normal",new ht(p,3)),this.setAttribute("uv",new ht(m,2));function E(){const M=new G,O=new G;let k=0;const I=(t-e)/i;for(let P=0;P<=s;P++){const D=[],A=P/s,R=A*(t-e)+e;for(let V=0;V<=r;V++){const U=V/r,se=U*l+a,le=Math.sin(se),ee=Math.cos(se);O.x=R*le,O.y=-A*i+x,O.z=R*ee,f.push(O.x,O.y,O.z),M.set(le,I,ee).normalize(),p.push(M.x,M.y,M.z),m.push(U,1-A),D.push(_++)}S.push(D)}for(let P=0;P0&&(d.push(A,R,U),k+=3),t>0&&(d.push(R,V,U),k+=3)}c.addGroup(y,k,0),y+=k}function w(M){const O=_,k=new Ee,I=new G;let P=0;const D=M===!0?e:t,A=M===!0?1:-1;for(let V=1;V<=r;V++)f.push(0,x*A,0),p.push(0,A,0),m.push(.5,.5),_++;const R=_;for(let V=0;V<=r;V++){const se=V/r*l+a,le=Math.cos(se),ee=Math.sin(se);I.x=D*ee,I.y=x*A,I.z=D*le,f.push(I.x,I.y,I.z),p.push(0,A,0),k.x=le*.5+.5,k.y=ee*.5*A+.5,m.push(k.x,k.y),_++}for(let V=0;V.9&&I<.1&&(w<.2&&(o[E+0]+=1),M<.2&&(o[E+2]+=1),O<.2&&(o[E+4]+=1))}}function p(E){s.push(E.x,E.y,E.z)}function m(E,w){const M=E*3;w.x=e[M+0],w.y=e[M+1],w.z=e[M+2]}function _(){const E=new G,w=new G,M=new G,O=new G,k=new Ee,I=new Ee,P=new Ee;for(let D=0,A=0;D80*t){a=c=n[0],l=d=n[1];for(let _=t;_c&&(c=f),p>d&&(d=p);m=Math.max(c-a,d-l),m=m!==0?32767/m:0}return hm(s,o,t,a,l,m,0),o}};function SV(n,e,t,i,r){let s,o;if(r===Gte(n,e,t,i)>0)for(s=e;s=e;s-=i)o=PL(s,n[s],n[s+1],o);return o&&Mx(o,o.next)&&(fm(o),o=o.next),o}function hu(n,e){if(!n)return n;e||(e=n);let t=n,i;do if(i=!1,!t.steiner&&(Mx(t,t.next)||Bn(t.prev,t,t.next)===0)){if(fm(t),t=e=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==e);return e}function hm(n,e,t,i,r,s,o){if(!n)return;!o&&s&&Ute(n,i,r,s);let a=n,l,c;for(;n.prev!==n.next;){if(l=n.prev,c=n.next,s?Pte(n,i,r,s):bte(n)){e.push(l.i/t|0),e.push(n.i/t|0),e.push(c.i/t|0),fm(n),n=c.next,a=c.next;continue}if(n=c,n===a){o?o===1?(n=Rte(hu(n),e,t),hm(n,e,t,i,r,s,2)):o===2&&Ite(n,e,t,i,r,s):hm(hu(n),e,t,i,r,s,1);break}}}function bte(n){const e=n.prev,t=n,i=n.next;if(Bn(e,t,i)>=0)return!1;const r=e.x,s=t.x,o=i.x,a=e.y,l=t.y,c=i.y,d=rs?r>o?r:o:s>o?s:o,m=a>l?a>c?a:c:l>c?l:c;let _=i.next;for(;_!==e;){if(_.x>=d&&_.x<=p&&_.y>=f&&_.y<=m&&Nh(r,a,s,l,o,c,_.x,_.y)&&Bn(_.prev,_,_.next)>=0)return!1;_=_.next}return!0}function Pte(n,e,t,i){const r=n.prev,s=n,o=n.next;if(Bn(r,s,o)>=0)return!1;const a=r.x,l=s.x,c=o.x,d=r.y,f=s.y,p=o.y,m=al?a>c?a:c:l>c?l:c,x=d>f?d>p?d:p:f>p?f:p,y=ST(m,_,e,t,i),E=ST(S,x,e,t,i);let w=n.prevZ,M=n.nextZ;for(;w&&w.z>=y&&M&&M.z<=E;){if(w.x>=m&&w.x<=S&&w.y>=_&&w.y<=x&&w!==r&&w!==o&&Nh(a,d,l,f,c,p,w.x,w.y)&&Bn(w.prev,w,w.next)>=0||(w=w.prevZ,M.x>=m&&M.x<=S&&M.y>=_&&M.y<=x&&M!==r&&M!==o&&Nh(a,d,l,f,c,p,M.x,M.y)&&Bn(M.prev,M,M.next)>=0))return!1;M=M.nextZ}for(;w&&w.z>=y;){if(w.x>=m&&w.x<=S&&w.y>=_&&w.y<=x&&w!==r&&w!==o&&Nh(a,d,l,f,c,p,w.x,w.y)&&Bn(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;M&&M.z<=E;){if(M.x>=m&&M.x<=S&&M.y>=_&&M.y<=x&&M!==r&&M!==o&&Nh(a,d,l,f,c,p,M.x,M.y)&&Bn(M.prev,M,M.next)>=0)return!1;M=M.nextZ}return!0}function Rte(n,e,t){let i=n;do{const r=i.prev,s=i.next.next;!Mx(r,s)&&wV(r,i,i.next,s)&&dm(r,s)&&dm(s,r)&&(e.push(r.i/t|0),e.push(i.i/t|0),e.push(s.i/t|0),fm(i),fm(i.next),i=n=s),i=i.next}while(i!==n);return hu(i)}function Ite(n,e,t,i,r,s){let o=n;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&Bte(o,a)){let l=EV(o,a);o=hu(o,o.next),l=hu(l,l.next),hm(o,e,t,i,r,s,0),hm(l,e,t,i,r,s,0);return}a=a.next}o=o.next}while(o!==n)}function Lte(n,e,t,i){const r=[];let s,o,a,l,c;for(s=0,o=e.length;s=t.next.y&&t.next.y!==t.y){const p=t.x+(o-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(p<=s&&p>i&&(i=p,r=t.x=t.x&&t.x>=l&&s!==t.x&&Nh(or.x||t.x===r.x&&Ote(r,t)))&&(r=t,d=f)),t=t.next;while(t!==a);return r}function Ote(n,e){return Bn(n.prev,n,e.prev)<0&&Bn(e.next,n,n.next)<0}function Ute(n,e,t,i){let r=n;do r.z===0&&(r.z=ST(r.x,r.y,e,t,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==n);r.prevZ.nextZ=null,r.prevZ=null,Fte(r)}function Fte(n){let e,t,i,r,s,o,a,l,c=1;do{for(t=n,n=null,s=null,o=0;t;){for(o++,i=t,a=0,e=0;e0||l>0&&i;)a!==0&&(l===0||!i||t.z<=i.z)?(r=t,t=t.nextZ,a--):(r=i,i=i.nextZ,l--),s?s.nextZ=r:n=r,r.prevZ=s,s=r;t=i}s.nextZ=null,c*=2}while(o>1);return n}function ST(n,e,t,i,r){return n=(n-t)*r|0,e=(e-i)*r|0,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,n|e<<1}function Vte(n){let e=n,t=n;do(e.x=(n-o)*(s-a)&&(n-o)*(i-a)>=(t-o)*(e-a)&&(t-o)*(s-a)>=(r-o)*(i-a)}function Bte(n,e){return n.next.i!==e.i&&n.prev.i!==e.i&&!zte(n,e)&&(dm(n,e)&&dm(e,n)&&Hte(n,e)&&(Bn(n.prev,n,e.prev)||Bn(n,e.prev,e))||Mx(n,e)&&Bn(n.prev,n,n.next)>0&&Bn(e.prev,e,e.next)>0)}function Bn(n,e,t){return(e.y-n.y)*(t.x-e.x)-(e.x-n.x)*(t.y-e.y)}function Mx(n,e){return n.x===e.x&&n.y===e.y}function wV(n,e,t,i){const r=Qy(Bn(n,e,t)),s=Qy(Bn(n,e,i)),o=Qy(Bn(t,i,n)),a=Qy(Bn(t,i,e));return!!(r!==s&&o!==a||r===0&&Ky(n,t,e)||s===0&&Ky(n,i,e)||o===0&&Ky(t,n,i)||a===0&&Ky(t,e,i))}function Ky(n,e,t){return e.x<=Math.max(n.x,t.x)&&e.x>=Math.min(n.x,t.x)&&e.y<=Math.max(n.y,t.y)&&e.y>=Math.min(n.y,t.y)}function Qy(n){return n>0?1:n<0?-1:0}function zte(n,e){let t=n;do{if(t.i!==n.i&&t.next.i!==n.i&&t.i!==e.i&&t.next.i!==e.i&&wV(t,t.next,n,e))return!0;t=t.next}while(t!==n);return!1}function dm(n,e){return Bn(n.prev,n,n.next)<0?Bn(n,e,n.next)>=0&&Bn(n,n.prev,e)>=0:Bn(n,e,n.prev)<0||Bn(n,n.next,e)<0}function Hte(n,e){let t=n,i=!1;const r=(n.x+e.x)/2,s=(n.y+e.y)/2;do t.y>s!=t.next.y>s&&t.next.y!==t.y&&r<(t.next.x-t.x)*(s-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==n);return i}function EV(n,e){const t=new wT(n.i,n.x,n.y),i=new wT(e.i,e.x,e.y),r=n.next,s=e.prev;return n.next=e,e.prev=n,t.next=r,r.prev=t,i.next=t,t.prev=i,s.next=i,i.prev=s,i}function PL(n,e,t,i){const r=new wT(n,e,t);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function fm(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function wT(n,e,t){this.i=n,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Gte(n,e,t,i){let r=0;for(let s=e,o=t-i;s2&&n[e-1].equals(n[0])&&n.pop()}function IL(n,e){for(let t=0;tNumber.EPSILON){const Te=Math.sqrt(ae),Se=Math.sqrt(X*X+F*F),nt=j.x-We/Te,Ce=j.y+lt/Te,Ge=Ve.x-F/Se,Lt=Ve.y+X/Se,Le=((Ge-nt)*F-(Lt-Ce)*X)/(lt*F-We*X);Oe=nt+lt*Le-xe.x,Pe=Ce+We*Le-xe.y;const Ze=Oe*Oe+Pe*Pe;if(Ze<=2)return new Ee(Oe,Pe);Ue=Math.sqrt(Ze/2)}else{let Te=!1;lt>Number.EPSILON?X>Number.EPSILON&&(Te=!0):lt<-Number.EPSILON?X<-Number.EPSILON&&(Te=!0):Math.sign(We)===Math.sign(F)&&(Te=!0),Te?(Oe=-We,Pe=lt,Ue=Math.sqrt(ae)):(Oe=lt,Pe=We,Ue=Math.sqrt(ae/2))}return new Ee(Oe/Ue,Pe/Ue)}const J=[];for(let xe=0,j=se.length,Ve=j-1,Oe=xe+1;xe=0;xe--){const j=xe/x,Ve=m*Math.cos(j*Math.PI/2),Oe=_*Math.sin(j*Math.PI/2)+S;for(let Pe=0,Ue=se.length;Pe=0;){const Oe=Ve;let Pe=Ve-1;Pe<0&&(Pe=xe.length-1);for(let Ue=0,lt=d+x*2;Ue0)&&m.push(w,M,k),(y!==i-1||l0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class bV extends Oi{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new rt(16777215),this.specular=new rt(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new rt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fl,this.normalScale=new Ee(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new _r,this.combine=Vm,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class PV extends Oi{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new rt(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new rt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fl,this.normalScale=new Ee(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class RV extends Oi{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fl,this.normalScale=new Ee(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class IV extends Oi{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new rt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new rt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fl,this.normalScale=new Ee(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new _r,this.combine=Vm,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class LV extends Oi{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new rt(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fl,this.normalScale=new Ee(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}class NV extends wr{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Bc(n,e,t){return!n||!t&&n.constructor===e?n:typeof e.BYTES_PER_ELEMENT=="number"?new e(n):Array.prototype.slice.call(n)}function DV(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function kV(n){function e(r,s){return n[r]-n[s]}const t=n.length,i=new Array(t);for(let r=0;r!==t;++r)i[r]=r;return i.sort(e),i}function ET(n,e,t){const i=n.length,r=new n.constructor(i);for(let s=0,o=0;o!==i;++s){const a=t[s]*e;for(let l=0;l!==e;++l)r[o++]=n[a+l]}return r}function fC(n,e,t,i){let r=1,s=n[0];for(;s!==void 0&&s[i]===void 0;)s=n[r++];if(s===void 0)return;let o=s[i];if(o!==void 0)if(Array.isArray(o))do o=s[i],o!==void 0&&(e.push(s.time),t.push.apply(t,o)),s=n[r++];while(s!==void 0);else if(o.toArray!==void 0)do o=s[i],o!==void 0&&(e.push(s.time),o.toArray(t,t.length)),s=n[r++];while(s!==void 0);else do o=s[i],o!==void 0&&(e.push(s.time),t.push(o)),s=n[r++];while(s!==void 0)}function qte(n,e,t,i,r=30){const s=n.clone();s.name=e;const o=[];for(let l=0;l=i)){f.push(c.times[m]);for(let S=0;Ss.tracks[l].times[0]&&(a=s.tracks[l].times[0]);for(let l=0;l=a.times[_]){const y=_*f+d,E=y+f-d;S=a.values.slice(y,E)}else{const y=a.createInterpolant(),E=d,w=f-d;y.evaluate(s),S=y.resultBuffer.slice(E,w)}l==="quaternion"&&new nr().fromArray(S).normalize().conjugate().toArray(S);const x=c.times.length;for(let y=0;y=s)){const a=t[1];e=s)break t}o=i,i=0;break n}break e}for(;i>>1;et;)--o;if(++o,s!==0||o!==r){s>=o&&(o=Math.max(o,1),s=o-1);const a=this.getValueSize();this.times=i.slice(s,o),this.values=this.values.slice(s*a,o*a)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,r=this.values,s=i.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){const l=i[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(r!==void 0&&DV(r))for(let a=0,l=r.length;a!==l;++a){const c=r[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===Cv,s=e.length-1;let o=1;for(let a=1;a0){e[o]=e[s];for(let a=s*i,l=o*i,c=0;c!==i;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=e.slice(0,o),this.values=t.slice(0,o*i)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Qs.prototype.TimeBufferType=Float32Array;Qs.prototype.ValueBufferType=Float32Array;Qs.prototype.DefaultInterpolation=o_;class _u extends Qs{constructor(e,t,i){super(e,t,i)}}_u.prototype.ValueTypeName="bool";_u.prototype.ValueBufferType=Array;_u.prototype.DefaultInterpolation=nm;_u.prototype.InterpolantFactoryMethodLinear=void 0;_u.prototype.InterpolantFactoryMethodSmooth=void 0;class mC extends Qs{}mC.prototype.ValueTypeName="color";class pm extends Qs{}pm.prototype.ValueTypeName="number";class FV extends $m{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){const s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(i-t)/(r-t);let c=e*a;for(let d=c+a;c!==d;c+=4)nr.slerpFlat(s,0,o,c-a,o,c,l);return s}}class Ym extends Qs{InterpolantFactoryMethodLinear(e){return new FV(this.times,this.values,this.getValueSize(),e)}}Ym.prototype.ValueTypeName="quaternion";Ym.prototype.InterpolantFactoryMethodSmooth=void 0;class xu extends Qs{constructor(e,t,i){super(e,t,i)}}xu.prototype.ValueTypeName="string";xu.prototype.ValueBufferType=Array;xu.prototype.DefaultInterpolation=nm;xu.prototype.InterpolantFactoryMethodLinear=void 0;xu.prototype.InterpolantFactoryMethodSmooth=void 0;class mm extends Qs{}mm.prototype.ValueTypeName="vector";class gm{constructor(e="",t=-1,i=[],r=dx){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=Zr(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,r=1/(e.fps||1);for(let o=0,a=i.length;o!==a;++o)t.push(Qte(i[o]).scale(r));const s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s}static toJSON(e){const t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let s=0,o=i.length;s!==o;++s)t.push(Qs.toJSON(i[s]));return r}static CreateFromMorphTargetSequence(e,t,i,r){const s=t.length,o=[];for(let a=0;a1){const f=d[1];let p=r[f];p||(r[f]=p=[]),p.push(c)}}const o=[];for(const a in r)o.push(this.CreateFromMorphTargetSequence(a,r[a],t,i));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const i=function(f,p,m,_,S){if(m.length!==0){const x=[],y=[];fC(m,x,y,_),x.length!==0&&S.push(new f(p,x,y))}},r=[],s=e.name||"default",o=e.fps||30,a=e.blendMode;let l=e.length||-1;const c=e.hierarchy||[];for(let f=0;f{t&&t(s),this.manager.itemEnd(e)},0),s;if(zo[e]!==void 0){zo[e].push({onLoad:t,onProgress:i,onError:r});return}zo[e]=[],zo[e].push({onLoad:t,onProgress:i,onError:r});const o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const d=zo[e],f=c.body.getReader(),p=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),m=p?parseInt(p):0,_=m!==0;let S=0;const x=new ReadableStream({start(y){E();function E(){f.read().then(({done:w,value:M})=>{if(w)y.close();else{S+=M.byteLength;const O=new ProgressEvent("progress",{lengthComputable:_,loaded:S,total:m});for(let k=0,I=d.length;k{y.error(w)})}}});return new Response(x)}else throw new Jte(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(d=>new DOMParser().parseFromString(d,a));case"json":return c.json();default:if(a===void 0)return c.text();{const f=/charset="?([^;"\s]*)"?/i.exec(a),p=f&&f[1]?f[1].toLowerCase():void 0,m=new TextDecoder(p);return c.arrayBuffer().then(_=>m.decode(_))}}}).then(c=>{Qo.add(e,c);const d=zo[e];delete zo[e];for(let f=0,p=d.length;f{const d=zo[e];if(d===void 0)throw this.manager.itemError(e),c;delete zo[e];for(let f=0,p=d.length;f{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class Zte extends zr{constructor(e){super(e)}load(e,t,i,r){const s=this,o=new ma(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){try{t(s.parse(JSON.parse(a)))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}parse(e){const t=[];for(let i=0;i0:r.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const s in e.uniforms){const o=e.uniforms[s];switch(r.uniforms[s]={},o.type){case"t":r.uniforms[s].value=i(o.value);break;case"c":r.uniforms[s].value=new rt().setHex(o.value);break;case"v2":r.uniforms[s].value=new Ee().fromArray(o.value);break;case"v3":r.uniforms[s].value=new G().fromArray(o.value);break;case"v4":r.uniforms[s].value=new sn().fromArray(o.value);break;case"m3":r.uniforms[s].value=new Ut().fromArray(o.value);break;case"m4":r.uniforms[s].value=new St().fromArray(o.value);break;default:r.uniforms[s].value=o.value}}if(e.defines!==void 0&&(r.defines=e.defines),e.vertexShader!==void 0&&(r.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(r.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(r.glslVersion=e.glslVersion),e.extensions!==void 0)for(const s in e.extensions)r.extensions[s]=e.extensions[s];if(e.lights!==void 0&&(r.lights=e.lights),e.clipping!==void 0&&(r.clipping=e.clipping),e.size!==void 0&&(r.size=e.size),e.sizeAttenuation!==void 0&&(r.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(r.map=i(e.map)),e.matcap!==void 0&&(r.matcap=i(e.matcap)),e.alphaMap!==void 0&&(r.alphaMap=i(e.alphaMap)),e.bumpMap!==void 0&&(r.bumpMap=i(e.bumpMap)),e.bumpScale!==void 0&&(r.bumpScale=e.bumpScale),e.normalMap!==void 0&&(r.normalMap=i(e.normalMap)),e.normalMapType!==void 0&&(r.normalMapType=e.normalMapType),e.normalScale!==void 0){let s=e.normalScale;Array.isArray(s)===!1&&(s=[s,s]),r.normalScale=new Ee().fromArray(s)}return e.displacementMap!==void 0&&(r.displacementMap=i(e.displacementMap)),e.displacementScale!==void 0&&(r.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(r.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(r.roughnessMap=i(e.roughnessMap)),e.metalnessMap!==void 0&&(r.metalnessMap=i(e.metalnessMap)),e.emissiveMap!==void 0&&(r.emissiveMap=i(e.emissiveMap)),e.emissiveIntensity!==void 0&&(r.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(r.specularMap=i(e.specularMap)),e.specularIntensityMap!==void 0&&(r.specularIntensityMap=i(e.specularIntensityMap)),e.specularColorMap!==void 0&&(r.specularColorMap=i(e.specularColorMap)),e.envMap!==void 0&&(r.envMap=i(e.envMap)),e.envMapRotation!==void 0&&r.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(r.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(r.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(r.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(r.lightMap=i(e.lightMap)),e.lightMapIntensity!==void 0&&(r.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(r.aoMap=i(e.aoMap)),e.aoMapIntensity!==void 0&&(r.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(r.gradientMap=i(e.gradientMap)),e.clearcoatMap!==void 0&&(r.clearcoatMap=i(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(r.clearcoatRoughnessMap=i(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(r.clearcoatNormalMap=i(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(r.clearcoatNormalScale=new Ee().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(r.iridescenceMap=i(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(r.iridescenceThicknessMap=i(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(r.transmissionMap=i(e.transmissionMap)),e.thicknessMap!==void 0&&(r.thicknessMap=i(e.thicknessMap)),e.anisotropyMap!==void 0&&(r.anisotropyMap=i(e.anisotropyMap)),e.sheenColorMap!==void 0&&(r.sheenColorMap=i(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(r.sheenRoughnessMap=i(e.sheenRoughnessMap)),r}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return Ox.createMaterialFromType(e)}static createMaterialFromType(e){const t={ShadowMaterial:AV,SpriteMaterial:iC,RawShaderMaterial:MV,ShaderMaterial:qs,PointsMaterial:sC,MeshPhysicalMaterial:CV,MeshStandardMaterial:dC,MeshPhongMaterial:bV,MeshToonMaterial:PV,MeshNormalMaterial:RV,MeshLambertMaterial:IV,MeshDepthMaterial:tC,MeshDistanceMaterial:nC,MeshBasicMaterial:Vl,MeshMatcapMaterial:LV,LineDashedMaterial:NV,LineBasicMaterial:wr,Material:Oi};return new t[e]}}class TT{static decodeText(e){if(console.warn("THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead."),typeof TextDecoder<"u")return new TextDecoder().decode(e);let t="";for(let i=0,r=e.length;i0){const l=new gC(t);s=new ym(l),s.setCrossOrigin(this.crossOrigin);for(let c=0,d=e.length;c0){r=new ym(this.manager),r.setCrossOrigin(this.crossOrigin);for(let o=0,a=e.length;o{const x=new vr;x.min.fromArray(S.boxMin),x.max.fromArray(S.boxMax);const y=new ir;return y.radius=S.sphereRadius,y.center.fromArray(S.sphereCenter),{boxInitialized:S.boxInitialized,box:x,sphereInitialized:S.sphereInitialized,sphere:y}}),o._maxInstanceCount=e.maxInstanceCount,o._maxVertexCount=e.maxVertexCount,o._maxIndexCount=e.maxIndexCount,o._geometryInitialized=e.geometryInitialized,o._geometryCount=e.geometryCount,o._matricesTexture=c(e.matricesTexture.uuid),e.colorsTexture!==void 0&&(o._colorsTexture=c(e.colorsTexture.uuid));break;case"LOD":o=new cV;break;case"Line":o=new Il(a(e.geometry),l(e.material));break;case"LineLoop":o=new fV(a(e.geometry),l(e.material));break;case"LineSegments":o=new Ao(a(e.geometry),l(e.material));break;case"PointCloud":case"Points":o=new pV(a(e.geometry),l(e.material));break;case"Sprite":o=new lV(l(e.material));break;case"Group":o=new Lh;break;case"Bone":o=new rC;break;default:o=new Zt}if(o.uuid=e.uuid,e.name!==void 0&&(o.name=e.name),e.matrix!==void 0?(o.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(o.matrixAutoUpdate=e.matrixAutoUpdate),o.matrixAutoUpdate&&o.matrix.decompose(o.position,o.quaternion,o.scale)):(e.position!==void 0&&o.position.fromArray(e.position),e.rotation!==void 0&&o.rotation.fromArray(e.rotation),e.quaternion!==void 0&&o.quaternion.fromArray(e.quaternion),e.scale!==void 0&&o.scale.fromArray(e.scale)),e.up!==void 0&&o.up.fromArray(e.up),e.castShadow!==void 0&&(o.castShadow=e.castShadow),e.receiveShadow!==void 0&&(o.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(o.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(o.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(o.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(o.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&o.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(o.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(o.visible=e.visible),e.frustumCulled!==void 0&&(o.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(o.renderOrder=e.renderOrder),e.userData!==void 0&&(o.userData=e.userData),e.layers!==void 0&&(o.layers.mask=e.layers),e.children!==void 0){const p=e.children;for(let m=0;m"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,i,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,o=Qo.get(e);if(o!==void 0){if(s.manager.itemStart(e),o.then){o.then(c=>{t&&t(c),s.manager.itemEnd(e)}).catch(c=>{r&&r(c)});return}return setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o}const a={};a.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",a.headers=this.requestHeader;const l=fetch(e,a).then(function(c){return c.blob()}).then(function(c){return createImageBitmap(c,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(c){return Qo.add(e,c),t&&t(c),s.manager.itemEnd(e),c}).catch(function(c){r&&r(c),Qo.remove(e),s.manager.itemError(e),s.manager.itemEnd(e)});Qo.add(e,l),s.manager.itemStart(e)}}let Jy;class vC{static getContext(){return Jy===void 0&&(Jy=new(window.AudioContext||window.webkitAudioContext)),Jy}static setContext(e){Jy=e}}class cne extends zr{constructor(e){super(e)}load(e,t,i,r){const s=this,o=new ma(this.manager);o.setResponseType("arraybuffer"),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){try{const c=l.slice(0);vC.getContext().decodeAudioData(c,function(f){t(f)}).catch(a)}catch(c){a(c)}},i,r);function a(l){r?r(l):console.error(l),s.manager.itemError(e)}}}const VL=new St,BL=new St,gc=new St;class une{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new Dn,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new Dn,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,gc.copy(e.projectionMatrix);const r=t.eyeSep/2,s=r*t.near/t.focus,o=t.near*Math.tan(Yc*t.fov*.5)/t.zoom;let a,l;BL.elements[12]=-r,VL.elements[12]=r,a=-o*t.aspect+s,l=o*t.aspect+s,gc.elements[0]=2*t.near/(l-a),gc.elements[8]=(l+a)/(l-a),this.cameraL.projectionMatrix.copy(gc),a=-o*t.aspect-s,l=o*t.aspect-s,gc.elements[0]=2*t.near/(l-a),gc.elements[8]=(l+a)/(l-a),this.cameraR.projectionMatrix.copy(gc)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(BL),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(VL)}}class _C{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=zL(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=zL();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function zL(){return performance.now()}const yc=new G,HL=new nr,hne=new G,vc=new G;class dne extends Zt{constructor(){super(),this.type="AudioListener",this.context=vC.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new _C}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener,i=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(yc,HL,hne),vc.set(0,0,-1).applyQuaternion(HL),t.positionX){const r=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(yc.x,r),t.positionY.linearRampToValueAtTime(yc.y,r),t.positionZ.linearRampToValueAtTime(yc.z,r),t.forwardX.linearRampToValueAtTime(vc.x,r),t.forwardY.linearRampToValueAtTime(vc.y,r),t.forwardZ.linearRampToValueAtTime(vc.z,r),t.upX.linearRampToValueAtTime(i.x,r),t.upY.linearRampToValueAtTime(i.y,r),t.upZ.linearRampToValueAtTime(i.z,r)}else t.setPosition(yc.x,yc.y,yc.z),t.setOrientation(vc.x,vc.y,vc.z,i.x,i.y,i.z)}}class YV extends Zt{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(i[l]!==i[l+t]){a.setValue(i,r);break}}saveOriginalState(){const e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let s=i,o=r;s!==o;++s)t[s]=t[r+s%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let o=0;o!==s;++o)e[t+o]=e[i+o]}_slerp(e,t,i,r){nr.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,s){const o=this._workIndex*s;nr.multiplyQuaternionsFlat(e,o,e,t,e,i),nr.slerpFlat(e,t,e,t,e,o,r)}_lerp(e,t,i,r,s){const o=1-r;for(let a=0;a!==s;++a){const l=t+a;e[l]=e[l]*o+e[i+a]*r}}_lerpAdditive(e,t,i,r,s){for(let o=0;o!==s;++o){const a=t+o;e[a]=e[a]+e[i+o]*r}}}const xC="\\[\\]\\.:\\/",gne=new RegExp("["+xC+"]","g"),SC="[^"+xC+"]",yne="[^"+xC.replace("\\.","")+"]",vne=/((?:WC+[\/:])*)/.source.replace("WC",SC),_ne=/(WCOD+)?/.source.replace("WCOD",yne),xne=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",SC),Sne=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",SC),wne=new RegExp("^"+vne+_ne+xne+Sne+"$"),Ene=["material","materials","bones","map"];class Tne{constructor(e,t,i){const r=i||nn.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){const i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}}class nn{constructor(e,t,i){this.path=t,this.parsedPath=i||nn.parseTrackName(t),this.node=nn.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new nn.Composite(e,t,i):new nn(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(gne,"")}static parseTrackName(e){const t=wne.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const s=i.nodeName.substring(r+1);Ene.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){const i=function(s){for(let o=0;o=s){const f=s++,p=e[f];t[p.uuid]=d,e[d]=p,t[c]=f,e[f]=l;for(let m=0,_=r;m!==_;++m){const S=i[m],x=S[f],y=S[d];S[d]=x,S[f]=y}}}this.nCachedObjects_=s}uncache(){const e=this._objects,t=this._indicesByUUID,i=this._bindings,r=i.length;let s=this.nCachedObjects_,o=e.length;for(let a=0,l=arguments.length;a!==l;++a){const c=arguments[a],d=c.uuid,f=t[d];if(f!==void 0)if(delete t[d],f0&&(t[m.uuid]=f),e[f]=m,e.pop();for(let _=0,S=r;_!==S;++_){const x=i[_];x[f]=x[p],x.pop()}}}this.nCachedObjects_=s}subscribe_(e,t){const i=this._bindingsIndicesByPath;let r=i[e];const s=this._bindings;if(r!==void 0)return s[r];const o=this._paths,a=this._parsedPaths,l=this._objects,c=l.length,d=this.nCachedObjects_,f=new Array(c);r=s.length,i[e]=r,o.push(e),a.push(t),s.push(f);for(let p=d,m=l.length;p!==m;++p){const _=l[p];f[p]=new nn(_,e,t)}return f}unsubscribe_(e){const t=this._bindingsIndicesByPath,i=t[e];if(i!==void 0){const r=this._paths,s=this._parsedPaths,o=this._bindings,a=o.length-1,l=o[a],c=e[a];t[c]=i,o[i]=l,o.pop(),s[i]=s[a],s.pop(),r[i]=r[a],r.pop()}}}class QV{constructor(e,t,i=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=r;const s=t.tracks,o=s.length,a=new Array(o),l={endingStart:Uc,endingEnd:Uc};for(let c=0;c!==o;++c){const d=s[c].createInterpolant(null);a[c]=d,d.settings=l}this._interpolantSettings=l,this._interpolants=a,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=NF,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i){if(e.fadeOut(t),this.fadeIn(t),i){const r=this._clip.duration,s=e._clip.duration,o=s/r,a=r/s;e.warp(1,o,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,i){return e.crossFadeFrom(this,t,i)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,i){const r=this._mixer,s=r.time,o=this.timeScale;let a=this._timeScaleInterpolant;a===null&&(a=r._lendControlInterpolant(),this._timeScaleInterpolant=a);const l=a.parameterPositions,c=a.sampleValues;return l[0]=s,l[1]=s+i,c[0]=e/o,c[1]=t/o,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,i,r){if(!this.enabled){this._updateWeight(e);return}const s=this._startTime;if(s!==null){const l=(e-s)*i;l<0||i===0?t=0:(this._startTime=null,t=i*l)}t*=this._updateTimeScale(e);const o=this._updateTime(t),a=this._updateWeight(e);if(a>0){const l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case jM:for(let d=0,f=l.length;d!==f;++d)l[d].evaluate(o),c[d].accumulateAdditive(a);break;case dx:default:for(let d=0,f=l.length;d!==f;++d)l[d].evaluate(o),c[d].accumulate(r,a)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const i=this._weightInterpolant;if(i!==null){const r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const i=this._timeScaleInterpolant;if(i!==null){const r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,i=this.loop;let r=this.time+e,s=this._loopCount;const o=i===DF;if(e===0)return s===-1?r:o&&(s&1)===1?t-r:r;if(i===LF){s===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(s===-1&&(e>=0?(s=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),r>=t||r<0){const a=Math.floor(r/t);r-=t*a,s+=Math.abs(a);const l=this.repetitions-s;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(l===1){const c=e<0;this._setEndings(c,!c,o)}else this._setEndings(!1,!1,o);this._loopCount=s,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:a})}}else this.time=r;if(o&&(s&1)===1)return t-r}return r}_setEndings(e,t,i){const r=this._interpolantSettings;i?(r.endingStart=Fc,r.endingEnd=Fc):(e?r.endingStart=this.zeroSlopeAtStart?Fc:Uc:r.endingStart=im,t?r.endingEnd=this.zeroSlopeAtEnd?Fc:Uc:r.endingEnd=im)}_scheduleFading(e,t,i){const r=this._mixer,s=r.time;let o=this._weightInterpolant;o===null&&(o=r._lendControlInterpolant(),this._weightInterpolant=o);const a=o.parameterPositions,l=o.sampleValues;return a[0]=s,l[0]=t,a[1]=s+e,l[1]=i,this}}const Mne=new Float32Array(1);class Cne extends Ys{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const i=e._localRoot||this._root,r=e._clip.tracks,s=r.length,o=e._propertyBindings,a=e._interpolants,l=i.uuid,c=this._bindingsByRootAndName;let d=c[l];d===void 0&&(d={},c[l]=d);for(let f=0;f!==s;++f){const p=r[f],m=p.name;let _=d[m];if(_!==void 0)++_.referenceCount,o[f]=_;else{if(_=o[f],_!==void 0){_._cacheIndex===null&&(++_.referenceCount,this._addInactiveBinding(_,l,m));continue}const S=t&&t._propertyBindings[f].binding.parsedPath;_=new KV(nn.create(i,m,S),p.ValueTypeName,p.getValueSize()),++_.referenceCount,this._addInactiveBinding(_,l,m),o[f]=_}a[f].resultBuffer=_.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const i=(e._localRoot||this._root).uuid,r=e._clip.uuid,s=this._actionsByClip[r];this._bindAction(e,s&&s.knownActions[0]),this._addInactiveAction(e,r,i)}const t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){const s=t[i];s.useCount++===0&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){const s=t[i];--s.useCount===0&&(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;const t=this._actions,i=this._nActiveActions,r=this.time+=e,s=Math.sign(e),o=this._accuIndex^=1;for(let c=0;c!==i;++c)t[c]._update(r,e,s,o);const a=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)a[c].apply(o);return this}setTime(e){this.time=0;for(let t=0;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,XL).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const qL=new G,Zy=new G;class Dne{constructor(e=new G,t=new G){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){qL.subVectors(e,this.start),Zy.subVectors(this.end,this.start);const i=Zy.dot(Zy);let s=Zy.dot(qL)/i;return t&&(s=$n(s,0,1)),s}closestPointToPoint(e,t,i){const r=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const $L=new G;class kne extends Zt{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const i=new Vt,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,a=1,l=32;o1)for(let f=0;f.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{ZL.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(ZL,t)}}setLength(e,t=e*.2,i=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class $ne extends Ao{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new Vt;r.setAttribute("position",new ht(t,3)),r.setAttribute("color",new ht(i,3));const s=new wr({vertexColors:!0,toneMapped:!1});super(r,s),this.type="AxesHelper"}setColors(e,t,i){const r=new rt,s=this.geometry.attributes.color.array;return r.set(e),r.toArray(s,0),r.toArray(s,3),r.set(t),r.toArray(s,6),r.toArray(s,9),r.set(i),r.toArray(s,12),r.toArray(s,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class Yne{constructor(){this.type="ShapePath",this.color=new rt,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new um,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,i,r){return this.currentPath.quadraticCurveTo(e,t,i,r),this}bezierCurveTo(e,t,i,r,s,o){return this.currentPath.bezierCurveTo(e,t,i,r,s,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(y){const E=[];for(let w=0,M=y.length;wNumber.EPSILON){if(A<0&&(I=E[k],D=-D,P=E[O],A=-A),y.yP.y)continue;if(y.y===I.y){if(y.x===I.x)return!0}else{const R=A*(y.x-I.x)-D*(y.y-I.y);if(R===0)return!0;if(R<0)continue;M=!M}}else{if(y.y!==I.y)continue;if(P.x<=y.x&&y.x<=I.x||I.x<=y.x&&y.x<=P.x)return!0}}return M}const r=xo.isClockWise,s=this.subPaths;if(s.length===0)return[];let o,a,l;const c=[];if(s.length===1)return a=s[0],l=new Qc,l.curves=a.curves,c.push(l),c;let d=!r(s[0].getPoints());d=e?!d:d;const f=[],p=[];let m=[],_=0,S;p[_]=void 0,m[_]=[];for(let y=0,E=s.length;y1){let y=!1,E=0;for(let w=0,M=p.length;w0&&y===!1&&(m=f)}let x;for(let y=0,E=p.length;y{const f=typeof c=="function"?c(e):c;if(f!==e){const p=e;e=d?f:Object.assign({},e,f),t.forEach(m=>m(e,p))}},r=()=>e,s=(c,d=r,f=Object.is)=>{console.warn("[DEPRECATED] Please use `subscribeWithSelector` middleware");let p=d(e);function m(){const _=d(e);if(!f(p,_)){const S=p;c(p=_,S)}}return t.add(m),()=>t.delete(m)},l={setState:i,getState:r,subscribe:(c,d,f)=>d||f?s(c,d,f):(t.add(c),()=>t.delete(c)),destroy:()=>t.clear()};return e=n(i,r,l),l}const eie=typeof window>"u"||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent),eN=eie?q.useEffect:q.useLayoutEffect;function t4(n){const e=typeof n=="function"?Zne(n):n,t=(i=e.getState,r=Object.is)=>{const[,s]=q.useReducer(x=>x+1,0),o=e.getState(),a=q.useRef(o),l=q.useRef(i),c=q.useRef(r),d=q.useRef(!1),f=q.useRef();f.current===void 0&&(f.current=i(o));let p,m=!1;(a.current!==o||l.current!==i||c.current!==r||d.current)&&(p=i(o),m=!r(f.current,p)),eN(()=>{m&&(f.current=p),a.current=o,l.current=i,c.current=r,d.current=!1});const _=q.useRef(o);eN(()=>{const x=()=>{try{const E=e.getState(),w=l.current(E);c.current(f.current,w)||(a.current=E,f.current=w,s())}catch{d.current=!0,s()}},y=e.subscribe(x);return e.getState()!==_.current&&x(),y},[]);const S=m?p:f.current;return q.useDebugValue(S),S};return Object.assign(t,e),t[Symbol.iterator]=function(){console.warn("[useStore, api] = create() is deprecated and will be removed in v4");const i=[t,e];return{next(){const r=i.length<=0;return{value:i.shift(),done:r}}}},t}const tie=n=>typeof n=="object"&&typeof n.then=="function",zc=[];function n4(n,e,t=(i,r)=>i===r){if(n===e)return!0;if(!n||!e)return!1;const i=n.length;if(e.length!==i)return!1;for(let r=0;r0&&(s.timeout&&clearTimeout(s.timeout),s.timeout=setTimeout(s.remove,i.lifespan)),s.response;if(!t)throw s.promise}const r={keys:e,equal:i.equal,remove:()=>{const s=zc.indexOf(r);s!==-1&&zc.splice(s,1)},promise:(tie(n)?n:n(...e)).then(s=>{r.response=s,i.lifespan&&i.lifespan>0&&(r.timeout=setTimeout(r.remove,i.lifespan))}).catch(s=>r.error=s)};if(zc.push(r),!t)throw r.promise}const nie=(n,e,t)=>i4(n,e,!1,t),iie=(n,e,t)=>void i4(n,e,!0,t),rie=n=>{if(n===void 0||n.length===0)zc.splice(0,zc.length);else{const e=zc.find(t=>n4(n,t.keys,t.equal));e&&e.remove()}};var r4={exports:{}},s4={exports:{}},o4={};/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */(function(n){function e(W,J){var Z=W.length;W.push(J);e:for(;0>>1,Me=W[oe];if(0>>1;oer(we,Z))Ner(be,we)?(W[oe]=be,W[Ne]=Z,oe=Ne):(W[oe]=we,W[he]=Z,oe=he);else if(Ner(be,Z))W[oe]=be,W[Ne]=Z,oe=Ne;else break e}}return J}function r(W,J){var Z=W.sortIndex-J.sortIndex;return Z!==0?Z:W.id-J.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;n.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var l=[],c=[],d=1,f=null,p=3,m=!1,_=!1,S=!1,x=typeof setTimeout=="function"?setTimeout:null,y=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function w(W){for(var J=t(c);J!==null;){if(J.callback===null)i(c);else if(J.startTime<=W)i(c),J.sortIndex=J.expirationTime,e(l,J);else break;J=t(c)}}function M(W){if(S=!1,w(W),!_)if(t(l)!==null)_=!0,ee(O);else{var J=t(c);J!==null&&pe(M,J.startTime-W)}}function O(W,J){_=!1,S&&(S=!1,y(P),P=-1),m=!0;var Z=p;try{for(w(J),f=t(l);f!==null&&(!(f.expirationTime>J)||W&&!R());){var oe=f.callback;if(typeof oe=="function"){f.callback=null,p=f.priorityLevel;var Me=oe(f.expirationTime<=J);J=n.unstable_now(),typeof Me=="function"?f.callback=Me:f===t(l)&&i(l),w(J)}else i(l);f=t(l)}if(f!==null)var Re=!0;else{var he=t(c);he!==null&&pe(M,he.startTime-J),Re=!1}return Re}finally{f=null,p=Z,m=!1}}var k=!1,I=null,P=-1,D=5,A=-1;function R(){return!(n.unstable_now()-AW||125oe?(W.sortIndex=Z,e(c,W),t(l)===null&&W===t(c)&&(S?(y(P),P=-1):S=!0,pe(M,Z-oe))):(W.sortIndex=Me,e(l,W),_||m||(_=!0,ee(O))),W},n.unstable_shouldYield=R,n.unstable_wrapCallback=function(W){var J=p;return function(){var Z=p;p=J;try{return W.apply(this,arguments)}finally{p=Z}}}})(o4);s4.exports=o4;var CT=s4.exports;/** + * @license React + * react-reconciler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var sie=function(e){var t={},i=q,r=CT,s=Object.assign;function o(u){for(var h="https://reactjs.org/docs/error-decoder.html?invariant="+u,v=1;vQ||b[$]!==N[Q]){var ye=` +`+b[$].replace(" at new "," at ");return u.displayName&&ye.includes("")&&(ye=ye.replace("",u.displayName)),ye}while(1<=$&&0<=Q);break}}}finally{_t=!1,Error.prepareStackTrace=v}return(u=u?u.displayName||u.name:"")?it(u):""}var ut=Object.prototype.hasOwnProperty,zt=[],Yt=-1;function tn(u){return{current:u}}function Ot(u){0>Yt||(u.current=zt[Yt],zt[Yt]=null,Yt--)}function mt(u,h){Yt++,zt[Yt]=u.current,u.current=h}var ot={},qt=tn(ot),Mt=tn(!1),Gn=ot;function Ui(u,h){var v=u.type.contextTypes;if(!v)return ot;var T=u.stateNode;if(T&&T.__reactInternalMemoizedUnmaskedChildContext===h)return T.__reactInternalMemoizedMaskedChildContext;var b={},N;for(N in v)b[N]=h[N];return T&&(u=u.stateNode,u.__reactInternalMemoizedUnmaskedChildContext=h,u.__reactInternalMemoizedMaskedChildContext=b),b}function dn(u){return u=u.childContextTypes,u!=null}function Js(){Ot(Mt),Ot(qt)}function _n(u,h,v){if(qt.current!==ot)throw Error(o(168));mt(qt,h),mt(Mt,v)}function Er(u,h,v){var T=u.stateNode;if(h=h.childContextTypes,typeof T.getChildContext!="function")return v;T=T.getChildContext();for(var b in T)if(!(b in h))throw Error(o(108,P(u)||"Unknown",b));return s({},v,T)}function Zs(u){return u=(u=u.stateNode)&&u.__reactInternalMemoizedMergedChildContext||ot,Gn=qt.current,mt(qt,u),mt(Mt,Mt.current),!0}function On(u,h,v){var T=u.stateNode;if(!T)throw Error(o(169));v?(u=Er(u,h,Gn),T.__reactInternalMemoizedMergedChildContext=u,Ot(Mt),Ot(qt),mt(qt,u)):Ot(Mt),mt(Mt,v)}var bn=Math.clz32?Math.clz32:ng,Ea=Math.log,Co=Math.LN2;function ng(u){return u>>>=0,u===0?32:31-(Ea(u)/Co|0)|0}var fn=64,bo=4194304;function bs(u){switch(u&-u){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return u&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return u&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return u}}function eo(u,h){var v=u.pendingLanes;if(v===0)return 0;var T=0,b=u.suspendedLanes,N=u.pingedLanes,$=v&268435455;if($!==0){var Q=$&~b;Q!==0?T=bs(Q):(N&=$,N!==0&&(T=bs(N)))}else $=v&~b,$!==0?T=bs($):N!==0&&(T=bs(N));if(T===0)return 0;if(h!==0&&h!==T&&!(h&b)&&(b=T&-T,N=h&-h,b>=N||b===16&&(N&4194240)!==0))return h;if(T&4&&(T|=v&16),h=u.entangledLanes,h!==0)for(u=u.entanglements,h&=T;0v;v++)h.push(u);return h}function jl(u,h,v){u.pendingLanes|=h,h!==536870912&&(u.suspendedLanes=0,u.pingedLanes=0),u=u.eventTimes,h=31-bn(h),u[h]=v}function Hx(u,h){var v=u.pendingLanes&~h;u.pendingLanes=h,u.suspendedLanes=0,u.pingedLanes=0,u.expiredLanes&=h,u.mutableReadLanes&=h,u.entangledLanes&=h,h=u.entanglements;var T=u.eventTimes;for(u=u.expirationTimes;0>=$,b-=$,ne=1<<32-bn(h)+b|v<an?(Si=Dt,Dt=null):Si=Dt.sibling;var ln=wt(ue,Dt,ge[an],tt);if(ln===null){Dt===null&&(Dt=Si);break}u&&Dt&&ln.alternate===null&&h(ue,Dt),re=N(ln,re,an),jt===null?gt=ln:jt.sibling=ln,jt=ln,Dt=Si}if(an===ge.length)return v(ue,Dt),un&&ze(ue,an),gt;if(Dt===null){for(;anan?(Si=Dt,Dt=null):Si=Dt.sibling;var Na=wt(ue,Dt,ln.value,tt);if(Na===null){Dt===null&&(Dt=Si);break}u&&Dt&&Na.alternate===null&&h(ue,Dt),re=N(Na,re,an),jt===null?gt=Na:jt.sibling=Na,jt=Na,Dt=Si}if(ln.done)return v(ue,Dt),un&&ze(ue,an),gt;if(Dt===null){for(;!ln.done;an++,ln=ge.next())ln=Nt(ue,ln.value,tt),ln!==null&&(re=N(ln,re,an),jt===null?gt=ln:jt.sibling=ln,jt=ln);return un&&ze(ue,an),gt}for(Dt=T(ue,Dt);!ln.done;an++,ln=ge.next())ln=xn(Dt,ue,an,ln.value,tt),ln!==null&&(u&&ln.alternate!==null&&Dt.delete(ln.key===null?an:ln.key),re=N(ln,re,an),jt===null?gt=ln:jt.sibling=ln,jt=ln);return u&&Dt.forEach(function(kB){return h(ue,kB)}),un&&ze(ue,an),gt}function ps(ue,re,ge,tt){if(typeof ge=="object"&&ge!==null&&ge.type===d&&ge.key===null&&(ge=ge.props.children),typeof ge=="object"&&ge!==null){switch(ge.$$typeof){case l:e:{for(var gt=ge.key,jt=re;jt!==null;){if(jt.key===gt){if(gt=ge.type,gt===d){if(jt.tag===7){v(ue,jt.sibling),re=b(jt,ge.props.children),re.return=ue,ue=re;break e}}else if(jt.elementType===gt||typeof gt=="object"&>!==null&>.$$typeof===w&&BC(gt)===jt.type){v(ue,jt.sibling),re=b(jt,ge.props),re.ref=$d(ue,jt,ge),re.return=ue,ue=re;break e}v(ue,jt);break}else h(ue,jt);jt=jt.sibling}ge.type===d?(re=oc(ge.props.children,ue.mode,tt,ge.key),re.return=ue,ue=re):(tt=Fg(ge.type,ge.key,ge.props,null,ue.mode,tt),tt.ref=$d(ue,re,ge),tt.return=ue,ue=tt)}return $(ue);case c:e:{for(jt=ge.key;re!==null;){if(re.key===jt)if(re.tag===4&&re.stateNode.containerInfo===ge.containerInfo&&re.stateNode.implementation===ge.implementation){v(ue,re.sibling),re=b(re,ge.children||[]),re.return=ue,ue=re;break e}else{v(ue,re);break}else h(ue,re);re=re.sibling}re=LS(ge,ue.mode,tt),re.return=ue,ue=re}return $(ue);case w:return jt=ge._init,ps(ue,re,jt(ge._payload),tt)}if(le(ge))return yt(ue,re,ge,tt);if(k(ge))return Gi(ue,re,ge,tt);ag(ue,ge)}return typeof ge=="string"&&ge!==""||typeof ge=="number"?(ge=""+ge,re!==null&&re.tag===6?(v(ue,re.sibling),re=b(re,ge),re.return=ue,ue=re):(v(ue,re),re=IS(ge,ue.mode,tt),re.return=ue,ue=re),$(ue)):v(ue,re)}return ps}var ku=zC(!0),HC=zC(!1),Yd={},us=tn(Yd),Kd=tn(Yd),Ou=tn(Yd);function io(u){if(u===Yd)throw Error(o(174));return u}function Yx(u,h){mt(Ou,h),mt(Kd,u),mt(us,Yd),u=pe(h),Ot(us),mt(us,u)}function Uu(){Ot(us),Ot(Kd),Ot(Ou)}function GC(u){var h=io(Ou.current),v=io(us.current);h=W(v,u.type,h),v!==h&&(mt(Kd,u),mt(us,h))}function Kx(u){Kd.current===u&&(Ot(us),Ot(Kd))}var Un=tn(0);function lg(u){for(var h=u;h!==null;){if(h.tag===13){var v=h.memoizedState;if(v!==null&&(v=v.dehydrated,v===null||ss(v)||os(v)))return h}else if(h.tag===19&&h.memoizedProps.revealOrder!==void 0){if(h.flags&128)return h}else if(h.child!==null){h.child.return=h,h=h.child;continue}if(h===u)break;for(;h.sibling===null;){if(h.return===null||h.return===u)return null;h=h.return}h.sibling.return=h.return,h=h.sibling}return null}var Qx=[];function Jx(){for(var u=0;uv?v:4,u(!0);var T=hs.transition;hs.transition={};try{u(!1),h()}finally{Ht=v,hs.transition=T}}function ib(){return ro().memoizedState}function lB(u,h,v){var T=Ra(u);v={lane:T,action:v,hasEagerState:!1,eagerState:null,next:null},rb(u)?sb(h,v):(ob(u,h,v),v=cr(),u=ds(u,T,v),u!==null&&ab(u,h,T))}function cB(u,h,v){var T=Ra(u),b={lane:T,action:v,hasEagerState:!1,eagerState:null,next:null};if(rb(u))sb(h,b);else{ob(u,h,b);var N=u.alternate;if(u.lanes===0&&(N===null||N.lanes===0)&&(N=h.lastRenderedReducer,N!==null))try{var $=h.lastRenderedState,Q=N($,v);if(b.hasEagerState=!0,b.eagerState=Q,Fi(Q,$))return}catch{}finally{}v=cr(),u=ds(u,T,v),u!==null&&ab(u,h,T)}}function rb(u){var h=u.alternate;return u===Wn||h!==null&&h===Wn}function sb(u,h){Qd=ug=!0;var v=u.pending;v===null?h.next=h:(h.next=v.next,v.next=h),u.pending=h}function ob(u,h,v){ai!==null&&u.mode&1&&!(Xt&2)?(u=h.interleaved,u===null?(v.next=v,Gr===null?Gr=[h]:Gr.push(h)):(v.next=u.next,u.next=v),h.interleaved=v):(u=h.pending,u===null?v.next=v:(v.next=u.next,u.next=v),h.pending=v)}function ab(u,h,v){if(v&4194240){var T=h.lanes;T&=u.pendingLanes,v|=T,h.lanes=v,Po(u,v)}}var mg={readContext:Mr,useCallback:zi,useContext:zi,useEffect:zi,useImperativeHandle:zi,useInsertionEffect:zi,useLayoutEffect:zi,useMemo:zi,useReducer:zi,useRef:zi,useState:zi,useDebugValue:zi,useDeferredValue:zi,useTransition:zi,useMutableSource:zi,useSyncExternalStore:zi,useId:zi,unstable_isNewReconciler:!1},uB={readContext:Mr,useCallback:function(u,h){return Do().memoizedState=[u,h===void 0?null:h],u},useContext:Mr,useEffect:iS,useImperativeHandle:function(u,h,v){return v=v!=null?v.concat([u]):null,fg(4194308,4,ZC.bind(null,h,u),v)},useLayoutEffect:function(u,h){return fg(4194308,4,u,h)},useInsertionEffect:function(u,h){return fg(4,2,u,h)},useMemo:function(u,h){var v=Do();return h=h===void 0?null:h,u=u(),v.memoizedState=[u,h],u},useReducer:function(u,h,v){var T=Do();return h=v!==void 0?v(h):h,T.memoizedState=T.baseState=h,u={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:u,lastRenderedState:h},T.queue=u,u=u.dispatch=lB.bind(null,Wn,u),[T.memoizedState,u]},useRef:function(u){var h=Do();return u={current:u},h.memoizedState=u},useState:nS,useDebugValue:rS,useDeferredValue:function(u){var h=nS(u),v=h[0],T=h[1];return iS(function(){var b=hs.transition;hs.transition={};try{T(u)}finally{hs.transition=b}},[u]),v},useTransition:function(){var u=nS(!1),h=u[0];return u=aB.bind(null,u[1]),Do().memoizedState=u,[h,u]},useMutableSource:function(){},useSyncExternalStore:function(u,h,v){var T=Wn,b=Do();if(un){if(v===void 0)throw Error(o(407));v=v()}else{if(v=h(),ai===null)throw Error(o(349));Fu&30||XC(T,h,v)}b.memoizedState=v;var N={value:v,getSnapshot:h};return b.queue=N,iS($C.bind(null,T,N,u),[u]),T.flags|=2048,Zd(9,qC.bind(null,T,N,v,h),void 0,null),v},useId:function(){var u=Do(),h=ai.identifierPrefix;if(un){var v=fe,T=ne;v=(T&~(1<<32-bn(T)-1)).toString(32)+v,h=":"+h+"R"+v,v=Jd++,0ES&&(h.flags|=128,T=!0,rf(b,!1),h.lanes=4194304)}else{if(!T)if(u=lg(N),u!==null){if(h.flags|=128,T=!0,u=u.updateQueue,u!==null&&(h.updateQueue=u,h.flags|=4),rf(b,!0),b.tail===null&&b.tailMode==="hidden"&&!N.alternate&&!un)return Hi(h),null}else 2*oi()-b.renderingStartTime>ES&&v!==1073741824&&(h.flags|=128,T=!0,rf(b,!1),h.lanes=4194304);b.isBackwards?(N.sibling=h.child,h.child=N):(u=b.last,u!==null?u.sibling=N:h.child=N,b.last=N)}return b.tail!==null?(h=b.tail,b.rendering=h,b.tail=h.sibling,b.renderingStartTime=oi(),h.sibling=null,u=Un.current,mt(Un,T?u&1|2:u&1),h):(Hi(h),null);case 22:case 23:return bS(),T=h.memoizedState!==null,u!==null&&u.memoizedState!==null!==T&&(h.flags|=8192),T&&h.mode&1?Xr&1073741824&&(Hi(h),ke&&h.subtreeFlags&6&&(h.flags|=8192)):Hi(h),null;case 24:return null;case 25:return null}throw Error(o(156,h.tag))}var mB=a.ReactCurrentOwner,jr=!1;function lr(u,h,v,T){h.child=u===null?HC(h,null,v,T):ku(h,u.child,v,T)}function mb(u,h,v,T,b){v=v.render;var N=h.ref;return Ps(h,b),T=eS(u,h,v,T,N,b),v=tS(),u!==null&&!jr?(h.updateQueue=u.updateQueue,h.flags&=-2053,u.lanes&=~b,ko(u,h,b)):(un&&v&&Qn(h),h.flags|=1,lr(u,h,T,b),h.child)}function gb(u,h,v,T,b){if(u===null){var N=v.type;return typeof N=="function"&&!RS(N)&&N.defaultProps===void 0&&v.compare===null&&v.defaultProps===void 0?(h.tag=15,h.type=N,yb(u,h,N,T,b)):(u=Fg(v.type,null,T,h,h.mode,b),u.ref=h.ref,u.return=h,h.child=u)}if(N=u.child,!(u.lanes&b)){var $=N.memoizedProps;if(v=v.compare,v=v!==null?v:ql,v($,T)&&u.ref===h.ref)return ko(u,h,b)}return h.flags|=1,u=La(N,T),u.ref=h.ref,u.return=h,h.child=u}function yb(u,h,v,T,b){if(u!==null&&ql(u.memoizedProps,T)&&u.ref===h.ref)if(jr=!1,(u.lanes&b)!==0)u.flags&131072&&(jr=!0);else return h.lanes=u.lanes,ko(u,h,b);return aS(u,h,v,T,b)}function vb(u,h,v){var T=h.pendingProps,b=T.children,N=u!==null?u.memoizedState:null;if(T.mode==="hidden")if(!(h.mode&1))h.memoizedState={baseLanes:0,cachePool:null},mt(Vu,Xr),Xr|=v;else if(v&1073741824)h.memoizedState={baseLanes:0,cachePool:null},T=N!==null?N.baseLanes:v,mt(Vu,Xr),Xr|=T;else return u=N!==null?N.baseLanes|v:v,h.lanes=h.childLanes=1073741824,h.memoizedState={baseLanes:u,cachePool:null},h.updateQueue=null,mt(Vu,Xr),Xr|=u,null;else N!==null?(T=N.baseLanes|v,h.memoizedState=null):T=v,mt(Vu,Xr),Xr|=T;return lr(u,h,b,v),h.child}function _b(u,h){var v=h.ref;(u===null&&v!==null||u!==null&&u.ref!==v)&&(h.flags|=512,h.flags|=2097152)}function aS(u,h,v,T,b){var N=dn(v)?Gn:qt.current;return N=Ui(h,N),Ps(h,b),v=eS(u,h,v,T,N,b),T=tS(),u!==null&&!jr?(h.updateQueue=u.updateQueue,h.flags&=-2053,u.lanes&=~b,ko(u,h,b)):(un&&T&&Qn(h),h.flags|=1,lr(u,h,v,b),h.child)}function xb(u,h,v,T,b){if(dn(v)){var N=!0;Zs(h)}else N=!1;if(Ps(h,b),h.stateNode===null)u!==null&&(u.alternate=null,h.alternate=null,h.flags|=2),Xd(h,v,T),Ci(h,v,T,b),T=!0;else if(u===null){var $=h.stateNode,Q=h.memoizedProps;$.props=Q;var ye=$.context,He=v.contextType;typeof He=="object"&&He!==null?He=Mr(He):(He=dn(v)?Gn:qt.current,He=Ui(h,He));var ct=v.getDerivedStateFromProps,Nt=typeof ct=="function"||typeof $.getSnapshotBeforeUpdate=="function";Nt||typeof $.UNSAFE_componentWillReceiveProps!="function"&&typeof $.componentWillReceiveProps!="function"||(Q!==T||ye!==He)&&Zl(h,$,T,He),Cr=!1;var wt=h.memoizedState;$.state=wt,Ql(h,T,$,b),ye=h.memoizedState,Q!==T||wt!==ye||Mt.current||Cr?(typeof ct=="function"&&(Lu(h,v,ct,T),ye=h.memoizedState),(Q=Cr||jd(h,v,Q,T,wt,ye,He))?(Nt||typeof $.UNSAFE_componentWillMount!="function"&&typeof $.componentWillMount!="function"||(typeof $.componentWillMount=="function"&&$.componentWillMount(),typeof $.UNSAFE_componentWillMount=="function"&&$.UNSAFE_componentWillMount()),typeof $.componentDidMount=="function"&&(h.flags|=4194308)):(typeof $.componentDidMount=="function"&&(h.flags|=4194308),h.memoizedProps=T,h.memoizedState=ye),$.props=T,$.state=ye,$.context=He,T=Q):(typeof $.componentDidMount=="function"&&(h.flags|=4194308),T=!1)}else{$=h.stateNode,Gd(u,h),Q=h.memoizedProps,He=h.type===h.elementType?Q:Tr(h.type,Q),$.props=He,Nt=h.pendingProps,wt=$.context,ye=v.contextType,typeof ye=="object"&&ye!==null?ye=Mr(ye):(ye=dn(v)?Gn:qt.current,ye=Ui(h,ye));var xn=v.getDerivedStateFromProps;(ct=typeof xn=="function"||typeof $.getSnapshotBeforeUpdate=="function")||typeof $.UNSAFE_componentWillReceiveProps!="function"&&typeof $.componentWillReceiveProps!="function"||(Q!==Nt||wt!==ye)&&Zl(h,$,T,ye),Cr=!1,wt=h.memoizedState,$.state=wt,Ql(h,T,$,b);var yt=h.memoizedState;Q!==Nt||wt!==yt||Mt.current||Cr?(typeof xn=="function"&&(Lu(h,v,xn,T),yt=h.memoizedState),(He=Cr||jd(h,v,He,T,wt,yt,ye)||!1)?(ct||typeof $.UNSAFE_componentWillUpdate!="function"&&typeof $.componentWillUpdate!="function"||(typeof $.componentWillUpdate=="function"&&$.componentWillUpdate(T,yt,ye),typeof $.UNSAFE_componentWillUpdate=="function"&&$.UNSAFE_componentWillUpdate(T,yt,ye)),typeof $.componentDidUpdate=="function"&&(h.flags|=4),typeof $.getSnapshotBeforeUpdate=="function"&&(h.flags|=1024)):(typeof $.componentDidUpdate!="function"||Q===u.memoizedProps&&wt===u.memoizedState||(h.flags|=4),typeof $.getSnapshotBeforeUpdate!="function"||Q===u.memoizedProps&&wt===u.memoizedState||(h.flags|=1024),h.memoizedProps=T,h.memoizedState=yt),$.props=T,$.state=yt,$.context=ye,T=He):(typeof $.componentDidUpdate!="function"||Q===u.memoizedProps&&wt===u.memoizedState||(h.flags|=4),typeof $.getSnapshotBeforeUpdate!="function"||Q===u.memoizedProps&&wt===u.memoizedState||(h.flags|=1024),T=!1)}return lS(u,h,v,T,N,b)}function lS(u,h,v,T,b,N){_b(u,h);var $=(h.flags&128)!==0;if(!T&&!$)return b&&On(h,v,!1),ko(u,h,N);T=h.stateNode,mB.current=h;var Q=$&&typeof v.getDerivedStateFromError!="function"?null:T.render();return h.flags|=1,u!==null&&$?(h.child=ku(h,u.child,null,N),h.child=ku(h,null,Q,N)):lr(u,h,Q,N),h.memoizedState=T.state,b&&On(h,v,!0),h.child}function Sb(u){var h=u.stateNode;h.pendingContext?_n(u,h.pendingContext,h.pendingContext!==h.context):h.context&&_n(u,h.context,!1),Yx(u,h.containerInfo)}function wb(u,h,v,T,b){return Du(),$x(b),h.flags|=256,lr(u,h,v,T),h.child}var vg={dehydrated:null,treeContext:null,retryLane:0};function _g(u){return{baseLanes:u,cachePool:null}}function Eb(u,h,v){var T=h.pendingProps,b=Un.current,N=!1,$=(h.flags&128)!==0,Q;if((Q=$)||(Q=u!==null&&u.memoizedState===null?!1:(b&2)!==0),Q?(N=!0,h.flags&=-129):(u===null||u.memoizedState!==null)&&(b|=1),mt(Un,b&1),u===null)return qx(h),u=h.memoizedState,u!==null&&(u=u.dehydrated,u!==null)?(h.mode&1?os(u)?h.lanes=8:h.lanes=1073741824:h.lanes=1,null):(b=T.children,u=T.fallback,N?(T=h.mode,N=h.child,b={mode:"hidden",children:b},!(T&1)&&N!==null?(N.childLanes=0,N.pendingProps=b):N=Vg(b,T,0,null),u=oc(u,T,v,null),N.return=h,u.return=h,N.sibling=u,h.child=N,h.child.memoizedState=_g(v),h.memoizedState=vg,u):cS(h,b));if(b=u.memoizedState,b!==null){if(Q=b.dehydrated,Q!==null){if($)return h.flags&256?(h.flags&=-257,xg(u,h,v,Error(o(422)))):h.memoizedState!==null?(h.child=u.child,h.flags|=128,null):(N=T.fallback,b=h.mode,T=Vg({mode:"visible",children:T.children},b,0,null),N=oc(N,b,v,null),N.flags|=2,T.return=h,N.return=h,T.sibling=N,h.child=T,h.mode&1&&ku(h,u.child,null,v),h.child.memoizedState=_g(v),h.memoizedState=vg,N);if(!(h.mode&1))h=xg(u,h,v,null);else if(os(Q))h=xg(u,h,v,Error(o(419)));else if(T=(v&u.childLanes)!==0,jr||T){if(T=ai,T!==null){switch(v&-v){case 4:N=2;break;case 16:N=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:N=32;break;case 536870912:N=268435456;break;default:N=0}T=N&(T.suspendedLanes|v)?0:N,T!==0&&T!==b.retryLane&&(b.retryLane=T,ds(u,T,-1))}PS(),h=xg(u,h,v,Error(o(421)))}else ss(Q)?(h.flags|=128,h.child=u.child,h=bB.bind(null,u),Eu(Q,h),h=null):(v=b.treeContext,j&&(gn=Tu(Q),mn=h,un=!0,Vi=null,bi=!1,v!==null&&(C[L++]=ne,C[L++]=fe,C[L++]=z,ne=v.id,fe=v.overflow,z=h)),h=cS(h,h.pendingProps.children),h.flags|=4096);return h}return N?(T=Ab(u,h,T.children,T.fallback,v),N=h.child,b=u.child.memoizedState,N.memoizedState=b===null?_g(v):{baseLanes:b.baseLanes|v,cachePool:null},N.childLanes=u.childLanes&~v,h.memoizedState=vg,T):(v=Tb(u,h,T.children,v),h.memoizedState=null,v)}return N?(T=Ab(u,h,T.children,T.fallback,v),N=h.child,b=u.child.memoizedState,N.memoizedState=b===null?_g(v):{baseLanes:b.baseLanes|v,cachePool:null},N.childLanes=u.childLanes&~v,h.memoizedState=vg,T):(v=Tb(u,h,T.children,v),h.memoizedState=null,v)}function cS(u,h){return h=Vg({mode:"visible",children:h},u.mode,0,null),h.return=u,u.child=h}function Tb(u,h,v,T){var b=u.child;return u=b.sibling,v=La(b,{mode:"visible",children:v}),!(h.mode&1)&&(v.lanes=T),v.return=h,v.sibling=null,u!==null&&(T=h.deletions,T===null?(h.deletions=[u],h.flags|=16):T.push(u)),h.child=v}function Ab(u,h,v,T,b){var N=h.mode;u=u.child;var $=u.sibling,Q={mode:"hidden",children:v};return!(N&1)&&h.child!==u?(v=h.child,v.childLanes=0,v.pendingProps=Q,h.deletions=null):(v=La(u,Q),v.subtreeFlags=u.subtreeFlags&14680064),$!==null?T=La($,T):(T=oc(T,N,b,null),T.flags|=2),T.return=h,v.return=h,v.sibling=T,h.child=v,T}function xg(u,h,v,T){return T!==null&&$x(T),ku(h,u.child,null,v),u=cS(h,h.pendingProps.children),u.flags|=2,h.memoizedState=null,u}function Mb(u,h,v){u.lanes|=h;var T=u.alternate;T!==null&&(T.lanes|=h),Ru(u.return,h,v)}function uS(u,h,v,T,b){var N=u.memoizedState;N===null?u.memoizedState={isBackwards:h,rendering:null,renderingStartTime:0,last:T,tail:v,tailMode:b}:(N.isBackwards=h,N.rendering=null,N.renderingStartTime=0,N.last=T,N.tail=v,N.tailMode=b)}function Cb(u,h,v){var T=h.pendingProps,b=T.revealOrder,N=T.tail;if(lr(u,h,T.children,v),T=Un.current,T&2)T=T&1|2,h.flags|=128;else{if(u!==null&&u.flags&128)e:for(u=h.child;u!==null;){if(u.tag===13)u.memoizedState!==null&&Mb(u,v,h);else if(u.tag===19)Mb(u,v,h);else if(u.child!==null){u.child.return=u,u=u.child;continue}if(u===h)break e;for(;u.sibling===null;){if(u.return===null||u.return===h)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}T&=1}if(mt(Un,T),!(h.mode&1))h.memoizedState=null;else switch(b){case"forwards":for(v=h.child,b=null;v!==null;)u=v.alternate,u!==null&&lg(u)===null&&(b=v),v=v.sibling;v=b,v===null?(b=h.child,h.child=null):(b=v.sibling,v.sibling=null),uS(h,!1,b,v,N);break;case"backwards":for(v=null,b=h.child,h.child=null;b!==null;){if(u=b.alternate,u!==null&&lg(u)===null){h.child=b;break}u=b.sibling,b.sibling=v,v=b,b=u}uS(h,!0,v,null,N);break;case"together":uS(h,!1,null,null,void 0);break;default:h.memoizedState=null}return h.child}function ko(u,h,v){if(u!==null&&(h.dependencies=u.dependencies),Bu|=h.lanes,!(v&h.childLanes))return null;if(u!==null&&h.child!==u.child)throw Error(o(153));if(h.child!==null){for(u=h.child,v=La(u,u.pendingProps),h.child=v,v.return=h;u.sibling!==null;)u=u.sibling,v=v.sibling=La(u,u.pendingProps),v.return=h;v.sibling=null}return h.child}function gB(u,h,v){switch(h.tag){case 3:Sb(h),Du();break;case 5:GC(h);break;case 1:dn(h.type)&&Zs(h);break;case 4:Yx(h,h.stateNode.containerInfo);break;case 10:Pu(h,h.type._context,h.memoizedProps.value);break;case 13:var T=h.memoizedState;if(T!==null)return T.dehydrated!==null?(mt(Un,Un.current&1),h.flags|=128,null):v&h.child.childLanes?Eb(u,h,v):(mt(Un,Un.current&1),u=ko(u,h,v),u!==null?u.sibling:null);mt(Un,Un.current&1);break;case 19:if(T=(v&h.childLanes)!==0,u.flags&128){if(T)return Cb(u,h,v);h.flags|=128}var b=h.memoizedState;if(b!==null&&(b.rendering=null,b.tail=null,b.lastEffect=null),mt(Un,Un.current),T)break;return null;case 22:case 23:return h.lanes=0,vb(u,h,v)}return ko(u,h,v)}function yB(u,h){switch(Kt(h),h.tag){case 1:return dn(h.type)&&Js(),u=h.flags,u&65536?(h.flags=u&-65537|128,h):null;case 3:return Uu(),Ot(Mt),Ot(qt),Jx(),u=h.flags,u&65536&&!(u&128)?(h.flags=u&-65537|128,h):null;case 5:return Kx(h),null;case 13:if(Ot(Un),u=h.memoizedState,u!==null&&u.dehydrated!==null){if(h.alternate===null)throw Error(o(340));Du()}return u=h.flags,u&65536?(h.flags=u&-65537|128,h):null;case 19:return Ot(Un),null;case 4:return Uu(),null;case 10:return Ca(h.type._context),null;case 22:case 23:return bS(),null;case 24:return null;default:return null}}var Sg=!1,tc=!1,vB=typeof WeakSet=="function"?WeakSet:Set,Je=null;function wg(u,h){var v=u.ref;if(v!==null)if(typeof v=="function")try{v(null)}catch(T){Rr(u,h,T)}else v.current=null}function hS(u,h,v){try{v()}catch(T){Rr(u,h,T)}}var bb=!1;function _B(u,h){for(J(u.containerInfo),Je=h;Je!==null;)if(u=Je,h=u.child,(u.subtreeFlags&1028)!==0&&h!==null)h.return=u,Je=h;else for(;Je!==null;){u=Je;try{var v=u.alternate;if(u.flags&1024)switch(u.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var T=v.memoizedProps,b=v.memoizedState,N=u.stateNode,$=N.getSnapshotBeforeUpdate(u.elementType===u.type?T:Tr(u.type,T),b);N.__reactInternalSnapshotBeforeUpdate=$}break;case 3:ke&&Xe(u.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(Q){Rr(u,u.return,Q)}if(h=u.sibling,h!==null){h.return=u.return,Je=h;break}Je=u.return}return v=bb,bb=!1,v}function nc(u,h,v){var T=h.updateQueue;if(T=T!==null?T.lastEffect:null,T!==null){var b=T=T.next;do{if((b.tag&u)===u){var N=b.destroy;b.destroy=void 0,N!==void 0&&hS(h,v,N)}b=b.next}while(b!==T)}}function sf(u,h){if(h=h.updateQueue,h=h!==null?h.lastEffect:null,h!==null){var v=h=h.next;do{if((v.tag&u)===u){var T=v.create;v.destroy=T()}v=v.next}while(v!==h)}}function dS(u){var h=u.ref;if(h!==null){var v=u.stateNode;switch(u.tag){case 5:u=ee(v);break;default:u=v}typeof h=="function"?h(u):h.current=u}}function Pb(u,h,v){if(ar&&typeof ar.onCommitFiberUnmount=="function")try{ar.onCommitFiberUnmount(Ro,h)}catch{}switch(h.tag){case 0:case 11:case 14:case 15:if(u=h.updateQueue,u!==null&&(u=u.lastEffect,u!==null)){var T=u=u.next;do{var b=T,N=b.destroy;b=b.tag,N!==void 0&&(b&2||b&4)&&hS(h,v,N),T=T.next}while(T!==u)}break;case 1:if(wg(h,v),u=h.stateNode,typeof u.componentWillUnmount=="function")try{u.props=h.memoizedProps,u.state=h.memoizedState,u.componentWillUnmount()}catch($){Rr(h,v,$)}break;case 5:wg(h,v);break;case 4:ke?kb(u,h,v):xe&&xe&&(h=h.stateNode.containerInfo,v=At(h),It(h,v))}}function Rb(u,h,v){for(var T=h;;)if(Pb(u,T,v),T.child===null||ke&&T.tag===4){if(T===h)break;for(;T.sibling===null;){if(T.return===null||T.return===h)return;T=T.return}T.sibling.return=T.return,T=T.sibling}else T.child.return=T,T=T.child}function Ib(u){var h=u.alternate;h!==null&&(u.alternate=null,Ib(h)),u.child=null,u.deletions=null,u.sibling=null,u.tag===5&&(h=u.stateNode,h!==null&&Ue(h)),u.stateNode=null,u.return=null,u.dependencies=null,u.memoizedProps=null,u.memoizedState=null,u.pendingProps=null,u.stateNode=null,u.updateQueue=null}function Lb(u){return u.tag===5||u.tag===3||u.tag===4}function Nb(u){e:for(;;){for(;u.sibling===null;){if(u.return===null||Lb(u.return))return null;u=u.return}for(u.sibling.return=u.return,u=u.sibling;u.tag!==5&&u.tag!==6&&u.tag!==18;){if(u.flags&2||u.child===null||u.tag===4)continue e;u.child.return=u,u=u.child}if(!(u.flags&2))return u.stateNode}}function Db(u){if(ke){e:{for(var h=u.return;h!==null;){if(Lb(h))break e;h=h.return}throw Error(o(160))}var v=h;switch(v.tag){case 5:h=v.stateNode,v.flags&32&&(je(h),v.flags&=-33),v=Nb(u),pS(u,v,h);break;case 3:case 4:h=v.stateNode.containerInfo,v=Nb(u),fS(u,v,h);break;default:throw Error(o(161))}}}function fS(u,h,v){var T=u.tag;if(T===5||T===6)u=u.stateNode,h?et(v,u,h):Lt(v,u);else if(T!==4&&(u=u.child,u!==null))for(fS(u,h,v),u=u.sibling;u!==null;)fS(u,h,v),u=u.sibling}function pS(u,h,v){var T=u.tag;if(T===5||T===6)u=u.stateNode,h?vt(v,u,h):Ge(v,u);else if(T!==4&&(u=u.child,u!==null))for(pS(u,h,v),u=u.sibling;u!==null;)pS(u,h,v),u=u.sibling}function kb(u,h,v){for(var T=h,b=!1,N,$;;){if(!b){b=T.return;e:for(;;){if(b===null)throw Error(o(160));switch(N=b.stateNode,b.tag){case 5:$=!1;break e;case 3:N=N.containerInfo,$=!0;break e;case 4:N=N.containerInfo,$=!0;break e}b=b.return}b=!0}if(T.tag===5||T.tag===6)Rb(u,T,v),$?ve(N,T.stateNode):K(N,T.stateNode);else if(T.tag===18)$?de(N,T.stateNode):ce(N,T.stateNode);else if(T.tag===4){if(T.child!==null){N=T.stateNode.containerInfo,$=!0,T.child.return=T,T=T.child;continue}}else if(Pb(u,T,v),T.child!==null){T.child.return=T,T=T.child;continue}if(T===h)break;for(;T.sibling===null;){if(T.return===null||T.return===h)return;T=T.return,T.tag===4&&(b=!1)}T.sibling.return=T.return,T=T.sibling}}function mS(u,h){if(ke){switch(h.tag){case 0:case 11:case 14:case 15:nc(3,h,h.return),sf(3,h),nc(5,h,h.return);return;case 1:return;case 5:var v=h.stateNode;if(v!=null){var T=h.memoizedProps;u=u!==null?u.memoizedProps:T;var b=h.type,N=h.updateQueue;h.updateQueue=null,N!==null&&Et(v,N,b,u,T,h)}return;case 6:if(h.stateNode===null)throw Error(o(162));v=h.memoizedProps,Le(h.stateNode,u!==null?u.memoizedProps:v,v);return;case 3:j&&u!==null&&u.memoizedState.isDehydrated&&H(h.stateNode.containerInfo);return;case 12:return;case 13:Eg(h);return;case 19:Eg(h);return;case 17:return}throw Error(o(163))}switch(h.tag){case 0:case 11:case 14:case 15:nc(3,h,h.return),sf(3,h),nc(5,h,h.return);return;case 12:return;case 13:Eg(h);return;case 19:Eg(h);return;case 3:j&&u!==null&&u.memoizedState.isDehydrated&&H(h.stateNode.containerInfo);break;case 22:case 23:return}e:if(xe){switch(h.tag){case 1:case 5:case 6:break e;case 3:case 4:h=h.stateNode,It(h.containerInfo,h.pendingChildren);break e}throw Error(o(163))}}function Eg(u){var h=u.updateQueue;if(h!==null){u.updateQueue=null;var v=u.stateNode;v===null&&(v=u.stateNode=new vB),h.forEach(function(T){var b=PB.bind(null,u,T);v.has(T)||(v.add(T),T.then(b,b))})}}function xB(u,h){for(Je=h;Je!==null;){h=Je;var v=h.deletions;if(v!==null)for(var T=0;T";case Ag:return":has("+(vS(u)||"")+")";case Mg:return'[role="'+u.value+'"]';case bg:return'"'+u.value+'"';case Cg:return'[data-testname="'+u.value+'"]';default:throw Error(o(365))}}function Bb(u,h){var v=[];u=[u,0];for(var T=0;Tb&&(b=$),T&=~N}if(T=b,T=oi()-T,T=(120>T?120:480>T?480:1080>T?1080:1920>T?1920:3e3>T?3e3:4320>T?4320:1960*wB(T/1960))-T,10u?16:u,Pa===null)var T=!1;else{if(u=Pa,Pa=null,Ng=0,Xt&6)throw Error(o(331));var b=Xt;for(Xt|=4,Je=u.current;Je!==null;){var N=Je,$=N.child;if(Je.flags&16){var Q=N.deletions;if(Q!==null){for(var ye=0;yeoi()-wS?ic(u,0):SS|=v),Pr(u,h)}function Yb(u,h){h===0&&(u.mode&1?(h=bo,bo<<=1,!(bo&130023424)&&(bo=4194304)):h=1);var v=cr();u=Og(u,h),u!==null&&(jl(u,h,v),Pr(u,v))}function bB(u){var h=u.memoizedState,v=0;h!==null&&(v=h.retryLane),Yb(u,v)}function PB(u,h){var v=0;switch(u.tag){case 13:var T=u.stateNode,b=u.memoizedState;b!==null&&(v=b.retryLane);break;case 19:T=u.stateNode;break;default:throw Error(o(314))}T!==null&&T.delete(h),Yb(u,v)}var Kb;Kb=function(u,h,v){if(u!==null)if(u.memoizedProps!==h.pendingProps||Mt.current)jr=!0;else{if(!(u.lanes&v)&&!(h.flags&128))return jr=!1,gB(u,h,v);jr=!!(u.flags&131072)}else jr=!1,un&&h.flags&1048576&&pn(h,g,h.index);switch(h.lanes=0,h.tag){case 2:var T=h.type;u!==null&&(u.alternate=null,h.alternate=null,h.flags|=2),u=h.pendingProps;var b=Ui(h,qt.current);Ps(h,v),b=eS(null,h,T,u,b,v);var N=tS();return h.flags|=1,typeof b=="object"&&b!==null&&typeof b.render=="function"&&b.$$typeof===void 0?(h.tag=1,h.memoizedState=null,h.updateQueue=null,dn(T)?(N=!0,Zs(h)):N=!1,h.memoizedState=b.state!==null&&b.state!==void 0?b.state:null,Iu(h),b.updater=Jl,h.stateNode=b,b._reactInternals=h,Ci(h,T,u,v),h=lS(null,h,T,!0,N,v)):(h.tag=0,un&&N&&Qn(h),lr(null,h,b,v),h=h.child),h;case 16:T=h.elementType;e:{switch(u!==null&&(u.alternate=null,h.alternate=null,h.flags|=2),u=h.pendingProps,b=T._init,T=b(T._payload),h.type=T,b=h.tag=IB(T),u=Tr(T,u),b){case 0:h=aS(null,h,T,u,v);break e;case 1:h=xb(null,h,T,u,v);break e;case 11:h=mb(null,h,T,u,v);break e;case 14:h=gb(null,h,T,Tr(T.type,u),v);break e}throw Error(o(306,T,""))}return h;case 0:return T=h.type,b=h.pendingProps,b=h.elementType===T?b:Tr(T,b),aS(u,h,T,b,v);case 1:return T=h.type,b=h.pendingProps,b=h.elementType===T?b:Tr(T,b),xb(u,h,T,b,v);case 3:e:{if(Sb(h),u===null)throw Error(o(387));T=h.pendingProps,N=h.memoizedState,b=N.element,Gd(u,h),Ql(h,T,null,v);var $=h.memoizedState;if(T=$.element,j&&N.isDehydrated)if(N={element:T,isDehydrated:!1,cache:$.cache,transitions:$.transitions},h.updateQueue.baseState=N,h.memoizedState=N,h.flags&256){b=Error(o(423)),h=wb(u,h,T,v,b);break e}else if(T!==b){b=Error(o(424)),h=wb(u,h,T,v,b);break e}else for(j&&(gn=Sa(h.stateNode.containerInfo),mn=h,un=!0,Vi=null,bi=!1),v=HC(h,null,T,v),h.child=v;v;)v.flags=v.flags&-3|4096,v=v.sibling;else{if(Du(),T===b){h=ko(u,h,v);break e}lr(u,h,T,v)}h=h.child}return h;case 5:return GC(h),u===null&&qx(h),T=h.type,b=h.pendingProps,N=u!==null?u.memoizedProps:null,$=b.children,we(T,b)?$=null:N!==null&&we(T,N)&&(h.flags|=32),_b(u,h),lr(u,h,$,v),h.child;case 6:return u===null&&qx(h),null;case 13:return Eb(u,h,v);case 4:return Yx(h,h.stateNode.containerInfo),T=h.pendingProps,u===null?h.child=ku(h,null,T,v):lr(u,h,T,v),h.child;case 11:return T=h.type,b=h.pendingProps,b=h.elementType===T?b:Tr(T,b),mb(u,h,T,b,v);case 7:return lr(u,h,h.pendingProps,v),h.child;case 8:return lr(u,h,h.pendingProps.children,v),h.child;case 12:return lr(u,h,h.pendingProps.children,v),h.child;case 10:e:{if(T=h.type._context,b=h.pendingProps,N=h.memoizedProps,$=b.value,Pu(h,T,$),N!==null)if(Fi(N.value,$)){if(N.children===b.children&&!Mt.current){h=ko(u,h,v);break e}}else for(N=h.child,N!==null&&(N.return=h);N!==null;){var Q=N.dependencies;if(Q!==null){$=N.child;for(var ye=Q.firstContext;ye!==null;){if(ye.context===T){if(N.tag===1){ye=Wr(-1,v&-v),ye.tag=2;var He=N.updateQueue;if(He!==null){He=He.shared;var ct=He.pending;ct===null?ye.next=ye:(ye.next=ct.next,ct.next=ye),He.pending=ye}}N.lanes|=v,ye=N.alternate,ye!==null&&(ye.lanes|=v),Ru(N.return,v,h),Q.lanes|=v;break}ye=ye.next}}else if(N.tag===10)$=N.type===h.type?null:N.child;else if(N.tag===18){if($=N.return,$===null)throw Error(o(341));$.lanes|=v,Q=$.alternate,Q!==null&&(Q.lanes|=v),Ru($,v,h),$=N.sibling}else $=N.child;if($!==null)$.return=N;else for($=N;$!==null;){if($===h){$=null;break}if(N=$.sibling,N!==null){N.return=$.return,$=N;break}$=$.return}N=$}lr(u,h,b.children,v),h=h.child}return h;case 9:return b=h.type,T=h.pendingProps.children,Ps(h,v),b=Mr(b),T=T(b),h.flags|=1,lr(u,h,T,v),h.child;case 14:return T=h.type,b=Tr(T,h.pendingProps),b=Tr(T.type,b),gb(u,h,T,b,v);case 15:return yb(u,h,h.type,h.pendingProps,v);case 17:return T=h.type,b=h.pendingProps,b=h.elementType===T?b:Tr(T,b),u!==null&&(u.alternate=null,h.alternate=null,h.flags|=2),h.tag=1,dn(T)?(u=!0,Zs(h)):u=!1,Ps(h,v),Xd(h,T,b),Ci(h,T,b,v),lS(null,h,T,!0,u,v);case 19:return Cb(u,h,v);case 22:return vb(u,h,v)}throw Error(o(156,h.tag))};function Qb(u,h){return Mu(u,h)}function RB(u,h,v,T){this.tag=u,this.key=v,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=h,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=T,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function fs(u,h,v,T){return new RB(u,h,v,T)}function RS(u){return u=u.prototype,!(!u||!u.isReactComponent)}function IB(u){if(typeof u=="function")return RS(u)?1:0;if(u!=null){if(u=u.$$typeof,u===S)return 11;if(u===E)return 14}return 2}function La(u,h){var v=u.alternate;return v===null?(v=fs(u.tag,h,u.key,u.mode),v.elementType=u.elementType,v.type=u.type,v.stateNode=u.stateNode,v.alternate=u,u.alternate=v):(v.pendingProps=h,v.type=u.type,v.flags=0,v.subtreeFlags=0,v.deletions=null),v.flags=u.flags&14680064,v.childLanes=u.childLanes,v.lanes=u.lanes,v.child=u.child,v.memoizedProps=u.memoizedProps,v.memoizedState=u.memoizedState,v.updateQueue=u.updateQueue,h=u.dependencies,v.dependencies=h===null?null:{lanes:h.lanes,firstContext:h.firstContext},v.sibling=u.sibling,v.index=u.index,v.ref=u.ref,v}function Fg(u,h,v,T,b,N){var $=2;if(T=u,typeof u=="function")RS(u)&&($=1);else if(typeof u=="string")$=5;else e:switch(u){case d:return oc(v.children,b,N,h);case f:$=8,b|=8;break;case p:return u=fs(12,v,h,b|2),u.elementType=p,u.lanes=N,u;case x:return u=fs(13,v,h,b),u.elementType=x,u.lanes=N,u;case y:return u=fs(19,v,h,b),u.elementType=y,u.lanes=N,u;case M:return Vg(v,b,N,h);default:if(typeof u=="object"&&u!==null)switch(u.$$typeof){case m:$=10;break e;case _:$=9;break e;case S:$=11;break e;case E:$=14;break e;case w:$=16,T=null;break e}throw Error(o(130,u==null?u:typeof u,""))}return h=fs($,v,h,b),h.elementType=u,h.type=T,h.lanes=N,h}function oc(u,h,v,T){return u=fs(7,u,T,h),u.lanes=v,u}function Vg(u,h,v,T){return u=fs(22,u,T,h),u.elementType=M,u.lanes=v,u.stateNode={},u}function IS(u,h,v){return u=fs(6,u,null,h),u.lanes=v,u}function LS(u,h,v){return h=fs(4,u.children!==null?u.children:[],u.key,h),h.lanes=v,h.stateNode={containerInfo:u.containerInfo,pendingChildren:null,implementation:u.implementation},h}function LB(u,h,v,T,b){this.tag=h,this.containerInfo=u,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=dt,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Fd(0),this.expirationTimes=Fd(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Fd(0),this.identifierPrefix=T,this.onRecoverableError=b,j&&(this.mutableSourceEagerHydrationData=null)}function Jb(u,h,v,T,b,N,$,Q,ye){return u=new LB(u,h,v,Q,ye),h===1?(h=1,N===!0&&(h|=8)):h=0,N=fs(3,null,null,h),u.current=N,N.stateNode=u,N.memoizedState={element:T,isDehydrated:v,cache:null,transitions:null},Iu(N),u}function Zb(u){if(!u)return ot;u=u._reactInternals;e:{if(D(u)!==u||u.tag!==1)throw Error(o(170));var h=u;do{switch(h.tag){case 3:h=h.stateNode.context;break e;case 1:if(dn(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break e}}h=h.return}while(h!==null);throw Error(o(171))}if(u.tag===1){var v=u.type;if(dn(v))return Er(u,v,h)}return h}function eP(u){var h=u._reactInternals;if(h===void 0)throw typeof u.render=="function"?Error(o(188)):(u=Object.keys(u).join(","),Error(o(268,u)));return u=V(h),u===null?null:u.stateNode}function tP(u,h){if(u=u.memoizedState,u!==null&&u.dehydrated!==null){var v=u.retryLane;u.retryLane=v!==0&&v=He&&N>=Nt&&b<=ct&&$<=wt){u.splice(h,1);break}else if(T!==He||v.width!==ye.width||wt$){if(!(N!==Nt||v.height!==ye.height||ctb)){He>T&&(ye.width+=He-T,ye.x=T),ctN&&(ye.height+=Nt-N,ye.y=N),wt<$&&(ye.height=$-Nt),u.splice(h,1);break}}}return u},t.findHostInstance=eP,t.findHostInstanceWithNoPortals=function(u){return u=R(u),u=u!==null?se(u):null,u===null?null:u.stateNode},t.findHostInstanceWithWarning=function(u){return eP(u)},t.flushControlled=function(u){var h=Xt;Xt|=1;var v=Jn.transition,T=Ht;try{Jn.transition=null,Ht=1,u()}finally{Ht=T,Jn.transition=v,Xt=h,Xt===0&&(zu(),Hr())}},t.flushPassiveEffects=sc,t.flushSync=Gb,t.focusWithin=function(u,h){if(!X)throw Error(o(363));for(u=gS(u),h=Bb(u,h),h=Array.from(h),u=0;uv&&(v=$)),$ ")+` + +No matching component was found for: + `)+u.join(" > ")}return null},t.getPublicRootInstance=function(u){if(u=u.current,!u.child)return null;switch(u.child.tag){case 5:return ee(u.child.stateNode);default:return u.child.stateNode}},t.injectIntoDevTools=function(u){if(u={bundleType:u.bundleType,version:u.version,rendererPackageName:u.rendererPackageName,rendererConfig:u.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:a.ReactCurrentDispatcher,findHostInstanceByFiber:NB,findFiberByHostInstance:u.findFiberByHostInstance||DB,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.0.0-fc46dba67-20220329"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")u=!1;else{var h=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(h.isDisabled||!h.supportsFiber)u=!0;else{try{Ro=h.inject(u),ar=h}catch{}u=!!h.checkDCE}}return u},t.isAlreadyRendering=function(){return!1},t.observeVisibleRects=function(u,h,v,T){if(!X)throw Error(o(363));u=_S(u,h);var b=Ce(u,v,T).disconnect;return{disconnect:function(){b()}}},t.registerMutableSourceForHydration=function(u,h){var v=h._getVersion;v=v(h._source),u.mutableSourceEagerHydrationData==null?u.mutableSourceEagerHydrationData=[h,v]:u.mutableSourceEagerHydrationData.push(h,v)},t.runWithPriority=function(u,h){var v=Ht;try{return Ht=u,h()}finally{Ht=v}},t.shouldError=function(){return null},t.shouldSuspend=function(){return!1},t.updateContainer=function(u,h,v,T){var b=h.current,N=cr(),$=Ra(b);return v=Zb(v),h.context===null?h.context=v:h.pendingContext=v,h=Wr(N,$),h.payload={element:u},T=T===void 0?null:T,T!==null&&(h.callback=T),cs(b,h),u=ds(b,$,N),u!==null&&Yl(u,b,$),$},t};r4.exports=sie;var oie=r4.exports;const aie=kT(oie),TC={},lie=n=>void Object.assign(TC,n);function cie(n,e){function t(d,{args:f=[],attach:p,...m},_){let S=`${d[0].toUpperCase()}${d.slice(1)}`,x;if(d==="primitive"){if(m.object===void 0)throw new Error("R3F: Primitives without 'object' are invalid!");const y=m.object;x=hh(y,{type:d,root:_,attach:p,primitive:!0})}else{const y=TC[S];if(!y)throw new Error(`R3F: ${S} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if(!Array.isArray(f))throw new Error("R3F: The args prop must be an array!");x=hh(new y(...f),{type:d,root:_,attach:p,memoizedProps:{args:f}})}return x.__r3f.attach===void 0&&(x instanceof Vt?x.__r3f.attach="geometry":x instanceof Oi&&(x.__r3f.attach="material")),S!=="inject"&&S1(x,m),x}function i(d,f){let p=!1;if(f){var m,_;(m=f.__r3f)!=null&&m.attach?x1(d,f,f.__r3f.attach):f.isObject3D&&d.isObject3D&&(d.add(f),p=!0),p||(_=d.__r3f)==null||_.objects.push(f),f.__r3f||hh(f,{}),f.__r3f.parent=d,PT(f),dh(f)}}function r(d,f,p){let m=!1;if(f){var _,S;if((_=f.__r3f)!=null&&_.attach)x1(d,f,f.__r3f.attach);else if(f.isObject3D&&d.isObject3D){f.parent=d,f.dispatchEvent({type:"added"}),d.dispatchEvent({type:"childadded",child:f});const x=d.children.filter(E=>E!==f),y=x.indexOf(p);d.children=[...x.slice(0,y),f,...x.slice(y)],m=!0}m||(S=d.__r3f)==null||S.objects.push(f),f.__r3f||hh(f,{}),f.__r3f.parent=d,PT(f),dh(f)}}function s(d,f,p=!1){d&&[...d].forEach(m=>o(f,m,p))}function o(d,f,p){if(f){var m,_,S;if(f.__r3f&&(f.__r3f.parent=null),(m=d.__r3f)!=null&&m.objects&&(d.__r3f.objects=d.__r3f.objects.filter(M=>M!==f)),(_=f.__r3f)!=null&&_.attach)sN(d,f,f.__r3f.attach);else if(f.isObject3D&&d.isObject3D){var x;d.remove(f),(x=f.__r3f)!=null&&x.root&&vie(Rv(f),f)}const E=(S=f.__r3f)==null?void 0:S.primitive,w=!E&&(p===void 0?f.dispose!==null:p);if(!E){var y;s((y=f.__r3f)==null?void 0:y.objects,f,w),s(f.children,f,w)}if(delete f.__r3f,w&&f.dispose&&f.type!=="Scene"){const M=()=>{try{f.dispose()}catch{}};typeof IS_REACT_ACT_ENVIRONMENT>"u"?CT.unstable_scheduleCallback(CT.unstable_IdlePriority,M):M()}dh(d)}}function a(d,f,p,m){var _;const S=(_=d.__r3f)==null?void 0:_.parent;if(!S)return;const x=t(f,p,d.__r3f.root);if(d.children){for(const y of d.children)y.__r3f&&i(x,y);d.children=d.children.filter(y=>!y.__r3f)}d.__r3f.objects.forEach(y=>i(x,y)),d.__r3f.objects=[],d.__r3f.autoRemovedBeforeAppend||o(S,d),x.parent&&(x.__r3f.autoRemovedBeforeAppend=!0),i(S,x),x.raycast&&x.__r3f.eventCount&&Rv(x).getState().internal.interaction.push(x),[m,m.alternate].forEach(y=>{y!==null&&(y.stateNode=x,y.ref&&(typeof y.ref=="function"?y.ref(x):y.ref.current=x))})}const l=()=>{};return{reconciler:aie({createInstance:t,removeChild:o,appendChild:i,appendInitialChild:i,insertBefore:r,supportsMutation:!0,isPrimaryRenderer:!1,supportsPersistence:!1,supportsHydration:!1,noTimeout:-1,appendChildToContainer:(d,f)=>{if(!f)return;const p=d.getState().scene;p.__r3f&&(p.__r3f.root=d,i(p,f))},removeChildFromContainer:(d,f)=>{f&&o(d.getState().scene,f)},insertInContainerBefore:(d,f,p)=>{if(!f||!p)return;const m=d.getState().scene;m.__r3f&&r(m,f,p)},getRootHostContext:()=>null,getChildHostContext:d=>d,finalizeInitialChildren(d){var f;return!!((f=d==null?void 0:d.__r3f)!=null?f:{}).handlers},prepareUpdate(d,f,p,m){var _;if(((_=d==null?void 0:d.__r3f)!=null?_:{}).primitive&&m.object&&m.object!==d)return[!0];{const{args:x=[],children:y,...E}=m,{args:w=[],children:M,...O}=p;if(!Array.isArray(x))throw new Error("R3F: the args prop must be an array!");if(x.some((I,P)=>I!==w[P]))return[!0];const k=f4(d,E,O,!0);return k.changes.length?[!1,k]:null}},commitUpdate(d,[f,p],m,_,S,x){f?a(d,m,S,x):S1(d,p)},commitMount(d,f,p,m){var _;const S=(_=d.__r3f)!=null?_:{};d.raycast&&S.handlers&&S.eventCount&&Rv(d).getState().internal.interaction.push(d)},getPublicInstance:d=>d,prepareForCommit:()=>null,preparePortalMount:d=>hh(d.getState().scene),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance(d){var f;const{attach:p,parent:m}=(f=d.__r3f)!=null?f:{};p&&m&&sN(m,d,p),d.isObject3D&&(d.visible=!1),dh(d)},unhideInstance(d,f){var p;const{attach:m,parent:_}=(p=d.__r3f)!=null?p:{};m&&_&&x1(_,d,m),(d.isObject3D&&f.visible==null||f.visible)&&(d.visible=!0),dh(d)},createTextInstance:l,hideTextInstance:l,unhideTextInstance:l,getCurrentEventPriority:()=>e?e():kh.DefaultEventPriority,beforeActiveInstanceBlur:()=>{},afterActiveInstanceBlur:()=>{},detachDeletedInstance:()=>{},now:typeof performance<"u"&&Tn.fun(performance.now)?performance.now:Tn.fun(Date.now)?Date.now:()=>0,scheduleTimeout:Tn.fun(setTimeout)?setTimeout:void 0,cancelTimeout:Tn.fun(clearTimeout)?clearTimeout:void 0}),applyProps:S1}}var tN,nN;const _1=n=>"colorSpace"in n||"outputColorSpace"in n,a4=()=>{var n;return(n=TC.ColorManagement)!=null?n:null},l4=n=>n&&n.isOrthographicCamera,uie=n=>n&&n.hasOwnProperty("current"),Km=typeof window<"u"&&((tN=window.document)!=null&&tN.createElement||((nN=window.navigator)==null?void 0:nN.product)==="ReactNative")?q.useLayoutEffect:q.useEffect;function c4(n){const e=q.useRef(n);return Km(()=>void(e.current=n),[n]),e}function hie({set:n}){return Km(()=>(n(new Promise(()=>null)),()=>n(!1)),[n]),null}class u4 extends q.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}u4.getDerivedStateFromError=()=>({error:!0});const h4="__default",iN=new Map,die=n=>n&&!!n.memoized&&!!n.changes;function d4(n){var e;const t=typeof window<"u"?(e=window.devicePixelRatio)!=null?e:2:1;return Array.isArray(n)?Math.min(Math.max(n[0],t),n[1]):n}const Of=n=>{var e;return(e=n.__r3f)==null?void 0:e.root.getState()};function Rv(n){let e=n.__r3f.root;for(;e.getState().previousRoot;)e=e.getState().previousRoot;return e}const Tn={obj:n=>n===Object(n)&&!Tn.arr(n)&&typeof n!="function",fun:n=>typeof n=="function",str:n=>typeof n=="string",num:n=>typeof n=="number",boo:n=>typeof n=="boolean",und:n=>n===void 0,arr:n=>Array.isArray(n),equ(n,e,{arrays:t="shallow",objects:i="reference",strict:r=!0}={}){if(typeof n!=typeof e||!!n!=!!e)return!1;if(Tn.str(n)||Tn.num(n)||Tn.boo(n))return n===e;const s=Tn.obj(n);if(s&&i==="reference")return n===e;const o=Tn.arr(n);if(o&&t==="reference")return n===e;if((o||s)&&n===e)return!0;let a;for(a in n)if(!(a in e))return!1;if(s&&t==="shallow"&&i==="shallow"){for(a in r?e:n)if(!Tn.equ(n[a],e[a],{strict:r,objects:"reference"}))return!1}else for(a in r?e:n)if(n[a]!==e[a])return!1;if(Tn.und(a)){if(o&&n.length===0&&e.length===0||s&&Object.keys(n).length===0&&Object.keys(e).length===0)return!0;if(n!==e)return!1}return!0}};function fie(n){const e={nodes:{},materials:{}};return n&&n.traverse(t=>{t.name&&(e.nodes[t.name]=t),t.material&&!e.materials[t.material.name]&&(e.materials[t.material.name]=t.material)}),e}function pie(n){n.dispose&&n.type!=="Scene"&&n.dispose();for(const e in n)e.dispose==null||e.dispose(),delete n[e]}function hh(n,e){const t=n;return t.__r3f={type:"",root:null,previousAttach:null,memoizedProps:{},eventCount:0,handlers:{},objects:[],parent:null,...e},n}function bT(n,e){let t=n;if(e.includes("-")){const i=e.split("-"),r=i.pop();return t=i.reduce((s,o)=>s[o],n),{target:t,key:r}}else return{target:t,key:e}}const rN=/-\d+$/;function x1(n,e,t){if(Tn.str(t)){if(rN.test(t)){const s=t.replace(rN,""),{target:o,key:a}=bT(n,s);Array.isArray(o[a])||(o[a]=[])}const{target:i,key:r}=bT(n,t);e.__r3f.previousAttach=i[r],i[r]=e}else e.__r3f.previousAttach=t(n,e)}function sN(n,e,t){var i,r;if(Tn.str(t)){const{target:s,key:o}=bT(n,t),a=e.__r3f.previousAttach;a===void 0?delete s[o]:s[o]=a}else(i=e.__r3f)==null||i.previousAttach==null||i.previousAttach(n,e);(r=e.__r3f)==null||delete r.previousAttach}function f4(n,{children:e,key:t,ref:i,...r},{children:s,key:o,ref:a,...l}={},c=!1){const d=n.__r3f,f=Object.entries(r),p=[];if(c){const _=Object.keys(l);for(let S=0;S<_.length;S++)r.hasOwnProperty(_[S])||f.unshift([_[S],h4+"remove"])}f.forEach(([_,S])=>{var x;if((x=n.__r3f)!=null&&x.primitive&&_==="object"||Tn.equ(S,l[_]))return;if(/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(_))return p.push([_,S,!0,[]]);let y=[];_.includes("-")&&(y=_.split("-")),p.push([_,S,!1,y]);for(const E in r){const w=r[E];E.startsWith(`${_}-`)&&p.push([E,w,!1,E.split("-")])}});const m={...r};return d!=null&&d.memoizedProps&&d!=null&&d.memoizedProps.args&&(m.args=d.memoizedProps.args),d!=null&&d.memoizedProps&&d!=null&&d.memoizedProps.attach&&(m.attach=d.memoizedProps.attach),{memoized:m,changes:p}}const mie=typeof process<"u"&&!1;function S1(n,e){var t;const i=n.__r3f,r=i==null?void 0:i.root,s=r==null||r.getState==null?void 0:r.getState(),{memoized:o,changes:a}=die(e)?e:f4(n,e),l=i==null?void 0:i.eventCount;n.__r3f&&(n.__r3f.memoizedProps=o);for(let d=0;dy[E],n),!(x&&x.set))){const[y,...E]=_.reverse();S=E.reverse().reduce((w,M)=>w[M],n),f=y}if(p===h4+"remove")if(S.constructor){let y=iN.get(S.constructor);y||(y=new S.constructor,iN.set(S.constructor,y)),p=y[f]}else p=0;if(m&&i)p?i.handlers[f]=p:delete i.handlers[f],i.eventCount=Object.keys(i.handlers).length;else if(x&&x.set&&(x.copy||x instanceof Kc)){if(Array.isArray(p))x.fromArray?x.fromArray(p):x.set(...p);else if(x.copy&&p&&p.constructor&&(mie?x.constructor.name===p.constructor.name:x.constructor===p.constructor))x.copy(p);else if(p!==void 0){const y=x instanceof rt;!y&&x.setScalar?x.setScalar(p):x instanceof Kc&&p instanceof Kc?x.mask=p.mask:x.set(p),!a4()&&s&&!s.linear&&y&&x.convertSRGBToLinear()}}else if(S[f]=p,S[f]instanceof In&&S[f].format===tr&&S[f].type===js&&s){const y=S[f];_1(y)&&_1(s.gl)?y.colorSpace=s.gl.outputColorSpace:y.encoding=s.gl.outputEncoding}dh(n)}if(i&&i.parent&&n.raycast&&l!==i.eventCount){const d=Rv(n).getState().internal,f=d.interaction.indexOf(n);f>-1&&d.interaction.splice(f,1),i.eventCount&&d.interaction.push(n)}return!(a.length===1&&a[0][0]==="onUpdate")&&a.length&&(t=n.__r3f)!=null&&t.parent&&PT(n),n}function dh(n){var e,t;const i=(e=n.__r3f)==null||(t=e.root)==null||t.getState==null?void 0:t.getState();i&&i.internal.frames===0&&i.invalidate()}function PT(n){n.onUpdate==null||n.onUpdate(n)}function gie(n,e){n.manual||(l4(n)?(n.left=e.width/-2,n.right=e.width/2,n.top=e.height/2,n.bottom=e.height/-2):n.aspect=e.width/e.height,n.updateProjectionMatrix(),n.updateMatrixWorld())}function sv(n){return(n.eventObject||n.object).uuid+"/"+n.index+n.instanceId}function yie(){var n;const e=typeof self<"u"&&self||typeof window<"u"&&window;if(!e)return kh.DefaultEventPriority;switch((n=e.event)==null?void 0:n.type){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return kh.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return kh.ContinuousEventPriority;default:return kh.DefaultEventPriority}}function p4(n,e,t,i){const r=t.get(e);r&&(t.delete(e),t.size===0&&(n.delete(i),r.target.releasePointerCapture(i)))}function vie(n,e){const{internal:t}=n.getState();t.interaction=t.interaction.filter(i=>i!==e),t.initialHits=t.initialHits.filter(i=>i!==e),t.hovered.forEach((i,r)=>{(i.eventObject===e||i.object===e)&&t.hovered.delete(r)}),t.capturedMap.forEach((i,r)=>{p4(t.capturedMap,e,i,r)})}function _ie(n){function e(l){const{internal:c}=n.getState(),d=l.offsetX-c.initialClick[0],f=l.offsetY-c.initialClick[1];return Math.round(Math.sqrt(d*d+f*f))}function t(l){return l.filter(c=>["Move","Over","Enter","Out","Leave"].some(d=>{var f;return(f=c.__r3f)==null?void 0:f.handlers["onPointer"+d]}))}function i(l,c){const d=n.getState(),f=new Set,p=[],m=c?c(d.internal.interaction):d.internal.interaction;for(let y=0;y{const w=Of(y.object),M=Of(E.object);return!w||!M?y.distance-E.distance:M.events.priority-w.events.priority||y.distance-E.distance}).filter(y=>{const E=sv(y);return f.has(E)?!1:(f.add(E),!0)});d.events.filter&&(S=d.events.filter(S,d));for(const y of S){let E=y.object;for(;E;){var x;(x=E.__r3f)!=null&&x.eventCount&&p.push({...y,eventObject:E}),E=E.parent}}if("pointerId"in l&&d.internal.capturedMap.has(l.pointerId))for(let y of d.internal.capturedMap.get(l.pointerId).values())f.has(sv(y.intersection))||p.push(y.intersection);return p}function r(l,c,d,f){const p=n.getState();if(l.length){const m={stopped:!1};for(const _ of l){const S=Of(_.object)||p,{raycaster:x,pointer:y,camera:E,internal:w}=S,M=new G(y.x,y.y,0).unproject(E),O=A=>{var R,V;return(R=(V=w.capturedMap.get(A))==null?void 0:V.has(_.eventObject))!=null?R:!1},k=A=>{const R={intersection:_,target:c.target};w.capturedMap.has(A)?w.capturedMap.get(A).set(_.eventObject,R):w.capturedMap.set(A,new Map([[_.eventObject,R]])),c.target.setPointerCapture(A)},I=A=>{const R=w.capturedMap.get(A);R&&p4(w.capturedMap,_.eventObject,R,A)};let P={};for(let A in c){let R=c[A];typeof R!="function"&&(P[A]=R)}let D={..._,...P,pointer:y,intersections:l,stopped:m.stopped,delta:d,unprojectedPoint:M,ray:x.ray,camera:E,stopPropagation(){const A="pointerId"in c&&w.capturedMap.get(c.pointerId);if((!A||A.has(_.eventObject))&&(D.stopped=m.stopped=!0,w.hovered.size&&Array.from(w.hovered.values()).find(R=>R.eventObject===_.eventObject))){const R=l.slice(0,l.indexOf(_));s([...R,_])}},target:{hasPointerCapture:O,setPointerCapture:k,releasePointerCapture:I},currentTarget:{hasPointerCapture:O,setPointerCapture:k,releasePointerCapture:I},nativeEvent:c};if(f(D),m.stopped===!0)break}}return l}function s(l){const{internal:c}=n.getState();for(const d of c.hovered.values())if(!l.length||!l.find(f=>f.object===d.object&&f.index===d.index&&f.instanceId===d.instanceId)){const p=d.eventObject.__r3f,m=p==null?void 0:p.handlers;if(c.hovered.delete(sv(d)),p!=null&&p.eventCount){const _={...d,intersections:l};m.onPointerOut==null||m.onPointerOut(_),m.onPointerLeave==null||m.onPointerLeave(_)}}}function o(l,c){for(let d=0;ds([]);case"onLostPointerCapture":return c=>{const{internal:d}=n.getState();"pointerId"in c&&d.capturedMap.has(c.pointerId)&&requestAnimationFrame(()=>{d.capturedMap.has(c.pointerId)&&(d.capturedMap.delete(c.pointerId),s([]))})}}return function(d){const{onPointerMissed:f,internal:p}=n.getState();p.lastEvent.current=d;const m=l==="onPointerMove",_=l==="onClick"||l==="onContextMenu"||l==="onDoubleClick",x=i(d,m?t:void 0),y=_?e(d):0;l==="onPointerDown"&&(p.initialClick=[d.offsetX,d.offsetY],p.initialHits=x.map(w=>w.eventObject)),_&&!x.length&&y<=2&&(o(d,p.interaction),f&&f(d)),m&&s(x);function E(w){const M=w.eventObject,O=M.__r3f,k=O==null?void 0:O.handlers;if(O!=null&&O.eventCount)if(m){if(k.onPointerOver||k.onPointerEnter||k.onPointerOut||k.onPointerLeave){const I=sv(w),P=p.hovered.get(I);P?P.stopped&&w.stopPropagation():(p.hovered.set(I,w),k.onPointerOver==null||k.onPointerOver(w),k.onPointerEnter==null||k.onPointerEnter(w))}k.onPointerMove==null||k.onPointerMove(w)}else{const I=k[l];I?(!_||p.initialHits.includes(M))&&(o(d,p.interaction.filter(P=>!p.initialHits.includes(P))),I(w)):_&&p.initialHits.includes(M)&&o(d,p.interaction.filter(P=>!p.initialHits.includes(P)))}}r(x,d,y,E)}}return{handlePointer:a}}const m4=n=>!!(n!=null&&n.render),g4=q.createContext(null),xie=(n,e)=>{const t=t4((a,l)=>{const c=new G,d=new G,f=new G;function p(y=l().camera,E=d,w=l().size){const{width:M,height:O,top:k,left:I}=w,P=M/O;E instanceof G?f.copy(E):f.set(...E);const D=y.getWorldPosition(c).distanceTo(f);if(l4(y))return{width:M/y.zoom,height:O/y.zoom,top:k,left:I,factor:1,distance:D,aspect:P};{const A=y.fov*Math.PI/180,R=2*Math.tan(A/2)*D,V=R*(M/O);return{width:V,height:R,top:k,left:I,factor:M/V,distance:D,aspect:P}}}let m;const _=y=>a(E=>({performance:{...E.performance,current:y}})),S=new Ee;return{set:a,get:l,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},xr:null,scene:null,invalidate:(y=1)=>n(l(),y),advance:(y,E)=>e(y,E,l()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new _C,pointer:S,mouse:S,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{const y=l();m&&clearTimeout(m),y.performance.current!==y.performance.min&&_(y.performance.min),m=setTimeout(()=>_(l().performance.max),y.performance.debounce)}},size:{width:0,height:0,top:0,left:0,updateStyle:!1},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:p},setEvents:y=>a(E=>({...E,events:{...E.events,...y}})),setSize:(y,E,w,M,O)=>{const k=l().camera,I={width:y,height:E,top:M||0,left:O||0,updateStyle:w};a(P=>({size:I,viewport:{...P.viewport,...p(k,d,I)}}))},setDpr:y=>a(E=>{const w=d4(y);return{viewport:{...E.viewport,dpr:w,initialDpr:E.viewport.initialDpr||w}}}),setFrameloop:(y="always")=>{const E=l().clock;E.stop(),E.elapsedTime=0,y!=="never"&&(E.start(),E.elapsedTime=0),a(()=>({frameloop:y}))},previousRoot:void 0,internal:{active:!1,priority:0,frames:0,lastEvent:q.createRef(),interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,subscribe:(y,E,w)=>{const M=l().internal;return M.priority=M.priority+(E>0?1:0),M.subscribers.push({ref:y,priority:E,store:w}),M.subscribers=M.subscribers.sort((O,k)=>O.priority-k.priority),()=>{const O=l().internal;O!=null&&O.subscribers&&(O.priority=O.priority-(E>0?1:0),O.subscribers=O.subscribers.filter(k=>k.ref!==y))}}}}}),i=t.getState();let r=i.size,s=i.viewport.dpr,o=i.camera;return t.subscribe(()=>{const{camera:a,size:l,viewport:c,gl:d,set:f}=t.getState();if(l.width!==r.width||l.height!==r.height||c.dpr!==s){var p;r=l,s=c.dpr,gie(a,l),d.setPixelRatio(c.dpr);const m=(p=l.updateStyle)!=null?p:typeof HTMLCanvasElement<"u"&&d.domElement instanceof HTMLCanvasElement;d.setSize(l.width,l.height,m)}a!==o&&(o=a,f(m=>({viewport:{...m.viewport,...m.viewport.getCurrentViewport(a)}})))}),t.subscribe(a=>n(a)),t};let ov,Sie=new Set,wie=new Set,Eie=new Set;function w1(n,e){if(n.size)for(const{callback:t}of n.values())t(e)}function Uf(n,e){switch(n){case"before":return w1(Sie,e);case"after":return w1(wie,e);case"tail":return w1(Eie,e)}}let E1,T1;function A1(n,e,t){let i=e.clock.getDelta();for(e.frameloop==="never"&&typeof n=="number"&&(i=n-e.clock.elapsedTime,e.clock.oldTime=e.clock.elapsedTime,e.clock.elapsedTime=n),E1=e.internal.subscribers,ov=0;ov0)&&!((d=s.gl.xr)!=null&&d.isPresenting)&&(i+=A1(c,s))}if(t=!1,Uf("after",c),i===0)return Uf("tail",c),e=!1,cancelAnimationFrame(r)}function a(c,d=1){var f;if(!c)return n.forEach(p=>a(p.store.getState(),d));(f=c.gl.xr)!=null&&f.isPresenting||!c.internal.active||c.frameloop==="never"||(d>1?c.internal.frames=Math.min(60,c.internal.frames+d):t?c.internal.frames=2:c.internal.frames=1,e||(e=!0,requestAnimationFrame(o)))}function l(c,d=!0,f,p){if(d&&Uf("before",c),f)A1(c,f,p);else for(const m of n.values())A1(c,m.store.getState());d&&Uf("after",c)}return{loop:o,invalidate:a,advance:l}}function y4(){const n=q.useContext(g4);if(!n)throw new Error("R3F: Hooks can only be used within the Canvas component!");return n}function Kr(n=t=>t,e){return y4()(n,e)}function AC(n,e=0){const t=y4(),i=t.getState().internal.subscribe,r=c4(n);return Km(()=>i(r,e,t),[e,i,t]),null}const oN=new WeakMap;function v4(n,e){return function(t,...i){let r=oN.get(t);return r||(r=new t,oN.set(t,r)),n&&n(r),Promise.all(i.map(s=>new Promise((o,a)=>r.load(s,l=>{l.scene&&Object.assign(l,fie(l.scene)),o(l)},e,l=>a(new Error(`Could not load ${s}: ${l==null?void 0:l.message}`))))))}}function Qm(n,e,t,i){const r=Array.isArray(e)?e:[e],s=nie(v4(t,i),[n,...r],{equal:Tn.equ});return Array.isArray(e)?s:s[0]}Qm.preload=function(n,e,t){const i=Array.isArray(e)?e:[e];return iie(v4(t),[n,...i])};Qm.clear=function(n,e){const t=Array.isArray(e)?e:[e];return rie([n,...t])};const gd=new Map,{invalidate:aN,advance:lN}=Tie(gd),{reconciler:h_,applyProps:lo}=cie(gd,yie),ah={objects:"shallow",strict:!1},Aie=(n,e)=>{const t=typeof n=="function"?n(e):n;return m4(t)?t:new oV({powerPreference:"high-performance",canvas:e,antialias:!0,alpha:!0,...n})};function Mie(n,e){const t=typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement;if(e){const{width:i,height:r,top:s,left:o,updateStyle:a=t}=e;return{width:i,height:r,top:s,left:o,updateStyle:a}}else if(typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement&&n.parentElement){const{width:i,height:r,top:s,left:o}=n.parentElement.getBoundingClientRect();return{width:i,height:r,top:s,left:o,updateStyle:t}}else if(typeof OffscreenCanvas<"u"&&n instanceof OffscreenCanvas)return{width:n.width,height:n.height,top:0,left:0,updateStyle:t};return{width:0,height:0,top:0,left:0}}function Cie(n){const e=gd.get(n),t=e==null?void 0:e.fiber,i=e==null?void 0:e.store;e&&console.warn("R3F.createRoot should only be called once!");const r=typeof reportError=="function"?reportError:console.error,s=i||xie(aN,lN),o=t||h_.createContainer(s,kh.ConcurrentRoot,null,!1,null,"",r,null);e||gd.set(n,{fiber:o,store:s});let a,l=!1,c;return{configure(d={}){let{gl:f,size:p,scene:m,events:_,onCreated:S,shadows:x=!1,linear:y=!1,flat:E=!1,legacy:w=!1,orthographic:M=!1,frameloop:O="always",dpr:k=[1,2],performance:I,raycaster:P,camera:D,onPointerMissed:A}=d,R=s.getState(),V=R.gl;R.gl||R.set({gl:V=Aie(f,n)});let U=R.raycaster;U||R.set({raycaster:U=new JV});const{params:se,...le}=P||{};if(Tn.equ(le,U,ah)||lo(U,{...le}),Tn.equ(se,U.params,ah)||lo(U,{params:{...U.params,...se}}),!R.camera||R.camera===c&&!Tn.equ(c,D,ah)){c=D;const Z=D instanceof Hm,oe=Z?D:M?new zs(0,0,0,0,.1,1e3):new Dn(75,0,.1,1e3);Z||(oe.position.z=5,D&&(lo(oe,D),("aspect"in D||"left"in D||"right"in D||"bottom"in D||"top"in D)&&(oe.manual=!0,oe.updateProjectionMatrix())),!R.camera&&!(D!=null&&D.rotation)&&oe.lookAt(0,0,0)),R.set({camera:oe}),U.camera=oe}if(!R.scene){let Z;m instanceof a_?Z=m:(Z=new a_,m&&lo(Z,m)),R.set({scene:hh(Z)})}if(!R.xr){var ee;const Z=(Re,he)=>{const we=s.getState();we.frameloop!=="never"&&lN(Re,!0,we,he)},oe=()=>{const Re=s.getState();Re.gl.xr.enabled=Re.gl.xr.isPresenting,Re.gl.xr.setAnimationLoop(Re.gl.xr.isPresenting?Z:null),Re.gl.xr.isPresenting||aN(Re)},Me={connect(){const Re=s.getState().gl;Re.xr.addEventListener("sessionstart",oe),Re.xr.addEventListener("sessionend",oe)},disconnect(){const Re=s.getState().gl;Re.xr.removeEventListener("sessionstart",oe),Re.xr.removeEventListener("sessionend",oe)}};typeof((ee=V.xr)==null?void 0:ee.addEventListener)=="function"&&Me.connect(),R.set({xr:Me})}if(V.shadowMap){const Z=V.shadowMap.enabled,oe=V.shadowMap.type;if(V.shadowMap.enabled=!!x,Tn.boo(x))V.shadowMap.type=pp;else if(Tn.str(x)){var pe;const Me={basic:rF,percentage:rx,soft:pp,variance:Os};V.shadowMap.type=(pe=Me[x])!=null?pe:pp}else Tn.obj(x)&&Object.assign(V.shadowMap,x);(Z!==V.shadowMap.enabled||oe!==V.shadowMap.type)&&(V.shadowMap.needsUpdate=!0)}const W=a4();W&&("enabled"in W?W.enabled=!w:"legacyMode"in W&&(W.legacyMode=w)),l||lo(V,{outputEncoding:y?3e3:3001,toneMapping:E?vo:DM}),R.legacy!==w&&R.set(()=>({legacy:w})),R.linear!==y&&R.set(()=>({linear:y})),R.flat!==E&&R.set(()=>({flat:E})),f&&!Tn.fun(f)&&!m4(f)&&!Tn.equ(f,V,ah)&&lo(V,f),_&&!R.events.handlers&&R.set({events:_(s)});const J=Mie(n,p);return Tn.equ(J,R.size,ah)||R.setSize(J.width,J.height,J.updateStyle,J.top,J.left),k&&R.viewport.dpr!==d4(k)&&R.setDpr(k),R.frameloop!==O&&R.setFrameloop(O),R.onPointerMissed||R.set({onPointerMissed:A}),I&&!Tn.equ(I,R.performance,ah)&&R.set(Z=>({performance:{...Z.performance,...I}})),a=S,l=!0,this},render(d){return l||this.configure(),h_.updateContainer(B.jsx(bie,{store:s,children:d,onCreated:a,rootElement:n}),o,null,()=>{}),s},unmount(){_4(n)}}}function bie({store:n,children:e,onCreated:t,rootElement:i}){return Km(()=>{const r=n.getState();r.set(s=>({internal:{...s.internal,active:!0}})),t&&t(r),n.getState().events.connected||r.events.connect==null||r.events.connect(i)},[]),B.jsx(g4.Provider,{value:n,children:e})}function _4(n,e){const t=gd.get(n),i=t==null?void 0:t.fiber;if(i){const r=t==null?void 0:t.store.getState();r&&(r.internal.active=!1),h_.updateContainer(null,i,null,()=>{r&&setTimeout(()=>{try{var s,o,a,l;r.events.disconnect==null||r.events.disconnect(),(s=r.gl)==null||(o=s.renderLists)==null||o.dispose==null||o.dispose(),(a=r.gl)==null||a.forceContextLoss==null||a.forceContextLoss(),(l=r.gl)!=null&&l.xr&&r.xr.disconnect(),pie(r),gd.delete(n),e&&e(n)}catch{}},500)})}}h_.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:q.version});const M1={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function Pie(n){const{handlePointer:e}=_ie(n);return{priority:1,enabled:!0,compute(t,i,r){i.pointer.set(t.offsetX/i.size.width*2-1,-(t.offsetY/i.size.height)*2+1),i.raycaster.setFromCamera(i.pointer,i.camera)},connected:void 0,handlers:Object.keys(M1).reduce((t,i)=>({...t,[i]:e(i)}),{}),update:()=>{var t;const{events:i,internal:r}=n.getState();(t=r.lastEvent)!=null&&t.current&&i.handlers&&i.handlers.onPointerMove(r.lastEvent.current)},connect:t=>{var i;const{set:r,events:s}=n.getState();s.disconnect==null||s.disconnect(),r(o=>({events:{...o.events,connected:t}})),Object.entries((i=s.handlers)!=null?i:[]).forEach(([o,a])=>{const[l,c]=M1[o];t.addEventListener(l,a,{passive:c})})},disconnect:()=>{const{set:t,events:i}=n.getState();if(i.connected){var r;Object.entries((r=i.handlers)!=null?r:[]).forEach(([s,o])=>{if(i&&i.connected instanceof HTMLElement){const[a]=M1[s];i.connected.removeEventListener(a,o)}}),t(s=>({events:{...s.events,connected:void 0}}))}}}}function RT(n,e,t){var i,r,s,o,a;e==null&&(e=100);function l(){var d=Date.now()-o;d=0?i=setTimeout(l,e-d):(i=null,t||(a=n.apply(s,r),s=r=null))}var c=function(){s=this,r=arguments,o=Date.now();var d=t&&!i;return i||(i=setTimeout(l,e)),d&&(a=n.apply(s,r),s=r=null),a};return c.clear=function(){i&&(clearTimeout(i),i=null)},c.flush=function(){i&&(a=n.apply(s,r),s=r=null,clearTimeout(i),i=null)},c}RT.debounce=RT;var Rie=RT;const cN=kT(Rie);var Iie=Object.defineProperty,Lie=Object.defineProperties,Nie=Object.getOwnPropertyDescriptors,uN=Object.getOwnPropertySymbols,Die=Object.prototype.hasOwnProperty,kie=Object.prototype.propertyIsEnumerable,hN=(n,e,t)=>e in n?Iie(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,dN=(n,e)=>{for(var t in e||(e={}))Die.call(e,t)&&hN(n,t,e[t]);if(uN)for(var t of uN(e))kie.call(e,t)&&hN(n,t,e[t]);return n},Oie=(n,e)=>Lie(n,Nie(e)),fN,pN;typeof window<"u"&&((fN=window.document)!=null&&fN.createElement||((pN=window.navigator)==null?void 0:pN.product)==="ReactNative")?q.useLayoutEffect:q.useEffect;function x4(n,e,t){if(!n)return;if(t(n)===!0)return n;let i=e?n.return:n.child;for(;i;){const r=x4(i,e,t);if(r)return r;i=e?null:i.sibling}}function S4(n){try{return Object.defineProperties(n,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return n}}const mN=console.error;console.error=function(){const n=[...arguments].join("");if(n!=null&&n.startsWith("Warning:")&&n.includes("useContext")){console.error=mN;return}return mN.apply(this,arguments)};const MC=S4(q.createContext(null));class w4 extends q.Component{render(){return q.createElement(MC.Provider,{value:this._reactInternals},this.props.children)}}function Uie(){const n=q.useContext(MC);if(n===null)throw new Error("its-fine: useFiber must be called within a !");const e=q.useId();return q.useMemo(()=>{for(const i of[n,n==null?void 0:n.alternate]){if(!i)continue;const r=x4(i,!1,s=>{let o=s.memoizedState;for(;o;){if(o.memoizedState===e)return!0;o=o.next}});if(r)return r}},[n,e])}function Fie(){const n=Uie(),[e]=q.useState(()=>new Map);e.clear();let t=n;for(;t;){if(t.type&&typeof t.type=="object"){const r=t.type._context===void 0&&t.type.Provider===t.type?t.type:t.type._context;r&&r!==MC&&!e.has(r)&&e.set(r,q.useContext(S4(r)))}t=t.return}return e}function Vie(){const n=Fie();return q.useMemo(()=>Array.from(n.keys()).reduce((e,t)=>i=>q.createElement(e,null,q.createElement(t.Provider,Oie(dN({},i),{value:n.get(t)}))),e=>q.createElement(w4,dN({},e))),[n])}function Bie({debounce:n,scroll:e,polyfill:t,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){const r=t||typeof window<"u"&&window.ResizeObserver,[s,o]=q.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0});if(!r)return s.width=1280,s.height=800,[()=>{},s,()=>{}];const a=q.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:s,orientationHandler:null}),l=n?typeof n=="number"?n:n.scroll:null,c=n?typeof n=="number"?n:n.resize:null,d=q.useRef(!1);q.useEffect(()=>(d.current=!0,()=>void(d.current=!1)));const[f,p,m]=q.useMemo(()=>{const y=()=>{if(!a.current.element)return;const{left:E,top:w,width:M,height:O,bottom:k,right:I,x:P,y:D}=a.current.element.getBoundingClientRect(),A={left:E,top:w,width:M,height:O,bottom:k,right:I,x:P,y:D};a.current.element instanceof HTMLElement&&i&&(A.height=a.current.element.offsetHeight,A.width=a.current.element.offsetWidth),Object.freeze(A),d.current&&!Wie(a.current.lastBounds,A)&&o(a.current.lastBounds=A)};return[y,c?cN(y,c):y,l?cN(y,l):y]},[o,i,l,c]);function _(){a.current.scrollContainers&&(a.current.scrollContainers.forEach(y=>y.removeEventListener("scroll",m,!0)),a.current.scrollContainers=null),a.current.resizeObserver&&(a.current.resizeObserver.disconnect(),a.current.resizeObserver=null),a.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",a.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",a.current.orientationHandler))}function S(){var y;a.current.element&&(a.current.resizeObserver=new r(p),(y=a.current.resizeObserver)==null||y.observe(a.current.element),e&&a.current.scrollContainers&&a.current.scrollContainers.forEach(E=>E.addEventListener("scroll",m,{capture:!0,passive:!0})),a.current.orientationHandler=()=>{m()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",a.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",a.current.orientationHandler))}const x=y=>{!y||y===a.current.element||(_(),a.current.element=y,a.current.scrollContainers=E4(y),S())};return Hie(m,!!e),zie(p),q.useEffect(()=>{_(),S()},[e,m,p]),q.useEffect(()=>_,[]),[x,s,f]}function zie(n){q.useEffect(()=>{const e=n;return window.addEventListener("resize",e),()=>void window.removeEventListener("resize",e)},[n])}function Hie(n,e){q.useEffect(()=>{if(e){const t=n;return window.addEventListener("scroll",t,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",t,!0)}},[n,e])}function E4(n){const e=[];if(!n||n===document.body)return e;const{overflow:t,overflowX:i,overflowY:r}=window.getComputedStyle(n);return[t,i,r].some(s=>s==="auto"||s==="scroll")&&e.push(n),[...e,...E4(n.parentElement)]}const Gie=["x","y","top","bottom","left","right","width","height"],Wie=(n,e)=>Gie.every(t=>n[t]===e[t]),jie=q.forwardRef(function({children:e,fallback:t,resize:i,style:r,gl:s,events:o=Pie,eventSource:a,eventPrefix:l,shadows:c,linear:d,flat:f,legacy:p,orthographic:m,frameloop:_,dpr:S,performance:x,raycaster:y,camera:E,scene:w,onPointerMissed:M,onCreated:O,...k},I){q.useMemo(()=>lie(Jne),[]);const P=Vie(),[D,A]=Bie({scroll:!0,debounce:{scroll:50,resize:0},...i}),R=q.useRef(null),V=q.useRef(null);q.useImperativeHandle(I,()=>R.current);const U=c4(M),[se,le]=q.useState(!1),[ee,pe]=q.useState(!1);if(se)throw se;if(ee)throw ee;const W=q.useRef(null);Km(()=>{const Z=R.current;A.width>0&&A.height>0&&Z&&(W.current||(W.current=Cie(Z)),W.current.configure({gl:s,events:o,shadows:c,linear:d,flat:f,legacy:p,orthographic:m,frameloop:_,dpr:S,performance:x,raycaster:y,camera:E,scene:w,size:A,onPointerMissed:(...oe)=>U.current==null?void 0:U.current(...oe),onCreated:oe=>{oe.events.connect==null||oe.events.connect(a?uie(a)?a.current:a:V.current),l&&oe.setEvents({compute:(Me,Re)=>{const he=Me[l+"X"],we=Me[l+"Y"];Re.pointer.set(he/Re.size.width*2-1,-(we/Re.size.height)*2+1),Re.raycaster.setFromCamera(Re.pointer,Re.camera)}}),O==null||O(oe)}}),W.current.render(B.jsx(P,{children:B.jsx(u4,{set:pe,children:B.jsx(q.Suspense,{fallback:B.jsx(hie,{set:le}),children:e})})})))}),q.useEffect(()=>{const Z=R.current;if(Z)return()=>_4(Z)},[]);const J=a?"none":"auto";return B.jsx("div",{ref:V,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:J,...r},...k,children:B.jsx("div",{ref:D,style:{width:"100%",height:"100%"},children:B.jsx("canvas",{ref:R,style:{display:"block"},children:t})})})}),Xie=q.forwardRef(function(e,t){return B.jsx(w4,{children:B.jsx(jie,{...e,ref:t})})});function vm(){return vm=Object.assign?Object.assign.bind():function(n){for(var e=1;eMath.PI/2}function Kie(n,e,t,i){const r=Jm.setFromMatrixPosition(n.matrixWorld),s=r.clone();s.project(e),gN.set(s.x,s.y),t.setFromCamera(gN,e);const o=t.intersectObjects(i,!0);if(o.length){const a=o[0].distance;return r.distanceTo(t.ray.origin)Math.abs(n)<1e-10?0:n;function T4(n,e,t=""){let i="matrix3d(";for(let r=0;r!==16;r++)i+=IT(e[r]*n.elements[r])+(r!==15?",":")");return t+i}const Zie=(n=>e=>T4(e,n))([1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1]),ere=(n=>(e,t)=>T4(e,n(t),"translate(-50%,-50%)"))(n=>[1/n,1/n,1/n,1,-1/n,-1/n,-1/n,-1,1/n,1/n,1/n,1,1,1,1,1]);function tre(n){return n&&typeof n=="object"&&"current"in n}const nre=q.forwardRef(({children:n,eps:e=.001,style:t,className:i,prepend:r,center:s,fullscreen:o,portal:a,distanceFactor:l,sprite:c=!1,transform:d=!1,occlude:f,onOcclude:p,castShadow:m,receiveShadow:_,material:S,geometry:x,zIndexRange:y=[16777271,0],calculatePosition:E=$ie,as:w="div",wrapperClass:M,pointerEvents:O="auto",...k},I)=>{const{gl:P,camera:D,scene:A,size:R,raycaster:V,events:U,viewport:se}=Kr(),[le]=q.useState(()=>document.createElement(w)),ee=q.useRef(),pe=q.useRef(null),W=q.useRef(0),J=q.useRef([0,0]),Z=q.useRef(null),oe=q.useRef(null),Me=(a==null?void 0:a.current)||U.connected||P.domElement.parentNode,Re=q.useRef(null),he=q.useRef(!1),we=q.useMemo(()=>f&&f!=="blending"||Array.isArray(f)&&f.length&&tre(f[0]),[f]);q.useLayoutEffect(()=>{const Ke=P.domElement;f&&f==="blending"?(Ke.style.zIndex=`${Math.floor(y[0]/2)}`,Ke.style.position="absolute",Ke.style.pointerEvents="none"):(Ke.style.zIndex=null,Ke.style.position=null,Ke.style.pointerEvents=null)},[f]),q.useLayoutEffect(()=>{if(pe.current){const Ke=ee.current=nk(le);if(A.updateMatrixWorld(),d)le.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const ke=E(pe.current,D,R);le.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${ke[0]}px,${ke[1]}px,0);transform-origin:0 0;`}return Me&&(r?Me.prepend(le):Me.appendChild(le)),()=>{Me&&Me.removeChild(le),Ke.unmount()}}},[Me,d]),q.useLayoutEffect(()=>{M&&(le.className=M)},[M]);const Ne=q.useMemo(()=>d?{position:"absolute",top:0,left:0,width:R.width,height:R.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:s?"translate3d(-50%,-50%,0)":"none",...o&&{top:-R.height/2,left:-R.width/2,width:R.width,height:R.height},...t},[t,s,o,R,d]),be=q.useMemo(()=>({position:"absolute",pointerEvents:O}),[O]);q.useLayoutEffect(()=>{if(he.current=!1,d){var Ke;(Ke=ee.current)==null||Ke.render(q.createElement("div",{ref:Z,style:Ne},q.createElement("div",{ref:oe,style:be},q.createElement("div",{ref:I,className:i,style:t,children:n}))))}else{var ke;(ke=ee.current)==null||ke.render(q.createElement("div",{ref:I,style:Ne,className:i,children:n}))}});const ft=q.useRef(!0);AC(Ke=>{if(pe.current){D.updateMatrixWorld(),pe.current.updateWorldMatrix(!0,!1);const ke=d?J.current:E(pe.current,D,R);if(d||Math.abs(W.current-D.zoom)>e||Math.abs(J.current[0]-ke[0])>e||Math.abs(J.current[1]-ke[1])>e){const xe=Yie(pe.current,D);let j=!1;we&&(Array.isArray(f)?j=f.map(Ue=>Ue.current):f!=="blending"&&(j=[A]));const Ve=ft.current;if(j){const Ue=Kie(pe.current,D,V,j);ft.current=Ue&&!xe}else ft.current=!xe;Ve!==ft.current&&(p?p(!ft.current):le.style.display=ft.current?"block":"none");const Oe=Math.floor(y[0]/2),Pe=f?we?[y[0],Oe]:[Oe-1,0]:y;if(le.style.zIndex=`${Jie(pe.current,D,Pe)}`,d){const[Ue,lt]=[R.width/2,R.height/2],We=D.projectionMatrix.elements[5]*lt,{isOrthographicCamera:X,top:F,left:ae,bottom:_e,right:Te}=D,Se=Zie(D.matrixWorldInverse),nt=X?`scale(${We})translate(${IT(-(Te+ae)/2)}px,${IT((F+_e)/2)}px)`:`translateZ(${We}px)`;let Ce=pe.current.matrixWorld;c&&(Ce=D.matrixWorldInverse.clone().transpose().copyPosition(Ce).scale(pe.current.scale),Ce.elements[3]=Ce.elements[7]=Ce.elements[11]=0,Ce.elements[15]=1),le.style.width=R.width+"px",le.style.height=R.height+"px",le.style.perspective=X?"":`${We}px`,Z.current&&oe.current&&(Z.current.style.transform=`${nt}${Se}translate(${Ue}px,${lt}px)`,oe.current.style.transform=ere(Ce,1/((l||10)/400)))}else{const Ue=l===void 0?1:Qie(pe.current,D)*l;le.style.transform=`translate3d(${ke[0]}px,${ke[1]}px,0) scale(${Ue})`}J.current=ke,W.current=D.zoom}}if(!we&&Re.current&&!he.current)if(d){if(Z.current){const ke=Z.current.children[0];if(ke!=null&&ke.clientWidth&&ke!=null&&ke.clientHeight){const{isOrthographicCamera:xe}=D;if(xe||x)k.scale&&(Array.isArray(k.scale)?k.scale instanceof G?Re.current.scale.copy(k.scale.clone().divideScalar(1)):Re.current.scale.set(1/k.scale[0],1/k.scale[1],1/k.scale[2]):Re.current.scale.setScalar(1/k.scale));else{const j=(l||10)/400,Ve=ke.clientWidth*j,Oe=ke.clientHeight*j;Re.current.scale.set(Ve,Oe,1)}he.current=!0}}}else{const ke=le.children[0];if(ke!=null&&ke.clientWidth&&ke!=null&&ke.clientHeight){const xe=1/se.factor,j=ke.clientWidth*xe,Ve=ke.clientHeight*xe;Re.current.scale.set(j,Ve,1),he.current=!0}Re.current.lookAt(Ke.camera.position)}});const dt=q.useMemo(()=>({vertexShader:d?void 0:` + /* + This shader is from the THREE's SpriteMaterial. + We need to turn the backing plane into a Sprite + (make it always face the camera) if "transfrom" + is false. + */ + #include + + void main() { + vec2 center = vec2(0., 1.); + float rotation = 0.0; + + // This is somewhat arbitrary, but it seems to work well + // Need to figure out how to derive this dynamically if it even matters + float size = 0.03; + + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + + gl_Position = projectionMatrix * mvPosition; + } + `,fragmentShader:` + void main() { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}),[d]);return q.createElement("group",vm({},k,{ref:pe}),f&&!we&&q.createElement("mesh",{castShadow:m,receiveShadow:_,ref:Re},x||q.createElement("planeGeometry",null),S||q.createElement("shaderMaterial",{side:Bs,vertexShader:dt.vertexShader,fragmentShader:dt.fragmentShader})))});let Ff=0;const ire=t4(n=>(Dh.onStart=(e,t,i)=>{n({active:!0,item:e,loaded:t,total:i,progress:(t-Ff)/(i-Ff)*100})},Dh.onLoad=()=>{n({active:!1})},Dh.onError=e=>n(t=>({errors:[...t.errors,e]})),Dh.onProgress=(e,t,i)=>{t===i&&(Ff=i),n({active:!0,item:e,loaded:t,total:i,progress:(t-Ff)/(i-Ff)*100||100})},{errors:[],active:!1,progress:0,item:"",loaded:0,total:0}));var rre=Object.defineProperty,sre=(n,e,t)=>e in n?rre(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Rt=(n,e,t)=>(sre(n,typeof e!="symbol"?e+"":e,t),t);const av=new yu,yN=new Wo,ore=Math.cos(70*(Math.PI/180)),vN=(n,e)=>(n%e+e)%e;let are=class extends Ys{constructor(e,t){super(),Rt(this,"object"),Rt(this,"domElement"),Rt(this,"enabled",!0),Rt(this,"target",new G),Rt(this,"minDistance",0),Rt(this,"maxDistance",1/0),Rt(this,"minZoom",0),Rt(this,"maxZoom",1/0),Rt(this,"minPolarAngle",0),Rt(this,"maxPolarAngle",Math.PI),Rt(this,"minAzimuthAngle",-1/0),Rt(this,"maxAzimuthAngle",1/0),Rt(this,"enableDamping",!1),Rt(this,"dampingFactor",.05),Rt(this,"enableZoom",!0),Rt(this,"zoomSpeed",1),Rt(this,"enableRotate",!0),Rt(this,"rotateSpeed",1),Rt(this,"enablePan",!0),Rt(this,"panSpeed",1),Rt(this,"screenSpacePanning",!0),Rt(this,"keyPanSpeed",7),Rt(this,"zoomToCursor",!1),Rt(this,"autoRotate",!1),Rt(this,"autoRotateSpeed",2),Rt(this,"reverseOrbit",!1),Rt(this,"reverseHorizontalOrbit",!1),Rt(this,"reverseVerticalOrbit",!1),Rt(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),Rt(this,"mouseButtons",{LEFT:Cc.ROTATE,MIDDLE:Cc.DOLLY,RIGHT:Cc.PAN}),Rt(this,"touches",{ONE:bc.ROTATE,TWO:bc.DOLLY_PAN}),Rt(this,"target0"),Rt(this,"position0"),Rt(this,"zoom0"),Rt(this,"_domElementKeyEvents",null),Rt(this,"getPolarAngle"),Rt(this,"getAzimuthalAngle"),Rt(this,"setPolarAngle"),Rt(this,"setAzimuthalAngle"),Rt(this,"getDistance"),Rt(this,"listenToKeyEvents"),Rt(this,"stopListenToKeyEvents"),Rt(this,"saveState"),Rt(this,"reset"),Rt(this,"update"),Rt(this,"connect"),Rt(this,"dispose"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>d.phi,this.getAzimuthalAngle=()=>d.theta,this.setPolarAngle=K=>{let ve=vN(K,2*Math.PI),je=d.phi;je<0&&(je+=2*Math.PI),ve<0&&(ve+=2*Math.PI);let Y=Math.abs(ve-je);2*Math.PI-Y{let ve=vN(K,2*Math.PI),je=d.theta;je<0&&(je+=2*Math.PI),ve<0&&(ve+=2*Math.PI);let Y=Math.abs(ve-je);2*Math.PI-Yi.object.position.distanceTo(i.target),this.listenToKeyEvents=K=>{K.addEventListener("keydown",Ce),this._domElementKeyEvents=K},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",Ce),this._domElementKeyEvents=null},this.saveState=()=>{i.target0.copy(i.target),i.position0.copy(i.object.position),i.zoom0=i.object.zoom},this.reset=()=>{i.target.copy(i.target0),i.object.position.copy(i.position0),i.object.zoom=i.zoom0,i.object.updateProjectionMatrix(),i.dispatchEvent(r),i.update(),l=a.NONE},this.update=(()=>{const K=new G,ve=new G(0,1,0),je=new nr().setFromUnitVectors(e.up,ve),Y=je.clone().invert(),Fe=new G,me=new nr,Ae=2*Math.PI;return function(){const $e=i.object.position;je.setFromUnitVectors(e.up,ve),Y.copy(je).invert(),K.copy($e).sub(i.target),K.applyQuaternion(je),d.setFromVector3(K),i.autoRotate&&l===a.NONE&&se(V()),i.enableDamping?(d.theta+=f.theta*i.dampingFactor,d.phi+=f.phi*i.dampingFactor):(d.theta+=f.theta,d.phi+=f.phi);let At=i.minAzimuthAngle,Bt=i.maxAzimuthAngle;isFinite(At)&&isFinite(Bt)&&(At<-Math.PI?At+=Ae:At>Math.PI&&(At-=Ae),Bt<-Math.PI?Bt+=Ae:Bt>Math.PI&&(Bt-=Ae),At<=Bt?d.theta=Math.max(At,Math.min(Bt,d.theta)):d.theta=d.theta>(At+Bt)/2?Math.max(At,d.theta):Math.min(Bt,d.theta)),d.phi=Math.max(i.minPolarAngle,Math.min(i.maxPolarAngle,d.phi)),d.makeSafe(),i.enableDamping===!0?i.target.addScaledVector(m,i.dampingFactor):i.target.add(m),i.zoomToCursor&&D||i.object.isOrthographicCamera?d.radius=Me(d.radius):d.radius=Me(d.radius*p),K.setFromSpherical(d),K.applyQuaternion(Y),$e.copy(i.target).add(K),i.object.matrixAutoUpdate||i.object.updateMatrix(),i.object.lookAt(i.target),i.enableDamping===!0?(f.theta*=1-i.dampingFactor,f.phi*=1-i.dampingFactor,m.multiplyScalar(1-i.dampingFactor)):(f.set(0,0,0),m.set(0,0,0));let Cn=!1;if(i.zoomToCursor&&D){let It=null;if(i.object instanceof Dn&&i.object.isPerspectiveCamera){const Sn=K.length();It=Me(Sn*p);const kn=Sn-It;i.object.position.addScaledVector(I,kn),i.object.updateMatrixWorld()}else if(i.object.isOrthographicCamera){const Sn=new G(P.x,P.y,0);Sn.unproject(i.object),i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom/p)),i.object.updateProjectionMatrix(),Cn=!0;const kn=new G(P.x,P.y,0);kn.unproject(i.object),i.object.position.sub(kn).add(Sn),i.object.updateMatrixWorld(),It=K.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),i.zoomToCursor=!1;It!==null&&(i.screenSpacePanning?i.target.set(0,0,-1).transformDirection(i.object.matrix).multiplyScalar(It).add(i.object.position):(av.origin.copy(i.object.position),av.direction.set(0,0,-1).transformDirection(i.object.matrix),Math.abs(i.object.up.dot(av.direction))c||8*(1-me.dot(i.object.quaternion))>c?(i.dispatchEvent(r),Fe.copy(i.object.position),me.copy(i.object.quaternion),Cn=!1,!0):!1}})(),this.connect=K=>{i.domElement=K,i.domElement.style.touchAction="none",i.domElement.addEventListener("contextmenu",Le),i.domElement.addEventListener("pointerdown",F),i.domElement.addEventListener("pointercancel",_e),i.domElement.addEventListener("wheel",nt)},this.dispose=()=>{var K,ve,je,Y,Fe,me;i.domElement&&(i.domElement.style.touchAction="auto"),(K=i.domElement)==null||K.removeEventListener("contextmenu",Le),(ve=i.domElement)==null||ve.removeEventListener("pointerdown",F),(je=i.domElement)==null||je.removeEventListener("pointercancel",_e),(Y=i.domElement)==null||Y.removeEventListener("wheel",nt),(Fe=i.domElement)==null||Fe.ownerDocument.removeEventListener("pointermove",ae),(me=i.domElement)==null||me.ownerDocument.removeEventListener("pointerup",_e),i._domElementKeyEvents!==null&&i._domElementKeyEvents.removeEventListener("keydown",Ce)};const i=this,r={type:"change"},s={type:"start"},o={type:"end"},a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let l=a.NONE;const c=1e-6,d=new MT,f=new MT;let p=1;const m=new G,_=new Ee,S=new Ee,x=new Ee,y=new Ee,E=new Ee,w=new Ee,M=new Ee,O=new Ee,k=new Ee,I=new G,P=new Ee;let D=!1;const A=[],R={};function V(){return 2*Math.PI/60/60*i.autoRotateSpeed}function U(){return Math.pow(.95,i.zoomSpeed)}function se(K){i.reverseOrbit||i.reverseHorizontalOrbit?f.theta+=K:f.theta-=K}function le(K){i.reverseOrbit||i.reverseVerticalOrbit?f.phi+=K:f.phi-=K}const ee=(()=>{const K=new G;return function(je,Y){K.setFromMatrixColumn(Y,0),K.multiplyScalar(-je),m.add(K)}})(),pe=(()=>{const K=new G;return function(je,Y){i.screenSpacePanning===!0?K.setFromMatrixColumn(Y,1):(K.setFromMatrixColumn(Y,0),K.crossVectors(i.object.up,K)),K.multiplyScalar(je),m.add(K)}})(),W=(()=>{const K=new G;return function(je,Y){const Fe=i.domElement;if(Fe&&i.object instanceof Dn&&i.object.isPerspectiveCamera){const me=i.object.position;K.copy(me).sub(i.target);let Ae=K.length();Ae*=Math.tan(i.object.fov/2*Math.PI/180),ee(2*je*Ae/Fe.clientHeight,i.object.matrix),pe(2*Y*Ae/Fe.clientHeight,i.object.matrix)}else Fe&&i.object instanceof zs&&i.object.isOrthographicCamera?(ee(je*(i.object.right-i.object.left)/i.object.zoom/Fe.clientWidth,i.object.matrix),pe(Y*(i.object.top-i.object.bottom)/i.object.zoom/Fe.clientHeight,i.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),i.enablePan=!1)}})();function J(K){i.object instanceof Dn&&i.object.isPerspectiveCamera||i.object instanceof zs&&i.object.isOrthographicCamera?p/=K:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function Z(K){i.object instanceof Dn&&i.object.isPerspectiveCamera||i.object instanceof zs&&i.object.isOrthographicCamera?p*=K:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function oe(K){if(!i.zoomToCursor||!i.domElement)return;D=!0;const ve=i.domElement.getBoundingClientRect(),je=K.clientX-ve.left,Y=K.clientY-ve.top,Fe=ve.width,me=ve.height;P.x=je/Fe*2-1,P.y=-(Y/me)*2+1,I.set(P.x,P.y,1).unproject(i.object).sub(i.object.position).normalize()}function Me(K){return Math.max(i.minDistance,Math.min(i.maxDistance,K))}function Re(K){_.set(K.clientX,K.clientY)}function he(K){oe(K),M.set(K.clientX,K.clientY)}function we(K){y.set(K.clientX,K.clientY)}function Ne(K){S.set(K.clientX,K.clientY),x.subVectors(S,_).multiplyScalar(i.rotateSpeed);const ve=i.domElement;ve&&(se(2*Math.PI*x.x/ve.clientHeight),le(2*Math.PI*x.y/ve.clientHeight)),_.copy(S),i.update()}function be(K){O.set(K.clientX,K.clientY),k.subVectors(O,M),k.y>0?J(U()):k.y<0&&Z(U()),M.copy(O),i.update()}function ft(K){E.set(K.clientX,K.clientY),w.subVectors(E,y).multiplyScalar(i.panSpeed),W(w.x,w.y),y.copy(E),i.update()}function dt(K){oe(K),K.deltaY<0?Z(U()):K.deltaY>0&&J(U()),i.update()}function Ke(K){let ve=!1;switch(K.code){case i.keys.UP:W(0,i.keyPanSpeed),ve=!0;break;case i.keys.BOTTOM:W(0,-i.keyPanSpeed),ve=!0;break;case i.keys.LEFT:W(i.keyPanSpeed,0),ve=!0;break;case i.keys.RIGHT:W(-i.keyPanSpeed,0),ve=!0;break}ve&&(K.preventDefault(),i.update())}function ke(){if(A.length==1)_.set(A[0].pageX,A[0].pageY);else{const K=.5*(A[0].pageX+A[1].pageX),ve=.5*(A[0].pageY+A[1].pageY);_.set(K,ve)}}function xe(){if(A.length==1)y.set(A[0].pageX,A[0].pageY);else{const K=.5*(A[0].pageX+A[1].pageX),ve=.5*(A[0].pageY+A[1].pageY);y.set(K,ve)}}function j(){const K=A[0].pageX-A[1].pageX,ve=A[0].pageY-A[1].pageY,je=Math.sqrt(K*K+ve*ve);M.set(0,je)}function Ve(){i.enableZoom&&j(),i.enablePan&&xe()}function Oe(){i.enableZoom&&j(),i.enableRotate&&ke()}function Pe(K){if(A.length==1)S.set(K.pageX,K.pageY);else{const je=et(K),Y=.5*(K.pageX+je.x),Fe=.5*(K.pageY+je.y);S.set(Y,Fe)}x.subVectors(S,_).multiplyScalar(i.rotateSpeed);const ve=i.domElement;ve&&(se(2*Math.PI*x.x/ve.clientHeight),le(2*Math.PI*x.y/ve.clientHeight)),_.copy(S)}function Ue(K){if(A.length==1)E.set(K.pageX,K.pageY);else{const ve=et(K),je=.5*(K.pageX+ve.x),Y=.5*(K.pageY+ve.y);E.set(je,Y)}w.subVectors(E,y).multiplyScalar(i.panSpeed),W(w.x,w.y),y.copy(E)}function lt(K){const ve=et(K),je=K.pageX-ve.x,Y=K.pageY-ve.y,Fe=Math.sqrt(je*je+Y*Y);O.set(0,Fe),k.set(0,Math.pow(O.y/M.y,i.zoomSpeed)),J(k.y),M.copy(O)}function We(K){i.enableZoom&<(K),i.enablePan&&Ue(K)}function X(K){i.enableZoom&<(K),i.enableRotate&&Pe(K)}function F(K){var ve,je;i.enabled!==!1&&(A.length===0&&((ve=i.domElement)==null||ve.ownerDocument.addEventListener("pointermove",ae),(je=i.domElement)==null||je.ownerDocument.addEventListener("pointerup",_e)),Ze(K),K.pointerType==="touch"?Ge(K):Te(K))}function ae(K){i.enabled!==!1&&(K.pointerType==="touch"?Lt(K):Se(K))}function _e(K){var ve,je,Y;Et(K),A.length===0&&((ve=i.domElement)==null||ve.releasePointerCapture(K.pointerId),(je=i.domElement)==null||je.ownerDocument.removeEventListener("pointermove",ae),(Y=i.domElement)==null||Y.ownerDocument.removeEventListener("pointerup",_e)),i.dispatchEvent(o),l=a.NONE}function Te(K){let ve;switch(K.button){case 0:ve=i.mouseButtons.LEFT;break;case 1:ve=i.mouseButtons.MIDDLE;break;case 2:ve=i.mouseButtons.RIGHT;break;default:ve=-1}switch(ve){case Cc.DOLLY:if(i.enableZoom===!1)return;he(K),l=a.DOLLY;break;case Cc.ROTATE:if(K.ctrlKey||K.metaKey||K.shiftKey){if(i.enablePan===!1)return;we(K),l=a.PAN}else{if(i.enableRotate===!1)return;Re(K),l=a.ROTATE}break;case Cc.PAN:if(K.ctrlKey||K.metaKey||K.shiftKey){if(i.enableRotate===!1)return;Re(K),l=a.ROTATE}else{if(i.enablePan===!1)return;we(K),l=a.PAN}break;default:l=a.NONE}l!==a.NONE&&i.dispatchEvent(s)}function Se(K){if(i.enabled!==!1)switch(l){case a.ROTATE:if(i.enableRotate===!1)return;Ne(K);break;case a.DOLLY:if(i.enableZoom===!1)return;be(K);break;case a.PAN:if(i.enablePan===!1)return;ft(K);break}}function nt(K){i.enabled===!1||i.enableZoom===!1||l!==a.NONE&&l!==a.ROTATE||(K.preventDefault(),i.dispatchEvent(s),dt(K),i.dispatchEvent(o))}function Ce(K){i.enabled===!1||i.enablePan===!1||Ke(K)}function Ge(K){switch(vt(K),A.length){case 1:switch(i.touches.ONE){case bc.ROTATE:if(i.enableRotate===!1)return;ke(),l=a.TOUCH_ROTATE;break;case bc.PAN:if(i.enablePan===!1)return;xe(),l=a.TOUCH_PAN;break;default:l=a.NONE}break;case 2:switch(i.touches.TWO){case bc.DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;Ve(),l=a.TOUCH_DOLLY_PAN;break;case bc.DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;Oe(),l=a.TOUCH_DOLLY_ROTATE;break;default:l=a.NONE}break;default:l=a.NONE}l!==a.NONE&&i.dispatchEvent(s)}function Lt(K){switch(vt(K),l){case a.TOUCH_ROTATE:if(i.enableRotate===!1)return;Pe(K),i.update();break;case a.TOUCH_PAN:if(i.enablePan===!1)return;Ue(K),i.update();break;case a.TOUCH_DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;We(K),i.update();break;case a.TOUCH_DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;X(K),i.update();break;default:l=a.NONE}}function Le(K){i.enabled!==!1&&K.preventDefault()}function Ze(K){A.push(K)}function Et(K){delete R[K.pointerId];for(let ve=0;ve0,O=U>0,k=se>0,I=(M?1:0)+(O?1:0)+(k?1:0),I){case 0:{y.push(S[w]),y.push(S[w+1]),y.push(S[w+2]);break}case 1:{if(M&&(P=S[w+1],D=S[w+2],A=_(S[w],P,x,E),R=_(S[w],D,x,E)),O){P=S[w],D=S[w+2],A=_(S[w+1],P,x,E),R=_(S[w+1],D,x,E),y.push(A),y.push(D.clone()),y.push(P.clone()),y.push(D.clone()),y.push(A.clone()),y.push(R);break}k&&(P=S[w],D=S[w+1],A=_(S[w+2],P,x,E),R=_(S[w+2],D,x,E)),y.push(P.clone()),y.push(D.clone()),y.push(A),y.push(R),y.push(A.clone()),y.push(D.clone());break}case 2:{M||(P=S[w].clone(),D=_(P,S[w+1],x,E),A=_(P,S[w+2],x,E),y.push(P),y.push(D),y.push(A)),O||(P=S[w+1].clone(),D=_(P,S[w+2],x,E),A=_(P,S[w],x,E),y.push(P),y.push(D),y.push(A)),k||(P=S[w+2].clone(),D=_(P,S[w],x,E),A=_(P,S[w+1],x,E),y.push(P),y.push(D),y.push(A));break}}}return y}function _(S,x,y,E){const w=S.position.dot(y)-E,M=x.position.dot(y)-E,O=w/(w-M);return new _N(new G(S.position.x+O*(x.position.x-S.position.x),S.position.y+O*(x.position.y-S.position.y),S.position.z+O*(x.position.z-S.position.z)),new G(S.normal.x+O*(x.normal.x-S.normal.x),S.normal.y+O*(x.normal.y-S.normal.y),S.normal.z+O*(x.normal.z-S.normal.z)))}}}class _N{constructor(e,t){this.position=e,this.normal=t}clone(){return new this.constructor(this.position.clone(),this.normal.clone())}}const C1=n=>n===Object(n)&&!Array.isArray(n)&&typeof n!="function";function bC(n,e){const t=Kr(s=>s.gl),i=Qm(kx,C1(n)?Object.values(n):n);return q.useLayoutEffect(()=>{e==null||e(i)},[e]),q.useEffect(()=>{if("initTexture"in t){let s=[];Array.isArray(i)?s=i:i instanceof In?s=[i]:C1(i)&&(s=Object.values(i)),s.forEach(o=>{o instanceof In&&t.initTexture(o)})}},[t,i]),q.useMemo(()=>{if(C1(n)){const s={};let o=0;for(const a in n)s[a]=i[o++];return s}else return i},[n,i])}bC.preload=n=>Qm.preload(kx,n);bC.clear=n=>Qm.clear(kx,n);function cre(n){return Array.isArray(n)}function b1(n=[0,0,0]){return cre(n)?n:n instanceof G||n instanceof _r?[n.x,n.y,n.z]:[n,n,n]}const ure=q.forwardRef(function({debug:e,depthTest:t=!1,polygonOffsetFactor:i=-10,map:r,mesh:s,children:o,position:a,rotation:l,scale:c,...d},f){const p=q.useRef(null);q.useImperativeHandle(f,()=>p.current);const m=q.useRef(null);return q.useLayoutEffect(()=>{const _=(s==null?void 0:s.current)||p.current.parent,S=p.current;if(!(_ instanceof ni))throw new Error('Decal must have a Mesh as parent or specify its "mesh" prop');const x={position:new G,rotation:new _r,scale:new G(1,1,1)};if(_){lo(x,{position:a,scale:c});const y=_.matrixWorld.clone();if(_.matrixWorld.identity(),!l||typeof l=="number"){const E=new Zt;E.position.copy(x.position),E.lookAt(_.position),typeof l=="number"&&E.rotateZ(l),lo(x,{rotation:E.rotation})}else lo(x,{rotation:l});return S.geometry=new lre(_,x.position,x.rotation,x.scale),m.current&&(lo(m.current,x),m.current.traverse(E=>E.raycast=()=>null)),_.matrixWorld=y,()=>{S.geometry.dispose()}}},[s,...b1(a),...b1(c),...b1(l)]),q.createElement("mesh",vm({ref:p,"material-transparent":!0,"material-polygonOffset":!0,"material-polygonOffsetFactor":i,"material-depthTest":t,"material-map":r},d),o,e&&q.createElement("mesh",{ref:m},q.createElement("boxGeometry",null),q.createElement("meshNormalMaterial",{wireframe:!0}),q.createElement("axesHelper",null)))}),hre=q.forwardRef(({makeDefault:n,camera:e,regress:t,domElement:i,enableDamping:r=!0,keyEvents:s=!1,onChange:o,onStart:a,onEnd:l,...c},d)=>{const f=Kr(k=>k.invalidate),p=Kr(k=>k.camera),m=Kr(k=>k.gl),_=Kr(k=>k.events),S=Kr(k=>k.setEvents),x=Kr(k=>k.set),y=Kr(k=>k.get),E=Kr(k=>k.performance),w=e||p,M=i||_.connected||m.domElement,O=q.useMemo(()=>new are(w),[w]);return AC(()=>{O.enabled&&O.update()},-1),q.useEffect(()=>(s&&O.connect(s===!0?M:s),O.connect(M),()=>void O.dispose()),[s,M,t,O,f]),q.useEffect(()=>{const k=D=>{f(),t&&E.regress(),o&&o(D)},I=D=>{a&&a(D)},P=D=>{l&&l(D)};return O.addEventListener("change",k),O.addEventListener("start",I),O.addEventListener("end",P),()=>{O.removeEventListener("start",I),O.removeEventListener("end",P),O.removeEventListener("change",k)}},[o,a,l,O,f,S]),q.useEffect(()=>{if(n){const k=y().controls;return x({controls:O}),()=>x({controls:k})}},[n,O]),q.createElement("primitive",vm({ref:d,object:O,enableDamping:r},c))}),dre=q.forwardRef(({children:n,enabled:e=!0,speed:t=1,rotationIntensity:i=1,floatIntensity:r=1,floatingRange:s=[-.1,.1],autoInvalidate:o=!1,...a},l)=>{const c=q.useRef(null);q.useImperativeHandle(l,()=>c.current,[]);const d=q.useRef(Math.random()*1e4);return AC(f=>{var p,m;if(!e||t===0)return;o&&f.invalidate();const _=d.current+f.clock.getElapsedTime();c.current.rotation.x=Math.cos(_/4*t)/8*i,c.current.rotation.y=Math.sin(_/4*t)/8*i,c.current.rotation.z=Math.sin(_/4*t)/20*i;let S=Math.sin(_/4*t)/10;S=jF.mapLinear(S,-.1,.1,(p=s==null?void 0:s[0])!==null&&p!==void 0?p:-.1,(m=s==null?void 0:s[1])!==null&&m!==void 0?m:.1),c.current.position.y=S*r,c.current.updateMatrix()}),q.createElement("group",a,q.createElement("group",{ref:c,matrixAutoUpdate:!1},n))});function fre({all:n,scene:e,camera:t}){const i=Kr(({gl:o})=>o),r=Kr(({camera:o})=>o),s=Kr(({scene:o})=>o);return q.useLayoutEffect(()=>{const o=[];n&&(e||s).traverse(c=>{c.visible===!1&&(o.push(c),c.visible=!0)}),i.compile(e||s,t||r);const a=new JM(128);new QM(.01,1e5,a).update(i,e||s),a.dispose(),o.forEach(c=>c.visible=!1)},[]),null}const pre=()=>{const{progress:n}=ire(),e={display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},t={fontSize:14,color:"#F1F1F1",fontWeight:800,marginTop:40};return B.jsxs(nre,{as:"div",center:!0,style:e,children:[B.jsx("span",{className:"canvas-loader"}),B.jsxs("p",{style:t,children:[n.toFixed(0),"%"]})]})},mre=n=>{const[e]=bC([n.imgUrl]);return B.jsxs(dre,{speed:1,rotationIntensity:0,floatIntensity:5,children:[B.jsx("ambientLight",{intensity:2.4}),B.jsx("directionalLight",{position:[0,0,.05]}),B.jsxs("mesh",{castShadow:!0,receiveShadow:!0,scale:2.75,children:[B.jsx("icosahedronGeometry",{args:[1,1]}),B.jsx("meshStandardMaterial",{color:"#fcd4d4",polygonOffset:!0,polygonOffsetFactor:-5,flatShading:!0}),B.jsx(ure,{position:[0,0,1],rotation:[2*Math.PI,0,6.25],scale:1,map:e,flatShading:!0})]})]})},gre=({icon:n})=>B.jsxs(Xie,{frameloop:"demand",dpr:[1,2],gl:{preserveDrawingBuffer:!0},children:[B.jsxs(q.Suspense,{fallback:B.jsx(pre,{}),children:[B.jsx(hre,{enableZoom:!1}),B.jsx(mre,{imgUrl:n})]}),B.jsx(fre,{all:!0})]}),yre="/assets/texture-5adaf7bf.webp",vre=()=>B.jsxs("section",{className:"xl:mt-6 flex flex-row flex-wrap justify-center items-center gap-10",children:[B.jsxs(er.div,{variants:Lm(),children:[B.jsx("h2",{className:`${sr.sectionHeadText} text-center`,children:"Skills & Technologies."}),B.jsx("p",{className:`${sr.sectionSubText} text-center`,children:"What have i learnd?"})]}),B.jsx("div",{className:"w-full lg:w-[400px] lg:h-[400px] ",children:B.jsx(gre,{icon:yre})},"skillsBall")]}),_re=Td(vre,"TechSkillsSection"),xre="/assets/cover_img-4c0efeb6.webp",xN="/assets/resume-bb345e2c.pdf",Sre=()=>{const[n,e]=q.useState(!1),t=()=>e(!0),i=()=>e(!1),r=()=>{const s=document.createElement("a");s.href=xN,s.download="Satyam_Mishra_Resume",s.click()};return B.jsxs("section",{className:"-m-5 md:-m-10 max-w-screen-xl mx-auto my-10 space-y-10 max",children:[B.jsxs(er.div,{variants:Lm(0),children:[B.jsx("h2",{className:`${sr.sectionHeadText} text-center`,children:"Resume."}),B.jsx("p",{className:`${sr.sectionSubText} text-center`,children:"Here's my Resume😁"})]}),B.jsx(er.div,{variants:Ed("right","spring",.5*0,.75),className:"md:flex justify-center items-center",children:B.jsxs(G_,{options:{max:45,scale:1,speed:450},className:"group bg-white shadow-[#fcd4d4] shadow-card rounded-2xl mx-auto w-[90%] md:min-w-1/3 md:max-w-3xl h-full",children:[B.jsx("div",{className:"group-hover:opacity-100 relative w-full h-full mb-5",children:B.jsx("img",{src:xre,loading:"lazy",alt:"Resume cover image",className:"w-full h-full object-cover rounded-2xl"})}),B.jsxs("div",{className:"text-primary flex items-center space-x-5 md:space-y-5 justify-center absolute z-10 md:top-10 md:-right-24 md:bottom-0 md:flex-col md:items-center md:justify-center transition-opacity duration-300",children:[B.jsxs("button",{onClick:r,className:"mt-8 bg-blue-500 hover:bg-blue-300 font-bold py-3 px-6 rounded-full flex items-center",children:["Download ",B.jsx("span",{className:"ml-2",children:"▶"})]}),B.jsxs("button",{onClick:t,className:"mt-8 bg-green-500 hover:bg-green-300 font-bold py-3 px-6 rounded-full flex items-center",children:["View ",B.jsx("span",{className:"ml-2",children:"▶"})]})]})]})}),n&&B.jsx("div",{className:"fixed inset-0 z-50 overflow-auto -top-10 bg-black bg-opacity-60 flex items-center justify-center",children:B.jsxs("div",{className:"bg-white p-2 rounded-2xl max-w-screen-lg w-[70%] relative",children:[B.jsx("button",{className:"absolute -top-12 right-0 md:top-2 md:-right-20 bg-black hover:bg-gray-800 py-2 px-3 rounded-xl text-white hover:text-gray-200",onClick:i,children:"Close"}),B.jsx("iframe",{title:"PDF Viewer",src:xN,className:"w-full h-[400px]"})]})})]})},wre=Td(Sre,"ResumeSection"),Ere="data:image/webp;base64,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",Tre="/assets/appstore-0b8f390b.png",Are="/assets/colab-9e4861eb.png",Mre="/assets/huggingface-720eadc9.png",SN="/assets/website-078d1216.gif",Cre=({index:n,name:e,description:t,tags:i,image:r,source_code_link:s,date:o})=>B.jsx(G_,{className:"sm:w-[360px] w-full",children:B.jsx(er.div,{id:n,variants:Ed("right","spring",0,.75),className:"shadow-[#fcd4d4] green-pink-gradient shadow-card p-[1px] rounded-2xl ",children:B.jsxs("div",{className:"bg-primary rounded-2xl py-5 px-8",options:{max:45,scale:1,speed:450},children:[B.jsxs("div",{className:"relative w-full h-[230px]",children:[B.jsx("img",{src:r,alt:"project_image",className:"w-full h-full object-cover rounded-2xl"}),B.jsx("div",{className:"absolute inset-0 z-10 space-y-3 flex-col justify-end m-3 card-img_hover",children:Object.entries(s).map(([a,l])=>B.jsx("div",{onClick:()=>window.open(l,"_blank"),className:"border-black border-2 white-gradient w-10 h-10 rounded-full flex justify-center items-center cursor-pointer",title:a==="Github"?"View in GitHub":a==="Appstore"?"View in App Store":a==="Colab"?"View in Google Colab":a==="Huggingface"?"View in Hugging Face":a==="Live"?"View Live Website":"View Now",children:B.jsx("img",{src:a==="Github"?Ere:a==="Appstore"?Tre:a==="Colab"?Are:a==="Huggingface"?Mre:SN,alt:`${a} link`,className:"w-1/2 h-1/2 object-contain"})},a))})]}),B.jsxs("div",{className:"mt-5",children:[B.jsx("h3",{className:"text-black font-bold text-[24px]",children:e}),B.jsx("p",{className:"mt-2 text-secondary text-[14px]",children:t})]}),B.jsxs("div",{className:"mt-4 flex flex-wrap gap-2",children:[Object.entries(i).map(([a,l])=>B.jsxs("p",{className:`text-[14px] ${l}`,children:["#",a," "]},`${e}-${a}`))," "]}),B.jsx("p",{children:o})]})})}),bre=()=>{const[n,e]=q.useState([]);return q.useEffect(()=>{(async()=>{const r=(await LM(IM(NM,"Projects"))).docs.map(s=>s.data()).sort((s,o)=>o.index-s.index);e(r)})()},[]),B.jsxs("section",{className:"-m-5 md:-m-10 ",children:[B.jsxs(er.div,{variants:Lm(0),children:[B.jsx("h2",{className:`${sr.sectionHeadText} text-center`,children:"Projects."}),B.jsx("p",{className:`${sr.sectionSubText} text-center`,children:"My works? Here they are."})]}),B.jsxs("div",{className:" mt-20 grid md:grid-cols-2 lg:grid-cols-3 gap-5",children:[n.map((t,i)=>B.jsx(Cre,{index:i,...t},`project-${i}`))," "]})]})},Pre=Td(bre,"ProjectsSection"),Rre=({index:n,name:e,date:t,image:i,link:r})=>B.jsx("div",{id:n,children:B.jsx(er.div,{variants:Ed("right","spring",.5,.75),children:B.jsx(G_,{options:{max:45,scale:1,speed:450},className:"bg-white shadow-[#fcd4d4] shadow-card p-5 rounded-2xl sm:w-[360px] w-full",children:B.jsxs("a",{href:r,target:"_blank",children:[B.jsx("div",{className:"relative w-full ",children:B.jsx("img",{src:i,placeholder:e,loading:"lazy",alt:`${e} cover image`,className:"w-full h-52 object-cover rounded-2xl"})}),B.jsx("p",{className:"mt-3 text-left",children:t}),B.jsx("h3",{className:"text-black font-bold text-[24px] text-left",children:e})]})})})});function Ire(){const[n,e]=q.useState([]);return q.useEffect(()=>{(async()=>{const r=(await LM(IM(NM,"Blogs"))).docs.map(s=>s.data()).sort((s,o)=>o.index-s.index);e(r)})()},[]),B.jsxs("div",{className:"my-10",children:[B.jsxs("div",{children:[B.jsx("h2",{className:`${sr.sectionHeadText} text-center`,children:"Blogs."}),B.jsx("p",{className:`${sr.sectionSubText} text-center`,children:"Blogs written by me"})]}),B.jsx("div",{className:"my-20 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5",children:n.map((t,i)=>B.jsx(Rre,{index:i,...t},`blog-${i}`))})]})}const Lre=Td(Ire,"BlogsSections"),_m={_origin:"https://api.emailjs.com"},Nre=(n,e="https://api.emailjs.com")=>{_m._userID=n,_m._origin=e},A4=(n,e,t)=>{if(!n)throw"The public key is required. Visit https://dashboard.emailjs.com/admin/account";if(!e)throw"The service ID is required. Visit https://dashboard.emailjs.com/admin";if(!t)throw"The template ID is required. Visit https://dashboard.emailjs.com/admin/templates";return!0};class wN{constructor(e){this.status=e?e.status:0,this.text=e?e.responseText:"Network Error"}}const M4=(n,e,t={})=>new Promise((i,r)=>{const s=new XMLHttpRequest;s.addEventListener("load",({target:o})=>{const a=new wN(o);a.status===200||a.text==="OK"?i(a):r(a)}),s.addEventListener("error",({target:o})=>{r(new wN(o))}),s.open("POST",_m._origin+n,!0),Object.keys(t).forEach(o=>{s.setRequestHeader(o,t[o])}),s.send(e)}),Dre=(n,e,t,i)=>{const r=i||_m._userID;return A4(r,n,e),M4("/api/v1.0/email/send",JSON.stringify({lib_version:"3.12.1",user_id:r,service_id:n,template_id:e,template_params:t}),{"Content-type":"application/json"})},kre=n=>{let e;if(typeof n=="string"?e=document.querySelector(n):e=n,!e||e.nodeName!=="FORM")throw"The 3rd parameter is expected to be the HTML form element or the style selector of form";return e},Ore=(n,e,t,i)=>{const r=i||_m._userID,s=kre(t);A4(r,n,e);const o=new FormData(s);return o.append("lib_version","3.12.1"),o.append("service_id",n),o.append("template_id",e),o.append("user_id",r),M4("/api/v1.0/email/send-form",o)},EN={init:Nre,send:Dre,sendForm:Ore},Ure=()=>{const n=q.useRef(),[e,t]=q.useState({name:"",email:"",message:""}),[i,r]=q.useState(!1),[s,o]=q.useState(!1),a=c=>{const{target:d}=c,{name:f,value:p}=d;t({...e,[f]:p})},l=c=>{c.preventDefault(),r(!0),EN.init("Tlnn1O7PC8WlYPRT7"),EN.send("service_w2nrv74","template_hmf109b",{from_name:e.name,to_name:"Satyam Mishra",from_email:e.email,to_email:"satyammishra9050@gmail.com",message:e.message}).then(()=>{r(!1),o(!0),t({name:"",email:"",message:""})},d=>{r(!1),console.error(d),alert("Ahh, something went wrong. Please try again.")})};return B.jsxs("footer",{id:"ContactSection",className:"lg:grid lg:grid-cols-5 bg-black h-fit ",children:[B.jsxs("div",{className:"relative p-12 block h-32 lg:col-span-2 lg:h-full",children:[B.jsx("p",{className:`${sr.sectionSubText} text-white`,children:"I am open to work"}),B.jsx("h3",{className:`${sr.sectionHeadText} text-primary`,children:"Get In Touch."}),s?B.jsxs("div",{children:[B.jsx("p",{className:"text-green-500 mt-2",children:"Thank you. I have recieved your msg."}),B.jsx("p",{className:"text-green-500",children:"I will get back to you right on."})]}):B.jsxs("form",{ref:n,onSubmit:l,className:"flex flex-col gap-1",children:[B.jsxs("label",{className:"flex flex-col",children:[B.jsx("span",{className:"text-black font-medium mb-1",children:"Your Name"}),B.jsx("input",{type:"text",name:"name",value:e.name,onChange:a,placeholder:"What's your good name?",className:"bg-blue-50 py-4 px-6 placeholder:text-secondary text-black rounded-lg outline-none border-none font-medium"})]}),B.jsxs("label",{className:"flex flex-col",children:[B.jsx("span",{className:"text-black font-medium mb-1",children:"Your Email"}),B.jsx("input",{type:"email",name:"email",value:e.email,onChange:a,placeholder:"What's your email?",className:"bg-blue-50 py-4 px-6 placeholder:text-secondary text-black rounded-lg outline-none border-none font-medium"})]}),B.jsxs("label",{className:"flex flex-col",children:[B.jsx("span",{className:"text-black font-medium mb-1",children:"Your Message"}),B.jsx("textarea",{name:"message",value:e.message,onChange:a,placeholder:"What's your message?",className:"bg-blue-50 py-4 px-6 placeholder:text-secondary text-black rounded-lg outline-none border-none font-medium"})]}),B.jsx("button",{type:"submit","aria-busy":i,className:"mt-6 bg-secondary hover:bg-slate-600 py-3 px-8 rounded-xl outline-none w-fit text-primary font-bold",children:i?"Sending...":"Send"})]})]}),B.jsxs("div",{className:"px-4 py-16 sm:px-6 lg:col-span-3 lg:px-8",children:[B.jsxs("div",{className:"grid grid-cols-1 gap-8 sm:grid-cols-2",children:[B.jsxs("div",{children:[B.jsxs("p",{children:[B.jsx("span",{className:"text-xs uppercase tracking-wide text-gray-200",children:" Mail me "}),B.jsx("a",{href:"mailto:satyam.work.only@gmail.com?subject=Just%20wondaring&body=Nothing%20much.",className:"animate-pulse block text-2xl font-medium text-gray-400 hover:opacity-75 sm:text-3xl",children:"Click here to mail."})]}),B.jsxs("ul",{className:"text-gray-200 mt-8 flex gap-6",children:[B.jsx("li",{children:B.jsxs("a",{href:"https://www.instagram.com/satyammishra9050/",rel:"noreferrer",target:"_blank",className:"transition hover:opacity-75",children:[B.jsx("span",{className:"sr-only",children:"Instagram"}),B.jsx("svg",{className:"size-6",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:B.jsx("path",{fillRule:"evenodd",d:"M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z",clipRule:"evenodd"})})]})}),B.jsx("li",{children:B.jsxs("a",{href:"https://x.com/bedeadmishra",rel:"noreferrer",target:"_blank",className:"transition hover:opacity-75",children:[B.jsx("span",{className:"sr-only",children:"Twitter"}),B.jsx("svg",{className:"size-6",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:B.jsx("path",{d:"M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84"})})]})}),B.jsx("li",{children:B.jsxs("a",{href:"https://github.com/bedead",rel:"noreferrer",target:"_blank",className:"transition hover:opacity-75",children:[B.jsx("span",{className:"sr-only",children:"GitHub"}),B.jsx("svg",{className:"size-6",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:B.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})]})}),B.jsx("li",{children:B.jsxs("a",{href:"https://www.linkedin.com/in/theaiguysatyam/",rel:"noreferrer",target:"_blank",className:"transition hover:opacity-75",children:[B.jsx("span",{className:"sr-only",children:"Linkedin"}),B.jsx("svg",{className:"size-6",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 24 24",children:B.jsx("path",{d:"M 5.75 3 C 4.2400226 3 3 4.2400226 3 5.75 L 3 18.25 C 3 19.759977 4.2400226 21 5.75 21 L 18.25 21 C 19.759977 21 21 19.759977 21 18.25 L 21 5.75 C 21 4.2400226 19.759977 3 18.25 3 L 5.75 3 z M 5.75 4.5 L 18.25 4.5 C 18.950023 4.5 19.5 5.0499774 19.5 5.75 L 19.5 18.25 C 19.5 18.950023 18.950023 19.5 18.25 19.5 L 5.75 19.5 C 5.0499774 19.5 4.5 18.950023 4.5 18.25 L 4.5 5.75 C 4.5 5.0499774 5.0499774 4.5 5.75 4.5 z M 8.1855469 6.7851562 C 7.4445469 6.7851563 7 7.2293594 7 7.8183594 C 7 8.4113594 7.444375 8.8574219 8.109375 8.8574219 C 8.850375 8.8574219 9.2910156 8.4113594 9.2910156 7.8183594 C 9.2910156 7.2303594 8.8505469 6.7851562 8.1855469 6.7851562 z M 7.0625 9.9628906 L 7.0625 16 L 9.2363281 16 L 9.2363281 9.9628906 L 7.0625 9.9628906 z M 11.033203 9.9628906 L 11.033203 16 L 13.207031 16 L 13.207031 12.697266 C 13.207031 11.718266 13.908141 11.574219 14.119141 11.574219 C 14.330141 11.574219 14.892578 11.785266 14.892578 12.697266 L 14.892578 16 L 17 16 L 17 12.697266 C 17 10.806266 16.154516 9.9628906 15.103516 9.9628906 C 14.052516 9.9628906 13.490031 10.312641 13.207031 10.806641 L 13.207031 9.9628906 L 11.033203 9.9628906 z"})})]})})]})]}),B.jsxs("div",{className:"text-gray-400 grid grid-cols-1 gap-4 sm:grid-cols-2",children:[B.jsxs("div",{children:[B.jsx("p",{className:"font-medium text-gray-200",children:"Top Projects"}),B.jsxs("ul",{className:"mt-6 space-y-4 text-sm",children:[B.jsx("li",{children:B.jsx("a",{href:"https://github.com/bedead/lung-cancer-classification-yoloV8---gradio",className:"transition hover:opacity-75",children:" PATENT - CLASSIFICATION OF LUNG CANCER USING DEEP LEARNING TECHNIQUES. "})}),B.jsx("li",{children:B.jsx("a",{href:"https://colab.research.google.com/drive/1a6LATySYKaS8qqfk_4maSaV4guvTRA-8?usp=sharing",className:"transition hover:opacity-75",children:" ConvoGen AI "})}),B.jsx("li",{children:B.jsx("a",{href:"https://github.com/bedead/Anon-Exchange-chatting",className:"transition hover:opacity-75",children:" Anon Exchange "})})]})]}),B.jsxs("div",{children:[B.jsx("p",{className:"font-medium text-gray-200",children:"Free tools"}),B.jsx("ul",{className:"mt-6 space-y-4 text-sm",children:B.jsx("li",{children:B.jsx("a",{href:"https://downloadtube-iota.vercel.app/",target:"_blank",className:"transition hover:opacity-75",children:" DownloadTube "})})})]})]})]}),B.jsx("div",{className:"mt-12 border-t text-gray-300 border-gray-100 pt-12",children:B.jsx("div",{className:"sm:flex sm:items-center sm:justify-between",children:B.jsx("p",{className:"mt-8 text-sm sm:mt-0",children:"© 2024. Bedead. Made with 💖."})})})]})]})};function Fre(){return B.jsxs("div",{children:[B.jsx(j$,{}),B.jsx(qW,{}),B.jsx(W$,{}),B.jsx(_re,{}),B.jsx(wre,{}),B.jsx(Pre,{}),B.jsx(Lre,{}),B.jsx(Ure,{})]})}function PC(n,e){var t={};for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&e.indexOf(i)<0&&(t[i]=n[i]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(n);r"u")return null;const n=navigator;return n.languages&&n.languages[0]||n.language||null}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Zm{constructor(e,t){this.shortDelay=e,this.longDelay=t,ga(t>e,"Short delay should be less than long delay!"),this.isMobile=Ej()||Cj()}get(){return Hre()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function IC(n,e){ga(n.emulator,"Emulator should always be set here");const{url:t}=n.emulator;return e?`${t}${e.startsWith("/")?e.slice(1):e}`:t}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class R4{static initialize(e,t,i){this.fetchImpl=e,t&&(this.headersImpl=t),i&&(this.responseImpl=i)}static fetch(){if(this.fetchImpl)return this.fetchImpl;if(typeof self<"u"&&"fetch"in self)return self.fetch;if(typeof globalThis<"u"&&globalThis.fetch)return globalThis.fetch;if(typeof fetch<"u")return fetch;Jo("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){if(this.headersImpl)return this.headersImpl;if(typeof self<"u"&&"Headers"in self)return self.Headers;if(typeof globalThis<"u"&&globalThis.Headers)return globalThis.Headers;if(typeof Headers<"u")return Headers;Jo("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){if(this.responseImpl)return this.responseImpl;if(typeof self<"u"&&"Response"in self)return self.Response;if(typeof globalThis<"u"&&globalThis.Response)return globalThis.Response;if(typeof Response<"u")return Response;Jo("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Wre={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"missing-password",INVALID_LOGIN_CREDENTIALS:"invalid-credential",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",PASSWORD_DOES_NOT_MEET_REQUIREMENTS:"password-does-not-meet-requirements",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error",RECAPTCHA_NOT_ENABLED:"recaptcha-not-enabled",MISSING_RECAPTCHA_TOKEN:"missing-recaptcha-token",INVALID_RECAPTCHA_TOKEN:"invalid-recaptcha-token",INVALID_RECAPTCHA_ACTION:"invalid-recaptcha-action",MISSING_CLIENT_TYPE:"missing-client-type",MISSING_RECAPTCHA_VERSION:"missing-recaptcha-version",INVALID_RECAPTCHA_VERSION:"invalid-recaptcha-version",INVALID_REQ_TYPE:"invalid-req-type"};/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const jre=new Zm(3e4,6e4);function wu(n,e){return n.tenantId&&!e.tenantId?Object.assign(Object.assign({},e),{tenantId:n.tenantId}):e}async function Hl(n,e,t,i,r={}){return I4(n,r,async()=>{let s={},o={};i&&(e==="GET"?o=i:s={body:JSON.stringify(i)});const a=Dm(Object.assign({key:n.config.apiKey},o)).slice(1),l=await n._getAdditionalHeaders();l["Content-Type"]="application/json",n.languageCode&&(l["X-Firebase-Locale"]=n.languageCode);const c=Object.assign({method:e,headers:l},s);return Aj()||(c.referrerPolicy="no-referrer"),R4.fetch()(L4(n,n.config.apiHost,t,a),c)})}async function I4(n,e,t){n._canInitEmulator=!1;const i=Object.assign(Object.assign({},Wre),e);try{const r=new qre(n),s=await Promise.race([t(),r.promise]);r.clearNetworkTimeout();const o=await s.json();if("needConfirmation"in o)throw lv(n,"account-exists-with-different-credential",o);if(s.ok&&!("errorMessage"in o))return o;{const a=s.ok?o.errorMessage:o.error.message,[l,c]=a.split(" : ");if(l==="FEDERATED_USER_ID_ALREADY_LINKED")throw lv(n,"credential-already-in-use",o);if(l==="EMAIL_EXISTS")throw lv(n,"email-already-in-use",o);if(l==="USER_DISABLED")throw lv(n,"user-disabled",o);const d=i[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(c)throw P4(n,d,c);$s(n,d)}}catch(r){if(r instanceof _a)throw r;$s(n,"network-request-failed",{message:String(r)})}}async function Ux(n,e,t,i,r={}){const s=await Hl(n,e,t,i,r);return"mfaPendingCredential"in s&&$s(n,"multi-factor-auth-required",{_serverResponse:s}),s}function L4(n,e,t,i){const r=`${e}${t}?${i}`;return n.config.emulator?IC(n.config,r):`${n.config.apiScheme}://${r}`}function Xre(n){switch(n){case"ENFORCE":return"ENFORCE";case"AUDIT":return"AUDIT";case"OFF":return"OFF";default:return"ENFORCEMENT_STATE_UNSPECIFIED"}}class qre{constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((t,i)=>{this.timer=setTimeout(()=>i(So(this.auth,"network-request-failed")),jre.get())})}clearNetworkTimeout(){clearTimeout(this.timer)}}function lv(n,e,t){const i={appName:n.name};t.email&&(i.email=t.email),t.phoneNumber&&(i.phoneNumber=t.phoneNumber);const r=So(n,e,i);return r.customData._tokenResponse=t,r}function AN(n){return n!==void 0&&n.enterprise!==void 0}class $re{constructor(e){if(this.siteKey="",this.recaptchaEnforcementState=[],e.recaptchaKey===void 0)throw new Error("recaptchaKey undefined");this.siteKey=e.recaptchaKey.split("/")[3],this.recaptchaEnforcementState=e.recaptchaEnforcementState}getProviderEnforcementState(e){if(!this.recaptchaEnforcementState||this.recaptchaEnforcementState.length===0)return null;for(const t of this.recaptchaEnforcementState)if(t.provider&&t.provider===e)return Xre(t.enforcementState);return null}isProviderEnabled(e){return this.getProviderEnforcementState(e)==="ENFORCE"||this.getProviderEnforcementState(e)==="AUDIT"}}async function Yre(n,e){return Hl(n,"GET","/v2/recaptchaConfig",wu(n,e))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function Kre(n,e){return Hl(n,"POST","/v1/accounts:delete",e)}async function N4(n,e){return Hl(n,"POST","/v1/accounts:lookup",e)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Tp(n){if(n)try{const e=new Date(Number(n));if(!isNaN(e.getTime()))return e.toUTCString()}catch{}}async function Qre(n,e=!1){const t=Ul(n),i=await t.getIdToken(e),r=LC(i);bt(r&&r.exp&&r.auth_time&&r.iat,t.auth,"internal-error");const s=typeof r.firebase=="object"?r.firebase:void 0,o=s==null?void 0:s.sign_in_provider;return{claims:r,token:i,authTime:Tp(P1(r.auth_time)),issuedAtTime:Tp(P1(r.iat)),expirationTime:Tp(P1(r.exp)),signInProvider:o||null,signInSecondFactor:(s==null?void 0:s.sign_in_second_factor)||null}}function P1(n){return Number(n)*1e3}function LC(n){const[e,t,i]=n.split(".");if(e===void 0||t===void 0||i===void 0)return Iv("JWT malformed, contained fewer than 3 sections"),null;try{const r=qO(t);return r?JSON.parse(r):(Iv("Failed to decode base64 JWT payload"),null)}catch(r){return Iv("Caught error parsing JWT payload as JSON",r==null?void 0:r.toString()),null}}function MN(n){const e=LC(n);return bt(e,"internal-error"),bt(typeof e.exp<"u","internal-error"),bt(typeof e.iat<"u","internal-error"),Number(e.exp)-Number(e.iat)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function xm(n,e,t=!1){if(t)return e;try{return await e}catch(i){throw i instanceof _a&&Jre(i)&&n.auth.currentUser===n&&await n.auth.signOut(),i}}function Jre({code:n}){return n==="auth/user-disabled"||n==="auth/user-token-expired"}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Zre{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,this.timerId!==null&&clearTimeout(this.timerId))}getInterval(e){var t;if(e){const i=this.errorBackoff;return this.errorBackoff=Math.min(this.errorBackoff*2,96e4),i}else{this.errorBackoff=3e4;const r=((t=this.user.stsTokenManager.expirationTime)!==null&&t!==void 0?t:0)-Date.now()-3e5;return Math.max(0,r)}}schedule(e=!1){if(!this.isRunning)return;const t=this.getInterval(e);this.timerId=setTimeout(async()=>{await this.iteration()},t)}async iteration(){try{await this.user.getIdToken(!0)}catch(e){(e==null?void 0:e.code)==="auth/network-request-failed"&&this.schedule(!0);return}this.schedule()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class NT{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=Tp(this.lastLoginAt),this.creationTime=Tp(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function f_(n){var e;const t=n.auth,i=await n.getIdToken(),r=await xm(n,N4(t,{idToken:i}));bt(r==null?void 0:r.users.length,t,"internal-error");const s=r.users[0];n._notifyReloadListener(s);const o=!((e=s.providerUserInfo)===null||e===void 0)&&e.length?D4(s.providerUserInfo):[],a=tse(n.providerData,o),l=n.isAnonymous,c=!(n.email&&s.passwordHash)&&!(a!=null&&a.length),d=l?c:!1,f={uid:s.localId,displayName:s.displayName||null,photoURL:s.photoUrl||null,email:s.email||null,emailVerified:s.emailVerified||!1,phoneNumber:s.phoneNumber||null,tenantId:s.tenantId||null,providerData:a,metadata:new NT(s.createdAt,s.lastLoginAt),isAnonymous:d};Object.assign(n,f)}async function ese(n){const e=Ul(n);await f_(e),await e.auth._persistUserIfCurrent(e),e.auth._notifyListenersIfCurrent(e)}function tse(n,e){return[...n.filter(i=>!e.some(r=>r.providerId===i.providerId)),...e]}function D4(n){return n.map(e=>{var{providerId:t}=e,i=PC(e,["providerId"]);return{providerId:t,uid:i.rawId||"",displayName:i.displayName||null,email:i.email||null,phoneNumber:i.phoneNumber||null,photoURL:i.photoUrl||null}})}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function nse(n,e){const t=await I4(n,{},async()=>{const i=Dm({grant_type:"refresh_token",refresh_token:e}).slice(1),{tokenApiHost:r,apiKey:s}=n.config,o=L4(n,r,"/v1/token",`key=${s}`),a=await n._getAdditionalHeaders();return a["Content-Type"]="application/x-www-form-urlencoded",R4.fetch()(o,{method:"POST",headers:a,body:i})});return{accessToken:t.access_token,expiresIn:t.expires_in,refreshToken:t.refresh_token}}async function ise(n,e){return Hl(n,"POST","/v2/accounts:revokeToken",wu(n,e))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class qh{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){bt(e.idToken,"internal-error"),bt(typeof e.idToken<"u","internal-error"),bt(typeof e.refreshToken<"u","internal-error");const t="expiresIn"in e&&typeof e.expiresIn<"u"?Number(e.expiresIn):MN(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}updateFromIdToken(e){bt(e.length!==0,"internal-error");const t=MN(e);this.updateTokensAndExpiration(e,null,t)}async getToken(e,t=!1){return!t&&this.accessToken&&!this.isExpired?this.accessToken:(bt(this.refreshToken,e,"user-token-expired"),this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null)}clearRefreshToken(){this.refreshToken=null}async refresh(e,t){const{accessToken:i,refreshToken:r,expiresIn:s}=await nse(e,t);this.updateTokensAndExpiration(i,r,Number(s))}updateTokensAndExpiration(e,t,i){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+i*1e3}static fromJSON(e,t){const{refreshToken:i,accessToken:r,expirationTime:s}=t,o=new qh;return i&&(bt(typeof i=="string","internal-error",{appName:e}),o.refreshToken=i),r&&(bt(typeof r=="string","internal-error",{appName:e}),o.accessToken=r),s&&(bt(typeof s=="number","internal-error",{appName:e}),o.expirationTime=s),o}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new qh,this.toJSON())}_performRefresh(){return Jo("not implemented")}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function ja(n,e){bt(typeof n=="string"||typeof n>"u","internal-error",{appName:e})}class Zo{constructor(e){var{uid:t,auth:i,stsTokenManager:r}=e,s=PC(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new Zre(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=t,this.auth=i,this.stsTokenManager=r,this.accessToken=r.accessToken,this.displayName=s.displayName||null,this.email=s.email||null,this.emailVerified=s.emailVerified||!1,this.phoneNumber=s.phoneNumber||null,this.photoURL=s.photoURL||null,this.isAnonymous=s.isAnonymous||!1,this.tenantId=s.tenantId||null,this.providerData=s.providerData?[...s.providerData]:[],this.metadata=new NT(s.createdAt||void 0,s.lastLoginAt||void 0)}async getIdToken(e){const t=await xm(this,this.stsTokenManager.getToken(this.auth,e));return bt(t,this.auth,"internal-error"),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return Qre(this,e)}reload(){return ese(this)}_assign(e){this!==e&&(bt(this.uid===e.uid,this.auth,"internal-error"),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map(t=>Object.assign({},t)),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){const t=new Zo(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}));return t.metadata._copy(this.metadata),t}_onReload(e){bt(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let i=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),i=!0),t&&await f_(this),await this.auth._persistUserIfCurrent(this),i&&this.auth._notifyListenersIfCurrent(this)}async delete(){if(Ko(this.auth.app))return Promise.reject(wl(this.auth));const e=await this.getIdToken();return await xm(this,Kre(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map(e=>Object.assign({},e)),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,t){var i,r,s,o,a,l,c,d;const f=(i=t.displayName)!==null&&i!==void 0?i:void 0,p=(r=t.email)!==null&&r!==void 0?r:void 0,m=(s=t.phoneNumber)!==null&&s!==void 0?s:void 0,_=(o=t.photoURL)!==null&&o!==void 0?o:void 0,S=(a=t.tenantId)!==null&&a!==void 0?a:void 0,x=(l=t._redirectEventId)!==null&&l!==void 0?l:void 0,y=(c=t.createdAt)!==null&&c!==void 0?c:void 0,E=(d=t.lastLoginAt)!==null&&d!==void 0?d:void 0,{uid:w,emailVerified:M,isAnonymous:O,providerData:k,stsTokenManager:I}=t;bt(w&&I,e,"internal-error");const P=qh.fromJSON(this.name,I);bt(typeof w=="string",e,"internal-error"),ja(f,e.name),ja(p,e.name),bt(typeof M=="boolean",e,"internal-error"),bt(typeof O=="boolean",e,"internal-error"),ja(m,e.name),ja(_,e.name),ja(S,e.name),ja(x,e.name),ja(y,e.name),ja(E,e.name);const D=new Zo({uid:w,auth:e,email:p,emailVerified:M,displayName:f,isAnonymous:O,photoURL:_,phoneNumber:m,tenantId:S,stsTokenManager:P,createdAt:y,lastLoginAt:E});return k&&Array.isArray(k)&&(D.providerData=k.map(A=>Object.assign({},A))),x&&(D._redirectEventId=x),D}static async _fromIdTokenResponse(e,t,i=!1){const r=new qh;r.updateFromServerResponse(t);const s=new Zo({uid:t.localId,auth:e,stsTokenManager:r,isAnonymous:i});return await f_(s),s}static async _fromGetAccountInfoResponse(e,t,i){const r=t.users[0];bt(r.localId!==void 0,"internal-error");const s=r.providerUserInfo!==void 0?D4(r.providerUserInfo):[],o=!(r.email&&r.passwordHash)&&!(s!=null&&s.length),a=new qh;a.updateFromIdToken(i);const l=new Zo({uid:r.localId,auth:e,stsTokenManager:a,isAnonymous:o}),c={uid:r.localId,displayName:r.displayName||null,photoURL:r.photoUrl||null,email:r.email||null,emailVerified:r.emailVerified||!1,phoneNumber:r.phoneNumber||null,tenantId:r.tenantId||null,providerData:s,metadata:new NT(r.createdAt,r.lastLoginAt),isAnonymous:!(r.email&&r.passwordHash)&&!(s!=null&&s.length)};return Object.assign(l,c),l}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const CN=new Map;function ea(n){ga(n instanceof Function,"Expected a class definition");let e=CN.get(n);return e?(ga(e instanceof n,"Instance stored in cache mismatched with class"),e):(e=new n,CN.set(n,e),e)}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class k4{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){const t=this.storage[e];return t===void 0?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}}k4.type="NONE";const bN=k4;/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Lv(n,e,t){return`firebase:${n}:${e}:${t}`}class $h{constructor(e,t,i){this.persistence=e,this.auth=t,this.userKey=i;const{config:r,name:s}=this.auth;this.fullUserKey=Lv(this.userKey,r.apiKey,s),this.fullPersistenceKey=Lv("persistence",r.apiKey,s),this.boundEventHandler=t._onStorageEvent.bind(t),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){const e=await this.persistence._get(this.fullUserKey);return e?Zo._fromJSON(this.auth,e):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence===e)return;const t=await this.getCurrentUser();if(await this.removeCurrentUser(),this.persistence=e,t)return this.setCurrentUser(t)}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,i="authUser"){if(!t.length)return new $h(ea(bN),e,i);const r=(await Promise.all(t.map(async c=>{if(await c._isAvailable())return c}))).filter(c=>c);let s=r[0]||ea(bN);const o=Lv(i,e.config.apiKey,e.name);let a=null;for(const c of t)try{const d=await c._get(o);if(d){const f=Zo._fromJSON(e,d);c!==s&&(a=f),s=c;break}}catch{}const l=r.filter(c=>c._shouldAllowMigration);return!s._shouldAllowMigration||!l.length?new $h(s,e,i):(s=l[0],a&&await s._set(o,a.toJSON()),await Promise.all(t.map(async c=>{if(c!==s)try{await c._remove(o)}catch{}})),new $h(s,e,i))}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function PN(n){const e=n.toLowerCase();if(e.includes("opera/")||e.includes("opr/")||e.includes("opios/"))return"Opera";if(V4(e))return"IEMobile";if(e.includes("msie")||e.includes("trident/"))return"IE";if(e.includes("edge/"))return"Edge";if(O4(e))return"Firefox";if(e.includes("silk/"))return"Silk";if(z4(e))return"Blackberry";if(H4(e))return"Webos";if(U4(e))return"Safari";if((e.includes("chrome/")||F4(e))&&!e.includes("edge/"))return"Chrome";if(B4(e))return"Android";{const t=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,i=n.match(t);if((i==null?void 0:i.length)===2)return i[1]}return"Other"}function O4(n=or()){return/firefox\//i.test(n)}function U4(n=or()){const e=n.toLowerCase();return e.includes("safari/")&&!e.includes("chrome/")&&!e.includes("crios/")&&!e.includes("android")}function F4(n=or()){return/crios\//i.test(n)}function V4(n=or()){return/iemobile/i.test(n)}function B4(n=or()){return/android/i.test(n)}function z4(n=or()){return/blackberry/i.test(n)}function H4(n=or()){return/webos/i.test(n)}function NC(n=or()){return/iphone|ipad|ipod/i.test(n)||/macintosh/i.test(n)&&/mobile/i.test(n)}function rse(n=or()){var e;return NC(n)&&!!(!((e=window.navigator)===null||e===void 0)&&e.standalone)}function sse(){return bj()&&document.documentMode===10}function G4(n=or()){return NC(n)||B4(n)||H4(n)||z4(n)||/windows phone/i.test(n)||V4(n)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function W4(n,e=[]){let t;switch(n){case"Browser":t=PN(or());break;case"Worker":t=`${PN(or())}-${n}`;break;default:t=n}const i=e.length?e.join(","):"FirebaseCore-web";return`${t}/JsCore/${Ad}/${i}`}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class ose{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,t){const i=s=>new Promise((o,a)=>{try{const l=e(s);o(l)}catch(l){a(l)}});i.onAbort=t,this.queue.push(i);const r=this.queue.length-1;return()=>{this.queue[r]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser===e)return;const t=[];try{for(const i of this.queue)await i(e),i.onAbort&&t.push(i.onAbort)}catch(i){t.reverse();for(const r of t)try{r()}catch{}throw this.auth._errorFactory.create("login-blocked",{originalMessage:i==null?void 0:i.message})}}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function ase(n,e={}){return Hl(n,"GET","/v2/passwordPolicy",wu(n,e))}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const lse=6;class cse{constructor(e){var t,i,r,s;const o=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=(t=o.minPasswordLength)!==null&&t!==void 0?t:lse,o.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=o.maxPasswordLength),o.containsLowercaseCharacter!==void 0&&(this.customStrengthOptions.containsLowercaseLetter=o.containsLowercaseCharacter),o.containsUppercaseCharacter!==void 0&&(this.customStrengthOptions.containsUppercaseLetter=o.containsUppercaseCharacter),o.containsNumericCharacter!==void 0&&(this.customStrengthOptions.containsNumericCharacter=o.containsNumericCharacter),o.containsNonAlphanumericCharacter!==void 0&&(this.customStrengthOptions.containsNonAlphanumericCharacter=o.containsNonAlphanumericCharacter),this.enforcementState=e.enforcementState,this.enforcementState==="ENFORCEMENT_STATE_UNSPECIFIED"&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=(r=(i=e.allowedNonAlphanumericCharacters)===null||i===void 0?void 0:i.join(""))!==null&&r!==void 0?r:"",this.forceUpgradeOnSignin=(s=e.forceUpgradeOnSignin)!==null&&s!==void 0?s:!1,this.schemaVersion=e.schemaVersion}validatePassword(e){var t,i,r,s,o,a;const l={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(e,l),this.validatePasswordCharacterOptions(e,l),l.isValid&&(l.isValid=(t=l.meetsMinPasswordLength)!==null&&t!==void 0?t:!0),l.isValid&&(l.isValid=(i=l.meetsMaxPasswordLength)!==null&&i!==void 0?i:!0),l.isValid&&(l.isValid=(r=l.containsLowercaseLetter)!==null&&r!==void 0?r:!0),l.isValid&&(l.isValid=(s=l.containsUppercaseLetter)!==null&&s!==void 0?s:!0),l.isValid&&(l.isValid=(o=l.containsNumericCharacter)!==null&&o!==void 0?o:!0),l.isValid&&(l.isValid=(a=l.containsNonAlphanumericCharacter)!==null&&a!==void 0?a:!0),l}validatePasswordLengthOptions(e,t){const i=this.customStrengthOptions.minPasswordLength,r=this.customStrengthOptions.maxPasswordLength;i&&(t.meetsMinPasswordLength=e.length>=i),r&&(t.meetsMaxPasswordLength=e.length<=r)}validatePasswordCharacterOptions(e,t){this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);let i;for(let r=0;r="a"&&i<="z",i>="A"&&i<="Z",i>="0"&&i<="9",this.allowedNonAlphanumericCharacters.includes(i))}updatePasswordCharacterOptionsStatuses(e,t,i,r,s){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||(e.containsLowercaseLetter=t)),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||(e.containsUppercaseLetter=i)),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||(e.containsNumericCharacter=r)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||(e.containsNonAlphanumericCharacter=s))}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class use{constructor(e,t,i,r){this.app=e,this.heartbeatServiceProvider=t,this.appCheckServiceProvider=i,this.config=r,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new RN(this),this.idTokenSubscription=new RN(this),this.beforeStateQueue=new ose(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=b4,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=r.sdkClientVersion}_initializeWithPersistence(e,t){return t&&(this._popupRedirectResolver=ea(t)),this._initializationPromise=this.queue(async()=>{var i,r;if(!this._deleted&&(this.persistenceManager=await $h.create(this,e),!this._deleted)){if(!((i=this._popupRedirectResolver)===null||i===void 0)&&i._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch{}await this.initializeCurrentUser(t),this.lastNotifiedUid=((r=this.currentUser)===null||r===void 0?void 0:r.uid)||null,!this._deleted&&(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;const e=await this.assertedPersistence.getCurrentUser();if(!(!this.currentUser&&!e)){if(this.currentUser&&e&&this.currentUser.uid===e.uid){this._currentUser._assign(e),await this.currentUser.getIdToken();return}await this._updateCurrentUser(e,!0)}}async initializeCurrentUserFromIdToken(e){try{const t=await N4(this,{idToken:e}),i=await Zo._fromGetAccountInfoResponse(this,t,e);await this.directlySetCurrentUser(i)}catch(t){console.warn("FirebaseServerApp could not login user with provided authIdToken: ",t),await this.directlySetCurrentUser(null)}}async initializeCurrentUser(e){var t;if(Ko(this.app)){const o=this.app.settings.authIdToken;return o?new Promise(a=>{setTimeout(()=>this.initializeCurrentUserFromIdToken(o).then(a,a))}):this.directlySetCurrentUser(null)}const i=await this.assertedPersistence.getCurrentUser();let r=i,s=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();const o=(t=this.redirectUser)===null||t===void 0?void 0:t._redirectEventId,a=r==null?void 0:r._redirectEventId,l=await this.tryRedirectSignIn(e);(!o||o===a)&&(l!=null&&l.user)&&(r=l.user,s=!0)}if(!r)return this.directlySetCurrentUser(null);if(!r._redirectEventId){if(s)try{await this.beforeStateQueue.runMiddleware(r)}catch(o){r=i,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(o))}return r?this.reloadAndSetCurrentUserOrClear(r):this.directlySetCurrentUser(null)}return bt(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===r._redirectEventId?this.directlySetCurrentUser(r):this.reloadAndSetCurrentUserOrClear(r)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch{await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){try{await f_(e)}catch(t){if((t==null?void 0:t.code)!=="auth/network-request-failed")return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=Gre()}async _delete(){this._deleted=!0}async updateCurrentUser(e){if(Ko(this.app))return Promise.reject(wl(this));const t=e?Ul(e):null;return t&&bt(t.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(t&&t._clone(this))}async _updateCurrentUser(e,t=!1){if(!this._deleted)return e&&bt(this.tenantId===e.tenantId,this,"tenant-id-mismatch"),t||await this.beforeStateQueue.runMiddleware(e),this.queue(async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()})}async signOut(){return Ko(this.app)?Promise.reject(wl(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(e){return Ko(this.app)?Promise.reject(wl(this)):this.queue(async()=>{await this.assertedPersistence.setPersistence(ea(e))})}_getRecaptchaConfig(){return this.tenantId==null?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();const t=this._getPasswordPolicyInternal();return t.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):t.validatePassword(e)}_getPasswordPolicyInternal(){return this.tenantId===null?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){const e=await ase(this),t=new cse(e);this.tenantId===null?this._projectPasswordPolicy=t:this._tenantPasswordPolicies[this.tenantId]=t}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new Nm("auth","Firebase",e())}onAuthStateChanged(e,t,i){return this.registerStateListener(this.authStateSubscription,e,t,i)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,i){return this.registerStateListener(this.idTokenSubscription,e,t,i)}authStateReady(){return new Promise((e,t)=>{if(this.currentUser)e();else{const i=this.onAuthStateChanged(()=>{i(),e()},t)}})}async revokeAccessToken(e){if(this.currentUser){const t=await this.currentUser.getIdToken(),i={providerId:"apple.com",tokenType:"ACCESS_TOKEN",token:e,idToken:t};this.tenantId!=null&&(i.tenantId=this.tenantId),await ise(this,i)}}toJSON(){var e;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:(e=this._currentUser)===null||e===void 0?void 0:e.toJSON()}}async _setRedirectUser(e,t){const i=await this.getOrInitRedirectPersistenceManager(t);return e===null?i.removeCurrentUser():i.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){const t=e&&ea(e)||this._popupRedirectResolver;bt(t,this,"argument-error"),this.redirectPersistenceManager=await $h.create(this,[ea(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){var t,i;return this._isInitialized&&await this.queue(async()=>{}),((t=this._currentUser)===null||t===void 0?void 0:t._redirectEventId)===e?this._currentUser:((i=this.redirectUser)===null||i===void 0?void 0:i._redirectEventId)===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue(async()=>this.directlySetCurrentUser(e))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){var e,t;if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);const i=(t=(e=this.currentUser)===null||e===void 0?void 0:e.uid)!==null&&t!==void 0?t:null;this.lastNotifiedUid!==i&&(this.lastNotifiedUid=i,this.authStateSubscription.next(this.currentUser))}registerStateListener(e,t,i,r){if(this._deleted)return()=>{};const s=typeof t=="function"?t:t.next.bind(t);let o=!1;const a=this._isInitialized?Promise.resolve():this._initializationPromise;if(bt(a,this,"internal-error"),a.then(()=>{o||s(this.currentUser)}),typeof t=="function"){const l=e.addObserver(t,i,r);return()=>{o=!0,l()}}else{const l=e.addObserver(t);return()=>{o=!0,l()}}}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),this.currentUser=e,e?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return bt(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){!e||this.frameworks.includes(e)||(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=W4(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){var e;const t={"X-Client-Version":this.clientVersion};this.app.options.appId&&(t["X-Firebase-gmpid"]=this.app.options.appId);const i=await((e=this.heartbeatServiceProvider.getImmediate({optional:!0}))===null||e===void 0?void 0:e.getHeartbeatsHeader());i&&(t["X-Firebase-Client"]=i);const r=await this._getAppCheckToken();return r&&(t["X-Firebase-AppCheck"]=r),t}async _getAppCheckToken(){var e;const t=await((e=this.appCheckServiceProvider.getImmediate({optional:!0}))===null||e===void 0?void 0:e.getToken());return t!=null&&t.error&&Bre(`Error while retrieving App Check token: ${t.error}`),t==null?void 0:t.token}}function kd(n){return Ul(n)}class RN{constructor(e){this.auth=e,this.observer=null,this.addObserver=Oj(t=>this.observer=t)}get next(){return bt(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */let Fx={async loadJS(){throw new Error("Unable to load external scripts")},recaptchaV2Script:"",recaptchaEnterpriseScript:"",gapiScript:""};function hse(n){Fx=n}function j4(n){return Fx.loadJS(n)}function dse(){return Fx.recaptchaEnterpriseScript}function fse(){return Fx.gapiScript}function pse(n){return`__${n}${Math.floor(Math.random()*1e6)}`}const mse="recaptcha-enterprise",gse="NO_RECAPTCHA";class yse{constructor(e){this.type=mse,this.auth=kd(e)}async verify(e="verify",t=!1){async function i(s){if(!t){if(s.tenantId==null&&s._agentRecaptchaConfig!=null)return s._agentRecaptchaConfig.siteKey;if(s.tenantId!=null&&s._tenantRecaptchaConfigs[s.tenantId]!==void 0)return s._tenantRecaptchaConfigs[s.tenantId].siteKey}return new Promise(async(o,a)=>{Yre(s,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then(l=>{if(l.recaptchaKey===void 0)a(new Error("recaptcha Enterprise site key undefined"));else{const c=new $re(l);return s.tenantId==null?s._agentRecaptchaConfig=c:s._tenantRecaptchaConfigs[s.tenantId]=c,o(c.siteKey)}}).catch(l=>{a(l)})})}function r(s,o,a){const l=window.grecaptcha;AN(l)?l.enterprise.ready(()=>{l.enterprise.execute(s,{action:e}).then(c=>{o(c)}).catch(()=>{o(gse)})}):a(Error("No reCAPTCHA enterprise script loaded."))}return new Promise((s,o)=>{i(this.auth).then(a=>{if(!t&&AN(window.grecaptcha))r(a,s,o);else{if(typeof window>"u"){o(new Error("RecaptchaVerifier is only supported in browser"));return}let l=dse();l.length!==0&&(l+=a),j4(l).then(()=>{r(a,s,o)}).catch(c=>{o(c)})}}).catch(a=>{o(a)})})}}async function IN(n,e,t,i=!1){const r=new yse(n);let s;try{s=await r.verify(t)}catch{s=await r.verify(t,!0)}const o=Object.assign({},e);return i?Object.assign(o,{captchaResp:s}):Object.assign(o,{captchaResponse:s}),Object.assign(o,{clientType:"CLIENT_TYPE_WEB"}),Object.assign(o,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"}),o}async function LN(n,e,t,i){var r;if(!((r=n._getRecaptchaConfig())===null||r===void 0)&&r.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")){const s=await IN(n,e,t,t==="getOobCode");return i(n,s)}else return i(n,e).catch(async s=>{if(s.code==="auth/missing-recaptcha-token"){console.log(`${t} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);const o=await IN(n,e,t,t==="getOobCode");return i(n,o)}else return Promise.reject(s)})}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function vse(n,e){const t=lM(n,"auth");if(t.isInitialized()){const r=t.getImmediate(),s=t.getOptions();if(y0(s,e??{}))return r;$s(r,"already-initialized")}return t.initialize({options:e})}function _se(n,e){const t=(e==null?void 0:e.persistence)||[],i=(Array.isArray(t)?t:[t]).map(ea);e!=null&&e.errorMap&&n._updateErrorMap(e.errorMap),n._initializeWithPersistence(i,e==null?void 0:e.popupRedirectResolver)}function xse(n,e,t){const i=kd(n);bt(i._canInitEmulator,i,"emulator-config-failed"),bt(/^https?:\/\//.test(e),i,"invalid-emulator-scheme");const r=!!(t!=null&&t.disableWarnings),s=X4(e),{host:o,port:a}=Sse(e),l=a===null?"":`:${a}`;i.config.emulator={url:`${s}//${o}${l}/`},i.settings.appVerificationDisabledForTesting=!0,i.emulatorConfig=Object.freeze({host:o,port:a,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:r})}),r||wse()}function X4(n){const e=n.indexOf(":");return e<0?"":n.substr(0,e+1)}function Sse(n){const e=X4(n),t=/(\/\/)?([^?#/]+)/.exec(n.substr(e.length));if(!t)return{host:"",port:null};const i=t[2].split("@").pop()||"",r=/^(\[[^\]]+\])(:|$)/.exec(i);if(r){const s=r[1];return{host:s,port:NN(i.substr(s.length+1))}}else{const[s,o]=i.split(":");return{host:s,port:NN(o)}}}function NN(n){if(!n)return null;const e=Number(n);return isNaN(e)?null:e}function wse(){function n(){const e=document.createElement("p"),t=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",t.position="fixed",t.width="100%",t.backgroundColor="#ffffff",t.border=".1em solid #000000",t.color="#b50000",t.bottom="0px",t.left="0px",t.margin="0px",t.zIndex="10000",t.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}typeof console<"u"&&typeof console.info=="function"&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."),typeof window<"u"&&typeof document<"u"&&(document.readyState==="loading"?window.addEventListener("DOMContentLoaded",n):n())}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class DC{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return Jo("not implemented")}_getIdTokenResponse(e){return Jo("not implemented")}_linkToIdToken(e,t){return Jo("not implemented")}_getReauthenticationResolver(e){return Jo("not implemented")}}async function Ese(n,e){return Hl(n,"POST","/v1/accounts:signUp",e)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function Tse(n,e){return Ux(n,"POST","/v1/accounts:signInWithPassword",wu(n,e))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function Ase(n,e){return Ux(n,"POST","/v1/accounts:signInWithEmailLink",wu(n,e))}async function Mse(n,e){return Ux(n,"POST","/v1/accounts:signInWithEmailLink",wu(n,e))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Sm extends DC{constructor(e,t,i,r=null){super("password",i),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(e,t){return new Sm(e,t,"password")}static _fromEmailAndCode(e,t,i=null){return new Sm(e,t,"emailLink",i)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){const t=typeof e=="string"?JSON.parse(e):e;if(t!=null&&t.email&&(t!=null&&t.password)){if(t.signInMethod==="password")return this._fromEmailAndPassword(t.email,t.password);if(t.signInMethod==="emailLink")return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(e){switch(this.signInMethod){case"password":const t={returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"};return LN(e,t,"signInWithPassword",Tse);case"emailLink":return Ase(e,{email:this._email,oobCode:this._password});default:$s(e,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":const i={idToken:t,returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"};return LN(e,i,"signUpPassword",Ese);case"emailLink":return Mse(e,{idToken:t,email:this._email,oobCode:this._password});default:$s(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function Yh(n,e){return Ux(n,"POST","/v1/accounts:signInWithIdp",wu(n,e))}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Cse="http://localhost";class du extends DC{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const t=new du(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(t.idToken=e.idToken),e.accessToken&&(t.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(t.nonce=e.nonce),e.pendingToken&&(t.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(t.accessToken=e.oauthToken,t.secret=e.oauthTokenSecret):$s("argument-error"),t}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){const t=typeof e=="string"?JSON.parse(e):e,{providerId:i,signInMethod:r}=t,s=PC(t,["providerId","signInMethod"]);if(!i||!r)return null;const o=new du(i,r);return o.idToken=s.idToken||void 0,o.accessToken=s.accessToken||void 0,o.secret=s.secret,o.nonce=s.nonce,o.pendingToken=s.pendingToken||null,o}_getIdTokenResponse(e){const t=this.buildRequest();return Yh(e,t)}_linkToIdToken(e,t){const i=this.buildRequest();return i.idToken=t,Yh(e,i)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,Yh(e,t)}buildRequest(){const e={requestUri:Cse,returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{const t={};this.idToken&&(t.id_token=this.idToken),this.accessToken&&(t.access_token=this.accessToken),this.secret&&(t.oauth_token_secret=this.secret),t.providerId=this.providerId,this.nonce&&!this.pendingToken&&(t.nonce=this.nonce),e.postBody=Dm(t)}return e}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function bse(n){switch(n){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}function Pse(n){const e=Wf(jf(n)).link,t=e?Wf(jf(e)).deep_link_id:null,i=Wf(jf(n)).deep_link_id;return(i?Wf(jf(i)).link:null)||i||t||e||n}class kC{constructor(e){var t,i,r,s,o,a;const l=Wf(jf(e)),c=(t=l.apiKey)!==null&&t!==void 0?t:null,d=(i=l.oobCode)!==null&&i!==void 0?i:null,f=bse((r=l.mode)!==null&&r!==void 0?r:null);bt(c&&d&&f,"argument-error"),this.apiKey=c,this.operation=f,this.code=d,this.continueUrl=(s=l.continueUrl)!==null&&s!==void 0?s:null,this.languageCode=(o=l.languageCode)!==null&&o!==void 0?o:null,this.tenantId=(a=l.tenantId)!==null&&a!==void 0?a:null}static parseLink(e){const t=Pse(e);try{return new kC(t)}catch{return null}}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Od{constructor(){this.providerId=Od.PROVIDER_ID}static credential(e,t){return Sm._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){const i=kC.parseLink(t);return bt(i,"argument-error"),Sm._fromEmailAndCode(e,i.code,i.tenantId)}}Od.PROVIDER_ID="password";Od.EMAIL_PASSWORD_SIGN_IN_METHOD="password";Od.EMAIL_LINK_SIGN_IN_METHOD="emailLink";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class q4{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class eg extends q4{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Za extends eg{constructor(){super("facebook.com")}static credential(e){return du._fromParams({providerId:Za.PROVIDER_ID,signInMethod:Za.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Za.credentialFromTaggedObject(e)}static credentialFromError(e){return Za.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return Za.credential(e.oauthAccessToken)}catch{return null}}}Za.FACEBOOK_SIGN_IN_METHOD="facebook.com";Za.PROVIDER_ID="facebook.com";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class el extends eg{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return du._fromParams({providerId:el.PROVIDER_ID,signInMethod:el.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return el.credentialFromTaggedObject(e)}static credentialFromError(e){return el.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthIdToken:t,oauthAccessToken:i}=e;if(!t&&!i)return null;try{return el.credential(t,i)}catch{return null}}}el.GOOGLE_SIGN_IN_METHOD="google.com";el.PROVIDER_ID="google.com";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class tl extends eg{constructor(){super("github.com")}static credential(e){return du._fromParams({providerId:tl.PROVIDER_ID,signInMethod:tl.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return tl.credentialFromTaggedObject(e)}static credentialFromError(e){return tl.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return tl.credential(e.oauthAccessToken)}catch{return null}}}tl.GITHUB_SIGN_IN_METHOD="github.com";tl.PROVIDER_ID="github.com";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class nl extends eg{constructor(){super("twitter.com")}static credential(e,t){return du._fromParams({providerId:nl.PROVIDER_ID,signInMethod:nl.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return nl.credentialFromTaggedObject(e)}static credentialFromError(e){return nl.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthAccessToken:t,oauthTokenSecret:i}=e;if(!t||!i)return null;try{return nl.credential(t,i)}catch{return null}}}nl.TWITTER_SIGN_IN_METHOD="twitter.com";nl.PROVIDER_ID="twitter.com";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class yd{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,i,r=!1){const s=await Zo._fromIdTokenResponse(e,i,r),o=DN(i);return new yd({user:s,providerId:o,_tokenResponse:i,operationType:t})}static async _forOperation(e,t,i){await e._updateTokensIfNecessary(i,!0);const r=DN(i);return new yd({user:e,providerId:r,_tokenResponse:i,operationType:t})}}function DN(n){return n.providerId?n.providerId:"phoneNumber"in n?"phone":null}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class p_ extends _a{constructor(e,t,i,r){var s;super(t.code,t.message),this.operationType=i,this.user=r,Object.setPrototypeOf(this,p_.prototype),this.customData={appName:e.name,tenantId:(s=e.tenantId)!==null&&s!==void 0?s:void 0,_serverResponse:t.customData._serverResponse,operationType:i}}static _fromErrorAndOperation(e,t,i,r){return new p_(e,t,i,r)}}function $4(n,e,t,i){return(e==="reauthenticate"?t._getReauthenticationResolver(n):t._getIdTokenResponse(n)).catch(s=>{throw s.code==="auth/multi-factor-auth-required"?p_._fromErrorAndOperation(n,s,e,i):s})}async function Rse(n,e,t=!1){const i=await xm(n,e._linkToIdToken(n.auth,await n.getIdToken()),t);return yd._forOperation(n,"link",i)}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function Ise(n,e,t=!1){const{auth:i}=n;if(Ko(i.app))return Promise.reject(wl(i));const r="reauthenticate";try{const s=await xm(n,$4(i,r,e,n),t);bt(s.idToken,i,"internal-error");const o=LC(s.idToken);bt(o,i,"internal-error");const{sub:a}=o;return bt(n.uid===a,i,"user-mismatch"),yd._forOperation(n,r,s)}catch(s){throw(s==null?void 0:s.code)==="auth/user-not-found"&&$s(i,"user-mismatch"),s}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function Y4(n,e,t=!1){if(Ko(n.app))return Promise.reject(wl(n));const i="signIn",r=await $4(n,i,e),s=await yd._fromIdTokenResponse(n,i,r);return t||await n._updateCurrentUser(s.user),s}async function Lse(n,e){return Y4(kd(n),e)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function Nse(n){const e=kd(n);e._getPasswordPolicyInternal()&&await e._updatePasswordPolicy()}function Dse(n,e,t){return Ko(n.app)?Promise.reject(wl(n)):Lse(Ul(n),Od.credential(e,t)).catch(async i=>{throw i.code==="auth/password-does-not-meet-requirements"&&Nse(n),i})}function kse(n,e,t,i){return Ul(n).onIdTokenChanged(e,t,i)}function Ose(n,e,t){return Ul(n).beforeAuthStateChanged(e,t)}const m_="__sak";/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class K4{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(m_,"1"),this.storage.removeItem(m_),Promise.resolve(!0)):Promise.resolve(!1)}catch{return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){const t=this.storage.getItem(e);return Promise.resolve(t?JSON.parse(t):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Use=1e3,Fse=10;class Q4 extends K4{constructor(){super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=G4(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(const t of Object.keys(this.listeners)){const i=this.storage.getItem(t),r=this.localCache[t];i!==r&&e(t,r,i)}}onStorageEvent(e,t=!1){if(!e.key){this.forAllChangedKeys((o,a,l)=>{this.notifyListeners(o,l)});return}const i=e.key;t?this.detachListener():this.stopPolling();const r=()=>{const o=this.storage.getItem(i);!t&&this.localCache[i]===o||this.notifyListeners(i,o)},s=this.storage.getItem(i);sse()&&s!==e.newValue&&e.newValue!==e.oldValue?setTimeout(r,Fse):r()}notifyListeners(e,t){this.localCache[e]=t;const i=this.listeners[e];if(i)for(const r of Array.from(i))r(t&&JSON.parse(t))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,i)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:t,newValue:i}),!0)})},Use)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,t){Object.keys(this.listeners).length===0&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&(this.detachListener(),this.stopPolling())}async _set(e,t){await super._set(e,t),this.localCache[e]=JSON.stringify(t)}async _get(e){const t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}}Q4.type="LOCAL";const Vse=Q4;/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class J4 extends K4{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}}J4.type="SESSION";const Z4=J4;/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Bse(n){return Promise.all(n.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(t){return{fulfilled:!1,reason:t}}}))}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Vx{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(e){const t=this.receivers.find(r=>r.isListeningto(e));if(t)return t;const i=new Vx(e);return this.receivers.push(i),i}isListeningto(e){return this.eventTarget===e}async handleEvent(e){const t=e,{eventId:i,eventType:r,data:s}=t.data,o=this.handlersMap[r];if(!(o!=null&&o.size))return;t.ports[0].postMessage({status:"ack",eventId:i,eventType:r});const a=Array.from(o).map(async c=>c(t.origin,s)),l=await Bse(a);t.ports[0].postMessage({status:"done",eventId:i,eventType:r,response:l})}_subscribe(e,t){Object.keys(this.handlersMap).length===0&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(t)}_unsubscribe(e,t){this.handlersMap[e]&&t&&this.handlersMap[e].delete(t),(!t||this.handlersMap[e].size===0)&&delete this.handlersMap[e],Object.keys(this.handlersMap).length===0&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}Vx.receivers=[];/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function OC(n="",e=10){let t="";for(let i=0;i{const c=OC("",20);r.port1.start();const d=setTimeout(()=>{l(new Error("unsupported_event"))},i);o={messageChannel:r,onMessage(f){const p=f;if(p.data.eventId===c)switch(p.data.status){case"ack":clearTimeout(d),s=setTimeout(()=>{l(new Error("timeout"))},3e3);break;case"done":clearTimeout(s),a(p.data.response);break;default:clearTimeout(d),clearTimeout(s),l(new Error("invalid_response"));break}}},this.handlers.add(o),r.port1.addEventListener("message",o.onMessage),this.target.postMessage({eventType:e,eventId:c,data:t},[r.port2])}).finally(()=>{o&&this.removeMessageHandler(o)})}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function wo(){return window}function Hse(n){wo().location.href=n}/** + * @license + * Copyright 2020 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function eB(){return typeof wo().WorkerGlobalScope<"u"&&typeof wo().importScripts=="function"}async function Gse(){if(!(navigator!=null&&navigator.serviceWorker))return null;try{return(await navigator.serviceWorker.ready).active}catch{return null}}function Wse(){var n;return((n=navigator==null?void 0:navigator.serviceWorker)===null||n===void 0?void 0:n.controller)||null}function jse(){return eB()?self:null}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const tB="firebaseLocalStorageDb",Xse=1,g_="firebaseLocalStorage",nB="fbase_key";class tg{constructor(e){this.request=e}toPromise(){return new Promise((e,t)=>{this.request.addEventListener("success",()=>{e(this.request.result)}),this.request.addEventListener("error",()=>{t(this.request.error)})})}}function Bx(n,e){return n.transaction([g_],e?"readwrite":"readonly").objectStore(g_)}function qse(){const n=indexedDB.deleteDatabase(tB);return new tg(n).toPromise()}function DT(){const n=indexedDB.open(tB,Xse);return new Promise((e,t)=>{n.addEventListener("error",()=>{t(n.error)}),n.addEventListener("upgradeneeded",()=>{const i=n.result;try{i.createObjectStore(g_,{keyPath:nB})}catch(r){t(r)}}),n.addEventListener("success",async()=>{const i=n.result;i.objectStoreNames.contains(g_)?e(i):(i.close(),await qse(),e(await DT()))})})}async function kN(n,e,t){const i=Bx(n,!0).put({[nB]:e,value:t});return new tg(i).toPromise()}async function $se(n,e){const t=Bx(n,!1).get(e),i=await new tg(t).toPromise();return i===void 0?null:i.value}function ON(n,e){const t=Bx(n,!0).delete(e);return new tg(t).toPromise()}const Yse=800,Kse=3;class iB{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){return this.db?this.db:(this.db=await DT(),this.db)}async _withRetries(e){let t=0;for(;;)try{const i=await this._openDb();return await e(i)}catch(i){if(t++>Kse)throw i;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return eB()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Vx._getInstance(jse()),this.receiver._subscribe("keyChanged",async(e,t)=>({keyProcessed:(await this._poll()).includes(t.key)})),this.receiver._subscribe("ping",async(e,t)=>["keyChanged"])}async initializeSender(){var e,t;if(this.activeServiceWorker=await Gse(),!this.activeServiceWorker)return;this.sender=new zse(this.activeServiceWorker);const i=await this.sender._send("ping",{},800);i&&!((e=i[0])===null||e===void 0)&&e.fulfilled&&!((t=i[0])===null||t===void 0)&&t.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){if(!(!this.sender||!this.activeServiceWorker||Wse()!==this.activeServiceWorker))try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch{}}async _isAvailable(){try{if(!indexedDB)return!1;const e=await DT();return await kN(e,m_,"1"),await ON(e,m_),!0}catch{}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,t){return this._withPendingWrite(async()=>(await this._withRetries(i=>kN(i,e,t)),this.localCache[e]=t,this.notifyServiceWorker(e)))}async _get(e){const t=await this._withRetries(i=>$se(i,e));return this.localCache[e]=t,t}async _remove(e){return this._withPendingWrite(async()=>(await this._withRetries(t=>ON(t,e)),delete this.localCache[e],this.notifyServiceWorker(e)))}async _poll(){const e=await this._withRetries(r=>{const s=Bx(r,!1).getAll();return new tg(s).toPromise()});if(!e)return[];if(this.pendingWrites!==0)return[];const t=[],i=new Set;if(e.length!==0)for(const{fbase_key:r,value:s}of e)i.add(r),JSON.stringify(this.localCache[r])!==JSON.stringify(s)&&(this.notifyListeners(r,s),t.push(r));for(const r of Object.keys(this.localCache))this.localCache[r]&&!i.has(r)&&(this.notifyListeners(r,null),t.push(r));return t}notifyListeners(e,t){this.localCache[e]=t;const i=this.listeners[e];if(i)for(const r of Array.from(i))r(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),Yse)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,t){Object.keys(this.listeners).length===0&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&this.stopPolling()}}iB.type="LOCAL";const Qse=iB;new Zm(3e4,6e4);/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Jse(n,e){return e?ea(e):(bt(n._popupRedirectResolver,n,"argument-error"),n._popupRedirectResolver)}/** + * @license + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class UC extends DC{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return Yh(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Yh(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return Yh(e,this._buildIdpRequest())}_buildIdpRequest(e){const t={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(t.idToken=e),t}}function Zse(n){return Y4(n.auth,new UC(n),n.bypassAuthState)}function eoe(n){const{auth:e,user:t}=n;return bt(t,e,"internal-error"),Ise(t,new UC(n),n.bypassAuthState)}async function toe(n){const{auth:e,user:t}=n;return bt(t,e,"internal-error"),Rse(t,new UC(n),n.bypassAuthState)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class rB{constructor(e,t,i,r,s=!1){this.auth=e,this.resolver=i,this.user=r,this.bypassAuthState=s,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise(async(e,t)=>{this.pendingPromise={resolve:e,reject:t};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(i){this.reject(i)}})}async onAuthEvent(e){const{urlResponse:t,sessionId:i,postBody:r,tenantId:s,error:o,type:a}=e;if(o){this.reject(o);return}const l={auth:this.auth,requestUri:t,sessionId:i,tenantId:s||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(a)(l))}catch(c){this.reject(c)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return Zse;case"linkViaPopup":case"linkViaRedirect":return toe;case"reauthViaPopup":case"reauthViaRedirect":return eoe;default:$s(this.auth,"internal-error")}}resolve(e){ga(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){ga(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const noe=new Zm(2e3,1e4);class Oh extends rB{constructor(e,t,i,r,s){super(e,t,r,s),this.provider=i,this.authWindow=null,this.pollId=null,Oh.currentPopupAction&&Oh.currentPopupAction.cancel(),Oh.currentPopupAction=this}async executeNotNull(){const e=await this.execute();return bt(e,this.auth,"internal-error"),e}async onExecution(){ga(this.filter.length===1,"Popup operations only handle one event");const e=OC();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(t=>{this.reject(t)}),this.resolver._isIframeWebStorageSupported(this.auth,t=>{t||this.reject(So(this.auth,"web-storage-unsupported"))}),this.pollUserCancellation()}get eventId(){var e;return((e=this.authWindow)===null||e===void 0?void 0:e.associatedEvent)||null}cancel(){this.reject(So(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,Oh.currentPopupAction=null}pollUserCancellation(){const e=()=>{var t,i;if(!((i=(t=this.authWindow)===null||t===void 0?void 0:t.window)===null||i===void 0)&&i.closed){this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(So(this.auth,"popup-closed-by-user"))},8e3);return}this.pollId=window.setTimeout(e,noe.get())};e()}}Oh.currentPopupAction=null;/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const ioe="pendingRedirect",Nv=new Map;class roe extends rB{constructor(e,t,i=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,i),this.eventId=null}async execute(){let e=Nv.get(this.auth._key());if(!e){try{const i=await soe(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(i)}catch(t){e=()=>Promise.reject(t)}Nv.set(this.auth._key(),e)}return this.bypassAuthState||Nv.set(this.auth._key(),()=>Promise.resolve(null)),e()}async onAuthEvent(e){if(e.type==="signInViaRedirect")return super.onAuthEvent(e);if(e.type==="unknown"){this.resolve(null);return}if(e.eventId){const t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}async onExecution(){}cleanUp(){}}async function soe(n,e){const t=loe(e),i=aoe(n);if(!await i._isAvailable())return!1;const r=await i._get(t)==="true";return await i._remove(t),r}function ooe(n,e){Nv.set(n._key(),e)}function aoe(n){return ea(n._redirectPersistence)}function loe(n){return Lv(ioe,n.config.apiKey,n.name)}async function coe(n,e,t=!1){if(Ko(n.app))return Promise.reject(wl(n));const i=kd(n),r=Jse(i,e),o=await new roe(i,r,t).execute();return o&&!t&&(delete o.user._redirectEventId,await i._persistUserIfCurrent(o.user),await i._setRedirectUser(null,e)),o}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const uoe=10*60*1e3;class hoe{constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){if(this.hasEventBeenHandled(e))return!1;let t=!1;return this.consumers.forEach(i=>{this.isEventForConsumer(e,i)&&(t=!0,this.sendToConsumer(e,i),this.saveEventToCache(e))}),this.hasHandledPotentialRedirect||!doe(e)||(this.hasHandledPotentialRedirect=!0,t||(this.queuedRedirectEvent=e,t=!0)),t}sendToConsumer(e,t){var i;if(e.error&&!sB(e)){const r=((i=e.error.code)===null||i===void 0?void 0:i.split("auth/")[1])||"internal-error";t.onError(So(this.auth,r))}else t.onAuthEvent(e)}isEventForConsumer(e,t){const i=t.eventId===null||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&i}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=uoe&&this.cachedEventUids.clear(),this.cachedEventUids.has(UN(e))}saveEventToCache(e){this.cachedEventUids.add(UN(e)),this.lastProcessedEventTime=Date.now()}}function UN(n){return[n.type,n.eventId,n.sessionId,n.tenantId].filter(e=>e).join("-")}function sB({type:n,error:e}){return n==="unknown"&&(e==null?void 0:e.code)==="auth/no-auth-event"}function doe(n){switch(n.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return sB(n);default:return!1}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */async function foe(n,e={}){return Hl(n,"GET","/v1/projects",e)}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const poe=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,moe=/^https?/;async function goe(n){if(n.config.emulator)return;const{authorizedDomains:e}=await foe(n);for(const t of e)try{if(yoe(t))return}catch{}$s(n,"unauthorized-domain")}function yoe(n){const e=LT(),{protocol:t,hostname:i}=new URL(e);if(n.startsWith("chrome-extension://")){const o=new URL(n);return o.hostname===""&&i===""?t==="chrome-extension:"&&n.replace("chrome-extension://","")===e.replace("chrome-extension://",""):t==="chrome-extension:"&&o.hostname===i}if(!moe.test(t))return!1;if(poe.test(n))return i===n;const r=n.replace(/\./g,"\\.");return new RegExp("^(.+\\."+r+"|"+r+")$","i").test(i)}/** + * @license + * Copyright 2020 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const voe=new Zm(3e4,6e4);function FN(){const n=wo().___jsl;if(n!=null&&n.H){for(const e of Object.keys(n.H))if(n.H[e].r=n.H[e].r||[],n.H[e].L=n.H[e].L||[],n.H[e].r=[...n.H[e].L],n.CP)for(let t=0;t{var i,r,s;function o(){FN(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{FN(),t(So(n,"network-request-failed"))},timeout:voe.get()})}if(!((r=(i=wo().gapi)===null||i===void 0?void 0:i.iframes)===null||r===void 0)&&r.Iframe)e(gapi.iframes.getContext());else if(!((s=wo().gapi)===null||s===void 0)&&s.load)o();else{const a=pse("iframefcb");return wo()[a]=()=>{gapi.load?o():t(So(n,"network-request-failed"))},j4(`${fse()}?onload=${a}`).catch(l=>t(l))}}).catch(e=>{throw Dv=null,e})}let Dv=null;function xoe(n){return Dv=Dv||_oe(n),Dv}/** + * @license + * Copyright 2020 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Soe=new Zm(5e3,15e3),woe="__/auth/iframe",Eoe="emulator/auth/iframe",Toe={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},Aoe=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);function Moe(n){const e=n.config;bt(e.authDomain,n,"auth-domain-config-required");const t=e.emulator?IC(e,Eoe):`https://${n.config.authDomain}/${woe}`,i={apiKey:e.apiKey,appName:n.name,v:Ad},r=Aoe.get(n.config.apiHost);r&&(i.eid=r);const s=n._getFrameworks();return s.length&&(i.fw=s.join(",")),`${t}?${Dm(i).slice(1)}`}async function Coe(n){const e=await xoe(n),t=wo().gapi;return bt(t,n,"internal-error"),e.open({where:document.body,url:Moe(n),messageHandlersFilter:t.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Toe,dontclear:!0},i=>new Promise(async(r,s)=>{await i.restyle({setHideOnLeave:!1});const o=So(n,"network-request-failed"),a=wo().setTimeout(()=>{s(o)},Soe.get());function l(){wo().clearTimeout(a),r(i)}i.ping(l).then(l,()=>{s(o)})}))}/** + * @license + * Copyright 2020 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const boe={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"},Poe=500,Roe=600,Ioe="_blank",Loe="http://localhost";class VN{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch{}}}function Noe(n,e,t,i=Poe,r=Roe){const s=Math.max((window.screen.availHeight-r)/2,0).toString(),o=Math.max((window.screen.availWidth-i)/2,0).toString();let a="";const l=Object.assign(Object.assign({},boe),{width:i.toString(),height:r.toString(),top:s,left:o}),c=or().toLowerCase();t&&(a=F4(c)?Ioe:t),O4(c)&&(e=e||Loe,l.scrollbars="yes");const d=Object.entries(l).reduce((p,[m,_])=>`${p}${m}=${_},`,"");if(rse(c)&&a!=="_self")return Doe(e||"",a),new VN(null);const f=window.open(e||"",a,d);bt(f,n,"popup-blocked");try{f.focus()}catch{}return new VN(f)}function Doe(n,e){const t=document.createElement("a");t.href=n,t.target=e;const i=document.createEvent("MouseEvent");i.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),t.dispatchEvent(i)}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const koe="__/auth/handler",Ooe="emulator/auth/handler",Uoe=encodeURIComponent("fac");async function BN(n,e,t,i,r,s){bt(n.config.authDomain,n,"auth-domain-config-required"),bt(n.config.apiKey,n,"invalid-api-key");const o={apiKey:n.config.apiKey,appName:n.name,authType:t,redirectUrl:i,v:Ad,eventId:r};if(e instanceof q4){e.setDefaultLanguage(n.languageCode),o.providerId=e.providerId||"",kj(e.getCustomParameters())||(o.customParameters=JSON.stringify(e.getCustomParameters()));for(const[d,f]of Object.entries(s||{}))o[d]=f}if(e instanceof eg){const d=e.getScopes().filter(f=>f!=="");d.length>0&&(o.scopes=d.join(","))}n.tenantId&&(o.tid=n.tenantId);const a=o;for(const d of Object.keys(a))a[d]===void 0&&delete a[d];const l=await n._getAppCheckToken(),c=l?`#${Uoe}=${encodeURIComponent(l)}`:"";return`${Foe(n)}?${Dm(a).slice(1)}${c}`}function Foe({config:n}){return n.emulator?IC(n,Ooe):`https://${n.authDomain}/${koe}`}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const R1="webStorageSupport";class Voe{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=Z4,this._completeRedirectFn=coe,this._overrideRedirectResult=ooe}async _openPopup(e,t,i,r){var s;ga((s=this.eventManagers[e._key()])===null||s===void 0?void 0:s.manager,"_initialize() not called before _openPopup()");const o=await BN(e,t,i,LT(),r);return Noe(e,o,OC())}async _openRedirect(e,t,i,r){await this._originValidation(e);const s=await BN(e,t,i,LT(),r);return Hse(s),new Promise(()=>{})}_initialize(e){const t=e._key();if(this.eventManagers[t]){const{manager:r,promise:s}=this.eventManagers[t];return r?Promise.resolve(r):(ga(s,"If manager is not set, promise should be"),s)}const i=this.initAndGetManager(e);return this.eventManagers[t]={promise:i},i.catch(()=>{delete this.eventManagers[t]}),i}async initAndGetManager(e){const t=await Coe(e),i=new hoe(e);return t.register("authEvent",r=>(bt(r==null?void 0:r.authEvent,e,"invalid-auth-event"),{status:i.onEvent(r.authEvent)?"ACK":"ERROR"}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:i},this.iframes[e._key()]=t,i}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(R1,{type:R1},r=>{var s;const o=(s=r==null?void 0:r[0])===null||s===void 0?void 0:s[R1];o!==void 0&&t(!!o),$s(e,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){const t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=goe(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return G4()||U4()||NC()}}const Boe=Voe;var zN="@firebase/auth",HN="1.7.9";/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class zoe{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){var e;return this.assertAuthConfigured(),((e=this.auth.currentUser)===null||e===void 0?void 0:e.uid)||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(e){if(this.assertAuthConfigured(),this.internalListeners.has(e))return;const t=this.auth.onIdTokenChanged(i=>{e((i==null?void 0:i.stsTokenManager.accessToken)||null)});this.internalListeners.set(e,t),this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();const t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){bt(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}/** + * @license + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Hoe(n){switch(n){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";case"WebExtension":return"web-extension";default:return}}function Goe(n){sd(new iu("auth",(e,{options:t})=>{const i=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat"),s=e.getProvider("app-check-internal"),{apiKey:o,authDomain:a}=i.options;bt(o&&!o.includes(":"),"invalid-api-key",{appName:i.name});const l={apiKey:o,authDomain:a,clientPlatform:n,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:W4(n)},c=new use(i,r,s,l);return _se(c,t),c},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,i)=>{e.getProvider("auth-internal").initialize()})),sd(new iu("auth-internal",e=>{const t=kd(e.getProvider("auth").getImmediate());return(i=>new zoe(i))(t)},"PRIVATE").setInstantiationMode("EXPLICIT")),Sl(zN,HN,Hoe(n)),Sl(zN,HN,"esm2017")}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const Woe=5*60,joe=KO("authIdTokenMaxAge")||Woe;let GN=null;const Xoe=n=>async e=>{const t=e&&await e.getIdTokenResult(),i=t&&(new Date().getTime()-Date.parse(t.issuedAtTime))/1e3;if(i&&i>joe)return;const r=t==null?void 0:t.token;GN!==r&&(GN=r,await fetch(n,{method:r?"POST":"DELETE",headers:r?{Authorization:`Bearer ${r}`}:{}}))};function qoe(n=eU()){const e=lM(n,"auth");if(e.isInitialized())return e.getImmediate();const t=vse(n,{popupRedirectResolver:Boe,persistence:[Qse,Vse,Z4]}),i=KO("authTokenSyncURL");if(i&&typeof isSecureContext=="boolean"&&isSecureContext){const s=new URL(i,location.origin);if(location.origin===s.origin){const o=Xoe(s.toString());Ose(t,o,()=>o(t.currentUser)),kse(t,a=>o(a))}}const r=$O("auth");return r&&xse(t,`http://${r}`),t}function $oe(){var n,e;return(e=(n=document.getElementsByTagName("head"))===null||n===void 0?void 0:n[0])!==null&&e!==void 0?e:document}hse({loadJS(n){return new Promise((e,t)=>{const i=document.createElement("script");i.setAttribute("src",n),i.onload=e,i.onerror=r=>{const s=So("internal-error");s.customData=r,t(s)},i.type="text/javascript",i.charset="UTF-8",$oe().appendChild(i)})},gapiScript:"https://apis.google.com/js/api.js",recaptchaV2Script:"https://www.google.com/recaptcha/api.js",recaptchaEnterpriseScript:"https://www.google.com/recaptcha/enterprise.js?render="});Goe("Browser");const Yoe=()=>{const[n,e]=q.useState(""),[t,i]=q.useState(""),[r,s]=q.useState(""),o=DA(),a=qoe(),l=c=>{c.preventDefault(),Dse(a,n,t).then(d=>{const f=d.user;console.log("User signed in:",f),o("/admin/dashboard")}).catch(d=>{const f=d.code,p=d.message;s(p),console.error("Error signing in:",f,p)})};return B.jsx("div",{className:"flex items-center justify-center min-h-screen bg-gray-100",children:B.jsxs("div",{className:"bg-white p-8 rounded-lg shadow-md w-96",children:[B.jsx("h2",{className:"text-2xl font-bold text-center mb-6",children:"Login"}),r&&B.jsx("p",{className:"text-red-500 text-sm text-center mb-4",children:r}),B.jsxs("form",{onSubmit:l,children:[B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",htmlFor:"email",children:"Email"}),B.jsx("input",{type:"email",id:"email",className:"mt-1 block w-full p-2 border border-gray-300 rounded-md focus:outline-none focus:ring focus:ring-blue-500",placeholder:"you@example.com",value:n,onChange:c=>e(c.target.value),required:!0})]}),B.jsxs("div",{className:"mb-6",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",htmlFor:"password",children:"Password"}),B.jsx("input",{type:"password",id:"password",className:"mt-1 block w-full p-2 border border-gray-300 rounded-md focus:outline-none focus:ring focus:ring-blue-500",placeholder:"********",value:t,onChange:c=>i(c.target.value),required:!0})]}),B.jsx("button",{type:"submit",className:"w-full bg-blue-500 text-white font-semibold py-2 rounded-md hover:bg-blue-600 transition duration-200",children:"Login"})]}),B.jsxs("p",{className:"mt-4 text-center text-sm text-gray-600",children:["Forgot password? ",B.jsx("a",{href:"#",className:"text-blue-500 hover:underline",children:"Fuck you!"})]})]})})},Koe=()=>B.jsxs("div",{className:"flex min-h-screen bg-gray-100",children:[B.jsxs("aside",{className:"w-64 bg-white shadow-md",children:[B.jsx("div",{className:"p-4",children:B.jsx("h2",{className:"text-2xl font-bold text-center",children:"Admin Dashboard"})}),B.jsx("nav",{className:"mt-4",children:B.jsxs("ul",{children:[B.jsx("li",{children:B.jsx(ac,{to:"/",className:"block p-4 hover:bg-gray-200",children:"Home"})}),B.jsx("li",{children:B.jsx(ac,{to:"add-blog",className:"block p-4 hover:bg-gray-200",children:"Add Blog"})}),B.jsx("li",{children:B.jsx(ac,{to:"add-project",className:"block p-4 hover:bg-gray-200",children:"Add Project"})}),B.jsx("li",{children:B.jsx(ac,{to:"add-experience",className:"block p-4 hover:bg-gray-200",children:"Add Experience"})}),B.jsx("li",{children:B.jsx(ac,{to:"edit-blog",className:"block p-4 hover:bg-gray-200",children:"Edit Blog"})}),B.jsx("li",{children:B.jsx(ac,{to:"edit-project",className:"block p-4 hover:bg-gray-200",children:"Edit Project"})}),B.jsx("li",{children:B.jsx(ac,{to:"edit-experience",className:"block p-4 hover:bg-gray-200",children:"Edit Experience"})})]})})]}),B.jsxs("main",{className:"flex-1 p-6",children:[B.jsx(dk,{})," "]})]}),Qoe=()=>B.jsxs("div",{children:[B.jsx("h2",{className:"text-xl font-bold mb-4",children:"Add Blog"}),B.jsxs("form",{children:[B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"Title"}),B.jsx("input",{type:"text",className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"Content"}),B.jsx("textarea",{className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsx("button",{type:"submit",className:"bg-blue-500 text-white py-2 px-4 rounded-md",children:"Add Blog"})]})]}),Joe=()=>B.jsxs("div",{children:[B.jsx("h2",{className:"text-xl font-bold mb-4",children:"Add Project"}),B.jsxs("form",{children:[B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"Project Name"}),B.jsx("input",{type:"text",className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"Description"}),B.jsx("textarea",{className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsx("button",{type:"submit",className:"bg-blue-500 text-white py-2 px-4 rounded-md",children:"Add Project"})]})]}),Zoe=()=>B.jsxs("div",{children:[B.jsx("h2",{className:"text-xl font-bold mb-4",children:"Add Experience"}),B.jsxs("form",{children:[B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"Experience Name"}),B.jsx("input",{type:"text",className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"Description"}),B.jsx("textarea",{className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsx("button",{type:"submit",className:"bg-blue-500 text-white py-2 px-4 rounded-md",children:"Add Experience"})]})]}),eae=()=>B.jsxs("div",{children:[B.jsx("h2",{className:"text-xl font-bold mb-4",children:"Edit Blog"}),B.jsxs("form",{children:[B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"Blog ID"}),B.jsx("input",{type:"text",className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"New Content"}),B.jsx("textarea",{className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsx("button",{type:"submit",className:"bg-blue-500 text-white py-2 px-4 rounded-md",children:"Edit Blog"})]})]}),tae=()=>B.jsxs("div",{children:[B.jsx("h2",{className:"text-xl font-bold mb-4",children:"Edit Project"}),B.jsxs("form",{children:[B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"Project ID"}),B.jsx("input",{type:"text",className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"New Description"}),B.jsx("textarea",{className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsx("button",{type:"submit",className:"bg-blue-500 text-white py-2 px-4 rounded-md",children:"Edit Project"})]})]}),nae=()=>B.jsxs("div",{children:[B.jsx("h2",{className:"text-xl font-bold mb-4",children:"Edit Experience"}),B.jsxs("form",{children:[B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"Project ID"}),B.jsx("input",{type:"text",className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsxs("div",{className:"mb-4",children:[B.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"New Description"}),B.jsx("textarea",{className:"mt-1 block w-full p-2 border border-gray-300 rounded-md",required:!0})]}),B.jsx("button",{type:"submit",className:"bg-blue-500 text-white py-2 px-4 rounded-md",children:"Edit Project"})]})]}),iae=I1.createRoot(document.getElementById("root"));iae.render(B.jsx(cH,{children:B.jsx(nH,{children:B.jsxs(ys,{path:"/",element:B.jsx(VW,{}),children:[B.jsx(ys,{index:!0,element:B.jsx(Fre,{})}),B.jsx(ys,{path:"/login",element:B.jsx(Yoe,{})}),B.jsxs(ys,{path:"/admin/dashboard",element:B.jsx(Koe,{}),children:[B.jsx(ys,{path:"add-blog",element:B.jsx(Qoe,{})}),B.jsx(ys,{path:"add-project",element:B.jsx(Joe,{})}),B.jsx(ys,{path:"add-experience",element:B.jsx(Zoe,{})}),B.jsx(ys,{path:"edit-blog",element:B.jsx(eae,{})}),B.jsx(ys,{path:"edit-project",element:B.jsx(tae,{})}),B.jsx(ys,{path:"edit-experience",element:B.jsx(nae,{})})]}),B.jsx(ys,{path:"*",element:B.jsx(eH,{to:"/"})})]})})})); diff --git a/assets/langgo-41707292.webp b/assets/langgo-41707292.webp deleted file mode 100644 index d27843858908aa912da83afa817a1a6d06df643a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37190 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 @5>hJPIno6@!q?yKIc8x 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 diff --git a/assets/lifeoverseas-fd137d40.webp b/assets/lifeoverseas-fd137d40.webp deleted file mode 100644 index 1926319012cec65ce7e1814dba81f422d798fd27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16770 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 diff --git a/assets/msc-abe50c5d.webp b/assets/msc-abe50c5d.webp deleted file mode 100644 index 22ff4382e7cf32ff33a1add6d2f58421805d732d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13514 zcmaL8V{|4>)HZs@w#|ucYvPG*Yhv5BZQJ%8+fF9QBoo`#$@9HG-tWgbXVX;#z4M{0Fbf&H28Ow zjjgkzl7tAchNc!V)D8gTJN+LqGg|HC)p?<)LnzwEw~IlvlV3LpkZ0c-)r0ETbG@_ka70UW|I3X<^%-$7mbUjT90 z|FqVmn1B;uxV4a%O>$KkQIP-u{ zBZXh?>j)7rkNe^AyIhNy`^>}}KKg~3g=+cj0;@@%l zBd?C>^RyJb+X{_ViXHtERYKr;qiz_=>YPw7nN9h+OH1xj@9xA&`BiHgz7&yys&e+2 zS8uk~@)1?4NlgACcT>!%_6pr}XsJ)@ZOZp?GV-+4HCIxLu@m?4!0&F3z7@IptzF?y zz2=?MBYP)UVKG(&wuNBV!%FQz69K^#)3VtSfN*T_UfOah6h?et~Vz{Q{GQI{T9 zqj;9tfyG%7Zz{XI6(6MB)mG{Gv1nK}JcksCpO4GQblFQ}=w}!|-)rP+_!el8rP9#+ z&gKJOIER^D!Jx{b{o3A(m5CE$DGQG*W}1r7WHjWN95`q69foAdVbSrIX^Aee29CiQ zjQaSwM|JoTs1l%KC+x1y2`4P`m`z9AcyZk$SRf?UwVOP_f8(MFTnAt*3y><7@9=e> zCg}BR6xl1Z{YlHSM~l!3X(a>7G-fnYx$h`*oBN0sYRzl+ye7;*#xVbo`?AbaPNve} z1MWRo8FO9ipk8TtPmn1#InA~;p*2t#IL*E_;klD4HXrjh7dKBQmo%BOL{pt{_Z zrERbBN-n3@<6+sf!J)>W`5B)iJTZ-W5A69azEKCn>HSc>aqQGt}q zsj$(@aFeWl>QGAhOUe1T)M%2BxYfBy)k|e(Eev89_P#|E2b8(LGE{?~%?5(!zat4t zOX|>zgx8abz)*XDiwvDpwNI!9(_@L>q9sd1w)SWb+1pe|Y=ke*09m6i-i z^nG$5d9DK>o~p&bG=iSX_I$928l33k^foGyo&h&xaKZMN;Fe}vizOs_OF%RJ`h3Ie zQy6`lQRnA-aF~S1$SAEK4ZeNE)k}L8@!9W)KxLO?pk_Ub*FWZL6$9Sda*{2Rl(}1a zK-f{*0+`uyoNgYR?%+Mhgy5QPn`B=F;Y7f3ENSbP^`W6fnz0V6;??m_qFBwbAKu)9 zqx8OJ@6xeXru;+TuS|>8JMBTOBwMM2b77wXsZP~`V1EdrR;lwlZ9OLkO5NP# zS4eh;|0*nJnQ0ajx6^*6SH>3gm=j>ex-Zj-dgb@}q0o#@UnZ1W6UdP@E|jYipo~Jd zRjqH_zpKMvIg5I=o1-l(pg9aR`u;&D3eq0-;Pv z`P~UtTM8m)!vm$}l3~B>9;UMhQg$HFVFrl(Knapz)&7b(egY>Bc6%A}TYPL*EY*zl zgKa;pQuFyp0}ut|Z#;S#TARp!N+x+K`eE3Q>s{lA5C=yAKlBQ06$$ zdp{8RHYs_)ltEvw=+`F9ZE;Kj!se&0$tH|U z30881(Yf|umYgpj^4uA?YgN>A7lG4=M_X)YR9GklsD!`hCJe+x=_t&%P->7YR{8!`d1tBy8X&FRrWbOiF|t zpE;^o+&JYwND2?G<|*i#I|VyhPF#9K` z|3(#={k0j|0#;D0!^q#!+e#v9DsF>j5y5ylYYE39|A&4q!R>AueqkfuD=vZ!eT{uR zx_Py;Ja#V5{(V=WxS#7%mbW0+I4+b-b|lBoWj@x&7k`B!xa(`D09WZr4Sd16Ri9d( zHFlPV1YxvI<+(hhx%O-d)nMp$$=~%~=l14ER!YY>6 zalz%HE%u3&>(GL$G_h{PFVu9|C$>zSQ6&!2b3QA#nSS z$cGyIM2X@xWl!|)3++|7m?t~ko`3#P_L&53f-gdsUzvVe!b&xDf#fV?9E~%Y4@K@r zF>lm8J*T^B6T_aoU{-X(_JL>bUy=JXztxWf?30}_&e$8CsOHpJCK4a(uAazM^_i5m zP?DZ01bxTYW6IB^sB!p(S)Hf0Q?Z`?8gD+_6HDu!y2MqnV$P*Y`oq*M-p6WP)^)hN5dq*Jcqlk zF0rHU`I2shQnd5hT}{Esa^ht7;QmB>?oV>wTr)0eYb?pc^8bC3nlP#I;Km|f;aRJAxJuheE#yDtbz=6?B?2w=E!X7 z;%#P*=6yZ9Du@=93gqQHSY;kl`7$L4C*vmdK6dBpZUjNG?8sr?6ZqmYkmoV1|6q2M1Ou% zmlJH0!9hZic$!&1eVib-2wP}mnDvKO2G#nUSqOniY9HK<(-qo`us9sx2p@!>?O+xC zWGb}hc&S~WC^QQwtrHJ57CkxajZ^PXjbg*%OCKPK>n8u9TCR|hF5G4hp13lyiY9Jm_wD5Pt+*m*B7#0DX6jefn1mlqE7ne`%z zhNkHls`zyVUgG}L%RVwd+&8qM_*bn9gZQHO>>n*|hGS3RFS)D{Bt{=gPjfK;qt0B6A8yXy>5LscD|W zw>nAf<)=ksF7Tf8sGiR~{utleD^dN)l~E`ON9fSOx9y(lP|7dz&R7Poe05}TgJ{`S z2coO;-%o6|9xmC_!6-~n>l8irhnuw&;EQx&3AT{mZ{EawKLCLETtE&8jTVRjh=2`C ziX=H{AxWvC)|x*;gzQE+WMZQbHHdPr)OW};YfK3L{Dwc5zkHwWJN$g#F+S9fXrFry zM#o5ce$iM{vkj>N)-8>FO)hx9gSmoRaOYk01R@)Q$OT?4$3muYyyE z=dU}W+pLGKxO9moKb5bXPoj~@kG~SVeO>@R`p=p#uvOq=F8Y_%m&-ZW2iQB(XPjBx zrQow)(fyBCtXI1a;ISaNzyL7g%l)hElkyMadfFvpBhh)-=fWL3c%gx^d?pLML(sYW ze(3RF9XHb~FTHss!dfyp_uwVu!F(uo1EAXqta6z;$o$f{^5*g#%1Wzk?Sdltj^{os zu8vyt>F-%;m)&4n&7NQ;-Mk32vUl56q1;^(v`Ug+Qx4r$Cr=$$44&jTS<5}qSHL2^ zza`TcuQv{#OR!?`EK6Be&M)Q3DJoH*e+@+0YQC4Mr85{8< zxbE%H1{#echmfJAkz%kuTpvP&s~P;{7pSU*EcYD!!agHp zaTq7f!k>Z>{(%Xd5gdPACkv*i?fwRWj_H?=)xTlJ?T46?o*TvL!jx6w`T}RwVkYk( zsbP`eIA`C?-7*pH8tjmK4W)NF(&e#PJa6A=9nL&dx-+j2O79c26Vd2!B+4XHRGGEA=VKsq$HaRQF8!LTfFS*iFop@<%6t%Z(j$YN z4cq|5ra9rQ)&+-0EJDm*S232Vm}q-x&EeEdLVU4l9ZFqY2`PasQ&r;sxxV#&1YD67 z8`_@u0GXecFq~bGEm!fxxHZlG*q)hbsI7=-=jApQ%+;74hX)?KPXKFY`i7n1&1%Ym z`1vuUc5?MRmyR*^MVPZshk^%-p@cZdpmr}E7!K*3x_(^DMv(2HS>pE;3x#6~YO__5 z$!JxQbgYGa`I>}N{`!N(@zO?;)N|klrgdUDY4L8cH zgHp4iGEZPtM0$)wD+AM9=(vxj)v=Ro^BA=HxZ^wQOG>0zWSF3wd&v{VRD)_cg^!ki zWQ{U2%+U+Vs%o%)NKlw{qY(H{mA$ki)P`$)$F4KzO17Zk1GdhIf_Et8P-kvvLyR+t z9>HWe2t8fIbJwb;6P7R^QivZ7kw!)oOilQhV7JhpqT$_yoAjTxvH;P#7*##%KL?D= zj*u@D_iaJpuqb-w92oMjtK@_SRlHMLaOXE4U!qUO=cth-7Oac^*-_+XmzN(a6wotBMNpo^E?itV6a-BFtgeEvhPIADYYtWcS%&Ng|6f;` zSpjAD{?AzwR|wDr8cvtzab#x$_3N(bETRH$j&1od?mlv^G1O3QFvy04A_;M?6cxqb z4Cpy@u8Zu#g-nhwUxn8{7NtFOB2>>3Kr-)LG(|W5tVrm!wmw`b6<=cch7VKYXQIvI z3H`$3QKm+Oq?06rPyUR(zP67f^W$S1y((UnG?*=SxzMmSEBs4Tnd$!Rc0_^A0*d$& zeX~C0Yu&E`g(puK$z(SGeSv!^$Q;vCBh0?w2*vMZa(N7`+%0A3U@P?&-1J_wRo@Bv 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 LvA*vd-}3(eO}^6P diff --git a/assets/nettv4u-35143e02.webp b/assets/nettv4u-35143e02.webp deleted file mode 100644 index daad2a4bd76db57006485d3aa95c153e451c7b1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32702 zcmdqHV|Zmvv@W{hq+?qhc5K_WZFKB(Y}?L?*|BZg?%1|-``h2%XP@VubMO6i|D2ku zYQD4Pc-9={G2SXANine|UjRT|R7gQhfkWdP001ER8w0`q`AG^3D~y2reFT7v{F8z+ z001_&&W=jrLPQ#xT0~IW0Fb}ee*{BgC;NZV|2F+A^|^$xNR^tCX6UM~U$@s6x z_1{S9`1j*~bwc}#(aitFl>cC(e=*NL*v;AA`LB$^KiE-4N%$`|`HLyd|0itpKVf5g z$A9Fb{>t#!SiAi5t$)HlrGqoIRaO3bhyEM!08RiUfH*+tpYs2G{u}J_0RWB%001oR zzw?aJ0f6RU003+4zw=0e003eT0MIo3-+BLCC-#PphX3(*;D1w4Gcy3-wgdox*8~7i zX8?e2+W+zHZ}R`38`0lacz^Y>`+J!KtO2F~B7h{o7GMmZ`-_+W3;;#|+us%@8u11I z7+OHHL8yYjg24D}*wQ2lNm$ECk$?THfe$yfUE%uHh%hm}q2u)ahr`>J(_^>&w|g|ThG_ZN98lf zNBgJz1=Kr#+}CmUPWO|~y_>-2-5b>Bh40tnudnGh?=R&;#3$j$uWh?W?XNHM&%#gO zN0kfZTlS5qE~Io0$QS1OFd2XLm+3M7i}*d^19pf$f)D>>hJXk4jWkd^G4|cZ(`W1v z_ro0vL=GQe%(6>UF=^hbuHZ-Ui>a8h?Cn@oapplXwk-QN6;p;?ii#=AADYtt1H@WT z#%rYi_XV@b{8?Elsv+-0iW;~|o@ROc3u?IP;=JpBtsq{egd^rX3E@U^QFyQ5wB=AC z2Uy{w$_*aw6c5d(An(S);#88Su##T2{ObR;`lMI~ipU-hIy;Q4NkimsZ$Yyrk8ynU zQ~MN*tnZsKRG!XJiGa#0100(J z9ABo!j+-ig=&bruHe$TZAreM-vSyk}!o64%my&ko!v7zgiI-SiiFR_T?b$%Xg?5}1 zg)|8z_PXeZy}V1-0n)8|UbVy=%XUk&=Yp9nhr212e1(7`^E*JNycDDg;{2Pl+b7-` zYHD`2!2}lwET;3$sx#pshy%?QnIa3z{!*#q?4NU(mElPTlW%I@XJ&n z=E=Joxdxa;wf!A1pC}8%We}y!FczhIHN>o(6o8c70RpXMt-tU7j?Y>XJn6oUM%~Iz z0E?&%NmKVlgpU-LhRuEM4BceOD-6o*ms{Ri>x(Sv9vzaOr-~Sji_jY=9 zWjwtO(45l50R|97ymB*OAo1~qrQyBi+y`}J?Zhb`9z5#0?)SaMph zB-@Fh_~(3CkUpat=;-{IYr1dP?99Ols_)dPd+%^AUD?Raee5>J?-u(?lMl3YBq(qz z-7yfB@5QCbAuvSa@Ev}t!qN*Q;TQc8yinSDtYIf#xPSHqJg^WM87DOyu?#(A-&4pK z3?2u~=^c4*Q5F8rjwMcHBJsA{#h<@T@0tBka$05>|5_N}t(r>nHpI)Dmk)D7be4lL zd(g-zq~@gQ-D8Zb1{3W=Ollq+RUt)3n8w1|b@_YeI%2+Q{DetuuY68zsZ~Kn zGER5@p_;F!B9Lq&sz$u1G;;i5>d^IHx?EiKlMEZCnZl#hYzW`5x!QQIGnz|#y_X}g#lSpI0vS` zHxfL}D#Er^b%5;!5KtXCQ(m9Q0BYw>U9%Zq#j0FQ0fAdUbzP8iKrQ8ZuI;~bM&6me zDZd{f26m6dx8*wSVbeR4kOMb3@$u1opONq8>s=JHB*roNwXEX8V5P+ZhiO3U z4&3=yP92i#CA*$D&WLM0AO$+STxa0o!y0b(wuXCw5yzP~1>g9Mq@wRru`2_5QG$nj zkLjKgEJTBT8T;Q=hGa#hOFFslj-wb3j!L_Lo!op(B*)-KZKf> zV$M78+Jyt%VqMB_|Bk-K$)W2=a}c>YHbjLK5w#bSnQ3MhO8%B6SLvp}pzo>1by@27 z2r8n(6By#3WR^I#=~soK#%XHUXXe8>5&ymjH8%`34BxpvoVeB;_K%l^Z=uqEFf0XJxG{;A`Q;%#~}Jgf-JxS9aHz zptIGtavPPjX&u_hjEG{~!?{ zRQHMCjqhX`3cC`1zJbry%*sUW4A-KPqG@jH5!%t|>clbHG%692!gmPb{JX@9#|fV{ z*-j8h%T8yhInU|`791HB-nHzTtiSOZ?o%?=`|zQn>93|8^!6G(%xxkYY`>*};o06(vg^>UyJdfD2c_5Nq!m4LpQ7ia6X|YbozAK_v8b9A+ zW|RixqN@-egLAjCINx){b+xu?j|{9-F!Qb?;-IAI3K@g6;yIL{P#c2DR2v$wH$*JX zBQw`VOZE{W>Z*Wyxu@^OKNs58mPGM_ZF}^*U7+kHVYCPs4bP;riHNY0JnyrD1j|+a z1ur+mf6ZYUlN#XH>;bE<^{yN$T=&;flP(V1bmRL~n$OQ1C6-9&skW{EwypEQn6P0s zHWE6eiUT$vIVHGuW)F6jgxA}e^C8jkv1%>cq!&8?o9$4f^lW;T!q5b{610imF=iM5 zRzQisk#k;QVkk~3=OlSz;EpnrltAM$2yT#qTGT_s9`Fgqd%5YC(*U2k>sKm>km)`@ zqvXkJptgjAbAi#QO{=iQk>#~0?R0tbe$!R78`l}Z*<~w6k?OuM_|BRAj{a5lXb>QO zF#C_iV1$7Sd;+D73e&GvAGCb>X~3yTmoMgdX|E3YAP=wDy@P7^3&a}SO^V4=Bt07V zq9>DT#v|f#23@X22b%)FrD5+*^?0k7T5{NIxtTA;J-30Y2pu&L+5T`Fa23|L)sbo)G&+sDg8Vj{RC$Plq<+2^P99s^zvba^z z$f<=}#ss!&SN=+%-ZEL353By#jxMSKs>8{8*Jf{e}YarYLH< zvpf10=2^Rcv9)nH0)1O6d-0y`Wo-8V`%^xvNly*g7^i6ZV_w)nG#GqEga5U=rtutP zE*ut(ze8wbZmAm=_CMy6v2)uJp>9m=t61M~`M{-KaZJ~+$8eNWG$bF~?7^c27w+u_ z(zDE5eQYnS7y2V6$GBhc863gjRPWty;v-_3KP+rwuU5BOnVS%KoPfXSJf>b_I~yvX zXOu6)x}dg-@xPPnV21*GEJq-V16RH)s=u$@x9SA=MhE1(?Sy&$U`hYQCq}`hOaAH+Ft;CUK)?qV0q(fqjIR1~9;}L#a!iT!b zFcIaY`Yc}+AztoVM#@QWAnw{tdAbi5Bvo52a=91Y;=w#N?d=j8yVA0K5&q~!Gj_7 zsD(!n?hqInFhk?OiZVs^=F8Yq;%Jj!BL!>X}lA@nH*8W`whxbxjDSl%q( zA-uZ2IBZwJ@(a);BSzBJvgWA|Ha6;#u)Y&_X->*0wYI3%s!D$Jjj#e&-sxFW4=P6Q zKm3u=E9xL8C-P>6MA8Ve@H(#&T)N<5rP-KPuX}ID7wb45!$VfOfm|nzaO==Tu4o8w z{|mIv>SM#_^-sU^u!83wwifM$-!;S>DC!Nfz%_e~g7ig$WrW)GwDJ4>Fb^?E!{vjCz8@;JCS(74Y! z$A9qMUP9U;XUcVIeLExHMQW+%W^}_g(%+vu*(bS;op&4o~*y!`UB7dhDeAUAr)aGb%g~G z=p7oq2kg$LizH!`!dgP;ELRo5yd{$ZPiPsep-gzObZT!7(_OCS^Hja!pQSmoytpA) ze^U6(L`=~MlMfuQ*rKvibzI@9_{G z)d<4%pgeKEQ}X9tYyEpNHA{u{33S(0+rH4RyifYVSIgBnv+Q(Q2EX-|#<*QL;{@rh ziyui#mX?rF)iiLo25e925T~(27r2k4futw?16u)O?BTt;E{*Wr!Hnt|8}5yl>X@5! zSv3CswERIuKO$>#miSl?-H`OrhgY!)Nmq;)&^G zWum&<`dhicl6TrJElcxGrSABg*K!S>>th+#D$;_4-%q=ZI)lDXhFTVw7G+xq7$(5U zP|y?xZ*bngrch(6{7ehAhmwRJql1a*v2v#}#*^o_$-hCyvbz~DP(q$TU%I4hCVSzo zi*^DI5a+6>e55#RMP^%Uq2qS)C_R$8R9rZ;YiIuKo4%W>C5-)--C&@wXg*rgZ&4l{ zfJ+Jw0BawP*|^3tE2>A*(!Z_L?m5IfN0i*KCCPS~b1v`bk*oh{7D~R-*yf=OxnQ(% z;KsSI%8eYSGH@vv@<(dD4=fb6S^pz3d$~{Z;_j{ai!g~ka%H8vc_AIK0glgSf;)1{ zqsVIh`cFAMV~xV&&0ci;LFl@LK_VE_*Ja-Q(0-A}rlVmwJS(sX=+vC?Jrfg_OmJ^2B-r%wA7l;)dI5h#)PaH)p$u2n}Jn+8?g1Y6#@(g$;4h3V7t z@~{$EZ+UD?*Ao+8$)XtDPdj7IlVyT0_)s$ag$P3}31wxSydA=qs4K&Q+vEQtd)#WD zgB4V*fU;xcO3AiL*y)Nk3g2RJrJ-HeuEl+k0+vb%181ky;xjnM=9tA9GD6y)wgzet z!Objfndawjs3sOREgsK&;x(SxedzG>C*DY#dT0IzmDHdMws!+{;pLt(B^A-K@8b{C z%in)|2odOY_tADFBYQ}?RZnA#U2ai&&2fz@2hmPi_J-F0;yMKFmNSeITS_ze0l5%9 z-lsTET+k9(8t(-=LSFaZ?1PvRP&nuku<#nZxPiM}Czp6}kd$8#Iz>7lUB{rni#pnc z)>&WA>o#7-@+lRXLlHX`oH6wW|I?KHFDA_>_!)Y`+I#h; zT&LPZ$W$RJaN800F%J%}>`@<3f)M(D3eomo-RJ**N|6Kr_`Hq$FJ}1v^9~X8f{hc7 z0{klonX6d`iw443t%6Bx_Y1wSQ(mdITQW?AyB5;!c56OC`lYfp(c?Cm4Sa)=7fbg< z$@O<1Lq_V{gcftOC1G%gYj!HK(LX#p04&`wpo_Z37dP-52bv;XFss4DvxDIK!uxut zW(a#18N}zlJRj5SX*PeCJo?0HLo?_TW91?6t{1`h+qW2IbpE5CW-?~m=Qi!nQkN3?``es`<`poo4!sTh;mg|3(UR@;TBF`ZQ7gxqoM-3SMLEN` z#J&h4TEHl_M`;yew*_P~Mj$;CT(}VY<{S&-IwXPbRHvC0{eootm`sI^s<`UM;KIxOvj zE~R=lnzNmSGEvCu7{axyIuoNvj2GVA$R;T6U4lxfpIBdV;Gxsq(!3w}4pwU^Q{1af zC{asaIG5(MPf(Un7-(K7p;LK^Kjb$07P$bPaY%=BwzsE z<2G-Z3&J{H`^`aC=vlMNIt?k!RVZ9bBw_Hvhga|pOPtz6N3ulPSN>a4oumF%-TPpX zDV+t)ByArSO7{1cgmUV(EOUK@BC*(33~9He-oyKg-9|90{*8QG^@x?Bl%M?iJ*2P4 z?^oPuqK=f>&1P>q0;B=b>^IZ|3CRna@E%OGb}D6aMz=h-(vm*gjvl&!{>7BIr7Y#T zMOZ{)L%imR7DK%>lB16;RU2)PUXob#5L#!Rr0@f4yNh6sM&;}Zw5Mxg>_wSCFOB=2 zs+}w0b7r0FjtuvmtHDyGMlhETD#GNug*;WlzJ3+{;`JFwzq2v;#cHFwVviXTq&xDS-gA~?@v zEqzOJvwNtl{+VqH@ntTeXZn_dT2yqaDuX7KMnd)_%TugQo(|6uPM%^TK{muBJ?rgE ziteieK_n;)=bz|>aQNj4#B!7?RVXZ9t!Pp|&{a*dg9&EGE=x6==!bV|@}6g&3sPqu z)BTI)Epp9zYrzCle@Kl!vP&@@sm6(SU?tBx4RMdWiA5>w{V7w6x7aN~1d&XKx#Yn8 z30MvM^ve0^dkA8~xz|AaisRgi>olqy0iC{{%TuQf@n9yN@@Da-LOU0c7Sle3${I-2 zLl1qoTx<+(ue>|3H)>8ILGNGk=};G4(5@q?sa{?~YS%YWT*S)if<4Ud_OTeVKqr~~ zDtu)&oyjJc!8Blz5S>phhNG~tK(J*hUb^)$4LYp;GPq;xk~roLeGK^w6v>n}Qlg^~ zlmxmn7GTf=KHv|-l}+ch1mXHRh^Tr&mL~{BJ}YC|<*m}=`J4P>@XyoP!2f*tVi~>* z5jH?Q#(iqedZW2or!Yo!m;b4Cm&2onQr^Y5>^7``=Z2JeBT6f z{4~w9jcao5K?A0v0)K>8fiLk|chO5SePiqwBS2qxe*_+a zFEL)0kvIug7dcCo{_cAeU*hZCSVL;=<&56EoJ#Pl1YvB4Mf|=?1?MJW*5%gEJ>KzW z*9U6Dozx~B3MqQZbb;cwgN+B}t~U8e4>-u0^}JUXYF8;B*kl)_FcP;-c=eKP2}_ zZ66IYqHD^{9!!i`eEb8Lf$~+U_Cgpb$205Wzg87QJMtG9I@#b{5%%tyAO?2J@QP@B z(MF;QSveh7mWAKfr{7nA(x;!JFXEF*V70F8P#NMsOYZ9kwIe5wkDz`+CqiE!hPhkL z5B;{qn4^WjOKl&BF3O>M>|sNaw2m9IF(;dYNtbyA>B;k_lR}%9@ME^aXOJ*`pcdG9 zVjxA8{377uJ@3@%tJ`UFgbehH=ESBpgyrID>LTY>#+2MEu-cSjd!U(ts%on3NFpyy z+@uSKoo6x8A;Cp_d=y6*1X-RE03bN`iLP1(!l;^U$^eDM%dAE=$f>QLNgi&3w=9~$ z#jE{)PoQk#0D~XT{8-$a17iY3OaMy6CWdz@KE&}pO9PUSl{i^OQB`vE;# zwapMhu>6}&ilXOEsenVgzvapVkFwmDmOP>j=N<0f3oV)Ae=H0-)`w_KmNsMaTNfrk zk2LVW!Pa)T9KPUz-E;o|77Pzit=5QXlV)LD-A~>@3BPQENaMSr%C{vm*cQ-9SLlPa z8wG(nYpA>stsK{7#&3`=AR9X?YZ~Rgukbxt2Tm6Vysf&TNfg1xN0w*$T3TK=w-R0@ z?qLhBfO~Ia?txG_e&_xX2kRnp4`2}Xd1zhgEU9gzV{BXUZ(8hy2pL@LP$#O zx=TFMGcvhlI$Spr6Bg>Z?gRi#l{8FIFP}t72xEUxL|SC?D?i+Mr}d2ZyIa1by?Vo;6`Bkr?l|E<`67{RXF#t!Y%tHO}1Zf~+ zQmrHiko`oe&Qlso5bA8_X-_7A3Dd?^#394=@yu<^n_sQzV!`f2^JwSz>!FpMV21>G8xtp&hjyl>!dyuYg zwJ+ppg$BbC8nEQ@S^kh)A}kKRzye7n;RoOmO3_f!`1Xs}`&M!9VwSNBFtNG3n; zE2{K*fCm!oqCR=vIA@axm9wHTq-eayE%oTzzK6)LnW7xOSd~qX;X`eHE#t+lLtTQJ;^*25`|VkZ6WcB%E-J!^V^}*^C7fa6m}(wCMxt> zPr@pmK!lrAJQ;iLgJwdo;WT>!sB;?l0>DS@C+AAOwUJ_ivc2tDEoRO>2Lj@rxbq?+ zaB>Ld=wpi=O+}~~=e~(N86dL;GKq&58FRdJyKM;|$k_II!2t30xa`wI0Cr(`>O}~v z)-z?lm8`a`QhedmOk$g5N-t~0=&~^vYQA_-EvJ1uw@Z=2Izsa?(3veSp@`1^yc6{{ z*rEf!3Ht6{or6r#6Ojg@f!`3f>b>Bf=3Y%#;#MBV@}f>CD#@eDk`wh7DDPc9>P8n0r9E3L z$`Xd88GahROaNegE{ww8u!$)j(s#9v<4eAKmr;onUeGWOC|i75Wmgd$5xZzjPb7TB zin31#Sq@#S8cZ+!QMCYj4R6=#J2bQMF~2(J1}c^V?R&TsIjEZ_RG_Y*`V1PDx!2zp zhoc|j$E34vWCS@hLS*033?05N{BnY&hW4kDACx)@6I3GpCb8cKcklg`5>J$vDeNA;By>1Z}@2LV=7Em02v~xB*PHdE|Bc!g#JEj&RE;cX0 z;Gi<`ebb*{RTP2C#2RAiAv+8ScgMo6VGTz&p&{o2nq^?8h7VYz`6>-Tr5*;k2l%SR z0QsclM<9CSwnedr2n%d~degovowb8X(-kulnUg!rkh$}?K0ET$XeK!m1z_Vh8uTIc z?qvqT9Z6}1Q}Xi{VQ~C%1sfMURpn?d<~E+iVdmQh<9_5NNogc%(5Rqo_LrBQMN!l1 zT=#N6ogrNKBJKGJ8+Wr_-0$~_uWUePhQxd?$y{SfB5SH!HL-z8y5p1;h18-!rT`6@ zh>qRO-Y!!<4fyuckH`&@DBtmNVKyJpa^)^YftSu=1u!*5qN|*esD7@#gj(j&md(&! zh`s0f#Eh0LQ}s9xKaI-#xI2uz)CU*H8J(Fq8H_kWM9b)00Ua0-gu;#wA*OHM70F}p zBQPca{0>TVTjl^ma;Sr_0 zR!_^-7t#pi^-R<}MrC+}SO=~rMaDP`bh7dAW`$jH%& zq&expN;{@dL(GIfoJO~`0RSuL*ytP7N=%!Q+vi$>PvqL-3d{q4g%$OWic6E_6slzd zmWCU6=dj(>c3&=|&zh~cEck0YkczUn0YEPp!aj(sin{x6kL}LXC0_XE8R*<~KjiEC z5e*+H@Ki0ckb8@YK4Q5PR$#z@aR-}A?QSPqHj}=lQszUBJBm<8wvE%->#~aRBRx0< z8a=dL7s;`1dzTm;rd&P}>R^m1%%Itj2IE|E4^JQJx7&n4{s3bibS%4jqEM*|r&AjbPx@jVe1JLEMz+LLocGo-@9*N?`8>zNzalbuwOW25X9%npQnRG?iIeiL zCq7@wyBTRU-#ZU;f1kEixaFeWNH5~XeV~E%Z+J8;Q>2E8?SqDqJ~dN;#J(tmz6|O# z2Shq9@gf}0OluCxMJ5!IOcD$pam(mb3fW_h+w*vT+%q+XdsC_%F~?$0!dk-BSjZ)f zg=+}P$u9c&mO*xcJ1T&H0&0SVH?)xC@Q3lLap!4W;B5P`%IPUX1SuJeIr0*lq@@fv zN7@TmuE2obdl!CNt92l0<1l6VNHee|JJKWiHsI6O_A_;SvEXl1tZWB0XX~@u(iHfd ze8;N7VuuSv^nlDl1bcZ|s9B|GGUI2tgCkTDm>c)!wA)A(cS)Kwo!8Hf=fbP!$3 z14!@6`7#i!@rjGI>QPPBj0*Fu3^iWN0vf8jnvcrH`+;R3ni!&a}?7E^?$wWKl@>do^ zg)GK$i;#m(B>v;V!Kr(4JfEFer9HH&&%;@Rw55qROpRWxBJOA&6V=3X7B(JDA{b3@ zV03S%ziTh3X`|hWhJcML0Ov62ORDT=XwIEyYBRi8K5$w?!Af#o=|%*P5%p~&HIlph zcbee`FC_uN zsZyz{({VjillV2aaF z`9hv9dmDuT(@jIoK+kkf^t@IS2RxBqL}Kte?&P&_AI@T!&~T(b`KX3ozNJ2)^lF3% zzyy6WP9lZIVUwJR)LSAViTC5lX5YmL>H29)vKcs!meY(=AC4=QX;7L~^#llH{*h8dQzZO48jZxL_p=ngz&tQc8(d7Gv9DhQ1oM76j^t2!tZ2<8l~=Y87MHL#Sog zWW!S-witg=`3XtwVhcM9Azmt+ZpZ3>}G^TMn6$=?4OLx%8UBbxueb&uZ?OfbS zfpp>4+;^w-Y?0YP(YJ;5!A6VpLtgWEX%x=AD}rAEYBII>64`}Z2B4<%5*`LnG)@>% zIvhnV4fO-lKl?ywGk5)n@lgsXb5O(IMxpIw-&z;{xMPnK&lqjP&8p~71@8|RwqBy8 zK`)Y2)rs`|phEs_{V8a+PfcjAHrST@rQt8pODBSj?o~;?JDRTtaO?6#ir=x8UB270 zigfWAKeisNeXyiT-B?_-$M1_TTlPYOuN2mMd%cEgs=I&A6 z{#GG;b?x61 zH(eMBcSO$=Q8$|$UK=U-&C3oYm0(3Az26xKd?Jp^7uNI<5z#z<{Z^45+g#aYnym3` zCHvxgsk4wO?d}*g-E-k?PAJIfmohH$;9T1PGHJnWs7W(?3P>m4UJEPfNE`Zw2Y>@z z7=LaAvF}KL+Aa;wS-x9~DNu&>V0hTDZA|~j47C*X1tbP_`tFXsWxxmUXB92k;zM6uSp}7s34D9f|^pU%V`9OlOTA;8dq`&L`j(8f$#M`&VmlH_RhU@FkRB?0-OW z=Jn_1!(i>WAi- zdPQuq8{CS&qclq~(WBEY+u=Q+QUuflmDf)B8OXun_lwDdoHwRz@vb-tEG)pg4{hkX z`cVLII|`dn06<**eKHR>vO7pAwzUEs%|rxNyEuLfETGD=7Kk8hFziCJAYIqkkkJ&3 zh0=r?Fq>92;L9z~K$D8I&UJ#D4;!;VZJX%10<%OYzP&1FXCb1y7k9ZlQdeaeq^@>9;He_pCBf`Y__O zj?9B_xNSY0#2XEy#QdoaKZ$gQbTlce?Zs}k%vHyFOKOyuo&M|Z&J?-nctq6Ah1&CB zAvZcp!h>w=>d`fX>T_J~=6$hBPrfTF4okNhjgkb^@{@3ARBAW`gIzwskwh^!{fXkc z7cORCfL~cRrl0sbf4R`w=?a_hW=gezRl<^zXK@ z*`sHtA>#oaTUjZ$WH=~Shx2mCQYWMX=RgyAxdgK|;aA(t*zwwpj&Coo-vJGDb<+^g zTQsj1X}Z{6chFzfaHejrEQqFN9A~fe+sxKN&@5Py%zWACOf$v<@SIV=GfsYJSdIb=_`i7 z8*?YurA`%8luTF~U#h(gnsMGQTD4Tp&}Q3{jpvW=M-@%%RC2@&jR3w|HPVKr#Y=A3 zV;PpTiowQXO>U0Wq}w6YR5h zWarjMpmFmyVXJv3Ggz{p8g3!zYjlyVMiHWDjcGP1#T&nR3Z_y%t%j1wr^5 z_H5c51N_5XBl5+-IOcoQ09tXw;;1)+&qeCcYtQB>mn+>-Jinz&peuWMsZSY_^B?aM z%hilP7}9Pu(a}NQ5SzzAGFCmr>i`XJfPxz4k#v&4Fs6KrSm=*3*_|f27M{0BDk4Qi zo$BeNO7yAvfR#XHj@@Kp<$})eYACr~GM(dQN_}e*c$HU3b9xxjNpX)Km6c(m)m#jk zE?T-PVGXZ4oDDBgq6bG*F2ILBRZ?Fjg?alBfB{Kclm3CZK=R=~M88b7Lx*C{CL1d~ zg026aNHi-}9rYi-t1yxc(XON&L?DwamYeD)6B-mqWC+@fd?dBrDWk-a{)S}wyTST0 z7-vULG6`IEtJ&9bg;egcjA0AQDtDiELM%cnTV4VK$uQ6+r#Igg_W;DB6Xo%Aquq!! z-&saitsZSxiO8`7*|JZb&qR57lOuwz*&V1a;&1#A{(zVJDA>DV=UceXiIS-zO2MF1 z+71vE)@+pA%B+3xLT)oM!N(|>nD7hn6zoCnqchRaMX(;6IkzvfSOaz)b>p~+Fbm~W zY1YW39~8ygRK)3j?HI(1Bn`)IVH9QHgV0w5+5Xt8|CQ0qw=K2Y-@11RdQ#fTF^+^% zI*B%L%=W!E9H@;1!sp!ELZ{!TAzPyO?#2@#u_VAVV#OF%xz$Nqx28^G(1zFev1aX+^J5L7TH9K-2?&o>wdu{CU5nJI0FYK_qg_A4;A!!!m$z8n>Z)opvtI>GGjoW zs2I`q>4^r*2oaUb%soG!@O}NcoUE2)iFqrvo>$ywvHpPXxdMMh#2%Qm;h`CI@0FR{19IOZ*Y-VOz#;Q#lKne5pFWj2FSwQT83OBZJq@ACKsRT8JX{2CT*Jm5 z(6pE+sYPsmhmB_uJ}sxzkZK`V8>epx42^4!P#!PRMEqWtygyzL2&4_2yDKZnLc_M? z;dq};8!_Mg!K8yGP-ByC6jGcyMIUqIt-Wl!3r)?b?56I7^{|t;KOR}xq$kM zBJ6+~Nultgs#JkrRRL&Zi)i$A$99lDIBpvg1dPX^I)xDmTkOz18E4q;ipw*IKT5JI zOD-F-ZTIW0w;oPY%InK{aU6W@m!lWkCOg8zXnfA?m&^VGv2NyX0^Vu?R-BT{+P7 zE7jD7b7k+>0o{9((o`ccb<%9zAFnA3rH8R;QbTD}3~qg}GI~*`HfkrYu}YIfGqP{| zywCbVOw#Y|n?r~^8F>jK^FB&&H&}mU%8Xj%RS||CS?_QLFnxZkf-5umr>4HALQYo2 z=H+(NfsrjB2$M_7@MLe5Oa4LLF`>EC7Go%oa!>Z7j}@YJ>LtE=FKy6{=2t8-LF`vNAIdO}PqUKI)1DTmgy%+6l~ti*{>Y@b z@R+3ZaGKpbs`Ei`#1cXpi+4aP8!;UyavZ~`?u3x4OhS5Cq8cvSbTp4)4gJk(uVtyadnVl!(-U55?JaZqJCb>09-Q8kd9BD8+|5G>Oneou_$sBGEP$!ASv8HiC-b{fZLTY^Yb`YaM(FFhv2# z7iTD;y1F1-o-oqyR!Wwv05j&N3eutP*4^pZN8?sJoRHOknObB)@aMvEJm}|byu5tP70FoeFJ+`S4FDq3Rc-m9-&66Ey-?$wIygty~FW*bektu^3>GGonvSa(dba`6vlQY zFqhrq;lx2vpV+zd}YtecO4{s z2Tpa$6O|x^b3O|8k-t@T0AZ^)BU}dfaV1gnUV@u1dbX@$(clsIj#?F_2yA^KP(Ekziz&JCh8Ux@9Jknz1Y+yIZe9HKe=RQZ!?3n zA{~!@LfWGSAhImicd6TPb3!DQ&J?h0K_X+l{=wq+9;e8ll%pY<32Dh)oZDIW$p7y1 zvC%gLj!69lUrCp3hr(1N7=Q(;OqUXDWd4vJk_Y83QtHm^lma=$!4ONsLrA`r;ana1D1si; z$1hP(Uo!7!iF8snbD+;4!(dcS z1BD2Gg8h@?z<3s4cxU5gE#^G!M$BiI0*)|w`dPEqw7>%SKnX{YrWE?edMuH23c4Or zqs3^}eX9SWWR|my-^Uw}lt!xK>JrV!q?6##kB@4qtz(=ITqNP@wVEhK;!9^EzaS;px1X_E2oumy5E?Af7%Jm1^ zU0;SKlQA-B3W9VGxR3~g@REruPN?)5p?{ZoM#=oBRs7}l>X$Eb^_WO4nCWr%2>pgq z{u5XI(%z%{Lj;9&nPKQ1xuO)t&TtvP;Ls(4TBhx&6tR4ScIuKYRMl~vubtKrJ4}h) zgcKcu+5A-zSAyf6$uPC)kNr$FnQOa#0K~bx_}YqGA^~x6JTY?t9s)vWQ9dW;{7LVF zC1pIZ?=?IVNsu!X?T%#6!mb8e$8v1kJ3fl?vLQr_#FYK*js{duWNr$9d!S2KfpW#Y{Atm+^9TcRV*ILFMA_7(f1ueNd(``V|k6s#^^!I`jU$X!i&0Jo(si|z}<0|dasb~ zy{M`cdkxzYcKgi?mOFUnLj{y(XdAE|O};=eYuRpL_}EI~XpcrckMTe2+2F7T$l++- z0NDM`x~D$}5$jFEG{5b?+zeXJw_#TCu6sbv3CPRqL3er6-$8hkp5~^-gJ30B@a-|_ z%;;eA$f?B$}UtdxJoRlsx3!V z6mQIR_nJ%=>14B4qj1U|;=~iJeu~ZcowfNTGx&W*Xr>W$N{}{iKnsUW;4ZTM2Ao7Q zL^PD&_0m`}a|;FZoOog|&;MdPg%=otlvQ*|| zt$T+~sjwwx^)fR+KbutY!WbB}SWTMrfL;ODd?2;`8_8*;L2w&{hR=Wfvc#{KjC3oC z*3=3mg%T|AqPZ&Tc(@{nU;LW(Ni!N!LJfOsS>A`{-8MP2{5P^x*wUBIk2>KPYxaVA zMvzLDr}~3HHL>3+db+T;d>$yOu34^z7pw*FelvE$UtMhuZc zMCZQWD&hQKLnr^XR{5a<1sX(9JJ+ho{DXRH#7H8JGz|+RS-&ysP$k5iAl>ITP7}hNDG`LEUYv@r$I${d zds=U(OYc*YM%FZ1y*nOjac{4~!;wKh;?`W+s!KcitI=Kvb$$-qs2aT3PYPe{M(W`S z1@PsT(6QVHbViA(FE~zzam{h7u#=#CRVRqn@4*sU;#+0Y>J=RA`UT@(sI+^#ZEujU zp96^fwDsc6@}m_R2Ry4C-5tA_vU5V>ZmT!E4Usu61Z~f;qIfVf{znt@_np>ErOvJM zmuQ^P)79KRKEb;@%YCqCLCP**x_>&{YX^m84v9+^n5bB%-F%vQvh{`D-Yr5=xDv1` zrk#Jd5S#UT?aEXYZ8hn^hk&|W1j>A~-A3+%glM?*3`xBLRm=U_XZ9Nrm@!WPFyqy{ zyY@Nf0xZNN9T$K&i2_M{-UlF})t>sPt=r%ZMC3Mm{ZHZZ#hMwn#CLz3yI^Haq3kdh zqZDxhMWu2P4OZN_W1FK5|N0WWyM%?8&iBv* z-{GeTeQ_8uYi&$vT4JedI+Y#s`WZ-2e|gKx1Z`$B9MmErf}K-bboaX^f|Xe9Q{{^y zoF*TSL7jst$$Qavf%>8A_g{di(sPHxSixU1J+TrV~mL5}f~1cpv+ zv9v`5@$D=vR7<9$;W)ZViy5@+^r?1GD&#C=mevMm<=r=79x|Fl6ro4{xb5joH&Y*n zlQ(}Zlt!-|J;lt375WYY=DktB8JXVE%7axyG zC#|p>dx21=v%QjuYIrh zRh|g@k{!Tp)TQrO1s9ePf{g382tt)az^yP1DEn9z%gbuMa^~#U-#Z+P2Ol}phTPsV zhnM+&(vDLZfix7hCTqIqC86^qv8<)vPStDmt(Fir>3_CE?2#)M zAy1TxvO0DTQkLkeqX34%-5E(?(cj~LJ70towGb{}RQYA%%LqHWMjlc*(zGKNTLC_6 z2W)%`PZ2tSAYp-$Nk|dhIoHWEbp$>@&Dbe=49`~sIni|ktk5OCa%^N)2PeFTMRh#B zyvs!iSj5rnWq%C!#5k~+6SGH@N@kzK>1eG5)$#@8a`P80o}DUjb|1!IN>+zV^iq&D z1|Q!+mPQnNprNv9&o7m~U>jLlADyY-#<}dZQQNxQIfSkhhLtyEb^{9pO@hL{Un~>y zhb{TIwfvYbS$atwShXh88Qwf&iQIE))vDE-lgw$1-zm?%7QFV_8yp+F(g@Yo+@zFib$B{ia3JDg^E1a! z{4V~& zgW-+plhmZf4>)V)J7!jqiaYoE{C!XSN>(5*qWB9kTHA7Vx5+w0v)oR-kDUx6{(Tgj z4)krV9FOdlK=ld7+?@*3P?dUx!uiBfsplJrUMCFb1SmLfTsHPX>Z$aL)%_So!%7+~ z|AXAc7*n2J`_xN;B81kXUWINxbZWbd>QA$x`cR+{^!vbWHk~e%tTFv^f|}kdVLtxL zQ4N>D^~UjIZx*tNz!$P)`vBEX;#%A(4ig9jKoz1lQz|gh1|XX3B2ZZ7FI*iF*99$) zHfFCY@JN3{eUa9P*$1WHl&;evu|XJ+p6*_k*izE|i(hjbGD)XQv9`@j%sBYd5w z0ruz?@$prxy(e^wU8kC;ZrrXTICwEKq!-0AMd>r~wv<({IdQi$aIHYx^JeBI>(O!j zfa_U-Dt3)X=?c$ZohSef?vGhc8P1~%s7qPHO=4^A5!!806_u43Dwuer=X*bsDV!MC zsdS1}VK5nHjB^i4`9kgkJIwAu(Dx$8=zB@wLdWu<;V;9UWW)P`JxEm~y>z2$V|IU)7mt$Qt;BO+y!YkgnG}sx<6f7r8Iah%qZ+y;-2F=Y;e$C`~Q2B&2#lj)6||N~v#Jqfz8&f0X1& zwejP;3{&R$CPjFPJV>9|?N2O=GTDTty7w8i!xJqFB10{dxA88-;F*Syat8HL9ZgM_ z)FV3IqasXUsSJ08uFJ0D0y88x*RLbqOUdii_Bi+oG;48E$e8;W$pNF%LP-xAiw?o1 zcGxKqAp}DZ0*SQCc4LZ_!n?y>AYKV!mUnuvBpZnI5x2+fo6my>q$?A2m)N)#jvRR=0eq=0ycqZP|{SeQr!>5*R49tJ~4@~6i%+1n-+yDo((v-N_I8=w=!RW;!_ zhW(X5k@Hs6)7pf&LkeM41E5{SlO#ptR%kI_9Cz+1Iy#Z@jP7&v6KNz2=Qwc}Lu11+ zZz}#0xn8fL_~$In6&H$6V!F5Z#QQpv&3~^k>Wt#*+HUzYp+@ECh-A&hTi3NceqIVf zA!}8*B~!8nCZB9U=!s!0ZT(dzOIO>sy_CBdkEz?;u|oBwI~PEQYQSIluM8wrHP`=C ze5ez%770KoGD3G-p{gp!D`V7LmB9To{bXk19yQHF^cW6x?8;%gK|#LMB|c2$v;voO ziyj7zMSz~~xYl}mSCH9n&gV&PNbMGQS*0M@a=|63aLTwU>5jeoC0&U7 z??_NrCqx`lc+I+5GlZ+qniDD`^CJY`W`nA0bA>sOxK*Tw)OH2sZb0pq$#n|pqHF72VH`;YFy3|-=zrmy#ET`)JWB`S9;}fBpM6(+)J%v zT>4Z&%nHXL)jq~IvhXK(fLLLxDMKO6(wxBOGp(Y-_AZJibCR%we6MJ?@k(1;Ost!2 zbn;l?f(9bA`vJ7bl#@NgDa6a=#V~e%=-}e?s5E8+%_>{{TYzTag%_QmQ!CECSRU3BgBPw_~<7e zgl9RMJy(Z0QPg>T2_K|kG20p8jhZ{m5XMSnWJN>Y#uCtVsm3^&5jwXEtGx$}S@ryr9=k1=%&2F=}R$ zISc^>s~_>ko}jVmRNDHXG@!>ZbXegs5vx;yP;-a9wiL|$j_eFRdRn1~?<}S!S+1SP zn_7+D_R#M%sx&)ou3imTfhDjtg+-7O7vEh}ojY23Y3Zon`z^TfIeg=S-rCYAI=b7e zwIatOw2=X`La55}r{QM*-17VJwCt#6n9FB}qYM+8kt(*AztOf2BJeUg)Mp;h< zBsw0-HzwAr)MYUnH6eai(ai2l6Ivcrm9u3M)-lQ(GuL(%$X`vPOiUFn&h1KW^3j>8 zlT|DC!}xKVy&FFDbu1BkCTnQa&^YAO#VP%+hQq)@HDq!id zZh0G|ZQdVP&B{x{el?s$7Bdw2Ug0Bm@kp&rz=09O zRaG%FLP^ZWV5Q#E{s$P0*W`5Tx5fAs7jfMwGjHjiu)^6wAakHz@{>(an}7Lb2!Z#DPcIK8w$~DN(=k-64!}n$&r_$Am2uv0J`#or{Ioup)+$ zjwiYH5||wqNd75A9y-@jUhH~rcSxt;4gv9B=r1Gvpod3kyKWhY@=Xbg&3R2XwInsa zQ)H+cYdoJYV#iuwdb1C~8n|UW3iwaRK7Td2|MFNNrQc&uCt~HZ>%tHNJ1*OB`rO9J z(pjlV7YSY#TTv8Kdp*P&^!-cGbNUS1#hR;Dw%#GInxv~fW%HfI17crB*)|PQ@ZZy zO}7Bmqbm?sIQJr%zM?htSFGJ1t`uk0=Joca)Z|L!t&Sp?h5M6Fp$l9|9s@BO3Vvk= z?#c{nTbv3kz(z#Dwc~W$pJMf?cmQ$fuo2k3Qw&krQ)d#h3d=6O&zNBpbAdy!+fNQy z;Lj?Xc^Z^?V;Xn~asNZn%R7LAPNuljkauOR_)eNid2;|me^&5|rMZiw1&(Y<)~Pea z?AYXHBGNYSjnp@A3lQR*hS+53YfVET3THG%)7p+cxmL0VX#N5_>W?wi5KT~vO zl0po_2+$3b_4i)g#At}`s4cx*NLoC1f$^gaQ`uq2A1+rO+7#B+4b63)=^ z(qI@R9n^vc`RUY6w&?xa-0s+n(?J*2F+kwlZYv!9RRYn5X1+5bdbU1VBXIldo(?|w zv9F1&m(qRQOfQL%va0Ta+)k}c>_B9xS)d?T zHecv7IM$)f=FE|(P`$7fr-n^2HsQoq%$&XVSG6shpoatT_?d#rY4147%qH(v=6f%T zJzkn2Qw=>=ft+rAG}bu4iv<6rr7E;&3z+sjR5&0qRdRT@1XiE#cq?FOvAO1|f0865 zV&kqFIfKhu;HU7asIy*~4ZyJ_A6FBW=i0ir;lRckh&-P&*+sS@kEM=IvJgwSUXIaO?&ycNrc zG+9P)DGhrS=X1m5QSFwn&g@bGw`JDzXvr|;;KMq=4}o z7Nt$4`r%GTBQs8Pz>@Hm&(^z%p!kRynGANMGe_0{YxF&2;jJ{<``=xk0)(kH%_!=&;0N?Py|9}>^% zDYe*Sk~2TX-|CMD`y2mYM-fE|YqgBW-pj~RQ=<&5y0~JZ5X2J!Lf^WAGQeskLoLKQ zzzNV>KYOOmJePJ1TQ-H^p&0A?T{y3xQ;56~vj|Zi2m#O9$&MVD&d;=xn&1lp6q$bD z`?`5|;F;!z&Oo`R3V7iDdRqqmObNA?&7v&pwsz~SoTI-?w>A)?Esjr;yngHtE@RPN zC;kb;%jEA7V#a4Z?z00~-tUNs@6ypYd{UjEGv8LL;BQDyj^Y>vmQa`D46#BLmDr*U z8(H5l+1hy63dTR@vACE)@lrbfk}vwuK8~!fw(gc?2E8ULR?vaTEXK#9eJ#;)?w581 zZzP-!_qCkj{=KD;sye7FXBrlMG1WJ7cRJ?ul_lIo^8$q*|93so`}_eTdGt?E6<9u( zXSq#*&ex-E%Bin|aTdJ$kvX74UoMbQ$5~e0kyJXJvZb@l z$T3Dt8UI86qA~dU$90VSJ;j0^0t}G91P*J*x0k3Cbxm#Jn`Dif1hJghSt;1z-e=H_ zHF-6*H!JCM^#s?g&hNd*eu4ZleFHqA>J#G;ohG1sI2i`T-&v3rD-Kh~FV*{oT&<+b zyHD%kQ4QzDg;b4@$66y?e@^U-am57RLDd00)b@4zS}p%q&^a+T&KrRf4yOTcJrR#x zfbEcg@5<50{Os-Qd4jB)vV8=x%o8^8+FSlW--=pviN4^ATYqvLX%`B1}IC%&2sxfQeu*(z3FNJ(Cwy1+bz0E;B%_k@3NqZ5(=2grzaZpnDGsa8_2M>se@;V?a?RH% zCDwz|(f$EJn02x|;JNz|ZxrZ~7US*8#DM1$Vag-%g2f8VzJr zp5k#Zb9Xe$amJ_lXUu4H8KnnntJr3@T8+(t zpIUf^YI}@h!t0S=zr>%`zcWGO*B7+J6bu$~I(pDeB!M>VWnW=T4mP(c>w^+3#zR6_ zyjTX<0~a4{9wV}C_H(?gZa5dL2nY*jKfnbBNeDmXxAO;F$EZHq(An}b<0o&iXuA5i zmQgWEJ-l~|tcW5MRdqd2heNy7n6*cuh4VY34*Bo%DK`0tVXzOaXh6*CZ@e!EU|yfRUyA@~s=O`Cy``fg z4;biTu-!NSU5u`Bc=+x+Vk>V$9rmR zw|ncv=}W?gzn_KTHN|U8$>ChMfrX~8#<=KgbG0N;L7H9t(DnwO@hPu|9qy3xOiNQt zLI>H7aQVtXUa<@;>#GsjiEs?ZvyzKnB0!K|>dIekW@3bFS>1)lq8`Y|55Jh{fzL?^ zK|4DF-&VVy@HEt)>58P48+EHVH(+I+?TYPd=D$K^0UK|^Hhh{Ct} z7|I_-Cm8>!A_uHaxhBNa-q$gx-?h3clb7!vwP z_Z*oGS0x>L5(lqja`_0HtV&(4*!{k%z5>$uK86EbdsV%>tr`mPu-UF6xG)#Uk|dPQ zKkoKUZ_Q$BPm;N+$9jeh?)1p__jC9@28{G>I?Z4H;^Mh^$0uQc=h?YET^t?Z%xTOe zuJ-D9ANa7>7RO8|hMG7bW5O!m338*enx02IjdiDf?i!C;1yeZk#=i)cK&Z zUxWoVq|>EsP!jF|U-w_Ir|dBa$=Wj>KdrylLK(TwApq;OaqZbqoA0t+8ebBO*icHMamLddfW$03em3 zF5{G=rZS-~vKgk{1^|76y`sR#czn0`7IT~};|-c}(U3+*dGIqF%)8@L*j{hF znK>9U{SQCfhh_CU#)5_B)R^H|+COnqiAo;Ew7P@WO8^1AG(dyLs^ESoC~OJWJQ@)h zFg+*~Bh<1_?ihH2b2%zKou$ABzyR5AW2T37P}1qp35IvYku~-^l-kH-eVcBN2wgs75XAhpj@N2X%<>>0F=Jn zn8IFMCcE@G|C4wP=fu{O#{umYTk6YdqA#ktd66}a`T-<=rY;AKi+276;7?JO3QXYos=EkOgb5m;1>O4 zXWElo8~=LN1;efH+?7227Xo+TjMCRh+a>}=X$5KHJ1M!BnoH1C1&}W@Vt|)ia|4JG z^P6^z8IYXTvkE7<6 zfDpf~FnQ)8RYj7k8@9h-m*4)C1lw`MBXX)#&BaCFNzb5gK}+-db?gYL3D){u7)Qto z7U1B*-WSA0l^Vny`>P%BF(0@i{EXO*4q2iKMmd+Zp{IIa&E2Q|&rJc;ejL#sOC6tt z2a2)jC}VACi%JYLPM6nol})|@v~`I6?74&ho@KSF>2hfb`k`MwBnpsj0*4Y3g?6k( zp+5XsHNI2FAy8atoL05R@QLI>x=7Bpgou|emO8*+d>=D9VC6B;z9(5een1)H&dLvN z0bjr4H^zE)FmG){xEefn@49cQVS2Px%!K#_mxS@%m){*rF?3VdBPN4RT{0>z>Ukho=ff$(>Mz6N zbl7-6UVu3nzTv>`euR5L`@|IY+o*z9PLw*#)1&U*#@;Z3GL(0xiQd?TG8;Pn5P#lh zeT&HT9_UUwl|{2o9M|aVAp}d z16gcT;4Hz#tA2!cbQi@4lGmNR_iy6R;xv`;hf>z2&dCjEw9#yMg z7P5MW9H;V*+4bF|lkRKdOQ+@V&+Oj(lAevIamKyAi6tWRMCses?aJTaQpc zdIlg<80z^c$j``Ta@l*Y!gHiXA5W}p zuU#kNAHX9VT%q#JFfBsnCmu=05#c>A`4-6EW{!)7*>l5a!jGYp;l{4R{BOffC^Y2n z2_y>gJhH^~-=xITn{A@o_v(}(+w(8ffB?uDg2|S$By&a~7H#OW)km#Do?x$Bn2uU< z56nowQ?NjY8M}<7%3)fTgSv;-G%FFG_c*<{KZJJzZMuFP;ok`T#XL*$<`VKN^=J`t z$Nt;I!>@vaF>Vsy*1Of>Jpm%k5K)7L1;a~E%RpyAHCvsg}6EM17)q6(=kjGVqz z7OME>GVj<|zV2m_c8(*S(%o3JK|%5#jl<*uenOe@wQyun)ab%%+muTn%)RZ5JF zqEjbT>$v2ZE0#Pmt`tRwC;ui6m7PF__1-hgyqzI|J2Wg;yp(CgE*$kIIdb2EnxbJ z*)T#eL#5%cB!{VCIK1_{Onxd;w3Itc-tjtKFjcq_70*dSxkrP(PD+tq6s2WArv;Mj zwm64esQZ2xpMhSY$oRN~dvSQ&n{CI9bpnyJoh7=SQP5#cUtYn@GufCkH0R=VUt0d4 z+M&wtx(}z$kj8~1)ZpYmMS}Yxr3{GVR%>~2K@2wdry+;aaQ<8P9qgT;4;iNm;nHvN zb6#fCef~11R%zV@n+H!9h&cRn*ZqUXAh+LRhYKOPcbX53r$Tt64yAtjE@K|g7?!c8 zWXDl)w++;LU_Lhv;Ec9Et&qB4g=82@mEp>9ZM-({$H#rXyNCNQqQTluYx~W7V{eIa zBBfGqx1-03+g>vbSmar#+)+j`#VKWwu;WqO8`J?%$FIq-8M{Qk(N*RM?p>MqOp=I! zY{To?($?K-RCyE0YhbSOsRZ{buQkgDoX*~nOn|bZ+?3P8| z4H6Xov4I8QbFIbvb)17l(go=&c8HVw?e~)xUfYs$W=iJtq(O6f)v^LB$7H8en|#a^-AULrgKHlJ$*xnr=;w+)B$Ae; zFqkVPxieZ+{~PjEwoxElspx&+EsL^Em|`7XlZVYnOit#~)kRDOvk>78y0besbOsmV z7{t}cn)1O%lf*mb5q}-L2*+P@C$!fV7I*x`!5Zi#S3I)z-E>xs?V zaVy34@^*hBQOO+g7gcF2CuIbGV-fu4|Bo^d)xsdMnq}c(zbFf$Rm&w+wTGhd< zBqLp~YH=hIN+HmQXS`!-vSVjd@I+joQ6IMOF3?eHh)_C8-|MDh2Xsd_4N?@y?9V^1z|(!}+f9|8C~I1%hZpqAQO z%)Z_Vm&TIl1zy^(;>h3eVOyHM{5&1ynh~h^SN*tph_<=0Hywdx9;!^KMtlYy-lJ%q zdHT@!k-wcg@GGO?A5ch{35&?%aF~6d)s8e0zGjs$+nX$NXPxZNR+rm^tx<%qWujvf zJ^>m303uY{dJrG?NwJ-%u_iCLMA{^jlvVZUY!-$>A|FL2_D^&vBPD+K2m3)bkKgI- z${;w0ZTIBL8<}bZO)Z)Sh zsxzrmWLK$dQ)GA8%NpHS zjNRE^xzgtDDr`(oj{-KR>l9bLglKSXiX$_XSb=qhT@QFLMNH%KnA~|X?Kif#tOW^# z?M_+d*%v1$epK}1+8AH|>``+k(pszCnzj*{se>vKkKidKnoH;<8SCp*MUApzz`QyN zpv1h#zfD18Yi$d1qDA5hpo3ggu~mqN*6nX0VeeA19<#;S;2)b&wIA7kJcc60zl%pv zzMU@hP~K!*!p5N^q`pX4vxbI+n#*yTq!Lh-Y&W6v+1$JF&4>?GoN>&|3AR=_vIHe_ zl5PUBs}{k1u!#ya-_`_J4 zZ3&N!Qm$?oU9pQF(d}Zgj}wxgaU%&-CGXUyV=uX|Fp}@}zLehPOMi*&xE0ls@eNHB zP-d4fRLzA8<`neG6cW)^;H;9ym}XIWWYv@eX=PdOk7m$u)Z`Q~4crn`t3nrq2ga6^ zjhRC}+zWpS^GBYuL=|{z1{YgK_u~(l_B54CpKQq?r6Yf8yWyxF3!5wHWz932nZZhC zrcNTvDw0U>cC;R`J(cCp_vGKsnkF23&jl9E?OA94MN1Il%V~g z+fcOeR0K^%u6ze+Qv|48tsoGpTE77RtMW3LwM&j0{wOgXo?~KA`CYMu{?pcJ#*2Ua zjH_DqhWyy%2gnM~7+n)YvCB)^w(JOZRd(kI@0adgvt5{?vzA)Y?W8{N)ATI-;Czv1 zbx=TmE()-q-!eYF`<>lW!iX6VF|JQ62RWO1?iE>;NL|Koo4jy95aV6LOe!O0)n@EI znX><)l%{YOC}YiH1gv;(7TNL6=ueS^JXe@22U?tQjkE{qLprJbrLG%AK3SG zvucz0~UD$M`I&ry)CSooc_gHq~G}O|Rg=74I?0&cEkf zSj8NVnz$*h$D*yA2It%{%0a;;)kopP?(G+oH*6Nk;*AY$OJ5x4eQ6d zvQW3r?7Z=8_J?FHtQiaN4-Zl@A_nzn#1SjiXRaHz>8 zok?o$e;^nx6{M!RA$}CyR++NJMw&m*fmv}!!kZ4rdwe%u9Y1=i=?&cnDI-WFr2Q_L zA5X-!O#!cCCSdV>mqh36qf9uCyUO`D+xN{33AvJ9%SMK)nZuMHJX`!VoM!b)lP&bp z>Z*}#;6#UkckQZvYb1%L25dLf{0&W<0ZX!OQUHY@cvR|NRu1DI-+`+(0bk2s+rS@f ze5$iL>`x5FW#^Od5BSEd0CDS0i3xKxD$*bd2sCAghN(iT^qMZ43oIh+6*Ih#-}D&U6sch!JtCALnEc=C9d3>JP)s2 z4A~15leVwEuO~<@f_^XoUpqRySTQ*&07z)t7i5dsuJ1+Ha>fQzyQ^P;3wDZfPPfDdpL7W&-^s zoO`XE`Cju}j7t-e-5`3Eww-_wb;x>ov{DG;3-=ozjG?Tv)@P#jpCpIJ{CkiP9_;q4 zg84`KL$oP9tI~1KIk(A^0zC4e5xAhUya6mj1v&5W3Ay9#(J?4MSbe7UBRwh%*d?0@ zTCV_IK;AzNF3@z)&nGHe*K;N`i&|_7k;RG6PEa0q7p`8`UU@AYvP0rXo8F15FOGcS zLV3ln`C7R-eY+~SYuD|Nrfs$0D0suQxvI#qwitgDc|&Vzdh{qZQPo+JMp{27b95`V z0|?|yxbUM{N1h-|_SL!zA@um7 zhQ(#SXj%@Pn*j#)@8CN*vQ4AA#O1Sa;jy)p+MYk&x*+ncjNsXoeB}SMQp5Tjhd8m! z2vR%Hbp|tzKhCw}I@nxkl)tJNrddV04ln%JA{MY6<8Z5hO7ZRcwD}ljV0ATE@g@g& zF*6{Qr4&Du>fa~v^&d-!i=g0R3}C{$rlxL?1&C}T03FBSo`LiG$wVP%>0&P5r#Hr6 zCuUdVjnVMb*Wg=PU#V-qejBhw@&r@3g>;#qeXbv0)XYvstp2?@ltu33EELU)BaD_; zYbDHc@;v8}{DINdp#f$?pLww<;F2#8X#dtw`4jorW6~i!w(KH6m6~EJHs#KtwPdc< zp0{n}ARHhr%B_ro{O3H$ z^F*9*hQfm*QM>Qq8_@ET%m|e$J9p79#>e64y&&_-8I`dtyFSAB8t{$!eh%(wisku{ z@H33yO?dMkJQF4l^OUk=LylYHMQI$Z#)d^UH#aKq~L^=8heWS2;0yuGO#iA@86SL+SOA;Fj5Fqp-9kS*i?T z?{{#B8FSDnQ|&|ttXxH3|NQJSr4v^iJwLWT01Ktc zKPG^s5@zO&(h3|bfHSx zC9`Ntmgr@j0;;f!4~_!S_ZA+%7evHG+h(Sh(O_=#KBI#4fB!iiS_f7Itid6$O75Rd zmH7PGNE@^StLhC5==lKUsfMv#eWQI;uOqjNav2{Q6)+so3BFERyX{QI88fC27nS^x z%>#`kCsKSmXH8Ct1#=-Wngje_w57G!1i7_jzfJPrjX)k`eXmEbQ24M*5o<)R5U0mi zkLlKDJ9qLWuWKPOtmx-|2Tz?LEN4(x(+c(-F_%$y0PMtz;#%4a*Nk9v)`NpWRe&87 z8z@>|%L3WtxNTcY?ANaSCTCGT~=M9B45*Kkrji z2HioYXc5#kbA2=GZa{Lh$LJM|HV}+d{RDl)-Z1p3*D&CfcCS7uE6#(l*U9wnsHafV zVl{9NVD;5zj5x-<$g_b>f_~kHJ^XqRdOCUcmnWV{$yiFhi|*HybBl7oSD!_{d%^P@P>B$)=%Q0 zhJMdr{elZd^ATk^|nr3oNt+xyEjZQO)F7RuK&QJyh+fDdsX~3(m z_{{F&#y}(<%|ncjXX|O|5*vqzQ^9p@_1sOV1+)F}V_G^uR?rR6xwwU|(F4d*UB6qx z=Y^!%jd|^M_S?{PWxaTX+{s4>#rmQ>^ai1~BcPKd9$e;p-KwDm*fw^s8*gSG004Fe z_IpS8`M2Jqx7Ep-H5DHEr(aba*)(cWnU_nrGc5X@5)+2@pJ}^NveML{J7!FVjMrjzji+UUnR!YCw>;YsATSIaoipl_y$OXwSDIj58%w;t^~1|VlRoDBgU+e`_H+? zfo<*`nJo7#u&Q|(ZM%-nynBwY1^q{a2DFUpC`MyrA$^Qc=1+crXG5yN7R?-1WVPIqXX+0fi1I#7$w>=867S-@=lsh4Y0E3eV4 zT>t9FLq4Bssy_eyP0WwP|&N79QJf_Z0N= z|LO$bS3Nk(7iJ~9K)#u>s1=I3|!RM~n0T#0ETL9u%JDa%)cmqp4K{@>*PNBj>$ C-UXKc diff --git a/assets/shapeout-d15c331a.webp b/assets/shapeout-d15c331a.webp deleted file mode 100644 index 8421fb0e0a5f503371bb9f7c421e10ab8e16f34f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52668 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 aUtKwG(!|BO?4PE+LKzz386kH#0001pz5C?= diff --git a/assets/velox-429d856c.webp b/assets/velox-429d856c.webp deleted file mode 100644 index da8d4e023a143da60d67d6714c43fc22ebb49282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23006 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 diff --git a/assets/yolo-9ff20b51.webp b/assets/yolo-9ff20b51.webp deleted file mode 100644 index 51db1f1bc7b00e97cc57c4ff4a377440a928c0e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31874 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 diff --git a/index.html b/index.html index bf4aa2f..9f102fa 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ - + Satyam Mishra | Bedead - - + +